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

Revision 2378, 14.6 KB checked in by jumakall, 8 years ago (diff)
RevLine 
[2168]1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
[2344]8using System.Globalization;
[2168]9
[2229]10namespace SFN
[2168]11{
[2229]12    public class Peli : PhysicsGame
[2362]13    {       
14        List<Auto> autot = new List<Auto>();
[2316]15        List<Image> kuvat = new List<Image>();
[2362]16        List<int> hinnat = new List<int>();
17        String[] mallit = new String[4];
18        Label[] autokuvat = new Label[4];
[2284]19        int ID = 0, max_taso = 20;
20        double raha = 5000;
[2168]21
[2229]22        Image MenuBackround = LoadImage("MenuBackround");
[2378]23        Label number, malli, moottori, renkaat, moottorin_hinta, renkaiden_hinta, sell_price, rahat, keskiauto;
[2362]24       
[2328]25        int ChangeColor;
[2240]26
[2378]27
[2229]28        public override void Begin()
29        {
[2362]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
[2316]40            for (int i = 0; i < 4; i += 1)
41            {
[2328]42                kuvat.Add(LoadImage("Whites\\Car" + (i + 1)));
[2316]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
[2378]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));
[2229]52            Keyboard.Listen(Key.Escape, ButtonState.Released, Exit, null);
53            Mouse.IsCursorVisible = true;
54            CreateMenu();
55        }
[2198]56
[2378]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
[2229]65        void CreateMenu()
66        {
67            //Set menu backround
68            Level.Background.Image = MenuBackround;
[2198]69
[2229]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);
[2168]75
[2249]76            //Load game button
[2229]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);
[2198]82
[2229]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        }
[2198]89
[2229]90        void new_game_Clicked()
[2220]91        {
[2229]92            MessageDisplay.Add("Can't start new game. Game engine not availible.");
[2220]93        }
94
[2229]95        void load_game_Clicked()
[2220]96        {
[2229]97            MessageDisplay.Add("Can't load game. Game save system not availible.");
[2220]98        }
99
[2229]100        void quit_game_Clicked()
101        {
102            Exit();
[2220]103        }
104
[2229]105        void GoToShop()
106        {
107            ClearAll();
[2284]108            Keyboard.Listen(Key.Escape, ButtonState.Released, Exit, null);
[2378]109            //Camera.ZoomToLevel();
[2284]110            Level.BackgroundColor = Color.LightGray;
[2262]111
112            Label ylapalkki = new Label(Screen.Width, Screen.Height / 15);
[2353]113            ylapalkki.Color = Color.SkyBlue;
114            ylapalkki.Position = new Vector(0, Screen.Top - (ylapalkki.Height / 2));
[2262]115            Add(ylapalkki);
116
117            Label alapalkki = new Label(Screen.Width, Screen.Height / 4);
[2344]118            alapalkki.Color = Color.SkyBlue;
[2262]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);
[2353]123            oikeareuna.Color = Color.SkyBlue;
[2262]124            oikeareuna.Position = new Vector(Screen.Right - oikeareuna.Width / 2, 0);
125            Add(oikeareuna);
126
[2220]127
[2240]128            //Next
129            PushButton nextid = new PushButton("-->");
[2262]130            nextid.Position = new Vector(Screen.Right * 0.9, ylapalkki.Y); //Level.Right + 80, Level.Top + 60
[2240]131            nextid.Clicked += new Action(nextid_Clicked);
132            Add(nextid);
133
134            //Previous
135            PushButton previousid = new PushButton("<--");
[2262]136            previousid.Position = new Vector(Screen.Right * 0.65, ylapalkki.Y); //Level.Right - 80, Level.Top + 60
[2240]137            previousid.Clicked += new Action(previousid_Clicked);
138            Add(previousid);
139
[2249]140            PushButton update_engine = new PushButton("Update engine");
[2284]141            update_engine.Position = new Vector(oikeareuna.X, Screen.Top * 0.75);
[2249]142            update_engine.Clicked += new Action(update_engine_Clicked);
143            Add(update_engine);
144
145            PushButton update_tiers = new PushButton("Update tiers");
[2284]146            update_tiers.Position = new Vector(oikeareuna.X, Screen.Top * 0.52);
[2249]147            update_tiers.Clicked += new Action(update_tiers_Clicked);
148            Add(update_tiers);
149
[2284]150            PushButton drive = new PushButton("Leave safehouse");
[2353]151            drive.Position = new Vector(oikeareuna.X, Screen.Bottom * 0.4);
152            drive.Clicked += new Action(drive_Clicked);
[2284]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
[2240]160            //Number
161            number = new Label((ID+1).ToString()+"/"+autot.Count.ToString());
[2262]162            number.Position = new Vector(Screen.Right * 0.78, ylapalkki.Y); //Level.Right, Level.Top + 60
[2240]163            Add(number);
164
165            malli = new Label(autot[ID].korinnimi.ToString());
[2284]166            malli.Position = new Vector(Screen.Left * 0.9, ylapalkki.Y); //Level.Left, Level.Top + 60
[2229]167            Add(malli);
[2240]168
[2284]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
[2240]171            Add(moottori);
172
[2284]173            rahat = new Label("Money: "+raha.ToString());
174            rahat.Position = new Vector(oikeareuna.X, 0);
175            Add(rahat);
[2262]176
[2362]177            double hinta = (hinnat[autot[ID].kori] * 0.75) + ((autot[ID].moottori * 100) / 2) + ((autot[ID].renkaat * 100) / 2);
[2284]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);
[2262]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
[2240]188            Add(renkaat);
[2249]189
[2284]190            moottorin_hinta = new Label("Price: " + (autot[ID].moottori * 100).ToString());
191            moottorin_hinta.Position = new Vector(oikeareuna.X, Screen.Top * 0.65);
[2249]192            Add(moottorin_hinta);
193
[2284]194            renkaiden_hinta = new Label("Price: " + (autot[ID].renkaat * 100).ToString());
195            renkaiden_hinta.Position = new Vector(oikeareuna.X, Screen.Top * 0.4);
[2249]196            Add(renkaiden_hinta);
[2316]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);
[2328]204            vihrea.Clicked += new Action(vihrea_Clicked);
[2316]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);
[2328]211            sininen.Clicked += new Action(sininen_Clicked);
[2316]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);
[2328]218            punainen.Clicked += new Action(punainen_Clicked);
[2316]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);
[2328]225            keltainen.Clicked += new Action(keltainen_Clicked);
[2316]226            Add(keltainen);
227
228            PushButton valkoinen = new PushButton("White");
[2328]229            valkoinen.Clicked += new Action(valkoinen_Clicked);
[2316]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);
[2328]234
[2362]235           
[2353]236
237            double kerroin = 0.85;
238            int kuvaindeksilaskuri = 0;
239            for (int i = 0; i < 4; i++)
240            {
[2362]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);
[2353]251
[2362]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);
[2328]255
[2362]256                kuvaindeksilaskuri += 5;
[2353]257                kerroin -= 0.3;
[2362]258            }
[2353]259
[2378]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);
[2362]264        }
[2328]265
[2362]266        void Osta(int indeksi)
267        {
268            if (raha >= hinnat[indeksi])
[2353]269            {
[2362]270                raha -= hinnat[indeksi];
[2378]271                autot.Add(new Auto(mallit[indeksi], ChangeColor, indeksi, 1, 1));
[2362]272                ID = autot.Count - 1;
273                UpdateHUD();
274            }
275            else
276            {
277                MessageDisplay.Add("No enought money.");
278            }
[2229]279        }
[2240]280
[2353]281        void drive_Clicked()
282        {
283            Exit();
284        }
285
[2328]286        void valkoinen_Clicked()
[2316]287        {
[2328]288            ChangeColor = 0;
289            ChangeCarColor();
290        }
[2316]291
[2328]292        void keltainen_Clicked()
293        {
294            ChangeColor = 4;
295            ChangeCarColor();
[2316]296        }
297
[2328]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        {
[2362]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];
[2328]322        }
323
[2284]324        void sell_Clicked()
325        {
326            if (autot.Count > 1)
327            {
[2362]328                double hinta = (hinnat[autot[ID].kori] * 0.75) + ((autot[ID].moottori * 100) / 2) + ((autot[ID].renkaat * 100) / 2);
[2284]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
[2249]340        void update_tiers_Clicked()
341        {
[2284]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            }
[2249]359            UpdateHUD();
360        }
361
362        void update_engine_Clicked()
363        {
[2284]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            }
[2249]381            UpdateHUD();
382        }
383
[2240]384        void previousid_Clicked()
385        {
[2262]386            ID = (--ID + autot.Count) % autot.Count;
[2240]387            UpdateHUD();
388        }
389
390        void nextid_Clicked()
391        {
392            ID = ++ID % autot.Count;
393            UpdateHUD();
394        }
395
396        void UpdateHUD()
397        {
[2362]398            double hinta = (hinnat[autot[ID].kori] * 0.75) + ((autot[ID].moottori * 100) / 2) + ((autot[ID].renkaat * 100) / 2);
[2284]399            sell_price.Text = "Sell price: " + hinta.ToString();
[2240]400            malli.Text = autot[ID].korinnimi.ToString();
[2284]401            moottori.Text = "Engine: " + autot[ID].moottori.ToString();
402            renkaat.Text = "Tiers: " + autot[ID].renkaat.ToString();
[2240]403            number.Text = (ID + 1).ToString() + "/" + autot.Count.ToString();
[2284]404            moottorin_hinta.Text = "Price: " + (autot[ID].moottori * 100).ToString();
405            renkaiden_hinta.Text = "Price: " + (autot[ID].renkaat * 100).ToString();
[2362]406            rahat.Text = "Money: " + raha.ToString();
[2378]407            keskiauto.Image = kuvat[(autot[ID].kori * 4) + (autot[ID].vari)];
[2240]408        }
[2229]409    }
410}
Note: See TracBrowser for help on using the repository browser.