source: 2013/27/TeemuM/Game/Game/Game/Game.cs @ 4444

Revision 4444, 9.8 KB checked in by teematma, 6 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class G : PhysicsGame
10{
11    public static G game;
12    private IntMeter scoreboard;
13    public Player player { get; private set; }
14    private List<Zombie> enemies = new List<Zombie>();
15
16    public override void Begin()
17    {
18        game = this;
19        Mouse.IsCursorVisible = true;
20        MainMenu();
21    }
22
23    public void MainMenu()
24    {
25        MultiSelectWindow menu = new MultiSelectWindow("TESTMODE", "Developer tools", "Start this thing", "Perks", "Get me out of here");
26        menu.DefaultCancel = -0;
27        menu.AddItemHandler(0, delegate() { MessageDisplay.Add("Starting game..."); StartGame(); DeveloperCommand(); });
28        menu.AddItemHandler(1, CharacterMenu);
29        menu.AddItemHandler(2, PerkMenu);
30        menu.AddItemHandler(3, Exit);
31        MediaPlayer.Play("MenuMusic");
32        Add(menu);
33
34    }
35
36    private void DeveloperCommand()
37    {
38        IsPaused = true;
39        InputWindow prompt = new InputWindow("");
40        prompt.TextEntered += delegate(InputWindow p)
41        {
42            if (p.InputBox.Text.Length == 0) { IsPaused = false; return; }
43            string[] commands = p.InputBox.Text.Split(' ');
44
45            if (commands[0] == "money")
46            {
47                if (commands[1] == "add")
48                {
49                    MessageDisplay.Add("+$" + int.Parse(commands[2]));
50                }
51                else if (commands[1] == "reduce")
52                {
53                    MessageDisplay.Add("-$" + int.Parse(commands[2]));
54                }
55            }
56            else if (commands[0] == "score")
57            {
58                if (commands[1] == "add")
59                {
60                    MessageDisplay.Add("+" + int.Parse(commands[2]));
61                    Score(int.Parse(commands[2]));
62                }
63                else if (commands[1] == "reduce")
64                {
65                    MessageDisplay.Add("-" + int.Parse(commands[2]));
66                    Score(int.Parse(commands[2]));
67                }
68            }
69            else if (commands[0] == "tenthleveltaurenchieftain")
70            {
71                MediaPlayer.Play("SpesialEasterEgg");
72            }
73            else if (commands[0] == "level")
74            {
75                if (commands[1] == "up")
76                {
77                    MessageDisplay.Add("+" + int.Parse(commands[2]) + " levels");
78                }
79                else if (commands[1] == "down")
80                {
81                    MessageDisplay.Add("-" + int.Parse(commands[2]) + " levels");
82                }
83            }
84            else if (commands[0] == "item")
85            {
86                if (player.GiveWeapon(commands[1]))
87                {
88                    MessageDisplay.Add("You got " + commands[1] + "!");
89                }
90                else
91                {
92                    MessageDisplay.Add("What " + commands[1] + "?");
93                }
94            }
95            else if (commands[0] == "powerup")
96            {
97                if (player.PowerUp(commands[1], double.Parse(commands[2])))
98                    MessageDisplay.Add("Activated " + commands[1] + " powerup");
99                else
100                    MessageDisplay.Add("No such powerup");
101            }
102            else if (commands[0] == "spawn")
103            {
104                if (commands[1] == "zombie")
105                {
106                    if (commands.Length > 2)
107                    {
108                        for (int i = 0; i < int.Parse(commands[2]); i++)
109                            SpawnZombie();
110                    }
111                    else { SpawnZombie(); }
112                }
113            }
114            else if (commands[0] == "kill")
115            {
116                if (commands[1] == "enemies")
117                {
118                    KillAllEnemies();
119                    MessageDisplay.Add("All enemies killed");
120                }
121            }
122            else if (commands[0] == "health")
123            {
124                if (commands[1] == "add")
125                {
126                    player.health.Value += int.Parse(commands[2]);
127                    MessageDisplay.Add("+" + commands[2] + " health");
128                }
129                else if (commands[1] == "reduce")
130                {
131                    player.health.Value -= int.Parse(commands[2]);
132                    MessageDisplay.Add("-" + commands[2] + " health");
133                }
134            }
135            else if (commands[0] == "enemies")
136            {
137                if (commands[1] == "count")
138                {
139                    MessageDisplay.Add("Enemies spawned: " + enemies.Count);
140                }
141            }
142            else if (commands[0] == "die")
143            {
144                UI.GameOver();
145            }
146            else if (commands[0] == "player")
147            {
148                if (commands[1] == "stop")
149                {
150                    MediaPlayer.Stop();
151                }
152            }
153            else if (commands[0] == "exit")
154            {
155                Exit();
156            }
157            else { MessageDisplay.Add("Unknow command!"); }
158
159            DeveloperCommand();
160        };
161        Add(prompt);
162    }
163
164    private void StartGame()
165    {
166        Keyboard.Listen(Key.Escape, ButtonState.Pressed, delegate() { PauseMenu(); }, null);
167        Keyboard.Listen(Key.E, ButtonState.Pressed, delegate() { Inventory(); }, null);
168        Keyboard.Listen(Key.Tab, ButtonState.Pressed, DeveloperCommand, null);
169
170        MediaPlayer.Stop();
171        Timer mPlayer = new Timer();
172        mPlayer.Interval = 3;
173        mPlayer.Timeout += BackgroundMusicPlayer;
174        mPlayer.Start();
175
176        AddScoreMeter();
177
178        Image background = LoadImage("Background");
179        Level.Background.Image = background;
180
181        player = new Player(50, 50, 10, true);
182        Camera.Follow(player);
183        Add(player);
184        SpawnZombie();
185        CreateLifeMeter();
186
187        Timer t = new Timer();
188        t.Interval = 1;
189        t.Timeout += delegate() { SpawnZombie(); };
190        t.Start();
191    }
192
193    private void BackgroundMusicPlayer()
194    {
195        if (!MediaPlayer.IsPlaying)
196            MediaPlayer.Play("GameM" + RandomGen.NextInt(1, 5));
197    }
198
199    public void Score(int changeValue)
200    {
201        scoreboard.Value += changeValue;
202    }
203
204    private void SpawnZombie()
205    {
206        double i = RandomGen.NextDouble(100, 1000);
207        Double x = 0;
208        Double y = 0;
209
210        if (RandomGen.NextBool())
211        {
212            x = RandomGen.SelectOne(Screen.Left - i, Screen.Right + i);
213            y = RandomGen.NextDouble(Screen.Bottom - i, Screen.Top + i);
214        }
215        else
216        {
217            x = RandomGen.NextDouble(Screen.Left - i, Screen.Right + i);
218            y = RandomGen.SelectOne(Screen.Bottom - i, Screen.Top + i);
219        }
220        Zombie zombie = new Zombie(50, 50, x + player.X, y + player.Y, 100);
221        enemies.Add(zombie);
222        Add(zombie);
223    }
224
225    private void KillAllEnemies()
226    {
227        foreach (Zombie enemy in enemies)
228        {
229            enemy.Destroy();
230        }
231    }
232
233    private void AddScoreMeter()
234    {
235        scoreboard = new IntMeter(0);
236        Label ScoreScreen = new Label();
237        ScoreScreen.X = 0;
238        ScoreScreen.Y = Screen.Bottom + 100;
239        ScoreScreen.TextColor = Color.Black;
240        ScoreScreen.Color = Color.White;
241        ScoreScreen.BindTo(scoreboard);
242        Add(ScoreScreen);
243    }
244
245    private void SaveAndBackToMenu() //ToDo: Save
246    {
247        ClearAll();
248        MessageDisplay.Add("Saved!");
249        MainMenu();
250    }
251
252    public void PauseMenu()
253    {
254        MultiSelectWindow menu = new MultiSelectWindow("Pause Menu", "Resume Game", "Back to Menu", "Exit Game");
255        menu.DefaultCancel = 0;
256        menu.AddItemHandler(0, delegate { IsPaused = false; });
257        menu.AddItemHandler(1, SaveAndBackToMenu);
258        menu.AddItemHandler(2, Exit);
259        Add(menu);
260        IsPaused = true;
261    }
262
263    public void Inventory() //ToDo Inventory and funktionality
264    {
265        MultiSelectWindow menu = new MultiSelectWindow("Inventory", "Back to Game");
266        menu.DefaultCancel = 0;
267        menu.AddItemHandler(0, delegate { IsPaused = false; });
268        Add(menu);
269        IsPaused = true;
270    }
271
272    public void CharacterMenu() //ToDo Character variations
273    {
274        MultiSelectWindow menu = new MultiSelectWindow("Select Character", "Char NRO1", "Char NRO2", "Char NRO3", "Char NRO4", "Back to Main Menu");
275        menu.DefaultCancel = 0;
276        menu.AddItemHandler(0, StartGame);
277        menu.AddItemHandler(1, StartGame);
278        menu.AddItemHandler(2, StartGame);
279        menu.AddItemHandler(3, StartGame);
280        menu.AddItemHandler(4, MainMenu);
281        Add(menu);
282    }
283
284    public void PerkMenu() //ToDo Perks, Perk selecting system, Save system, and return to main menu button.
285    {
286        MultiSelectWindow menu = new MultiSelectWindow("Select Perks", "Perk NRO1", "Perk NRO2", "Perk NRO3", "Perk NRO4", "Back to Main Menu");
287        menu.DefaultCancel = 0;
288        menu.AddItemHandler(0, MainMenu);
289        menu.AddItemHandler(1, MainMenu);
290        menu.AddItemHandler(2, MainMenu);
291        menu.AddItemHandler(3, MainMenu);
292        menu.AddItemHandler(4, MainMenu);
293        Add(menu);
294    }
295
296    void CreateLifeMeter()
297    {
298        ProgressBar LifeBar = new ProgressBar(150, 20);
299        LifeBar.X = Screen.Right - LifeBar.Width / 2 - 10;
300        LifeBar.Y = Screen.Bottom + LifeBar.Height / 2 + 10;
301        LifeBar.BorderColor = Color.Black;
302        LifeBar.BindTo(player.health);
303        Add(LifeBar);
304    }
305}
Note: See TracBrowser for help on using the repository browser.