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

Revision 4421, 7.8 KB checked in by janiemit, 9 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        Add(player);
137        SpawnZombie();
138    }
139
140    public void Score(int changeValue)
141    {
142        scoreboard.Value += changeValue;
143    }
144
145    private void SpawnZombie()
146    {
147        Zombie zombie = new Zombie(50, 50, RandomGen.NextDouble(Level.Left, Level.Right), RandomGen.NextDouble(Level.Bottom, Level.Top), 100);
148        enemies.Add(zombie);
149        Add(zombie);
150    }
151
152    private void KillAllEnemies()
153    {
154        foreach (Zombie enemy in enemies)
155        {
156            enemy.Destroy();
157        }
158    }
159
160    private void AddScoreMeter()
161    {
162        scoreboard = new IntMeter(0);
163        Label ScoreScreen = new Label();
164        ScoreScreen.X = 0;
165        ScoreScreen.Y = Screen.Bottom + 100;
166        ScoreScreen.TextColor = Color.Black;
167        ScoreScreen.Color = Color.White;
168        ScoreScreen.BindTo(scoreboard);
169        Add(ScoreScreen);
170    }
171
172    private void SaveAndBackToMenu() //ToDo: Save
173    {
174        ClearAll();
175        MessageDisplay.Add("Saved!");
176        MainMenu();
177    }
178
179    public void PauseMenu()
180    {
181        MultiSelectWindow menu = new MultiSelectWindow("Pause Menu", "Resume Game", "Back to Menu", "Exit Game");
182        menu.DefaultCancel = 0;
183        menu.AddItemHandler(0, delegate { IsPaused = false; });
184        menu.AddItemHandler(1, SaveAndBackToMenu);
185        menu.AddItemHandler(2, Exit);
186        Add(menu);
187        IsPaused = true;
188    }
189   
190    public void Inventory() //ToDo Inventory and funktionality
191    {
192        MultiSelectWindow menu = new MultiSelectWindow("Inventory", "Back to Game");
193        menu.DefaultCancel = 0;
194        menu.AddItemHandler(0, delegate { IsPaused = false; });
195        Add(menu);
196        IsPaused = true;
197    }
198
199    public void CharacterMenu() //ToDo Character variations
200    {
201        MultiSelectWindow menu = new MultiSelectWindow("Select Character", "Char NRO1", "Char NRO2", "Char NRO3", "Char NRO4", "Back to Main Menu");
202        menu.DefaultCancel = 0;
203        menu.AddItemHandler(0, StartGame);
204        menu.AddItemHandler(1, StartGame);
205        menu.AddItemHandler(2, StartGame);
206        menu.AddItemHandler(3, StartGame);
207        menu.AddItemHandler(4, MainMenu);
208        Add(menu);
209    }
210
211    public void PerkMenu() //ToDo Perks, Perk selecting system, Save system, and return to main menu button.
212    {
213        MultiSelectWindow menu = new MultiSelectWindow("Select Perks", "Perk NRO1", "Perk NRO2", "Perk NRO3", "Perk NRO4", "Back to Main Menu");
214        menu.DefaultCancel = 0;
215        menu.AddItemHandler(0, MainMenu);
216        menu.AddItemHandler(1, MainMenu);
217        menu.AddItemHandler(2, MainMenu);
218        menu.AddItemHandler(3, MainMenu);
219        menu.AddItemHandler(4, MainMenu);
220        Add(menu);
221    }
222
223    /*void CreateLifeMeter()
224    {
225        LifeMeter = new DoubleMeter(10);
226        LifeMeter.MaxValue = 10;
227        LifeMeter.LowerLimit += HealthDepleated;
228
229        ProgressBar LifeBar = new ProgressBar(150, 20);
230        LifeBar.X = Screen.Left + 150;
231        LifeBar.Y = Screen.Top - 20;
232        LifeBar.BindTo(LifeMeter);
233        Add(LifeBar);
234    }
235
236    void HealthDepleated()
237    {
238        MessageDisplay.Add("Elämät loppuivat, voi voi.");
239    } */
240}
Note: See TracBrowser for help on using the repository browser.