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

Revision 4423, 7.9 KB checked in by teematma, 10 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    //DoubleMeter LifeMeter; <-- Huono yritykseni tehdä elämä laskuria, aika loppui niin en kerennyt viimeistellä ja en ois osannukkaan, loput tohon liittyvä löytyy tiedoston pohjalta. -Aqua
16
17    public override void Begin()
18    {
19        game = this;
20        Mouse.IsCursorVisible = true;
21        MainMenu();
22    }
23
24    public void MainMenu()
25    {
26        MultiSelectWindow menu = new MultiSelectWindow("TESTMODE", "Developer tools", "Start this thing", "Perks", "Get me out of here");
27        menu.DefaultCancel = -0;
28        menu.AddItemHandler(0, delegate() { MessageDisplay.Add("Starting game..."); StartGame(); DeveloperCommand(); });
29        menu.AddItemHandler(1, CharacterMenu);
30        menu.AddItemHandler(2, PerkMenu);
31        menu.AddItemHandler(3, Exit);
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] == "level")
70            {
71                if (commands[1] == "up")
72                {
73                    MessageDisplay.Add("+" + int.Parse(commands[2]) + " levels");
74                }
75                else if (commands[1] == "down")
76                {
77                    MessageDisplay.Add("-" + int.Parse(commands[2]) + " levels");
78                }
79            }
80            else if (commands[0] == "item")
81            {
82                if (player.GiveWeapon(commands[1]))
83                {
84                    MessageDisplay.Add("You got " + commands[1] + "!");
85                }
86                else
87                {
88                    MessageDisplay.Add("What " + commands[1] + "?");
89                }
90            }
91            else if (commands[0] == "powerup")
92            {
93                if (player.PowerUp(commands[1], double.Parse(commands[2])))
94                    MessageDisplay.Add("Activated " + commands[1] + " powerup");
95                else
96                    MessageDisplay.Add("No such powerup");
97            }
98            else if (commands[0] == "spawn")
99            {
100                if (commands[1] == "zombie")
101                {
102                    if (commands.Length > 2)
103                    {
104                        for (int i = 0; i < int.Parse(commands[2]); i++)
105                            SpawnZombie();
106                    } else { SpawnZombie(); }
107                }
108            }
109            else if (commands[0] == "kill")
110            {
111                if (commands[1] == "enemies")
112                {
113                    KillAllEnemies();
114                    MessageDisplay.Add("All enemies killed");
115                }
116            }
117            else if (commands[0] == "exit")
118            {
119                Exit();
120            }
121            else { MessageDisplay.Add("Unknow command!"); }
122
123            DeveloperCommand();
124        };
125        Add(prompt);
126    }
127
128    private void StartGame()
129    {
130        Keyboard.Listen(Key.Escape, ButtonState.Pressed, delegate() { PauseMenu(); }, null);
131        Keyboard.Listen(Key.E, ButtonState.Pressed, delegate() { Inventory(); }, null);
132        Keyboard.Listen(Key.Tab, ButtonState.Pressed, DeveloperCommand, null);
133        AddScoreMeter();
134
135        player = new Player(50, 50, 1, true);
136        Camera.Follow(player);
137        Add(player);
138        SpawnZombie();
139    }
140
141    public void Score(int changeValue)
142    {
143        scoreboard.Value += changeValue;
144    }
145
146    private void SpawnZombie()
147    {
148        Zombie zombie = new Zombie(50, 50, RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top), 100);
149        enemies.Add(zombie);
150        Add(zombie);
151    }
152
153    private void KillAllEnemies()
154    {
155        foreach (Zombie enemy in enemies)
156        {
157            enemy.Destroy();
158        }
159    }
160
161    private void AddScoreMeter()
162    {
163        scoreboard = new IntMeter(0);
164        Label ScoreScreen = new Label();
165        ScoreScreen.X = 0;
166        ScoreScreen.Y = Screen.Bottom + 100;
167        ScoreScreen.TextColor = Color.Black;
168        ScoreScreen.Color = Color.White;
169        ScoreScreen.BindTo(scoreboard);
170        Add(ScoreScreen);
171    }
172
173    private void SaveAndBackToMenu() //ToDo: Save
174    {
175        ClearAll();
176        MessageDisplay.Add("Saved!");
177        MainMenu();
178    }
179
180    public void PauseMenu()
181    {
182        MultiSelectWindow menu = new MultiSelectWindow("Pause Menu", "Resume Game", "Back to Menu", "Exit Game");
183        menu.DefaultCancel = 0;
184        menu.AddItemHandler(0, delegate { IsPaused = false; });
185        menu.AddItemHandler(1, SaveAndBackToMenu);
186        menu.AddItemHandler(2, Exit);
187        Add(menu);
188        IsPaused = true;
189    }
190   
191    public void Inventory() //ToDo Inventory and funktionality
192    {
193        MultiSelectWindow menu = new MultiSelectWindow("Inventory", "Back to Game");
194        menu.DefaultCancel = 0;
195        menu.AddItemHandler(0, delegate { IsPaused = false; });
196        Add(menu);
197        IsPaused = true;
198    }
199
200    public void CharacterMenu() //ToDo Character variations
201    {
202        MultiSelectWindow menu = new MultiSelectWindow("Select Character", "Char NRO1", "Char NRO2", "Char NRO3", "Char NRO4", "Back to Main Menu");
203        menu.DefaultCancel = 0;
204        menu.AddItemHandler(0, StartGame);
205        menu.AddItemHandler(1, StartGame);
206        menu.AddItemHandler(2, StartGame);
207        menu.AddItemHandler(3, StartGame);
208        menu.AddItemHandler(4, MainMenu);
209        Add(menu);
210    }
211
212    public void PerkMenu() //ToDo Perks, Perk selecting system, Save system, and return to main menu button.
213    {
214        MultiSelectWindow menu = new MultiSelectWindow("Select Perks", "Perk NRO1", "Perk NRO2", "Perk NRO3", "Perk NRO4", "Back to Main Menu");
215        menu.DefaultCancel = 0;
216        menu.AddItemHandler(0, MainMenu);
217        menu.AddItemHandler(1, MainMenu);
218        menu.AddItemHandler(2, MainMenu);
219        menu.AddItemHandler(3, MainMenu);
220        menu.AddItemHandler(4, MainMenu);
221        Add(menu);
222    }
223
224    /*void CreateLifeMeter()
225    {
226        LifeMeter = new DoubleMeter(10);
227        LifeMeter.MaxValue = 10;
228        LifeMeter.LowerLimit += HealthDepleated;
229
230        ProgressBar LifeBar = new ProgressBar(150, 20);
231        LifeBar.X = Screen.Left + 150;
232        LifeBar.Y = Screen.Top - 20;
233        LifeBar.BindTo(LifeMeter);
234        Add(LifeBar);
235    }
236
237    void HealthDepleated()
238    {
239        MessageDisplay.Add("Elämät loppuivat, voi voi.");
240    } */
241}
Note: See TracBrowser for help on using the repository browser.