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

Revision 3908, 7.6 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
20    SoundEffect maaliAani = LoadSoundEffect("maali");
21
22    Hemmo hemmo;
23
24    public override void Begin()
25    {
26        if (DataStorage.Exists("save.xml")) LoadGame("save.xml"); else Taso = 0;
27        Valikko();
28    }
29
30    public void Valikko()
31    {
32        Label label = new Label("GRAFFUT ON PLACEHOLDEREITA");
33        label.Position = new Vector(Screen.Right - 200, Screen.Top - 30);
34        label.TextColor = Color.Red;
35        Add(label);
36
37        NykTaso = Taso;
38
39        MultiSelectWindow alku = new MultiSelectWindow("..", "Pelaa", "Kentät", "Lopeta");
40        alku.AddItemHandler(0, Aloita);
41        alku.AddItemHandler(1, valitseKentta);
42        alku.AddItemHandler(2, Lopeta);
43        alku.DefaultCancel = -1;
44        Add(alku);
45    }
46    void valitseKentta()
47    {
48        MultiSelectWindow kentat = new MultiSelectWindow("Valitse kenttä", "1", "2", "3", "4", "5", "Alkuun");
49        kentat.AddItemHandler(0, delegate { if (Taso >= 0) { NykTaso = 0; Aloita(); } else {valitseKentta();}});
50        kentat.AddItemHandler(1, delegate { if (Taso >= 1) { NykTaso = 1; Aloita(); } else {valitseKentta();}});
51        kentat.AddItemHandler(2, delegate { if (Taso >= 2) { NykTaso = 2; Aloita(); } else { valitseKentta();}});
52        kentat.AddItemHandler(3, delegate { if (Taso >= 3) { NykTaso = 3; Aloita(); } else { valitseKentta();}});
53        kentat.AddItemHandler(4, delegate { if (Taso >= 4) { NykTaso = 4; Aloita(); } else { valitseKentta(); } });
54        kentat.AddItemHandler(5, Valikko);
55        kentat.DefaultCancel = 5;
56        Add(kentat);
57    }
58    public void Aloita()
59    {
60        ClearAll();
61        Label label = new Label("GRAFFUT ON PLACEHOLDEREITA");
62        label.Position = new Vector(Screen.Right - 200, Screen.Top - 30);
63        label.TextColor = Color.Red;
64        Add(label);
65
66        hemmo = new Hemmo();
67
68        Gravity = new Vector(0, -1000);
69
70        Camera.Follow(hemmo);
71        Camera.ZoomFactor = 1.2;
72        Camera.StayInLevel = true;
73
74        //Kontrollit
75        Mouse.ListenMovement(0.1, hemmo.Tahtaa, "");
76        Mouse.Listen(MouseButton.Left, ButtonState.Down, Toimi, "");
77        Keyboard.Listen(Key.A, ButtonState.Down, Vasen, "");
78        Keyboard.Listen(Key.D, ButtonState.Down, Oikea, "");
79        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppy, "");
80        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Pause, "");
81       
82        LataaKentta(NykTaso);
83    }
84
85    void LataaKentta(int taso)
86    {
87        TileMap kentta = TileMap.FromLevelAsset(taso.ToString());
88        kentta.SetTileMethod('0', LisaaTuhottava);
89        kentta.SetTileMethod('#', LisaaTaso);
90        kentta.SetTileMethod('_', LisaaAnsa);
91        kentta.SetTileMethod('H', LisaaLoota);
92        kentta.SetTileMethod('*', LisaaMaali);
93        kentta.SetTileMethod('N', LisaaPelaaja);
94        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
95        Level.BackgroundColor = Color.Ivory;
96    }
97
98    void LisaaTaso(Vector paikka, double leveys, double korkeus)
99    {
100        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
101        taso.Position = paikka;
102        taso.Color = Color.LightGray;
103        Add(taso);
104    }
105    void LisaaTuhottava(Vector paikka, double leveys, double korkeus)
106    {
107        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
108        taso.Position = paikka;
109        taso.Color = Color.Brown;
110        taso.Tag = "TuhoaMinut";
111        Add(taso);
112    }
113    void LisaaAnsa(Vector paikka, double leveys, double korkeus)
114    {
115        PhysicsObject ansa = PhysicsObject.CreateStaticObject(leveys, korkeus*0.1);
116        paikka.Y -= korkeus / 2;
117        ansa.Position = paikka;
118        ansa.Color = Color.Blue;
119        ansa.Tag = "Consequence for failure";
120        Add(ansa);
121    }
122    void LisaaLoota(Vector paikka, double leveys, double korkeus)
123    {
124        Loota loota = new Loota((int)leveys, (int)korkeus,10,10);
125        loota.IgnoresCollisionResponse = true;
126        loota.Tag = "laatikko";
127        loota.Position = paikka;
128        loota.Image = tahtiKuva;
129        Add(loota, -1);
130    }
131    void LisaaMaali(Vector paikka, double leveys, double korkeus)
132    {
133        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus * 0.1);
134        paikka.Y -= korkeus / 2;
135        maali.Position = paikka;
136        maali.Color = Color.Green;
137        maali.Tag = "Today is ours";
138        Add(maali);
139    }
140    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
141    {
142        hemmo.Position = paikka;
143        Add(hemmo);
144        Add(hemmo.Ase);
145        AddCollisionHandler(hemmo, hemmo.kolari);
146
147        ProgressBar hpbar = new ProgressBar(100, 20);
148        hpbar.Position = new Vector(Screen.Left + 80, Screen.Top -30);
149        hpbar.BindTo(hemmo.hp);
150        Add(hpbar);
151
152        Label Ammocount = new Label();
153        Ammocount.BindTo(hemmo.Ase.Ammo);
154        Ammocount.Position = new Vector(Screen.Left + 150, Screen.Top -30);
155        Add(Ammocount);
156       
157    } //!!?!??!?!??!!?!??!+1
158
159    void LisaaNappaimet()
160    {
161        /*ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
162        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", hemmo, -nopeus);
163        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", hemmo, nopeus);
164        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", hemmo, hyppyNopeus);
165        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); */
166    }
167
168    void Toimi() { hemmo.Toimi(); }
169    void Vasen() { hemmo.Liiku(-1); }
170    void Oikea() { hemmo.Liiku(1); }
171    void Hyppy() { hemmo.Hyppy(); }
172
173    void Pause()
174    {
175        MultiSelectWindow pause = new MultiSelectWindow("", "Jatka", "Alkuun");
176        pause.AddItemHandler(1, Valikko);
177        Add(pause);
178    }
179    public void Edistys()
180    {
181        hemmo.Destroy();
182        hemmo.Ase.Destroy();
183        if (NykTaso != MaxTaso)
184        {
185            if (Taso == NykTaso) Taso++;
186            MultiSelectWindow edistys = new MultiSelectWindow("Läpäisit tason!", "Seuraava", "Uudelleen", "Alkuun");
187            edistys.AddItemHandler(1, Aloita);
188            edistys.AddItemHandler(0, delegate { NykTaso++; Aloita(); });
189            edistys.AddItemHandler(2, Valikko);
190            Add(edistys);
191        }
192        else
193        {
194            MultiSelectWindow edistys = new MultiSelectWindow("Voitit pelin!", "Uudelleen", "Alkuun");
195            edistys.AddItemHandler(0, Aloita);
196            edistys.AddItemHandler(1, Valikko);
197            Add(edistys);
198        }
199    }
200    public void Kuolema()
201    {
202        hemmo.Destroy();
203        hemmo.Ase.Destroy();
204        MultiSelectWindow kuollut = new MultiSelectWindow("Kuolit!", "Uudelleen", "Alkuun");
205        kuollut.AddItemHandler(0, Aloita);
206        kuollut.AddItemHandler(1, Valikko);
207        Add(kuollut);
208    }
209
210    void Lopeta()
211    {
212        SaveGame("save.xml");
213        Exit();
214    }
215
216    protected override void Update(Microsoft.Xna.Framework.GameTime gameTime)
217    {
218        base.Update(gameTime);
219        if (hemmo != null)hemmo.Ase.Position = hemmo.Position;
220    }
221}
Note: See TracBrowser for help on using the repository browser.