source: 2016/30/TaavettiV/Street Alien Domination/Street Alien Domination/Street_Alien_Domination/Street_Alien_Domination.cs @ 8214

Revision 8214, 6.8 KB checked in by sieerinn, 5 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 Street_Alien_Domination : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    GameObject tahtain;
17
18    Image pelaajanKuva = LoadImage("norsu");
19    Image tahtiKuva = LoadImage("tahti");
20
21    Image pompKuva = LoadImage("pomp");
22    Image tähtäinkuva = LoadImage("tähtäin");
23
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25
26    public override void Begin()
27    {
28        ClearAll();
29        SmoothTextures = false;
30
31        PhysicsObject kissa = new PhysicsObject(40, 20);
32        kissa.Shape = Shape.Rectangle;
33        kissa.Mass = 10.0;
34        Add(kissa);
35
36        tahtain = new GameObject(40, 40);
37        tahtain.Image = tähtäinkuva;
38        Add(tahtain, 3);
39
40
41        Gravity = new Vector(0, -1000);
42
43        LuoKentta();
44        LisaaNappaimet();
45
46        Camera.Follow(pelaaja1);
47        Camera.ZoomFactor = 1.2;
48        Camera.StayInLevel = true;
49    }
50
51    void LuoKentta()
52    {
53        TileMap kentta = TileMap.FromLevelAsset("kentta1");
54        kentta.SetTileMethod('#', LisaaTaso);
55        kentta.SetTileMethod('*', LisaaTahti);
56        kentta.SetTileMethod('N', LisaaPelaaja);
57        kentta.SetTileMethod('p', LisaaOlio);
58        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
59        Level.CreateBorders();
60        Level.Background.CreateGradient(Color.DarkRed,Color.LightBlue);
61    } 
62
63    void LisaaTaso(Vector paikka, double leveys, double korkeus)
64    {
65        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
66        taso.Position = paikka;
67        taso.Color = Color.DarkBrown;
68        Add(taso);
69    }
70
71    void LisaaTahti(Vector paikka, double leveys, double korkeus)
72    {
73        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
74        tahti.IgnoresCollisionResponse = true;
75        tahti.Position = paikka;
76        tahti.Image = tahtiKuva;
77        tahti.Tag = "tahti";
78        Add(tahti);
79    }
80    void LisaaOlio(Vector paikka, double leveys, double korkeus)
81    {
82        PlatformCharacter p = new PlatformCharacter(leveys*0.9, korkeus*0.9);
83        p.Position = paikka;
84        p.Image = pompKuva;
85        Add(p);
86        p.Tag = "p";
87
88
89
90        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
91        tasoAivot.Speed = 100;
92
93        tasoAivot.FallsOffPlatforms = true;
94        tasoAivot.TriesToJump = true;
95
96        p.Brain = tasoAivot;
97
98    }
99
100
101
102    void Tormaap(PhysicsObject pelaaja1, PhysicsObject p)
103    {
104        pelaaja1.Destroy();
105
106        Explosion rajahdys = new Explosion(50);
107        rajahdys.Position = p.Position;
108        Add(rajahdys);
109    }
110
111    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
112    {
113        pelaaja1 = new PlatformCharacter(leveys, korkeus);
114        pelaaja1.Position = paikka;
115        pelaaja1.Mass = 4.0;
116        pelaaja1.Image = pelaajanKuva;
117        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
118        AddCollisionHandler(pelaaja1, "p", Tormaap);
119        Add(pelaaja1);
120
121        pelaaja1.Destroyed += pelinlopussa;
122
123
124
125
126       
127        pelaaja1.Weapon = new AssaultRifle(30, 10);
128        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
129        pelaaja1.Weapon.InfiniteAmmo = true;
130        pelaaja1.Weapon.FireRate = 3.0;
131        pelaaja1.Weapon.Power.DefaultValue = 400;
132        pelaaja1.Weapon.AmmoIgnoresGravity = true;
133        pelaaja1.Weapon.AmmoIgnoresExplosions = true;
134        pelaaja1.Weapon.CanHitOwner = false;
135    }
136
137    void LisaaNappaimet()
138    {
139        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
140        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
141
142        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
143        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
144        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
145
146        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
147
148        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
149        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
150        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
151        //Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
152        Keyboard.Listen(Key.E, ButtonState.Pressed, HeitaKranaatti, "heitä kranaatti", pelaaja1);
153
154        Mouse.ListenMovement(0.0, KuunteleLiiketta, null);
155        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, null,pelaaja1);
156    }
157
158    void KuunteleLiiketta(AnalogState hiirenTila)
159    {
160        tahtain.Position = Mouse.PositionOnWorld;
161        pelaaja1.Weapon.AbsoluteAngle = (Mouse.PositionOnWorld - pelaaja1.Position).Angle;
162
163    }
164
165
166    void Liikuta(PlatformCharacter hahmo, double nopeus)
167    {
168        hahmo.Walk(nopeus);
169    }
170
171    void Hyppaa(PlatformCharacter hahmo, double nopeus)
172    {
173        hahmo.Jump(nopeus);
174    }
175
176    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
177    {
178        maaliAani.Play();
179        MessageDisplay.Add("Keräsit tähden!");
180        tahti.Destroy();
181    }
182    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
183    {
184        ammus.Destroy();
185
186        if (kohde.Tag.ToString() == "p")
187        {
188            kohde.Destroy();
189        }
190    }
191
192    void AmmuAseella(PlatformCharacter pelaaja)
193    {
194        if (pelaaja.IsDestroyed) return;
195
196        PhysicsObject ammus = pelaaja.Weapon.Shoot();
197
198        if (ammus != null)
199        {
200            //ammus.Size *= 3;
201            //ammus.Image = ...
202            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
203        }
204
205    }
206    void HeitaKranaatti(PlatformCharacter pelaaja)
207    {
208        if (pelaaja.IsDestroyed) return;
209
210        Grenade kranu = new Grenade(3.0);
211        pelaaja1.Throw(kranu, Angle.FromDegrees(50), 10000);
212
213
214        kranu.Explosion.AddShockwaveHandler("p", KranaattiOsui);
215    }
216    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
217    {
218        rajahdyksenKohde.Destroy();
219    }
220
221   void pelinlopussa()
222    {
223        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Lopeta");
224        Add(alkuValikko);
225
226        alkuValikko.AddItemHandler(0, Begin);
227        alkuValikko.AddItemHandler(1, Exit);
228    }
229}
230
231
Note: See TracBrowser for help on using the repository browser.