source: 2013/26/JuusoM/amnesia2d/amnesia2d/amnesia2d/amnesia2d.cs @ 4274

Revision 4274, 12.0 KB checked in by juiitamm, 10 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class amnesia2d : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image Tiili = LoadImage("Tiili");
18    Image pelaajanKuva = LoadImage("HahmoV2");
19    Image tahtiKuva = LoadImage("tahti");
20    Image kalterit = LoadImage("Kalterit");
21    Image kivi = LoadImage("Kivi");
22    Image hajonnutKalteri = LoadImage("Kalterit");
23    Image venttiiliPic = LoadImage("venttiili");
24    Image tynnyriPic = LoadImage("Tynnyri");
25    Image infoPic = LoadImage("TietoLaatikko");
26    Image oviPic = LoadImage("Ovi");
27    Image tausta = LoadImage("TaustaTiili");
28    Image Kynttelikko = LoadImage("Kynttelikko");
29
30    int pMaxMaara = 250;
31    ExplosionSystem rajahdys;
32    ExplosionSystem rajahdys2;
33    ExplosionSystem rajahdys3;
34
35    SoundEffect maaliAani = LoadSoundEffect("maali");
36   
37   //PhysicsObject tahti;
38
39    //IntMeter pisteet;
40
41    Light valo;
42
43   
44
45    public override void Begin()
46    {
47       rajahdys = new ExplosionSystem(LoadImage("rajahdys"), pMaxMaara);
48       rajahdys.MinLifetime = 0.2;
49       rajahdys.MaxLifetime = 0.5;
50       rajahdys.MinScale = 10.0;
51       rajahdys.MaxScale = 60.0;
52       rajahdys.MinVelocity = 20.0;
53       rajahdys.MaxVelocity = 50.0;
54       Add(rajahdys);
55
56       rajahdys2 = new ExplosionSystem(LoadImage("rajahdys2"), pMaxMaara);
57       rajahdys2.MinLifetime = 0.2;
58       rajahdys2.MaxLifetime = 0.5;
59       rajahdys2.MinScale = 70.0;
60       rajahdys2.MaxScale = 80.0;
61       rajahdys2.MinVelocity = 40.0;
62       rajahdys2.MaxVelocity = 70.0;
63       Add(rajahdys2);
64
65       rajahdys3 = new ExplosionSystem(LoadImage("rajahdys3"), pMaxMaara);
66       rajahdys3.MinLifetime = 0.2;
67       rajahdys3.MaxLifetime = 0.5;
68       rajahdys3.MinScale = 40.0;
69       rajahdys3.MaxScale = 60.0;
70       rajahdys3.MinVelocity = 30.0;
71       rajahdys3.MaxVelocity = 50.0;
72       Add(rajahdys3);
73
74        Gravity = new Vector(0, -1000);
75
76        LuoKentta();
77        LisaaNappaimet();
78
79        Camera.Follow(pelaaja1);
80        Camera.ZoomFactor = 2.2;
81        Camera.StayInLevel = true;
82
83       
84    }
85
86    void LuoKentta()
87    {
88        ColorTileMap kentta = ColorTileMap.FromLevelAsset("Kartta3");
89        kentta.SetTileMethod(Color.Black, LisaaTaso);
90        kentta.SetTileMethod(Color.Gold, LisaaTahti);
91        kentta.SetTileMethod(Color.Red, LisaaPelaaja);
92        kentta.SetTileMethod(Color.Orange, LisaaKalteri);
93        kentta.Optimize(Color.Orange);
94        kentta.SetTileMethod(Color.YellowGreen, LisaaHajonnutKalteri);
95        kentta.Optimize(Color.YellowGreen);
96        kentta.SetTileMethod(Color.Harlequin, LisaaVenttiili);
97        kentta.SetTileMethod(Color.BrightGreen, LisaaTynnyri);
98        kentta.SetTileMethod(Color.SpringGreen, LisaaKivi);
99        kentta.SetTileMethod(Color.Cyan, LisaaInfo);
100        kentta.SetTileMethod(Color.Azure, LisaaInfo2);
101        kentta.SetTileMethod(Color.PaintDotNetBlue, LisaaOvi);
102        kentta.Optimize(Color.PaintDotNetBlue);
103        kentta.SetTileMethod("808080", LisaaInfo3);
104        kentta.SetTileMethod(Color.DarkGray, LisaaKynttelikko);
105        kentta.Optimize(Color.DarkGray);
106        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
107        Level.CreateBorders();
108        Level.Background.Image = tausta;
109        Level.Background.TileToLevel();
110
111        Level.AmbientLight = -1.0;
112
113        valo = new Light();
114        valo.Intensity = 2.0;
115        valo.Distance = 300;
116        valo.Position = pelaaja1.Position;
117
118        Add(valo);
119    }
120
121    protected override void Update(Microsoft.Xna.Framework.GameTime gameTime)
122    {
123        valo.Position = pelaaja1.AbsolutePosition;
124        base.Update(gameTime);
125    }
126
127    void LisaaTaso(Vector paikka, double leveys, double korkeus)
128    {
129        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
130        taso.Position = paikka;
131        taso.Image = Tiili;
132        Add(taso);
133    }
134
135    void LisaaKynttelikko(Vector paikka, double leveys, double korkeus)
136    {
137        PhysicsObject kynttelikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
138        kynttelikko.Position = paikka;
139        kynttelikko.Image = Kynttelikko;
140        kynttelikko.IgnoresCollisionResponse = true;
141        Add(kynttelikko);
142
143       
144    }
145
146    void LisaaOvi(Vector paikka, double leveys, double korkeus)
147    {
148        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
149        ovi.Position = paikka;
150        ovi.Image = oviPic;
151        ovi.Tag = "oviTag";
152        Add(ovi);
153    }
154
155    void LisaaKivi(Vector paikka, double leveys, double korkeus)
156    {
157        PhysicsObject Kivi = PhysicsObject.CreateStaticObject(leveys, korkeus);
158        Kivi.Position = paikka;
159        Kivi.Image = kivi;
160        Kivi.Tag = "kiviTag";
161        Add(Kivi);
162    }
163
164    void PelaajaTormasi(PhysicsObject pelaaja1, PhysicsObject kohde)
165    {
166        if (kohde.Tag.ToString() == "kiviTag")
167        {
168            rajahdys.AddEffect(kohde.Position.X, kohde.Position.Y, pMaxMaara);
169        }
170        if (kohde.Tag.ToString() == "HajoavatKalterit")
171        {
172            rajahdys2.AddEffect(kohde.Position.X, kohde.Position.Y, pMaxMaara);
173        }
174        if (kohde.Tag.ToString() == "venttiiliTag")
175        {
176            rajahdys3.AddEffect(kohde.Position.X, kohde.Position.Y, pMaxMaara);
177        }
178    }
179
180    void LisaaTynnyri(Vector paikka, double leveys, double korkeus)
181    {
182        PhysicsObject tynnyri = PhysicsObject.CreateStaticObject(leveys, korkeus);
183        tynnyri.Position = paikka;
184        tynnyri.Image = tynnyriPic;
185        Add(tynnyri);
186    }
187
188    void LisaaKalteri(Vector paikka, double leveys, double korkeus)
189    {
190        PhysicsObject kalteri = PhysicsObject.CreateStaticObject(leveys, korkeus);
191        kalteri.Position = paikka;
192        kalteri.Image = kalterit;
193        kalteri.Tag = "Kalterit";
194        Add(kalteri);
195    }
196
197    void LisaaInfo(Vector paikka, double leveys, double korkeus)
198    {
199        PhysicsObject info = PhysicsObject.CreateStaticObject(leveys, korkeus);
200        info.IgnoresCollisionResponse = true;
201        info.Position = paikka;
202        info.Image = infoPic;
203        info.Tag = "Info";
204        Add(info);
205    }
206
207    void LisaaInfo2(Vector paikka, double leveys, double korkeus)
208    {
209        PhysicsObject info2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
210        info2.IgnoresCollisionResponse = true;
211        info2.Position = paikka;
212        info2.Image = infoPic;
213        info2.Tag = "Info2";
214        Add(info2);
215    }
216
217    void LisaaInfo3(Vector paikka, double leveys, double korkeus)
218    {
219        PhysicsObject info3 = PhysicsObject.CreateStaticObject(leveys, korkeus);
220        info3.IgnoresCollisionResponse = true;
221        info3.Position = paikka;
222        info3.Image = infoPic;
223        info3.Tag = "Info3";
224        Add(info3);
225    }
226
227    void LisaaHajonnutKalteri(Vector paikka, double leveys, double korkeus)
228    {
229        PhysicsObject hajoavaKalteri = PhysicsObject.CreateStaticObject(leveys, korkeus);
230        hajoavaKalteri.Position = paikka;
231        hajoavaKalteri.Image = kalterit;
232        hajoavaKalteri.Tag = "HajoavatKalterit";
233        Add(hajoavaKalteri);
234    }
235
236    void LisaaVenttiili(Vector paikka, double leveys, double korkeus)
237    {
238        PhysicsObject hajoavaVenttiili = PhysicsObject.CreateStaticObject(leveys, korkeus);
239        hajoavaVenttiili.Position = paikka;
240        hajoavaVenttiili.Image = venttiiliPic;
241        hajoavaVenttiili.Tag = "venttiiliTag";
242        Add(hajoavaVenttiili);
243    }
244
245    void LisaaTahti(Vector paikka, double leveys, double korkeus)
246    {
247        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
248        tahti.IgnoresCollisionResponse = true;
249        tahti.Position = paikka;
250        tahti.Image = tahtiKuva;
251        tahti.Tag = "tahti";
252        Add(tahti);
253    }
254
255    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
256    {
257        pelaaja1 = new PlatformCharacter(leveys-9, korkeus-6);
258        pelaaja1.Position = paikka;
259        pelaaja1.Mass = 4.0;
260        pelaaja1.Image = pelaajanKuva;
261        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
262        AddCollisionHandler(pelaaja1, "Kalterit", TormaaKalteriin);
263        AddCollisionHandler(pelaaja1, "HajoavatKalterit", rikoKalterit);
264        AddCollisionHandler(pelaaja1, "venttiiliTag", rikoVenttiili);
265        AddCollisionHandler(pelaaja1, "kiviTag", rikoKivi);
266        AddCollisionHandler(pelaaja1, "Info", naytaViesti);
267        AddCollisionHandler(pelaaja1, "Info2", naytaViesti2);
268        AddCollisionHandler(pelaaja1, "Info3", naytaViesti3);
269        AddCollisionHandler(pelaaja1, PelaajaTormasi);
270
271
272        Add(pelaaja1);
273    }
274
275    void LisaaNappaimet()
276    {
277        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
278        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
279
280        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
281        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
282        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
283
284        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
285
286        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
287        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
288        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
289
290        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
291    }
292
293    void Liikuta(PlatformCharacter hahmo, double nopeus)
294    {
295        hahmo.Walk(nopeus);
296    }
297
298    void Hyppaa(PlatformCharacter hahmo, double nopeus)
299    {
300        hahmo.Jump(nopeus);
301    }
302
303  void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
304  {
305      maaliAani.Play();
306      MessageDisplay.Add("Löysit tulitikut");
307      tahti.Destroy();
308  }
309
310  void rikoKivi(PhysicsObject hahmo, PhysicsObject kivi)
311  {
312      kivi.Destroy();
313  }
314
315  void TormaaKalteriin(PhysicsObject hahmo, PhysicsObject kalteri)
316  {
317      MessageDisplay.Add("Jumissa");
318  }
319
320  void rikoKalterit(PhysicsObject hahmo, PhysicsObject hajoavaKalteri)
321  {
322      hajoavaKalteri.Destroy();
323  }
324
325  void rikoVenttiili(PhysicsObject hahmo, PhysicsObject hajoavaVenttiili)
326  {
327      hajoavaVenttiili.Destroy();
328  }
329
330  void naytaViesti(PhysicsObject hahmo, PhysicsObject info)
331  {
332      MessageDisplay.Add("Hmm... Vanha tuuletuskanava. Ehkä pääsen sinne sisään...");
333
334  }
335
336  void naytaViesti2(PhysicsObject hahmo, PhysicsObject info2)
337  {
338      MessageDisplay.Add("Lisää tuuletuskanavia? Ehkä pääsen sinnekin");
339
340  }
341
342  void naytaViesti3(PhysicsObject hamo, PhysicsObject info3)
343  {
344      MessageDisplay.Add("Nämä kalterit näyttävät muita hauraammilta, voin ehkä rikkoa ne");
345  }
346 //void LisaaLaskuri()
347 //{
348 //    pisteet = LuoLaskuri(Screen.Right - 100, Screen.Top - 100);
349 //}
350 //
351 // void KasitteleKerays(PhysicsObject pelaaja1, PhysicsObject kohde)
352 // {
353 //     if (kohde == tahti)
354 //     {
355 //         pisteet.Value += 1;
356 //     }
357 // }
358 //
359 // IntMeter LuoLaskuri(double x, double y)
360 // {
361 //     IntMeter laskuri = new IntMeter(0);
362 //     laskuri.MaxValue = 10;
363 //
364 //       Label naytto = new Label();
365 //     naytto.BindTo(laskuri);
366 //     naytto.X = Screen.Right -25;
367 //     naytto.Y = Screen.Top - 25;
368 //     naytto.TextColor = Color.White;
369 //     naytto.BorderColor = Level.Background.Color;
370 //     naytto.Color = Level.Background.Color;
371 //     Add(naytto);
372 //
373 //     return laskuri;
374 //
375 // }
376
377     
378}
Note: See TracBrowser for help on using the repository browser.