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

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