source: 2010/23/hniemi/ShootEmUp/ShootEmUp/Weapons.cs @ 932

Revision 932, 5.7 KB checked in by hniemi, 10 years ago (diff)

Ampuminen korjattu

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6using Jypeli.ScreenObjects;
7using Jypeli.Assets;
8
9namespace ShootEmUp
10{
11    /// <summary>
12    /// Säilyttää aseita ja aluksia varten tagissa tietoa
13    /// </summary>
14    struct LisaData
15    {
16        public int Damage;
17        public string Tyyppi;
18        public bool Rajahtaa;
19    }
20
21    /// <summary>
22    /// Sädease
23    /// Ampuu sinisen säteen
24    /// </summary>
25    class Beam : Weapon
26    {
27        private Image ammus;
28        public int Damage { get; set; }
29        public int Level { get; private set; }
30        public CollisionHandler BeamCollision { get; set; }
31
32
33        public Beam(double width, double height)
34            : base(width, height)
35        {
36            Level = 1;
37            Color = Color.Blue;
38            Damage = 20;
39            this.AddedToGame += LisaaAV;
40            this.TimeBetweenUse = (new TimeSpan(0, 0, 0, 0, 5));
41
42        }
43
44        /// <summary>
45        /// Lisää kuvan ja äänen aseeseen
46        /// </summary>
47        private void LisaaAV()
48        {
49            //AttackSound = Game.LoadSoundEffect("pum");
50            ammus = Game.LoadImage("sade");
51        }
52
53        protected override void OnUse()
54        {
55            OnShoot();
56        }
57
58        protected override PhysicsObject OnShoot()
59        {
60
61            PhysicsObject projectile = new PhysicsObject(Level * 35, Level * 5);
62
63            LisaData ammus;
64            ammus.Damage = 3;
65            ammus.Rajahtaa = false;
66            ammus.Tyyppi = "oma";
67            projectile.Tag = ammus;
68
69            projectile.Image = this.ammus;
70            projectile.Position = this.Position;
71            projectile.Color = this.Color;
72            projectile.IgnoresExplosions = true;
73            projectile.IgnoresCollisionResponse = true;
74            SetCollisionHandler(projectile, BeamCollision);
75            ShootProjectile(projectile, 3000);
76
77            return projectile;
78        }
79    }
80
81    /// <summary>
82    /// Ohjus-ase
83    /// Ampuu räjähtävän ohjuksen
84    /// </summary>
85    class Missile : Weapon
86    {
87        private Image ammus;
88        public int Level { get; private set; }
89        public CollisionHandler MissileCollision { get; set; }
90        public int Damage { get; set; }
91
92        public Missile(double width, double height)
93            : base(width, height)
94        {
95            Level = 1;
96            Damage = 20;
97            this.TimeBetweenUse = (new TimeSpan(0,0,0,0,300));
98            Color = Color.Blue;
99            this.AddedToGame += LisaaAV;
100            LisaData ase;
101            ase.Damage = 20;
102            ase.Rajahtaa = true;
103            ase.Tyyppi = "oma";
104            this.Tag = ase;
105        }
106
107        /// <summary>
108        /// Lisää äänen ja kuvan aseeseen
109        /// </summary>
110        private void LisaaAV()
111        {
112            //AttackSound = Game.LoadSoundEffect("pum");
113            ammus = Game.LoadImage("ohjus");
114        }
115
116        protected override void OnUse()
117        {
118            OnShoot();
119        }
120
121        protected override PhysicsObject OnShoot()
122        {
123           
124            if (!this.IsDestroyed())
125            {
126                PhysicsObject projectile = new PhysicsObject(Level * 30, Level * 15);
127                projectile.Shape = Shapes.Triangle;
128                projectile.Position = this.Position;
129                projectile.Color = this.Color;
130                projectile.Image = this.ammus;
131                SetCollisionHandler(projectile, MissileCollision);
132                ShootProjectile(projectile, 1000);
133                projectile.IgnoresExplosions = true;
134                projectile.IgnoresCollisionResponse = true;
135
136                projectile.Tag = this.Tag;
137
138                return projectile;
139            }
140            return null;
141        }
142    }
143
144    /// <summary>
145    /// Photon-ase
146    /// Ampuu pallon
147    /// </summary>
148    class Photon : Weapon
149    {
150        private Image ammus;
151        public int Level { get; private set; }
152        public CollisionHandler PhotonCollision { get; set; }
153        public int Damage { get; set; }
154
155        public Photon(double width, double height): base(width, height)
156        {
157            Level = 1;
158            Damage = 20;
159            this.TimeBetweenUse = (new TimeSpan(0,0,0,0,150));
160            Color = Color.Blue;
161            this.AddedToGame += LisaaAani;
162
163            //Tagi
164            LisaData ase;
165            ase.Damage = 20;
166            ase.Rajahtaa = false;
167            ase.Tyyppi = "oma";
168            this.Tag = ase;
169        }
170
171        /// <summary>
172        /// Lisää äänen
173        /// </summary>
174        private void LisaaAani()
175        {
176            //AttackSound = Game.LoadSoundEffect("pum");
177            ammus = Game.LoadImage("photon");
178        }
179
180        protected override void OnUse()
181        {
182            OnShoot();
183        }
184
185        protected override PhysicsObject OnShoot()
186        {
187
188            if (!this.IsDestroyed())
189            {
190                PhysicsObject projectile = new PhysicsObject(Level * 15, Level * 15);
191                projectile.Shape = Shapes.Circle;
192                projectile.Position = this.Position;
193                projectile.Color = this.Color;
194                projectile.Image = this.ammus;
195                SetCollisionHandler(projectile, PhotonCollision);
196                ShootProjectile(projectile, 2000);
197                projectile.IgnoresExplosions = true;
198                projectile.IgnoresCollisionResponse = true;
199
200                projectile.Tag = this.Tag;
201                return projectile;
202            }
203            return null;
204        }
205    }
206}
Note: See TracBrowser for help on using the repository browser.