source: 2012/kerho/ljov/Enter_name/Enter_name/Enter_name/Enter_name.cs @ 10335

Revision 3947, 8.9 KB checked in by anlakane, 7 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 Enter_name : PhysicsGame
10{
11    const int RUUDUN_KOKO = 40;
12
13    [Save] int Taso;
14    int NykTaso;
15    const int MaxTaso = 4; //KASVATA KUN LISÄÄT TASOJA
16
17    public Image pelaajanKuva = LoadImage("norsu");
18    Image tahtiKuva = LoadImage("tahti");
19    Image menubg = LoadImage("menubg");
20    Image gamebg = LoadImage("wall");
21    Image TasoKuva = LoadImage("floor");
22    Image Kreitti = LoadImage("crate");
23    Image[] AnsaKuvat = LoadImages("trap1", "trap2");
24    public Image[] TykkiKuvat = LoadImages("gun1", "gun2", "gun3");
25    public Image Ammus = LoadImage("bullet");
26
27    SoundEffect maaliAani = LoadSoundEffect("maali");
28
29    Hemmo hemmo;
30
31    Label splash;
32    double splashGrow = 0.013;
33    Vector splashMax = new Vector(1.1, 1.1);
34    Vector splashMin = new Vector(0.7, 0.7);
35
36    public override void Begin()
37    {
38        if (DataStorage.Exists("save.xml")) LoadGame("save.xml"); else Taso = 0;
39        Valikko();
40    }
41
42    public void Valikko()
43    {
44        ClearAll();
45        Camera.Reset(); //Tarpeellisuus kyseenalaista
46        Level.Background.Image = menubg;
47        Level.Background.ScaleToLevel();
48        Level.Background.MovesWithCamera = false;
49
50        splash = new Label(getSplash());
51        splash.Angle = new Vector(25,10).Angle;
52        splash.Position = new Vector(Screen.Right - 400, Screen.Top - 200);
53        splash.TextColor = Color.Red;
54        Add(splash);
55        splash.TextScale = new Vector(1,1);
56
57        NykTaso = Taso;
58
59        MultiSelectWindow alku = new MultiSelectWindow("", "Pelaa", "Kentät", "Lopeta");
60      /*alku.Color = Color.Beige;
61        alku.BorderColor = Color.Red;
62        alku.SelectionColor = Color.Rose;*/
63        alku.AddItemHandler(0, Aloita);
64        alku.AddItemHandler(1, valitseKentta);
65        alku.AddItemHandler(2, Lopeta);
66        alku.DefaultCancel = -1;
67        Add(alku);
68    }
69
70
71    void valitseKentta()
72    {
73        MultiSelectWindow kentat = new MultiSelectWindow("Valitse kenttä", "1", "2", "3", "4", "5", "Alkuun");
74        kentat.AddItemHandler(0, delegate { if (Taso >= 0) { NykTaso = 0; Aloita(); } else {valitseKentta();}});
75        kentat.AddItemHandler(1, delegate { if (Taso >= 1) { NykTaso = 1; Aloita(); } else {valitseKentta();}});
76        kentat.AddItemHandler(2, delegate { if (Taso >= 2) { NykTaso = 2; Aloita(); } else {valitseKentta();}});
77        kentat.AddItemHandler(3, delegate { if (Taso >= 3) { NykTaso = 3; Aloita(); } else {valitseKentta();}});
78        kentat.AddItemHandler(4, delegate { if (Taso >= 4) { NykTaso = 4; Aloita(); } else {valitseKentta(); } });
79        kentat.AddItemHandler(5, Valikko);
80        kentat.DefaultCancel = 5;
81        Add(kentat);
82    }
83
84
85    public void Aloita()
86    {
87        ClearAll();
88
89        hemmo = new Hemmo();
90        LataaKentta(NykTaso);
91        Gravity = new Vector(0, -1000);
92
93        Camera.Follow(hemmo);
94        Camera.ZoomFactor = 1.2;
95        //Camera.StayInLevel = true;
96
97        //Level.Size = new Vector(4000, 4000);
98        Level.Background.Image = gamebg;
99        Level.Background.TileToLevel();
100        //Level.Background.TextureWrapSize = new Vector(100, 100);
101        //Level.Background.ScaleToLevel();
102        //Level.Background.ScaleToLevelFull();
103        Level.Background.MovesWithCamera = true;
104
105        //Kontrollit
106        Mouse.ListenMovement(0.1, hemmo.Tahtaa, "");
107        Mouse.Listen(MouseButton.Left, ButtonState.Down, Toimi, "");
108        Keyboard.Listen(Key.A, ButtonState.Down, Vasen, "");
109        Keyboard.Listen(Key.D, ButtonState.Down, Oikea, "");
110        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppy, "");
111        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Paussi, "");
112
113        Keyboard.Listen(Key.Add, ButtonState.Pressed, Camera.Zoom, "", 1.1);
114        Keyboard.Listen(Key.Subtract, ButtonState.Pressed, Camera.Zoom, "", 0.9);
115    }
116
117    void LataaKentta(int taso)
118    {
119        Level.BackgroundColor = Color.Ivory;
120        TileMap kentta = TileMap.FromLevelAsset(taso.ToString());
121        kentta.SetTileMethod('0', LisaaTuhottava);
122        kentta.SetTileMethod('#', LisaaTaso);
123        kentta.SetTileMethod('_', LisaaAnsa);
124        kentta.SetTileMethod('H', LisaaLoota);
125        kentta.SetTileMethod('*', LisaaMaali);
126        kentta.SetTileMethod('N', LisaaPelaaja);
127        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
128    }
129
130    void LisaaTaso(Vector paikka, double leveys, double korkeus)
131    {
132        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
133        taso.Position = paikka;
134        taso.Image = TasoKuva;
135        Add(taso);
136    }
137    void LisaaTuhottava(Vector paikka, double leveys, double korkeus)
138    {
139        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
140        taso.Position = paikka;
141        taso.Image = Kreitti;
142        taso.Tag = "TuhoaMinut";
143        Add(taso);
144    }
145    void LisaaAnsa(Vector paikka, double leveys, double korkeus)
146    {
147        PhysicsObject ansa = PhysicsObject.CreateStaticObject(leveys, korkeus*0.2);
148        paikka.Y -= korkeus*0.4;
149        ansa.Position = paikka;
150        ansa.Tag = "Consequence for failure";
151        ansa.Animation = new Animation(AnsaKuvat);
152        ansa.Animation.Start();
153        Add(ansa);
154    }
155    void LisaaLoota(Vector paikka, double leveys, double korkeus)
156    {
157        Loota loota = new Loota((int)leveys, (int)(korkeus*0.5), 10, 10);
158        loota.IgnoresCollisionResponse = true;
159        loota.Tag = "laatikko";
160        paikka.Y -= korkeus*0.25;
161        loota.Position = paikka;
162        loota.Image = tahtiKuva;
163        Add(loota, -1);
164    }
165    void LisaaMaali(Vector paikka, double leveys, double korkeus)
166    {
167        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus * 0.1);
168        paikka.Y -= korkeus/2;
169        maali.Position = paikka;
170        maali.Color = Color.Green;
171        maali.Tag = "Today is ours";
172        Add(maali);
173    }
174    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
175    {
176        hemmo.Position = paikka;
177        Add(hemmo,0);
178        Add(hemmo.Ase,1);
179        AddCollisionHandler(hemmo, hemmo.kolari);
180
181        ProgressBar hpbar = new ProgressBar(100, 20);
182        hpbar.Position = new Vector(Screen.Left + 80, Screen.Top -30);
183        hpbar.BindTo(hemmo.hp);
184        Add(hpbar);
185
186        Label Ammocount = new Label();
187        Ammocount.BindTo(hemmo.Ase.Ammo);
188        Ammocount.Position = new Vector(Screen.Left + 150, Screen.Top -30);
189        Add(Ammocount);
190       
191    }
192
193    void Toimi() { hemmo.Toimi(); }
194    void Vasen() { hemmo.Liiku(-1); }
195    void Oikea() { hemmo.Liiku(1); }
196    void Hyppy() { hemmo.Hyppy(); }
197
198    void Paussi()
199    {
200        MultiSelectWindow pause = new MultiSelectWindow("", "Jatka", "Alkuun");
201        pause.AddItemHandler(1, Valikko);
202        Add(pause);
203    }
204    public void Edistys()
205    {
206        hemmo.Destroy();
207        hemmo.Ase.Destroy();
208        if (NykTaso != MaxTaso)
209        {
210            if (Taso == NykTaso) Taso++;
211            MultiSelectWindow edistys = new MultiSelectWindow("Läpäisit tason!", "Seuraava", "Uudelleen", "Alkuun");
212            edistys.AddItemHandler(0, delegate { NykTaso++; Aloita(); });
213            edistys.AddItemHandler(1, Aloita);
214            edistys.AddItemHandler(2, Valikko);
215            Add(edistys);
216        }
217        else
218        {
219            MultiSelectWindow edistys = new MultiSelectWindow("Voitit pelin!", "Uudelleen", "Alkuun");
220            edistys.AddItemHandler(0, Aloita);
221            edistys.AddItemHandler(1, Valikko);
222            Add(edistys);
223        }
224    }
225    public void Kuolema()
226    {
227        hemmo.Destroy();
228        hemmo.Ase.Destroy();
229        MultiSelectWindow kuollut = new MultiSelectWindow("Kuolit!", "Uudelleen", "Alkuun");
230        kuollut.AddItemHandler(0, Aloita);
231        kuollut.AddItemHandler(1, Valikko);
232        Add(kuollut);
233    }
234
235    void Lopeta()
236    {
237        SaveGame("save.xml");
238        Exit();
239    }
240
241    protected override void Update(Microsoft.Xna.Framework.GameTime gameTime)
242    {
243        base.Update(gameTime);
244        if (hemmo != null)hemmo.Ase.Position = hemmo.Position;
245        if (splash.IsAddedToGame)
246        {
247            splash.TextScale += new Vector(splashGrow, splashGrow);
248            if (splash.TextScale.Magnitude >= splashMax.Magnitude || splash.TextScale.Magnitude <= splashMin.Magnitude) { splashGrow *= -1; }
249        }
250    }
251
252    String getSplash()
253    {
254        String[] splashes = {
255                                "",
256            /*"Very original flickering text!",
257            "GUNS, EXPLOSIONS, BRAINS!",
258            "Epilepsy gun!"*/
259       };
260        return splashes[RandomGen.NextInt(splashes.Length)];
261    }
262}
Note: See TracBrowser for help on using the repository browser.