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

Revision 2019, 8.5 KB checked in by ekeimaja, 8 years ago (diff)

Jotain bugia on keskusteluikkunan kanssa.

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