source: 2013/30/ArtturiN/Omapeli/Omapeli/Omapeli/Omapeli.cs @ 4745

Revision 4745, 7.8 KB checked in by juiitamm, 9 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10public class Sinko : Weapon
11{       
12        public Sinko( double width, double height )
13            : base( width, height )
14        {
15            Power.DefaultValue = Power.Value = 15000;
16            TimeBetweenUse = TimeSpan.FromSeconds( 4 );
17       
18            Image = Game.LoadImage( "RPG7" );
19            AttackSound = Game.LoadSoundEffectFromResources( "CannonFire" );
20        }
21       
22        protected override PhysicsObject CreateProjectile()
23        {
24            return new CannonBall( 5 );
25        }
26}
27
28public class Omapeli : PhysicsGame
29{
30
31    PhysicsObject minaMies;
32    PhysicsObject sinaMies;
33
34    Image kentanKuva = LoadImage("Kuva");
35    Image tulenKuva = LoadImage("Tuli");
36
37    Animation minaJuoksee = new Animation(LoadImages("MinaMies", "MinaMies3"));
38    Animation sinaJuoksee = new Animation(LoadImages("SinäMies2", "SinäMies3"));
39
40    bool painovoima = false;
41    private double hyppyvoima = 1000;
42    private int liikkumisnopeus = 200;
43    private ExplosionSystem es;
44    private Image ammusKuva = LoadImage("rpg7 ammo");
45
46    public override void Begin()
47    {
48        Mouse.IsCursorVisible = true;
49        Alkuvalikko();
50        MediaPlayer.Play("David Guetta");
51        MediaPlayer.IsRepeating = true;
52    }
53
54    void Aloitapeli()
55    {
56        es = new ExplosionSystem(LoadImage("Tuli"), 1000);
57        Add(es);
58        //LuoKentta();
59
60        if (painovoima)
61        {
62            Gravity = new Vector(0, -1200);
63            liikkumisnopeus = 1200;
64        }
65
66        minaMies = new PhysicsObject(250, 250);
67        minaMies.Tag = "pelaaja";
68        minaMies.Position = new Vector(0, -400);
69        minaMies.CollisionIgnoreGroup = 1;
70        minaMies.Animation = minaJuoksee;
71        minaMies.Animation.FPS = 5;
72        if (painovoima) minaMies.CanRotate = false;
73        Add(minaMies);
74
75        Sinko minaSinko = new Sinko( 250, 40);
76        minaMies.Add(minaSinko);
77
78        sinaMies = new PhysicsObject(250, 250);
79        sinaMies.Position = new Vector(0, -400);
80        sinaMies.Tag = "pelaaja";
81        sinaMies.Animation = sinaJuoksee;
82        sinaMies.CollisionIgnoreGroup = 2;
83        sinaMies.Animation.FPS = 5;
84        if (painovoima) sinaMies.CanRotate = false;
85        Add(sinaMies);
86
87        Sinko sinaSinko = new Sinko(250, 40);
88        sinaMies.Add(sinaSinko);
89
90        taustakuva();
91
92        Camera.ZoomToLevel();
93        Level.BackgroundColor = Color.Black;
94        Level.CreateBorders(1.0, true, Color.Red);
95
96        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
97        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, SytytaLiekki, "ampuu");
98
99        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikuttaa", minaMies, minaSinko, new Vector(-liikkumisnopeus, 0));
100        Keyboard.Listen(Key.Left, ButtonState.Released, Pysahdy, "Liikuttaa", minaMies);
101        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikuttaa", minaMies, minaSinko, new Vector(liikkumisnopeus, 0));
102        Keyboard.Listen(Key.Right, ButtonState.Released, Pysahdy, "Liikuttaa", minaMies);
103        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppää, "Hyppää", minaMies);
104        Keyboard.Listen(Key.Down, ButtonState.Down, Liikuta, "Liikuta", minaMies, minaSinko, new Vector(0, -liikkumisnopeus));
105           
106        Keyboard.Listen(Key.NumPad0, ButtonState.Pressed, Ammu, "Ammu", minaMies, minaSinko, 1);
107        Keyboard.Listen(Key.RightControl, ButtonState.Pressed, Ammu, "Ammu", minaMies, minaSinko, 1);
108
109        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikuttaa", sinaMies, sinaSinko, new Vector(-liikkumisnopeus, 0));
110        Keyboard.Listen(Key.A, ButtonState.Released, Pysahdy, "Liikuttaa", sinaMies);
111        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikuttaa", sinaMies, sinaSinko, new Vector(liikkumisnopeus, 0));
112        Keyboard.Listen(Key.D, ButtonState.Released, Pysahdy, "Liikuttaa", sinaMies);
113        Keyboard.Listen(Key.S, ButtonState.Down, Liikuta, "Liikuta", sinaMies, sinaSinko, new Vector(0, -liikkumisnopeus));
114        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppää, "Hyppää", sinaMies);
115        Keyboard.Listen(Key.LeftControl, ButtonState.Pressed, Ammu, "Ammu", sinaMies, sinaSinko, 2);
116        Keyboard.Listen(Key.V, ButtonState.Pressed, Ammu, "Ammu", sinaMies, sinaSinko, 2);
117       
118  }
119
120    void Hyppää(PhysicsObject kukaHyppää)
121    {
122        kukaHyppää.Hit(new Vector(0, hyppyvoima));
123    }
124
125    void Ammu(PhysicsObject kukaAmpuu, Sinko sinko, int ignoreGroup)
126    {
127        PhysicsObject ammus = new PhysicsObject(120, 19);
128        ammus.Position = kukaAmpuu.Position;
129        ammus.CollisionIgnoreGroup = ignoreGroup;
130        ammus.Image = ammusKuva;
131        ammus.Hit(Vector.FromLengthAndAngle(10000, sinko.Angle));
132        AddCollisionHandler(ammus, CollisionHandler.DestroyObject);
133        AddCollisionHandler(ammus, CollisionHandler.PlaySound("aseOsuu"));
134        AddCollisionHandler(ammus, "pelaaja", CollisionHandler.AddEffectOnTarget(es, 30));
135        Add(ammus);
136    }
137
138    void Alkuvalikko()
139    {
140        MultiSelectWindow alkuValikko = new MultiSelectWindow("TSMH*", "Aloita peli", "Asetukset", "Lopeta peli");
141        Add(alkuValikko);
142
143        alkuValikko.AddItemHandler(0, Aloitapeli);
144        alkuValikko.AddItemHandler(1, Asetukset);
145        alkuValikko.AddItemHandler(2, Exit);
146    }
147
148    void Asetukset()
149    {
150        MultiSelectWindow asetusValikko = new MultiSelectWindow("Asetukset", "Painovoima päälle", "Painovoima pois", "Valitse kenttä", "Takaisin");
151        Add(asetusValikko);
152
153        asetusValikko.AddItemHandler(0, delegate { painovoima = true; });
154        asetusValikko.AddItemHandler(1, delegate { painovoima = false; });
155        asetusValikko.AddItemHandler(0, delegate { Alkuvalikko(); });
156        asetusValikko.AddItemHandler(1, delegate { Alkuvalikko(); });
157        asetusValikko.AddItemHandler(2, delegate
158        {
159            kenttavalikko();
160        });
161    }
162    void kenttavalikko()
163    {
164        MultiSelectWindow asetusValikko = new MultiSelectWindow("Kenttävalikko", "Forest", "City","Takaisin");
165
166        asetusValikko.AddItemHandler(0, delegate { kentanKuva = LoadImage("forest"); });
167        asetusValikko.AddItemHandler(1, delegate { kentanKuva = LoadImage("Kuva"); });
168        asetusValikko.Closed += delegate { Alkuvalikko(); };
169     
170        Add(asetusValikko);
171    }
172    void Pysahdy(PhysicsObject mies)
173    {
174        mies.Velocity = Vector.Zero;
175        mies.Animation.Stop();
176    }
177
178
179    void Liikuta(PhysicsObject mies, Sinko ase, Vector suunta)
180    {
181        ase.Angle = suunta.Angle;
182        //mies.Suunta = suunta;
183        mies.Push(suunta);
184        mies.Animation.Resume();
185        //mies.Animation.Start();
186    }
187
188
189
190    void SytytaLiekki()
191    {
192        Vector paikka = Mouse.PositionOnWorld;
193
194        Flame liekki = new Flame(tulenKuva);
195        liekki.Position = paikka;
196        Add(liekki);
197        PlaySound("RPG 7 sound effects");
198
199    }
200
201
202    void LuoKentta()
203    {
204        ColorTileMap kentta = new ColorTileMap("kentta1");
205        kentta.SetTileMethod(Color.Red, LuoSampo);
206
207        kentta.Execute(50, 50);
208    }
209
210    void LuoSampo(Vector paikka, double leveys, double korkeus)
211    {
212        PhysicsObject sampo = new PhysicsObject(leveys * 8, korkeus * 8);
213        sampo.Position = paikka;
214        sampo.Image = LoadImage("Sampo");
215        Add(sampo);
216
217    }
218
219
220    void taustakuva()
221    {
222        Level.Width = 2800;
223        Level.Height = 1570;
224
225        Level.Background.Image = kentanKuva;
226       
227
228        Level.Background.FitToLevel();
229
230    }
231
232
233    void taustakuva1()
234    {
235
236
237
238        // TODO: Kirjoita ohjelmakoodisi tähän
239
240
241
242    }
243
244
245
246
247
248
249}
Note: See TracBrowser for help on using the repository browser.