source: 2012/24/LauriK/Testi_23_3_13/Testi_23_3_13/Testi_23_3_13/Testi_23_3_13.cs @ 3949

Revision 3949, 9.2 KB checked in by jotapoti, 7 years ago (diff)

WP7-pelin eka kehitysversio

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8using Jypeli.WP7;
9
10class Inventory : Widget
11{
12    public event Action<PhysicsObject> ItemSelected;
13
14    public string valittuTag = "";
15
16    public Inventory()
17        : base(new HorizontalLayout())
18    {
19    }
20
21    public void AddItem(PhysicsObject item, Image kuva)
22    {
23        PushButton icon = new PushButton(kuva);
24        Add(icon);
25        icon.Clicked += delegate() { SelectItem(item); };
26    }
27
28    void SelectItem(PhysicsObject item)
29    {
30        valittuTag = item.Tag.ToString();
31    }
32}
33
34
35public class Testi_23_3_13 : PhysicsGame
36{
37    PhysicsObject pelaaja;
38    PhysicsObject ball;
39    PhysicsObject threeBall;
40    double KentanNro = 1;
41    bool OnkoPaussi = false;
42    bool OnkoValmis = true;
43    Image valo = LoadImage("Valo");
44    Inventory inventory;
45    Image threeball = LoadImage("Three-ball");
46    Image Ball = LoadImage("Ball");
47
48    public override void Begin()
49    {
50
51        Phone.DisplayResolution = DisplayResolution.Large;
52        Phone.Deactivated += delegate { Phone.Vibrate(1); };
53        Phone.Activated += delegate { Phone.Vibrate(5); };
54        Valikko();
55        //List<PhysicsObject>;
56    }
57
58    void Valikko()
59    {
60        ClearAll();
61
62        MultiSelectWindow AlkuValikko = new MultiSelectWindow("", "Start game", "Highscores", "->");
63        Add(AlkuValikko);
64        AlkuValikko.AddItemHandler(0, AloitaKentta);
65        AlkuValikko.AddItemHandler(1, Ennatykset);
66        AlkuValikko.AddItemHandler(2, SeuraavaValikko);
67        AlkuValikko.DefaultCancel = 2;
68    }
69
70    void SeuraavaValikko()
71    {
72        MultiSelectWindow UusiValikko = new MultiSelectWindow("", "Options", "Exit", "<-");
73        Add(UusiValikko);
74        UusiValikko.AddItemHandler(0, Asetukset);
75        UusiValikko.AddItemHandler(1, Exit);
76        UusiValikko.AddItemHandler(2, Valikko);
77        UusiValikko.DefaultCancel = 2;
78    }
79
80    void AloitaKentta()
81    {
82        IsPaused = false;
83        OnkoPaussi = false;
84
85        if (KentanNro == 1) AloitaKentta1();
86    }
87
88    void Asetukset()
89    {
90
91    }
92
93    void Ennatykset()
94    {
95
96    }
97
98    void AloitaKentta1()
99    {
100        TileMap Kentta1 = TileMap.FromLevelAsset("kentta1");
101        Kentta1.SetTileMethod('P', LisaaPelaaja);
102        Kentta1.Execute(8, 8);
103
104
105        TileMap Kentta1_2 = TileMap.FromLevelAsset("kentta1");
106        Kentta1_2.SetTileMethod('=', LisaaReunat);
107        Kentta1_2.SetTileMethod('@', LisaaTuhottavatReunat);
108        Kentta1_2.SetTileMethod('T', LisaaThreeball);
109        Kentta1_2.SetTileMethod('B', LisaaBall);
110
111        Kentta1_2.Execute(8, 8);
112
113        Camera.Follow(pelaaja);
114        Camera.ZoomFactor = 1;
115        LisaaNappaimet();
116
117        inventory = new Inventory();
118        Add(inventory);
119        inventory.Bottom = Screen.Bottom + 50;
120        //inventory.AddItem(esine, i);
121
122        inventory.ItemSelected += delegate { };
123
124        //Timer ajastin = new Timer();
125        //ajastin.Interval = 0.1;
126        //ajastin.Timeout += delegate { if (inventory.ItemSelected += esine) Phone.Vibrate(1000); };
127    }
128
129    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
130    {
131        pelaaja = new PhysicsObject(korkeus * 5, leveys * 5, Shape.Octagon);
132        pelaaja.Color = Color.DarkBlue;
133        pelaaja.Position = paikka;
134        pelaaja.Tag = "Pelaaja";
135        Add(pelaaja);
136        Valo();
137        pelaaja.CollisionIgnoreGroup = 2;
138    }
139
140    void LisaaBall(Vector paikka, double leveys, double korkeus)
141    {
142        ball = new PhysicsObject(leveys, korkeus);
143        ball.Position = paikka;
144        ball.Image = Ball;
145        Add(ball);
146
147        ball.Tag = "Ball";
148        AddCollisionHandler(pelaaja, ball, OsuttiinB);
149    }
150
151    void OsuttiinB(PhysicsObject pelaaja, PhysicsObject kohde)
152    {
153        inventory.AddItem(kohde, Ball);
154        kohde.Destroy();
155    }
156
157    void LisaaThreeball(Vector paikka, double leveys, double korkeus)
158    {
159        threeBall = new PhysicsObject(leveys, korkeus);
160        threeBall.Position = paikka;
161        threeBall.Image = threeball;
162        Add(threeBall);
163
164        threeBall.Tag = "Threeball";
165        AddCollisionHandler(pelaaja, threeBall, OsuttiinT);
166    }
167
168    void OsuttiinT(PhysicsObject pelaaja, PhysicsObject kohde)
169    {
170        inventory.AddItem(kohde, threeball);
171        kohde.Destroy();
172    }
173
174    void LisaaNappaimet()
175    {
176        Accelerometer.SetDefaultSensitivity(AccelerometerSensitivity.Realtime);
177        Accelerometer.ListenAnalog(Liikuta, "Move");
178        TouchPanel.Listen(ButtonState.Down, Ammu, "Shoot", pelaaja);
179        PhoneBackButton.Listen(Pysaytysvalikko, "Pause game");
180    }
181
182    void Liikuta(AnalogState kiihtyvyysAnturinTila)
183    {
184        Vector suunta = kiihtyvyysAnturinTila.StateVector * 1000;
185        pelaaja.Move(suunta);
186        pelaaja.CanRotate = false;
187        //pelaaja.Angle = suunta.Angle + Angle.FromDegrees(-45);
188        //if (OnkoPaussi == false) pelaaja.Angle = pelaaja.Velocity.Angle + Angle.FromDegrees(-60);
189    }
190
191    void Ammu(Touch kosketus, PhysicsObject pelaaja)
192    {
193        if (OnkoValmis == true)
194        {
195            if (inventory.valittuTag == "Ball")
196            {
197                OnkoValmis = false;
198                PhysicsObject pallo = new PhysicsObject(10, 10, Shape.Circle);
199                pallo.Position = pelaaja.Position;
200                pallo.CollisionIgnoreGroup = 2;
201                pallo.Color = Color.Red;
202                Add(pallo);
203                pallo.MaximumLifetime = TimeSpan.FromSeconds(2.5);
204
205                Vector suunta = (kosketus.PositionOnWorld - pelaaja.Position) * 3;
206                pallo.Hit(suunta);
207                pallo.Tag = "Ballshot";
208            }
209            if (inventory.valittuTag == "Threeball")
210            {
211                OnkoValmis = false;
212                for (int i = -1; i < 1; i++)
213                {
214                    PhysicsObject pallo = new PhysicsObject(10, 10, Shape.Circle);
215                    pallo.Position = pelaaja.Position;
216                    pallo.CollisionIgnoreGroup = 2;
217                    Add(pallo);
218
219                    Vector suunta = (kosketus.PositionOnWorld - pelaaja.Position) * 3;
220                    pallo.Hit(suunta);
221                }
222            }
223
224            Timer laskin = new Timer();
225            laskin.Interval = 2;
226            laskin.Timeout += delegate { OnkoValmis = true; };
227            laskin.Start(1);
228        }
229    }
230
231    void Tarise(int aika)
232    {
233        Phone.Vibrate(aika);
234    }
235
236    void Pysaytysvalikko()
237    {
238        IsPaused = true;
239        OnkoPaussi = true;
240
241        MultiSelectWindow PaussiValikko = new MultiSelectWindow("Paused", "Resume game", "Help", "Exit");
242        Add(PaussiValikko);
243        PaussiValikko.AddItemHandler(0, delegate
244        {
245            PaussiValikko.Destroy();
246            IsPaused = false;
247            OnkoPaussi = false;
248        });
249
250        PaussiValikko.AddItemHandler(1, delegate
251        {
252            ShowControlHelp();
253        });
254
255        PaussiValikko.AddItemHandler(2, Valikko);
256        PaussiValikko.DefaultCancel = 0;
257    }
258
259    void Valo()
260    {
261        GameObject valO = new GameObject(valo.Width, valo.Height);
262        valO.Position = pelaaja.Position;
263        valO.Image = valo;
264        Add(valO);
265        valO.Height = Screen.Height;
266        valO.Width = Screen.Width;
267
268        Timer siirrin = new Timer();
269        siirrin.Interval = 0.01;
270        siirrin.Timeout += delegate { valO.Position = pelaaja.Position; };
271        siirrin.Start();
272    }
273
274    void LisaaReunat(Vector paikka, double leveys, double korkeus)
275    {
276        PhysicsObject Reuna = new PhysicsObject(leveys, korkeus);
277        Reuna.Color = Color.Black;
278        Reuna.Position = paikka;
279        Add(Reuna);
280        Reuna.CollisionIgnoreGroup = 1;
281        Reuna.Mass = 1000000;
282        Reuna.IgnoresPhysicsLogics = true;
283
284        string[] tagit = { "Ballshot", "Threeballshot" };
285
286        foreach (string tag in tagit)
287        {
288            AddCollisionHandler(Reuna, tag, AseTuhoutuu);
289        }
290
291    }
292
293    void AseTuhoutuu(PhysicsObject seina, PhysicsObject ase)
294    {
295        ase.Destroy();
296    }
297
298    void LisaaTuhottavatReunat(Vector paikka, double leveys, double korkeus)
299    {
300        PhysicsObject TuhottavaReuna = new PhysicsObject(leveys, korkeus);
301        TuhottavaReuna.Color = Color.Yellow;
302        TuhottavaReuna.Position = paikka;
303        Add(TuhottavaReuna);
304        TuhottavaReuna.CollisionIgnoreGroup = 1;
305        TuhottavaReuna.Mass = 100000;
306        TuhottavaReuna.IgnoresPhysicsLogics = true;
307        TuhottavaReuna.Tag = "TR";
308
309        string[] tagit = { "Ballshot", "Threeballshot" };
310
311        foreach (string tag in tagit)
312        {
313            AddCollisionHandler(TuhottavaReuna, tag, OsuttiinAseella);
314        }
315
316    }
317
318    void OsuttiinAseella(PhysicsObject seina, PhysicsObject ase)
319    {
320        //GameObject rinki = new GameObject(30, 30, Shape.Circle);
321        //rinki.Position = seina.Position;
322        //Add(rinki);
323        seina.Destroy();
324
325    }
326
327}
Note: See TracBrowser for help on using the repository browser.