source: 2011/26/JaniN/neon wars/neon wars/neon wars/Peli.cs @ 2241

Revision 2241, 3.6 KB checked in by janiemit, 8 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;
8using Physics2DDotNet.Joints;
9using Physics2DDotNet.Ignorers;
10
11
12
13public class Peli : PhysicsGame
14{
15    PhysicsObject Ihansama;
16    GameObject pyssy;
17
18    PhysicsObject alareuna;
19
20    public override void Begin()
21    {
22
23
24       
25        aseta_näppäimet();
26        Mouse.IsCursorVisible = true;
27       
28       
29        Timer ajastin = new Timer();
30        ajastin.Interval = 0.05;
31        ajastin.Trigger += TeeVihollinen;
32        ajastin.Start();
33        //TeeVihollinen(ajastin);
34
35        Ihansama = PhysicsObject.CreateStaticObject(50.0, 50.0);
36        Ihansama.X = 0;
37        Ihansama.Y = Level.Bottom + 100;
38        Add(Ihansama);
39     
40
41        pyssy = new GameObject(100, 5);
42        pyssy.Color = Color.Black;
43        Ihansama.Add(pyssy);
44        //pyssy.Position = new Vector(Ihansama.Position.X, Ihansama.Position.Y+pyssy.Height/2);
45        //Add(pyssy);
46
47        //HingeJoint liitos = PhysicsGame.CreateHingeJoint(Ihansama, pyssy, Ihansama.Position);
48        //Add(liitos);
49        pyssy.Image = LoadImage("Untitled");
50        // Gravity = new Vector(0, -1000);
51        Level.CreateBorders();
52        alareuna = Level.CreateBottomBorder();
53       
54
55    }
56
57
58
59    void aseta_näppäimet()
60    {
61        Mouse.Listen(MouseButton.Left, ButtonState.Down, ampuu, null);
62    }
63
64
65
66
67    protected override void Update(Time time)
68    {
69        if (pyssy != null)
70        {
71            pyssy.Angle = (Mouse.PositionOnWorld - Ihansama.Position).Angle;
72        }
73
74        base.Update(time);
75    }
76
77    void ampuu()
78    {
79        PhysicsObject ammus = new PhysicsObject(5, 5);
80        ammus.Velocity = (Mouse.PositionOnWorld - Ihansama.Position).Normalize()*500;
81
82        //ammus.Push(Mouse.PositionOnWorld);
83        //ammus.Velocity *= 3;
84        ammus.Tag = "ammus";
85        ammus.Destroyed += new Action(delegate { ammus_Destroyed(ammus); });
86        Add(ammus);
87        ammus.Position = Ihansama.Position + (Mouse.PositionOnWorld - Ihansama.Position).Normalize()*((pyssy.Width/2)-14);
88
89        AddCollisionHandler(ammus, KasitteleAmmuksenTormays);
90        ammus.Shape = Shape.Circle;
91        ammus.Color = Color.Black;
92
93    }
94
95    void ammus_Destroyed(PhysicsObject ammus)
96    {
97        Explosion rajahdys = new Explosion(70);
98        rajahdys.Position = ammus.Position;
99        rajahdys.Force = 0;
100        rajahdys.ShockwaveColor = Color.Transparent;
101        Add(rajahdys);
102    }
103
104    void KasitteleAmmuksenTormays(PhysicsObject ammus, PhysicsObject kohde)
105    {
106        if (kohde != Ihansama && kohde.Tag.ToString() != "ammus") ammus.Destroy();
107        if (kohde != Ihansama && kohde.Tag.ToString() == "vihollinen") { kohde.Destroy(); }
108    }
109    void KasitteleVihollisenTormays(PhysicsObject vihollinen ,PhysicsObject kohde)
110    {
111        if (kohde == alareuna) vihollinen.Destroy(); 
112    }
113
114    void TeeVihollinen(Timer sender)
115    {
116        PhysicsObject vihollinen = new PhysicsObject(50, 50);
117        vihollinen.Shape = Shape.Rectangle;
118        vihollinen.Velocity = new Vector(0, 500);
119        vihollinen.X = RandomGen.NextDouble(Level.Left, Level.Right);
120        vihollinen.Y = Level.Top;
121        vihollinen.Tag = "vihollinen";
122        vihollinen.Image = LoadImage("vihollinen");
123        vihollinen.Angle = Angle.StraightAngle;
124        vihollinen.CanRotate = false;
125        AddCollisionHandler(vihollinen, KasitteleVihollisenTormays);
126        Add(vihollinen);
127    }
128
129}
Note: See TracBrowser for help on using the repository browser.