source: 2011/26/JuhoK/SFN/SFN/SFN/Peli.cs @ 2328

Revision 2328, 13.6 KB checked in by jumakall, 8 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
9namespace SFN
10{
11    public class Peli : PhysicsGame
12    {
13        List<Auto> autot = new List<Auto>();
14        List<Image> kuvat = new List<Image>();
15        int ID = 0, max_taso = 20;
16        double raha = 5000;
17
18        Image MenuBackround = LoadImage("MenuBackround");
19        Image kuva = LoadImage("Blues\\Perus1");
20        Label number, malli, moottori, renkaat, moottorin_hinta, renkaiden_hinta, sell_price, rahat;
21        Label auto1, auto2, auto3, auto4;
22        PushButton osta_auto1, osta_auto2, osta_auto3, osta_auto4;
23        int ChangeColor;
24
25        public override void Begin()
26        {
27            for (int i = 0; i < 4; i += 1)
28            {
29                kuvat.Add(LoadImage("Whites\\Car" + (i + 1)));
30                kuvat.Add(LoadImage("Blues\\Car" + (i + 1)));
31                kuvat.Add(LoadImage("Greens\\Car" + (i + 1)));
32                kuvat.Add(LoadImage("Reds\\Car" + (i + 1)));
33                kuvat.Add(LoadImage("Yellows\\Car" + (i + 1)));
34            }
35
36            autot.Add(new Auto("Model1", 1, 4, 5));
37            autot.Add(new Auto("Model3", 3, 9, 1));
38            autot.Add(new Auto("Model2", 2, 9, 3));
39            Keyboard.Listen(Key.Escape, ButtonState.Released, Exit, null);
40            Mouse.IsCursorVisible = true;
41            CreateMenu();
42        }
43
44        void CreateMenu()
45        {
46            //Set menu backround
47            Level.Background.Image = MenuBackround;
48
49            //Quit game button
50            PushButton quit_game = new PushButton("Quit game");
51            quit_game.Clicked += new Action(quit_game_Clicked);
52            quit_game.Position = new Vector(380.0, -50.0);
53            Add(quit_game);
54
55            //Load game button
56            PushButton load_game = new PushButton("Load game");
57            //load_game.Clicked += new Action(load_game_Clicked);
58            load_game.Clicked += new Action(GoToShop);
59            load_game.Position = new Vector(200.0, -50.0);
60            Add(load_game);
61
62            //New game button
63            PushButton new_game = new PushButton("New game");
64            new_game.Clicked += new Action(new_game_Clicked);
65            new_game.Position = new Vector(20.0, -50.0);
66            Add(new_game);
67        }
68
69        void new_game_Clicked()
70        {
71            MessageDisplay.Add("Can't start new game. Game engine not availible.");
72        }
73
74        void load_game_Clicked()
75        {
76            MessageDisplay.Add("Can't load game. Game save system not availible.");
77        }
78
79        void quit_game_Clicked()
80        {
81            Exit();
82        }
83
84        void GoToShop()
85        {
86            ClearAll();
87            Keyboard.Listen(Key.Escape, ButtonState.Released, Exit, null);
88            Camera.ZoomToLevel();
89            Level.BackgroundColor = Color.LightGray;
90
91            Label ylapalkki = new Label(Screen.Width, Screen.Height / 15);
92            ylapalkki.Color = Color.White;
93            ylapalkki.X = 0;
94            ylapalkki.Y = Screen.Top - (ylapalkki.Height / 2);
95            Add(ylapalkki);
96
97            Label alapalkki = new Label(Screen.Width, Screen.Height / 4);
98            alapalkki.Color = Color.White;
99            alapalkki.Position = new Vector(0, Screen.Bottom + (alapalkki.Height / 2));
100            Add(alapalkki);
101
102            Label oikeareuna = new Label(Screen.Width / 6, Screen.Height);
103            oikeareuna.Color = Color.White;
104            oikeareuna.Position = new Vector(Screen.Right - oikeareuna.Width / 2, 0);
105            Add(oikeareuna);
106
107
108            //Next
109            PushButton nextid = new PushButton("-->");
110            nextid.Position = new Vector(Screen.Right * 0.9, ylapalkki.Y); //Level.Right + 80, Level.Top + 60
111            nextid.Clicked += new Action(nextid_Clicked);
112            Add(nextid);
113
114            //Previous
115            PushButton previousid = new PushButton("<--");
116            previousid.Position = new Vector(Screen.Right * 0.65, ylapalkki.Y); //Level.Right - 80, Level.Top + 60
117            previousid.Clicked += new Action(previousid_Clicked);
118            Add(previousid);
119
120            PushButton update_engine = new PushButton("Update engine");
121            update_engine.Position = new Vector(oikeareuna.X, Screen.Top * 0.75);
122            update_engine.Clicked += new Action(update_engine_Clicked);
123            Add(update_engine);
124
125            PushButton update_tiers = new PushButton("Update tiers");
126            update_tiers.Position = new Vector(oikeareuna.X, Screen.Top * 0.52);
127            update_tiers.Clicked += new Action(update_tiers_Clicked);
128            Add(update_tiers);
129
130            PushButton drive = new PushButton("Leave safehouse");
131            drive.Position = new Vector(oikeareuna.X, Screen.Bottom * 0.4); 
132            Add(drive);
133
134            PushButton sell = new PushButton("Sell car");
135            sell.Position = new Vector(oikeareuna.X, Screen.Bottom * 0.2);
136            sell.Clicked += new Action(sell_Clicked);
137            Add(sell);
138
139            //Number
140            number = new Label((ID+1).ToString()+"/"+autot.Count.ToString());
141            number.Position = new Vector(Screen.Right * 0.78, ylapalkki.Y); //Level.Right, Level.Top + 60
142            Add(number);
143
144            malli = new Label(autot[ID].korinnimi.ToString());
145            malli.Position = new Vector(Screen.Left * 0.9, ylapalkki.Y); //Level.Left, Level.Top + 60
146            Add(malli);
147
148            moottori = new Label("Engine: " + autot[ID].moottori.ToString());
149            moottori.Position = new Vector(Screen.Left * 0.5, ylapalkki.Y); //Level.Left + 250, Level.Top * 1.2
150            Add(moottori);
151
152            rahat = new Label("Money: "+raha.ToString());
153            rahat.Position = new Vector(oikeareuna.X, 0);
154            Add(rahat);
155
156            double hinta =(10000 + (autot[ID].kori * 100) * 0.75) + ((autot[ID].moottori * 100) / 2) + ((autot[ID].renkaat * 100) / 2);
157            sell_price = new Label("Sell price: " + hinta);
158            sell_price.Position = new Vector(oikeareuna.X, Screen.Bottom * 0.28);
159            Add(sell_price);
160           
161
162            renkaat = new Label("Tiers: "+autot[ID].renkaat.ToString());
163            renkaat.Position = new Vector(Screen.Left * 0.05, ylapalkki.Y);
164            //renkaat.Y = ylapalkki.Y;
165            //ylapalkki.Y = 200 - ylapalkki.Height/2;
166            //renkaat.Position = //new Vector(ylapalkki.X, ylapalkki.Y); //Level.Left + 500, Level.Top + 60
167            Add(renkaat);
168
169            moottorin_hinta = new Label("Price: " + (autot[ID].moottori * 100).ToString());
170            moottorin_hinta.Position = new Vector(oikeareuna.X, Screen.Top * 0.65);
171            Add(moottorin_hinta);
172
173            renkaiden_hinta = new Label("Price: " + (autot[ID].renkaat * 100).ToString());
174            renkaiden_hinta.Position = new Vector(oikeareuna.X, Screen.Top * 0.4);
175            Add(renkaiden_hinta);
176
177            //Ostaminen
178
179            PushButton vihrea = new PushButton("");
180            vihrea.Color = Color.Green;
181            vihrea.Size = new Vector(50, 50);
182            vihrea.Position = new Vector(Screen.Right * 0.9, Screen.Bottom * 0.9);
183            vihrea.Clicked += new Action(vihrea_Clicked);
184            Add(vihrea);
185
186            PushButton sininen = new PushButton("");
187            sininen.Color = Color.Blue;
188            sininen.Size = new Vector(50, 50);
189            sininen.Position = new Vector(Screen.Right * 0.8, Screen.Bottom * 0.9);
190            sininen.Clicked += new Action(sininen_Clicked);
191            Add(sininen);
192
193            PushButton punainen = new PushButton("");
194            punainen.Color = Color.Red;
195            punainen.Size = new Vector(50, 50);
196            punainen.Position = new Vector(Screen.Right * 0.9, Screen.Bottom * 0.78);
197            punainen.Clicked += new Action(punainen_Clicked);
198            Add(punainen);
199
200            PushButton keltainen = new PushButton("");
201            keltainen.Color = Color.Yellow;
202            keltainen.Size = new Vector(50, 50);
203            keltainen.Position = new Vector(Screen.Right * 0.8, Screen.Bottom * 0.78);
204            keltainen.Clicked += new Action(keltainen_Clicked);
205            Add(keltainen);
206
207            PushButton valkoinen = new PushButton("White");
208            valkoinen.Clicked += new Action(valkoinen_Clicked);
209            valkoinen.Color = Color.White;
210            valkoinen.Size = new Vector(118, 50);
211            valkoinen.Position = new Vector(Screen.Right * 0.85, Screen.Bottom * 0.66);
212            Add(valkoinen);
213
214            auto1 = new Label(40, 20);
215            auto1.Position = new Vector(Screen.Left * 0.9, alapalkki.Y + alapalkki.Height * 0.20);
216            auto1.Image = kuvat[0];
217            Add(auto1);
218
219            auto2 = new Label(40, 20);
220            auto2.Position = new Vector(Screen.Left * 0.75, alapalkki.Y + alapalkki.Height * 0.20);
221            auto2.Image = kuvat[5];
222            Add(auto2);
223
224            auto3 = new Label(40, 20);
225            auto3.Position = new Vector(Screen.Left * 0.6, alapalkki.Y + alapalkki.Height * 0.20);
226            auto3.Image = kuvat[10];
227            Add(auto3);
228
229            auto4 = new Label(40, 20);
230            auto4.Position = new Vector(Screen.Left * 0.45, alapalkki.Y + alapalkki.Height * 0.20);
231            auto4.Image = kuvat[15];
232            Add(auto4);
233
234            osta_auto1 = new PushButton("");
235            osta_auto1.Position = new Vector(Screen.Left * 0.9, alapalkki.Y - alapalkki.Height * 0.20);
236            Add(osta_auto1);
237
238            osta_auto2 = new PushButton("");
239            osta_auto2.Position = new Vector(Screen.Left * 0.75, alapalkki.Y - alapalkki.Height * 0.20);
240            Add(osta_auto2);
241
242            osta_auto3 = new PushButton("");
243            osta_auto3.Position = new Vector(Screen.Left * 0.6, alapalkki.Y - alapalkki.Height * 0.20);
244            Add(osta_auto3);
245
246            osta_auto4 = new PushButton("");
247            osta_auto4.Position = new Vector(Screen.Left * 0.45, alapalkki.Y - alapalkki.Height * 0.20);
248            Add(osta_auto4);
249        }
250
251        void valkoinen_Clicked()
252        {
253            ChangeColor = 0;
254            ChangeCarColor();
255        }
256
257        void keltainen_Clicked()
258        {
259            ChangeColor = 4;
260            ChangeCarColor();
261        }
262
263        void punainen_Clicked()
264        {
265            ChangeColor = 3;
266            ChangeCarColor();
267        }
268
269        void sininen_Clicked()
270        {
271            ChangeColor = 1;
272            ChangeCarColor();
273        }
274
275        void vihrea_Clicked()
276        {
277            ChangeColor = 2;
278            ChangeCarColor();
279        }
280
281        void ChangeCarColor()
282        {
283            auto1.Image = kuvat[ChangeColor];
284            auto2.Image = kuvat[ChangeColor + 5];
285            auto3.Image = kuvat[ChangeColor + 10];
286            auto4.Image = kuvat[ChangeColor + 15];
287        }
288
289        void sell_Clicked()
290        {
291            if (autot.Count > 1)
292            {
293                double hinta = (10000 + (autot[ID].kori * 100) * 0.75) + ((autot[ID].moottori * 100) / 2) + ((autot[ID].renkaat * 100) / 2);
294                autot.RemoveAt(ID);
295                raha = raha + hinta;
296                ID = ++ID % autot.Count;
297                UpdateHUD();
298            }
299            else
300            {
301                MessageDisplay.Add("Can't sell last car.");
302            }
303        }
304
305        void update_tiers_Clicked()
306        {
307            int hinta = autot[ID].renkaat * 100;
308            if (raha >= hinta)
309            {
310                if (autot[ID].renkaat < max_taso)
311                {
312                    raha = raha - hinta;
313                    autot[ID].renkaat += 1;
314                }
315                else
316                {
317                    MessageDisplay.Add("Can't update engine.");
318                }
319            }
320            else
321            {
322                MessageDisplay.Add("No enought money.");
323            }
324            UpdateHUD();
325        }
326
327        void update_engine_Clicked()
328        {
329            int hinta = autot[ID].moottori * 100;
330            if (raha >= hinta)
331            {
332                if (autot[ID].moottori < max_taso)
333                {
334                    raha = raha - hinta;
335                    autot[ID].moottori += 1;
336                }
337                else
338                {
339                    MessageDisplay.Add("Can't update engine.");
340                }
341            }
342            else
343            {
344                MessageDisplay.Add("No enought money.");
345            }
346            UpdateHUD();
347        }
348
349        void previousid_Clicked()
350        {
351            ID = (--ID + autot.Count) % autot.Count;
352            UpdateHUD();
353        }
354
355        void nextid_Clicked()
356        {
357            ID = ++ID % autot.Count;
358            UpdateHUD();
359        }
360
361        void UpdateHUD()
362        {
363            double hinta = (10000 + (autot[ID].kori * 100) * 0.75) + ((autot[ID].moottori * 100) / 2) + ((autot[ID].renkaat * 100) / 2);
364            sell_price.Text = "Sell price: " + hinta.ToString();
365            malli.Text = autot[ID].korinnimi.ToString();
366            moottori.Text = "Engine: " + autot[ID].moottori.ToString();
367            renkaat.Text = "Tiers: " + autot[ID].renkaat.ToString();
368            number.Text = (ID + 1).ToString() + "/" + autot.Count.ToString();
369            moottorin_hinta.Text = "Price: " + (autot[ID].moottori * 100).ToString();
370            renkaiden_hinta.Text = "Price: " + (autot[ID].renkaat * 100).ToString();
371        }
372    }
373}
Note: See TracBrowser for help on using the repository browser.