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

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