source: 2014/27/BenjaminE/AttackOfTheChicken/AttackOfTheChicken/AttackOfTheChicken/AttackOfTheChicken.cs @ 5378

Revision 5378, 8.3 KB checked in by beamechi, 5 years ago (diff)

Mä on tehny ne paholaiset ja se ase. Enä menu ja kulo ja varma effectsia.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class AttackOfTheChicken : PhysicsGame {
10
11    int screen = 1;
12
13    PlatformCharacter player;
14
15    PlatformCharacter chicken;
16
17    PhysicsObject stone;
18    PhysicsObject lava;
19    GameObject spawner;
20
21    Timer sTimer;
22
23    ExplosionSystem explosion = new ExplosionSystem(LoadImage("Sprites\\Explosion"), 100);
24
25    int weapon = 0;
26    Timer wTimer;
27
28    public override void Begin() {
29
30        switch (screen) {
31            case 0:
32                MainMenu();
33            break;
34            case 1:
35                CreateLevel();
36                LoadBackground();
37                CreatePowerUp();
38                StartSpawnTimer();
39
40                KeyInput();
41
42                Camera.Follow(player);
43                Camera.Zoom(1);
44                Camera.StayInLevel = true;
45                SetWindowSize(1280, 760);
46
47                Gravity = new Vector(0, -2500.0);
48            break;
49            case 2:
50
51            break;
52        }
53
54        SmoothTextures = false;
55    }
56
57    ///
58    /// <summary>
59    /// Main Menu
60    /// <summmary>
61    ///
62
63    void MainMenu() {
64        Level.Background.Color = Color.Black;
65    }
66
67    ///
68    /// <summary>
69    /// Creating the Level and all it's assets
70    /// </summary>
71    ///
72
73    void CreateLevel() {
74        ColorTileMap level = ColorTileMap.FromLevelAsset("Sprites\\Level");
75
76        level.SetTileMethod(Color.Gray, CreateStone);
77        level.SetTileMethod(Color.Red, CreateLava);
78        level.SetTileMethod(new Color(255, 216, 0), CreatePlayer);
79       
80        level.Execute(32, 32);
81
82    }
83
84    void LoadBackground() {
85        Image background = LoadImage("Sprites\\LevelBackground");
86        Level.Background.Image = background;
87        Level.Background.TileToLevel();
88    }
89
90    void CreateStone(Vector place, double width, double height) {
91        stone = PhysicsObject.CreateStaticObject(32.0, 32.0);
92        stone.Image = LoadImage("Sprites\\Stone");
93        stone.Position = place;
94        Add(stone);
95    }
96
97    void CreateLava(Vector place, double width, double height) {
98        lava = PhysicsObject.CreateStaticObject(32.0, 18.0);
99        lava.Image = LoadImage("Sprites\\Lava");
100        lava.Position = place - new Vector(0.0, 14.0);
101        Add(lava);
102    }
103
104    void CreatePlayer(Vector place, double width, double height) {
105        player = new PlatformCharacter(32.0, 32.0);
106        player.Image = LoadImage("Sprites\\PlayerStand");
107        player.Position = place;
108        player.IgnoresExplosions = true;
109        Add(player);
110
111        Bullet bullet = new Bullet(1);
112        bullet.Size = new Vector(4, 2);
113
114        player.Weapon = new AssaultRifle(0.0, 0.0);
115        bullet.Image = LoadImage("Sprites\\Image");
116        player.Weapon.FireRate = 2;
117        player.Weapon.ProjectileCollision = HitByGun;
118        player.Weapon.AttackSound = LoadSoundEffect("Sounds\\Gun");
119    }
120
121    void StartSpawnTimer() {
122        sTimer = new Timer();
123        sTimer.Interval = 10.0;
124        sTimer.Timeout += CreateChicken;
125        sTimer.Start();
126    }
127
128    void CreateChicken() {
129        int bigOrSmall = RandomGen.NextInt(0, 2);
130
131        if (bigOrSmall == 1)
132        {
133            chicken = new PlatformCharacter(64.0, 64.0);
134            chicken.Image = LoadImage("Sprites\\EvilChicken");
135        } else {
136            chicken = new PlatformCharacter(32.0, 32.0);
137            chicken.Image = LoadImage("Sprites\\EvilChicken");
138           
139           
140        }
141        chicken.Position = new Vector(0, Level.Top);
142
143        PlatformWandererBrain chickenAI = new PlatformWandererBrain();
144        chickenAI.Speed = 100;
145        chickenAI.FallsOffPlatforms = true;
146        chicken.Brain = chickenAI;
147        Add(chicken);
148    }
149
150    void NewWeapon() {
151        Bullet bullet = new Bullet(1);
152        bullet.Size = new Vector(4, 2);
153        switch (weapon)
154        {
155            case 0:
156                // Pistol
157                player.Weapon = new AssaultRifle(0.0, 0.0);
158                bullet.Image = LoadImage("Sprites\\Image");
159                player.Weapon.FireRate = 2;
160                player.Weapon.ProjectileCollision = HitByGun;
161                player.Weapon.AttackSound = LoadSoundEffect("Sounds\\Gun");
162                break;
163            case 1:
164                // Machine Gun
165                player.Weapon = new AssaultRifle(0.0, 0.0);
166                bullet.Image = LoadImage("Sprites\\Image");
167                player.Weapon.ProjectileCollision = HitByGun;
168                player.Weapon.AttackSound = LoadSoundEffect("Sounds\\Gun");
169                break;
170            case 2:
171                // Lazer Gun
172                player.Weapon = new LaserGun(0.0, 0.0);
173                bullet.Image = LoadImage("Sprites\\Image");
174                player.Weapon.FireRate = 2;
175                player.Weapon.ProjectileCollision = HitByGun;
176                player.Weapon.AttackSound = LoadSoundEffect("Sounds\\LaserShoot");
177                break;
178        }
179    }
180
181    void CreatePowerUp() {
182        PhysicsObject machinePowerUp = new PhysicsObject(16.0, 16.0);
183        machinePowerUp.Image = LoadImage("Sprites\\MachineGunPowerUp");
184        machinePowerUp.IgnoresExplosions = true;
185        machinePowerUp.MaximumLifetime = new TimeSpan(0, 0, 5);
186        machinePowerUp.X = player.X + 40;
187        machinePowerUp.Y = player.Y;
188        AddCollisionHandler(machinePowerUp, player, MachineGunPowerUp);
189        Add(machinePowerUp);
190
191        PhysicsObject lazerPowerUp = new PhysicsObject(16.0, 16.0);
192        lazerPowerUp.Image = LoadImage("Sprites\\LazerGunPowerUp");
193        lazerPowerUp.IgnoresExplosions = true;
194        lazerPowerUp.MaximumLifetime = new TimeSpan(0, 0, 5);
195        lazerPowerUp.X = player.X + 80;
196        lazerPowerUp.Y = player.Y;
197        AddCollisionHandler(lazerPowerUp, player, LazerPowerUp);
198        Add(lazerPowerUp);
199    }
200
201    void MachineGunPowerUp(PhysicsObject pu, PlatformCharacter playa) {
202        weapon = 1;
203        NewWeapon();
204        pu.Destroy();
205
206        wTimer = new Timer();
207        wTimer.Interval = 10.0;
208        wTimer.Timeout += setPistol;
209        wTimer.Start();
210    }
211
212    void LazerPowerUp(PhysicsObject pu, PlatformCharacter playa) {
213        weapon = 2;
214        NewWeapon();
215        pu.Destroy();
216
217        wTimer = new Timer();
218        wTimer.Interval = 10.0;
219        wTimer.Timeout += setPistol;
220        wTimer.Start();
221    }
222
223    void setPistol() {
224        weapon = 0;
225        NewWeapon();
226    }
227
228    void HitByGun(PhysicsObject ammo, PhysicsObject target) {
229        if (weapon != 2 || target == stone) {
230            ammo.Destroy();
231        }
232
233        explosion.Position = ammo.Position;
234        explosion.Layer = new Layer();
235        explosion.AddEffect(ammo.X, ammo.Y, 10);
236        explosion.MinScale = 1;
237        explosion.MaxScale = 10;
238        explosion.MaxLifetime = 0.75;
239       
240        Add(explosion);
241    }
242
243    void PlayerShoot(PlatformCharacter playerShoot) {
244        PhysicsObject bullet = playerShoot.Weapon.Shoot();
245    }
246
247    ///
248    /// <summary>
249    /// Player Stuff
250    /// </summary>
251    ///
252
253    void PlayerJump(double speed) {
254        player.Jump(speed);
255    }
256
257    void MovePlayer(double direction) {
258        player.Walk(direction);
259    }
260
261    ///
262    ///<summary>
263    /// Keyboard Input and Pausing
264    ///<summary>
265    ///
266
267    void PauseGame() {
268        if (IsPaused)
269        {
270            IsPaused = false;
271        }
272        else {
273            IsPaused = true;
274        }
275    }
276
277    void KeyInput() {
278        // Keyboard Controls
279        Keyboard.Listen(Key.Right, ButtonState.Down, MovePlayer, "Key Right down", 300.0);
280        Keyboard.Listen(Key.Left, ButtonState.Down, MovePlayer, "Key Right down", -300.0);
281        Keyboard.Listen(Key.Space, ButtonState.Pressed, PlayerJump, "Key Space pressed", 1200.0);
282        Keyboard.Listen(Key.A, ButtonState.Down, PlayerShoot, "Key A down", player);
283
284        // Pause Game
285        Keyboard.Listen(Key.P, ButtonState.Pressed, PauseGame, "Key P pressed");
286
287        // Close Window
288        Keyboard.Listen(Key.Escape, ButtonState.Down, Exit, "Sionara Bitch!");
289    }
290
291}
Note: See TracBrowser for help on using the repository browser.