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

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