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

Revision 2353, 16.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    {        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", 15000, 1, 4, 5));
37            autot.Add(new Auto("Model3", 17500, 3, 9, 1));
38            autot.Add(new Auto("Model2", 20000, 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.SkyBlue;
93            ylapalkki.Position = new Vector(0, Screen.Top - (ylapalkki.Height / 2));
94            Add(ylapalkki);
95
96            Label alapalkki = new Label(Screen.Width, Screen.Height / 4);
97            alapalkki.Color = Color.SkyBlue;
98            alapalkki.Position = new Vector(0, Screen.Bottom + (alapalkki.Height / 2));
99            Add(alapalkki);
100
101            Label oikeareuna = new Label(Screen.Width / 6, Screen.Height);
102            oikeareuna.Color = Color.SkyBlue;
103            oikeareuna.Position = new Vector(Screen.Right - oikeareuna.Width / 2, 0);
104            Add(oikeareuna);
105
106
107            //Next
108            PushButton nextid = new PushButton("-->");
109            nextid.Position = new Vector(Screen.Right * 0.9, ylapalkki.Y); //Level.Right + 80, Level.Top + 60
110            nextid.Clicked += new Action(nextid_Clicked);
111            Add(nextid);
112
113            //Previous
114            PushButton previousid = new PushButton("<--");
115            previousid.Position = new Vector(Screen.Right * 0.65, ylapalkki.Y); //Level.Right - 80, Level.Top + 60
116            previousid.Clicked += new Action(previousid_Clicked);
117            Add(previousid);
118
119            PushButton update_engine = new PushButton("Update engine");
120            update_engine.Position = new Vector(oikeareuna.X, Screen.Top * 0.75);
121            update_engine.Clicked += new Action(update_engine_Clicked);
122            Add(update_engine);
123
124            PushButton update_tiers = new PushButton("Update tiers");
125            update_tiers.Position = new Vector(oikeareuna.X, Screen.Top * 0.52);
126            update_tiers.Clicked += new Action(update_tiers_Clicked);
127            Add(update_tiers);
128
129            PushButton drive = new PushButton("Leave safehouse");
130            drive.Position = new Vector(oikeareuna.X, Screen.Bottom * 0.4);
131            drive.Clicked += new Action(drive_Clicked);
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
215            double kerroin = 0.85;
216            int kuvaindeksilaskuri = 0;
217            for (int i = 0; i < 4; i++)
218            {
219                Label autokuva = new Label(40, 20);
220                autokuva.Image = kuvat[i + kuvaindeksilaskuri];
221                autokuva.Position = new Vector(Screen.Left * kerroin, alapalkki.Y + alapalkki.Height * 0.2);
222                Add(autokuva);
223                kuvaindeksilaskuri += 5;
224            }
225
226            auto1 = new Label(40, 20);
227            auto1.Position = new Vector(Screen.Left * 0.85, alapalkki.Y + alapalkki.Height * 0.20);
228            auto1.Image = kuvat[0];
229            Add(auto1);
230
231            auto2 = new Label(40, 20);
232            auto2.Position = new Vector(Screen.Left * 0.55, alapalkki.Y + alapalkki.Height * 0.20);
233            auto2.Image = kuvat[5];
234            Add(auto2);
235
236            auto3 = new Label(40, 20);
237            auto3.Position = new Vector(Screen.Left * 0.25, alapalkki.Y + alapalkki.Height * 0.20);
238            auto3.Image = kuvat[10];
239            Add(auto3);
240
241            auto4 = new Label(40, 20);
242            auto4.Position = new Vector(Screen.Left * -0.05, alapalkki.Y + alapalkki.Height * 0.20);
243            auto4.Image = kuvat[15];
244            Add(auto4);
245
246            Label[] osta_auto_buttons = new Label[4];
247            kerroin = 0.85;
248
249            for (int i = 0; i < osta_auto_buttons.Length; i++)
250                        {
251                osta_auto_buttons[i] = new PushButton("Buy");
252                osta_auto_buttons[i].Position = new Vector(Screen.Left * kerroin, alapalkki.Y - alapalkki.Height * 0.2);
253                Add(osta_auto_buttons[i]);
254                kerroin -= 0.3;
255                        }
256
257            /*osta_auto1 = new PushButton("Osta");
258            osta_auto1.Position = new Vector(Screen.Left * 0.85, alapalkki.Y - alapalkki.Height * 0.20);
259            Add(osta_auto1);
260
261            osta_auto2 = new PushButton("Osta");
262            osta_auto2.Position = new Vector(Screen.Left * 0.55, alapalkki.Y - alapalkki.Height * 0.20);
263            Add(osta_auto2);
264
265            osta_auto3 = new PushButton("Osta");
266            osta_auto3.Position = new Vector(Screen.Left * 0.25, alapalkki.Y - alapalkki.Height * 0.20);
267            Add(osta_auto3);
268
269            osta_auto4 = new PushButton("Osta");
270            osta_auto4.Position = new Vector(Screen.Left * -0.05, alapalkki.Y - alapalkki.Height * 0.20);
271            Add(osta_auto4);*/
272
273            /*Label[] laabelit = new Label[4];
274            double kerroin = 0.85;
275            for (int i = 0; i < laabelit.Length; i++)
276            {
277                String hintaTuhatErottimella = autot[i].korinhinta.ToString("0,0", CultureInfo.InvariantCulture);
278                laabelit[i] = new Label("Price: " + hintaTuhatErottimella);
279                laabelit[i].Position = new Vector(Screen.Left * kerroin, alapalkki.Y - alapalkki.Height * 0.05);
280                Add(laabelit[i]);
281                kerroin -= 0.3;
282            } */
283
284            // Lisätään hintaan tuhaterotin
285            //int _hinta = (10000 + (0 * 100));
286           
287
288            /*Label hinta_auto1 = new Label("Price: "+hintaTuhatErottimella);
289            hinta_auto1.Position = new Vector(Screen.Left * 0.85, alapalkki.Y - alapalkki.Height * 0.05);
290            Add(hinta_auto1);
291
292            _hinta = int.Parse((10000 + (1 * 100)).ToString());
293            hintaTuhatErottimella = _hinta.ToString("0,0", CultureInfo.InvariantCulture);
294            Label hinta_auto2 = new Label("Price: "+hintaTuhatErottimella);
295            hinta_auto2.Position = new Vector(Screen.Left * 0.55, alapalkki.Y - alapalkki.Height * 0.05);
296            Add(hinta_auto2);
297
298            _hinta = int.Parse((20000 + (2 * 100)).ToString());
299            hintaTuhatErottimella = _hinta.ToString("0,0", CultureInfo.InvariantCulture);
300            Label hinta_auto3 = new Label("Price: "+hintaTuhatErottimella);
301            hinta_auto3.Position = new Vector(Screen.Left * 0.25, alapalkki.Y - alapalkki.Height * 0.05);
302            Add(hinta_auto3);
303
304            _hinta = int.Parse((20000 + (3 * 100)).ToString());
305            hintaTuhatErottimella = _hinta.ToString("0,0", CultureInfo.InvariantCulture);
306            Label hinta_auto4 = new Label("Price: "+hintaTuhatErottimella);
307            hinta_auto4.Position = new Vector(Screen.Left * -0.05, alapalkki.Y - alapalkki.Height * 0.05);
308            Add(hinta_auto4);*/
309        }
310
311        void drive_Clicked()
312        {
313            Exit();
314        }
315
316        void valkoinen_Clicked()
317        {
318            ChangeColor = 0;
319            ChangeCarColor();
320        }
321
322        void keltainen_Clicked()
323        {
324            ChangeColor = 4;
325            ChangeCarColor();
326        }
327
328        void punainen_Clicked()
329        {
330            ChangeColor = 3;
331            ChangeCarColor();
332        }
333
334        void sininen_Clicked()
335        {
336            ChangeColor = 1;
337            ChangeCarColor();
338        }
339
340        void vihrea_Clicked()
341        {
342            ChangeColor = 2;
343            ChangeCarColor();
344        }
345
346        void ChangeCarColor()
347        {
348            auto1.Image = kuvat[ChangeColor];
349            auto2.Image = kuvat[ChangeColor + 5];
350            auto3.Image = kuvat[ChangeColor + 10];
351            auto4.Image = kuvat[ChangeColor + 15];
352        }
353
354        void sell_Clicked()
355        {
356            if (autot.Count > 1)
357            {
358                double hinta = (10000 + (autot[ID].kori * 100) * 0.75) + ((autot[ID].moottori * 100) / 2) + ((autot[ID].renkaat * 100) / 2);
359                autot.RemoveAt(ID);
360                raha = raha + hinta;
361                ID = ++ID % autot.Count;
362                UpdateHUD();
363            }
364            else
365            {
366                MessageDisplay.Add("Can't sell last car.");
367            }
368        }
369
370        void update_tiers_Clicked()
371        {
372            int hinta = autot[ID].renkaat * 100;
373            if (raha >= hinta)
374            {
375                if (autot[ID].renkaat < max_taso)
376                {
377                    raha = raha - hinta;
378                    autot[ID].renkaat += 1;
379                }
380                else
381                {
382                    MessageDisplay.Add("Can't update engine.");
383                }
384            }
385            else
386            {
387                MessageDisplay.Add("No enought money.");
388            }
389            UpdateHUD();
390        }
391
392        void update_engine_Clicked()
393        {
394            int hinta = autot[ID].moottori * 100;
395            if (raha >= hinta)
396            {
397                if (autot[ID].moottori < max_taso)
398                {
399                    raha = raha - hinta;
400                    autot[ID].moottori += 1;
401                }
402                else
403                {
404                    MessageDisplay.Add("Can't update engine.");
405                }
406            }
407            else
408            {
409                MessageDisplay.Add("No enought money.");
410            }
411            UpdateHUD();
412        }
413
414        void previousid_Clicked()
415        {
416            ID = (--ID + autot.Count) % autot.Count;
417            UpdateHUD();
418        }
419
420        void nextid_Clicked()
421        {
422            ID = ++ID % autot.Count;
423            UpdateHUD();
424        }
425
426        void UpdateHUD()
427        {
428            double hinta = (10000 + (autot[ID].kori * 100) * 0.75) + ((autot[ID].moottori * 100) / 2) + ((autot[ID].renkaat * 100) / 2);
429            sell_price.Text = "Sell price: " + hinta.ToString();
430            malli.Text = autot[ID].korinnimi.ToString();
431            moottori.Text = "Engine: " + autot[ID].moottori.ToString();
432            renkaat.Text = "Tiers: " + autot[ID].renkaat.ToString();
433            number.Text = (ID + 1).ToString() + "/" + autot.Count.ToString();
434            moottorin_hinta.Text = "Price: " + (autot[ID].moottori * 100).ToString();
435            renkaiden_hinta.Text = "Price: " + (autot[ID].renkaat * 100).ToString();
436        }
437    }
438}
Note: See TracBrowser for help on using the repository browser.