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

Revision 873, 3.6 KB checked in by hniemi, 10 years ago (diff)

Säteelle lisätty tekstuuri
Ampumista parannettu

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    struct LisaData
12    {
13        public int Damage;
14        public string Tyyppi;
15        public bool Rajahtaa;
16    }
17
18    class Beam : Weapon
19    {
20        private Image ammus;
21        public int Damage { get; set; }
22        public int Level { get; private set; }
23        public CollisionHandler BeamCollision { get; set; }
24
25
26        public Beam(double width, double height)
27            : base(width, height)
28        {
29            Level = 1;
30            Color = Color.Blue;
31            Damage = 20;
32            this.AddedToGame += LisaaAani;
33            this.TimeBetweenUse = (new TimeSpan(0, 0, 0, 0, 5));
34
35        }
36
37        private void LisaaAani()
38        {
39            AttackSound = Game.LoadSoundEffect("pum");
40            ammus = Game.LoadImage("sade");
41        }
42
43
44
45        protected override void OnUse()
46        {
47            OnShoot();
48        }
49
50        protected override PhysicsObject OnShoot()
51        {
52
53            PhysicsObject projectile = new PhysicsObject(Level * 35, Level * 5);
54            LisaData ammus;
55            ammus.Damage = 3;
56            ammus.Rajahtaa = false;
57            ammus.Tyyppi = "oma";
58            projectile.Image = this.ammus;
59            projectile.Tag = ammus;
60            projectile.Position = this.Position;
61            projectile.Color = this.Color;
62            projectile.IgnoresExplosions = true;
63            projectile.IgnoresCollisionResponse = true;
64            SetCollisionHandler(projectile, BeamCollision);
65            ShootProjectile(projectile, 3000);
66
67            return projectile;
68        }
69    }
70
71    /// <summary>
72    /// Ohjus-ase
73    /// Räjähtää
74    /// </summary>
75    class Missile : Weapon
76    {
77        private Image ammus;
78        public int Level { get; private set; }
79        public CollisionHandler MissileCollision { get; set; }
80        public int Damage { get; set; }
81
82        public Missile(double width, double height)
83            : base(width, height)
84        {
85            Level = 1;
86            Damage = 20;
87            this.TimeBetweenUse = (new TimeSpan(0,0,0,0,300));
88            Color = Color.Blue;
89            this.AddedToGame += LisaaAani;         
90        }
91
92        /// <summary>
93        /// Lisää äänen
94        /// </summary>
95        private void LisaaAani()
96        {
97            AttackSound = Game.LoadSoundEffect("pum");
98            ammus = Game.LoadImage("ohjus");
99        }
100
101        protected override void OnUse()
102        {
103            OnShoot();
104        }
105
106        protected override PhysicsObject OnShoot()
107        {
108            if (this.IsDestroyed())
109            {
110                PhysicsObject projectile = new PhysicsObject(Level * 30, Level * 15);
111                projectile.Shape = Shapes.Triangle;
112                projectile.Position = this.Position;
113                projectile.Color = this.Color;
114                projectile.Image = this.ammus;
115                SetCollisionHandler(projectile, MissileCollision);
116                ShootProjectile(projectile, 1000);
117                Game.Add(projectile);
118                projectile.IgnoresExplosions = true;
119                projectile.IgnoresCollisionResponse = true;
120                LisaData ammus;
121                ammus.Damage = 20;
122                ammus.Rajahtaa = true;
123                ammus.Tyyppi = "oma";
124                projectile.Tag = ammus;
125                return projectile;
126            }
127            return null;
128        }
129    }
130}
Note: See TracBrowser for help on using the repository browser.