source: 2014/23/EeroK/Laavahyppely/Laavahyppely/Laavahyppely/Laavahyppely.cs @ 4868

Revision 4868, 6.4 KB checked in by anlakane, 9 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Laavahyppely : PhysicsGame
10{
11    Image paahenkilokuva = LoadImage("paahenkilo");
12    Image laavatexture = LoadImage("laavatexture");
13    PlatformCharacter pelaaja;
14    PhysicsObject laava; 
15    DoubleMeter alaspainLaskuri;
16    Timer aikaLaskuri;
17    PhysicsObject maali;
18    PhysicsObject timo;
19    PhysicsObject taso;
20    Image kivitexture = LoadImage("kivitexture");
21    Image pokaalitexture = LoadImage("pokaalitexture");
22    Image taustakuva = LoadImage("taustakuva");
23    Image timotexture = LoadImage("timotexture");
24    private Animation paahenkiloKavely;
25    private Animation animidle;
26
27    public override void Begin()
28    {
29        paahenkiloKavely = LoadAnimation("paahenkiloa");
30        animidle = LoadAnimation("animidle");
31        LuoMaailma();
32        LuoAikaLaskuri();
33
34       
35
36        Gravity = new Vector(0, -1000);
37
38        Camera.FollowedObject = pelaaja;
39        Camera.Zoom(3);
40        Camera.StayInLevel = true;
41
42        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
43        Keyboard.Listen(Key.R, ButtonState.Released, AloitaAlusta, null);
44
45        Level.Background.Image = taustakuva;
46        Level.Background.TileToLevel();
47    }
48
49    void LuoMaailma()
50    {
51        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta");
52
53        ruudut.SetTileMethod(Color.Black, LuoTaso);
54        ruudut.SetTileMethod(new Color(0, 38, 255), LuoPelaaja);
55        ruudut.SetTileMethod(Color.Red, LuoLaava);
56        ruudut.SetTileMethod(new Color(76, 255, 0), LuoMaali);
57        ruudut.SetTileMethod(new Color(255, 0, 220), LuoTimosoini);
58
59        ruudut.Execute(20, 20);
60
61
62    }
63    void LuoTaso(Vector paikka, double leveys, double korkeus)
64    {
65        taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
66        taso.Position = paikka;
67        taso.Image = kivitexture;
68        taso.CollisionIgnoreGroup = 1;
69        Add(taso);
70        taso.Tag = "taso";
71    }
72    void LuoLaava(Vector paikka, double leveys, double korkeus)
73    {
74        laava = PhysicsObject.CreateStaticObject(leveys, korkeus);
75        laava.Position = paikka;
76        laava.Image = laavatexture;
77        Add(laava);
78        laava.CanRotate = false;
79        laava.Tag = "laava";
80    }
81    void LuoMaali(Vector paikka, double leveys, double korkeus)
82    {
83        maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
84        maali.Position = paikka;
85        maali.Image = pokaalitexture;
86        Add(maali);
87        maali.CanRotate = false;
88        maali.Tag = "maali";
89    }
90    void LuoTimosoini(Vector paikka, double leveys, double korkeus)
91    {
92        timo = new PhysicsObject(12, 12);
93        timo.Position = paikka;
94        timo.Image = timotexture;
95        Add(timo, 1);
96        timo.CanRotate = false;
97        timo.Tag = "soini";
98    }
99    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
100    {
101        pelaaja = new PlatformCharacter(18, 18);
102        pelaaja.Image = paahenkilokuva;
103        pelaaja.Position = paikka;
104        AddCollisionHandler(pelaaja, "laava", CollisionHandler.DestroyObject);
105        AddCollisionHandler(pelaaja, "laava", HavisitPelin);
106        AddCollisionHandler(pelaaja, "maali", VoititPelin);
107        AddCollisionHandler(pelaaja, "soini", CollisionHandler.IncreaseTargetSize(500, 500));
108        AddCollisionHandler(pelaaja, "soini", CollisionHandler.DestroyObject);
109        AddCollisionHandler(pelaaja, "soini", TimoSoi);
110        Add(pelaaja);
111        pelaaja.CanRotate = false;
112
113        pelaaja.AnimWalk = new Animation(paahenkiloKavely);
114        pelaaja.AnimIdle = new Animation(animidle);
115
116        Keyboard.Listen(Key.Up, ButtonState.Down,
117            HypytäPelaajaa, null, new Vector(0, 250));
118        Keyboard.Listen(Key.Right, ButtonState.Down,
119            KäveleOikealle, null, new Vector(50, 0));
120        Keyboard.Listen(Key.Left, ButtonState.Down,
121            KäveleVasemmalle, null, new Vector(-50, 0));
122    }
123    void HypytäPelaajaa(Vector vektori)
124    {
125        pelaaja.Jump(300);
126    }
127    void KäveleOikealle(Vector vektori)
128    {
129        pelaaja.Walk(120);
130    }
131    void KäveleVasemmalle(Vector vektori)
132    {
133        pelaaja.Walk(-120);
134    }
135    void LopetaAnimaatio()
136    {
137        pelaaja.AnimWalk.Stop();
138    }
139    void AloitaAlusta()
140    {
141        ClearAll();
142        IsPaused = false;
143        Begin();
144    }
145
146    void LuoAikaLaskuri()
147    {
148        alaspainLaskuri = new DoubleMeter(120);
149        aikaLaskuri = new Timer();
150        aikaLaskuri.Interval = 0.1;
151        aikaLaskuri.Timeout += LaskeAlaspain;
152        aikaLaskuri.Start();
153
154        Label aikaNaytto = new Label(150, 20);
155
156        aikaNaytto.X = Screen.Right - 40;
157        aikaNaytto.Y = Screen.Top - 80;
158        aikaNaytto.TextColor = Color.BrightGreen;
159        aikaNaytto.DecimalPlaces = 1;
160        aikaNaytto.BindTo(alaspainLaskuri);
161        Add(aikaNaytto);
162    }
163
164    void LaskeAlaspain()
165    {
166        alaspainLaskuri.Value -= 0.1;
167
168        if (alaspainLaskuri.Value <= 0)
169        {
170            AloitaAlusta();
171            aikaLaskuri.Stop();
172        }
173    }
174    void VoititPelin(PhysicsObject tormaaja, PhysicsObject kohde)
175    {
176        Keyboard.Clear();
177        IsPaused = true;
178
179        MultiSelectWindow valikko = new MultiSelectWindow("Pääsit maaliin", "Aloita Alusta",  "Lopeta Pelaaminen");
180        Add(valikko);
181
182        valikko.AddItemHandler(0, AloitaAlusta);
183        valikko.AddItemHandler(1, Exit);
184    }
185    void HavisitPelin(PhysicsObject tormaaja, PhysicsObject kohde)
186    {
187        Keyboard.Clear();
188        IsPaused = true;
189
190        MultiSelectWindow hvalikko = new MultiSelectWindow("Hävisit Pelin", "Aloita Alusta", "Lopeta Pelaaminen");
191        Add(hvalikko);
192
193        hvalikko.AddItemHandler(0, AloitaAlusta);
194        hvalikko.AddItemHandler(1, Exit);
195    }
196    void TimoSoi(PhysicsObject tormaaja, PhysicsObject kohde)
197    {
198
199        Keyboard.Clear();
200        IsPaused = true;
201
202        MultiSelectWindow tvalikko = new MultiSelectWindow("Timo Soini Söi Sinut!", "Aloita Alusta", "Lopeta Pelaaminen");
203        Add(tvalikko);
204
205        tvalikko.AddItemHandler(0, AloitaAlusta);
206        tvalikko.AddItemHandler(1, Exit);
207    }
208}
Note: See TracBrowser for help on using the repository browser.