source: 2010/23/sijoseha/Testipeli/Peli.cs @ 577

Revision 577, 4.4 KB checked in by sijoseha, 11 years ago (diff)

Efekti kokeiluja

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.ScreenObjects;
5using Jypeli.Assets;
6
7namespace Testipeli
8{
9    public class Peli : PhysicsGame
10    {
11
12        List<PhysicsObject> particles;
13        //GameObject[] removable;
14        List<int> removable;
15        PhysicsObject pallo;
16        PhysicsObject alareuna;
17
18        protected override void Begin()
19        {
20           
21            Gravity = new Vector(0, -200);
22
23            LuoOhjaimet();
24
25
26            particles = new List<PhysicsObject>();
27            removable = new List<int>();
28
29           
30            /*for (int i = 0; i < 200; i++)
31            {
32                Particle par = new Particle(100, 1.001, 100.001);
33                par.Position = new Vector(RandomGen.NextInt(800) - 400, RandomGen.NextInt(800) - 400);
34               
35                Add(par);
36                par.Hit(new Vector(0, 2000));
37            }*/
38
39            LuoLiekki(100, 0, -400);
40           
41           
42
43
44            pallo = new PhysicsObject(40, 40);
45            pallo.Shape = Shapes.Circle;
46            pallo.Tag = 1;
47            Add(pallo);
48            pallo.Hit(new Vector(300, 0));
49
50           
51
52            AddCollisionHandler(pallo, Kasittelija);
53
54            //Level.CreateBorders(0.4, false);
55
56            alareuna = Level.CreateBottomBorder();
57            PhysicsObject ylareuna = Level.CreateTopBorder();
58            PhysicsObject vasenreuna = Level.CreateLeftBorder();
59            PhysicsObject oikeareuna = Level.CreateRightBorder();
60
61            Camera.ZoomToLevel();
62           
63        }
64
65        protected override void OnUpdate(Time time)
66        {
67            if (!pallo.IsDestroyed())
68            {
69                for (int i = 0; i < (int)pallo.Tag; i++)
70                {
71                    PhysicsObject p = particle(5, 0, Color.Red, pallo.Position);
72                    p.Hit(-(p.Velocity));
73                    Add(p);
74                    particles.Add(p);
75                }
76            }
77            for (int i = 0; i < particles.Count; i++)
78            {
79                if (particles[i].Lifetime.Milliseconds > 300)
80                {
81                    removable.Add(i);
82                }
83                //particles[i].Size = particles[i].Size / particles[i].Lifetime.Seconds;
84            }
85
86            foreach (int r in removable)
87            {
88                particles[r].Destroy();
89                particles.RemoveAt(r);
90               
91            }
92            removable.Clear();
93
94            base.OnUpdate(time);
95        }
96
97        PhysicsObject particle(double size, int lifetime, Color color, Vector position)
98        {
99            PhysicsObject p = new PhysicsObject(size, size);
100            p.Color = color;
101            p.Mass = 0.1;
102            //p.IgnoresGravity = true;
103            p.IgnoresCollisionResponse = true;
104            p.IgnoresExplosions = true;
105            p.Shape = Shapes.Circle;
106            p.Position = position;
107            p.Tag = lifetime;
108            return p;
109        }
110
111
112        void Kasittelija(PhysicsObject tormaaja, PhysicsObject tormattava)
113        {
114            if (tormattava.Equals(alareuna))
115            {
116                Explosion pamaus = new Explosion(100);
117                pamaus.Position = tormaaja.Position;
118                //Add(pamaus);
119                Tuhoa(tormaaja);
120            }
121        }
122
123        void LuoOhjaimet()
124        {
125            Keyboard.Listen(Key.Z, ButtonState.Released, Liiku, "Pomputtaa palloa", new Vector(0,200));
126            Keyboard.Listen(Key.Left, ButtonState.Pressed, Liiku, "Liikkuu vasemmalle", new Vector(-50, 0));
127            Keyboard.Listen(Key.Right, ButtonState.Pressed, Liiku, "Liikkuu oikealle", new Vector(50, 0));
128        }
129
130        void Liiku(Vector liike)
131        {
132            pallo.Hit(liike);
133        }
134
135        void Tuhoa(PhysicsObject tuhottava)
136        {
137            //LuoMyrsky(tuhottava);
138            tuhottava.Destroy();
139        }
140
141        void LuoMyrsky(PhysicsObject p)
142        {
143            for (int i = 0; i < 10; i++)
144            {
145                PhysicsObject olio = particle(10, 10, Color.Pink, p.Position);
146                Add(olio);
147                olio.Hit(new Vector(RandomGen.NextInt(40)-20,RandomGen.NextInt(40)-20));
148                particles.Add(olio);
149            }
150        }
151
152    }
153}
Note: See TracBrowser for help on using the repository browser.