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

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