source: 2011/24/EkiM/nimeton/nimeton/nimeton/Peli.cs @ 2081

Revision 2081, 8.8 KB checked in by ekeimaja, 10 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6using Jypeli.Widgets;
7
8namespace PerusPeli
9{
10    class Peli : PhysicsGame
11    {
12        Image seinaoikeanKuva = LoadImage("seinaoikea");
13        Image seinavasemmanKuva = LoadImage("seinavasen");
14        Image lattianKuva = LoadImage("lattia");
15        Image koydenKuva = LoadImage("koysi");
16        Image nostinKuva = LoadImage("nostin");
17        Image tikkaatKuva = LoadImage("tikkaat");
18        Image lattiatikkaatKuva = LoadImage("lattiatikkaat");
19        Image pelaajaKuva = LoadImage("ukko");
20        Image vihunKuva = LoadImage("vihu1");
21        Image ovenKuva = LoadImage("ovi");
22
23        PlatformCharacter pelaaja;
24        PhysicsObject vihu1;
25        MessageWindow kysymysIkkuna;
26
27
28        public override void Begin()
29        {
30            Gravity = new Vector(0.0, -500.0);
31            LataaKentta("map.txt");
32            Camera.ZoomToLevel();
33
34            LuoOhjain();
35        }
36
37        void LataaKentta(string map)
38        {
39
40            TileMap merkit = TileMap.FromFile(map);
41
42            merkit.SetTileMethod('P', LuoPelaaja);
43            merkit.SetTileMethod('V', LuoVihu);
44            merkit.SetTileMethod('|', LuoSeinaoikea);
45            merkit.SetTileMethod('i', LuoSeinavasen);
46            merkit.SetTileMethod('_', LuoLattia);
47            merkit.SetTileMethod('L', LuoNostin);
48            merkit.SetTileMethod('H', LuoTikkaat);
49            merkit.SetTileMethod('h', LuoLattiatikkaat);
50            merkit.SetTileMethod('D', luoOvi);
51
52            merkit.Execute(70, 70);
53
54        }
55        void LuoPelaaja(Vector paikka, double leveys, double korkeus)
56        {
57            pelaaja = new PlatformCharacter(40, 62);
58            pelaaja.CanRotate = false;
59            pelaaja.Mass = 40.0;
60            pelaaja.Position = paikka;
61            pelaaja.Image = pelaajaKuva;
62            AddCollisionHandler(pelaaja, VihuunTormays);
63            Add(pelaaja);
64
65        }
66        void LuoVihu(Vector paikka, double leveys, double korkeus)
67        {
68            vihu1 = new PhysicsObject(40, 62);
69            vihu1.CanRotate = false;
70            vihu1.Mass = 40.0;
71            vihu1.Position = paikka;
72            vihu1.Image = vihunKuva;
73            Add(vihu1);
74
75        }
76
77        Keskusteluikkuna ikkuna = null;
78
79        void VihuunTormays(PhysicsObject pelaaja, PhysicsObject kohde)
80        {
81            IsMouseVisible = true;
82            if (kohde == vihu1 && ikkuna == null)
83            {
84                ikkuna = new Keskusteluikkuna("Testiteksti", "pain1", "pain2");
85                Keskusteluikkuna ikkuna2 = new Keskusteluikkuna("gfd", "gfdgsfds", "gfd");
86                ikkuna.Button1ikkuna = ikkuna2;
87                //ikkuna.Nappi1.Clicked += new Action(delegate { Nappi1_Clicked(ikkuna); });
88                ikkuna.Nappi1.Clicked += AvaaIkkuna2;
89                Add(ikkuna);
90               
91                /*
92                InputWindow kysymysIkkuna = new InputWindow("", "Nimesi?");
93                kysymysIkkuna.TextEntered += vastaus;
94                Add(kysymysIkkuna);
95                 * */
96            }
97        }
98
99        void AvaaIkkuna2()
100        {
101            Add(ikkuna.Button1ikkuna);
102            //ikkuna.Destroy();
103            ikkuna = null;
104        }
105
106        void Nappi1_Clicked(Keskusteluikkuna ikkuna)
107        {
108           
109            Add(ikkuna.Button1ikkuna);
110            ikkuna.Destroy();
111            //Add(ikkuna);
112        }
113
114        void vastaus(InputWindow Ikkuna)
115        {
116            Ikkuna.ControlContext.Active = false;
117            string vastaus = Ikkuna.InputBox.Text;
118            kysymysIkkuna = new MessageWindow("", "Hmm...en muista ketään tuon nimistä täällä...");
119            kysymysIkkuna.Closed += new Jypeli.Widgets.Window.WindowHandler(kysymysIkkuna_Closed);
120
121
122            Add(kysymysIkkuna);
123        }
124
125        void kysymysIkkuna_Closed(Window sender)
126        {
127            kysymysIkkuna = new MessageWindow("", "Oletko uusi talossa?");
128            kysymysIkkuna.OKButton.Text = "Kyllä olen";
129            PushButton nappi = new PushButton(text: "Olen vieras");
130            kysymysIkkuna.OKButton.Clicked += new Action(OKButton_Clicked);
131            nappi.Clicked += new Action(nappi_Clicked);
132            Add(kysymysIkkuna);
133            kysymysIkkuna.Add(nappi);
134        }
135
136        void nappi_Clicked()
137        {
138            kysymysIkkuna.Close();
139            kysymysIkkuna = new MessageWindow("", "Ei vieraita, poistu");
140            Add(kysymysIkkuna);
141        }
142
143        void OKButton_Clicked()
144        {
145            kysymysIkkuna.Close();
146            kysymysIkkuna = new MessageWindow("", "Lukenut NM? (newcomers manual)");
147            kysymysIkkuna.OKButton.Text = "Olen lukenut";
148            PushButton painike = new PushButton(text: "En ole.");
149            kysymysIkkuna.OKButton.Clicked += new Action(OKButton_Clicked);
150            painike.Clicked += new Action(painike_Clicked);
151            Add(kysymysIkkuna);
152        }
153        void painike_Clicked()
154        {
155            kysymysIkkuna.Close();
156            kysymysIkkuna = new MessageWindow("", "Mikset ole?");
157            Add(kysymysIkkuna);
158        }
159
160
161        void LuoSeinaoikea(Vector paikka, double leveys, double korkeus)
162        {
163            PhysicsObject seinaoikea = PhysicsObject.CreateStaticObject(10, 80);
164            seinaoikea.Position = paikka;
165            seinaoikea.Image = seinaoikeanKuva;
166            Add(seinaoikea);
167        }
168
169        void LuoSeinavasen(Vector paikka, double leveys, double korkeus)
170        {
171            PhysicsObject seinavasen = PhysicsObject.CreateStaticObject(10, 80);
172            seinavasen.Position = paikka;
173            seinavasen.Image = seinavasemmanKuva;
174            Add(seinavasen);
175
176        }
177
178        void LuoLattia(Vector paikka, double leveys, double korkeus)
179        {
180            PhysicsObject lattia = PhysicsObject.CreateStaticObject(71, 10);
181            lattia.Position = paikka;
182            lattia.Image = lattianKuva;
183            Add(lattia);
184        }
185
186        void LuoNostin(Vector paikka, double leveys, double korkeus)
187        {
188            PhysicsObject nostin = new PhysicsObject(68, 10);
189            nostin.Position = paikka;
190            nostin.Image = nostinKuva;
191            nostin.IgnoresPhysicsLogics = true;
192            nostin.CanRotate = false;
193            nostin.Mass = 10000;
194            nostin.Velocity = new Vector(0.0, 90.0);
195            AddCollisionHandler(nostin, SeinaanTormays);
196            Add(nostin);
197
198        }
199
200        void SeinaanTormays(PhysicsObject nostin, PhysicsObject seinavasen)
201        {
202            nostin.Velocity = -nostin.Velocity;
203        }
204
205
206        void LuoTikkaat(Vector paikka, double leveys, double korkeus)
207        {
208            PhysicsObject tikkaat = PhysicsObject.CreateStaticObject(35, 150);
209            tikkaat.Position = paikka;
210            tikkaat.Image = tikkaatKuva;
211            Add(tikkaat);
212        }
213
214        void luoOvi(Vector paikka, double leveys, double korkeus)
215        {
216            PhysicsObject ovi = PhysicsObject.CreateStaticObject(70, 110);
217            ovi.Position = paikka;
218            ovi.Image = ovenKuva;
219            Add(ovi);
220        }
221
222        void LuoLattiatikkaat(Vector paikka, double leveys, double korkeus)
223        {
224            PhysicsObject lattiatikkaat = PhysicsObject.CreateStaticObject(70, 70);
225            lattiatikkaat.Position = paikka;
226            lattiatikkaat.Image = lattiatikkaatKuva;
227            Add(lattiatikkaat);
228        }
229
230        void LuoOhjain()
231        {
232            //näppäin alhaalla
233            Keyboard.Listen(Key.Left, ButtonState.Down, pelaaja.Walk, null, -100.0);
234            Keyboard.Listen(Key.Right, ButtonState.Down, pelaaja.Walk, null, 100.0);
235            Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaaYlos, null);
236            Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaaAlas, null);
237
238            //näppäin ylhäällä
239            Keyboard.Listen(Key.Left, ButtonState.Released, pelaaja.StopHorizontal, null);
240            Keyboard.Listen(Key.Right, ButtonState.Released, pelaaja.StopHorizontal, null);
241            Keyboard.Listen(Key.Up, ButtonState.Released, pelaaja.StopVertical, null);
242            Keyboard.Listen(Key.Down, ButtonState.Released, pelaaja.StopVertical, null);
243        }
244
245
246        void LiikutaPelaajaaVasemmalle()
247        {
248            pelaaja.Hit(new Vector(-100, 0));
249        }
250
251        void LiikutaPelaajaaOikealle()
252        {
253            pelaaja.Hit(new Vector(100, 0));
254        }
255
256        void LiikutaPelaajaaYlos()
257        {
258            pelaaja.Jump(90);
259        }
260
261        void LiikutaPelaajaaAlas()
262        {
263            pelaaja.Hit(new Vector(0, -100));
264        }
265
266    }
267}
Note: See TracBrowser for help on using the repository browser.