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

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