source: 2010/23/hniemi/ShootEmUp/ShootEmUp/Alus.cs @ 993

Revision 993, 2.5 KB checked in by hniemi, 12 years ago (diff)

Luotu uus abstraktiluokka helpottamaan aseiden tekemistä
Aseiden vaihtoa myös muokattu hieman ja lisätty pyhä purkkakorjaus.

Aiemmasta poisjääneet seinät myös lisätty mukaan.

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    class Alus : PhysicsObject
12    {
13        private IntMeter hp;
14        private Weapon kaytossaOlevaAse;
15
16        public Weapon UsedWeapon { get { return kaytossaOlevaAse; } private set { } }
17
18        /// <summary>
19        /// Jos osumapiste-arvo on negatiivinen, tuhoaa aluksen.
20        /// </summary>
21        public int Hp
22        {
23            get{return hp.Value;}
24            set
25            {
26                hp.Value = value;
27                if (hp < 1) this.Destroy();
28            }
29        }
30
31        /// <summary>
32        /// Palauttaa viitteen hp-laskuriin
33        /// </summary>
34        public IntMeter HpMeter {get { return hp; }}
35
36        /// <summary>
37        /// Luo aluksen
38        /// </summary>
39        /// <param name="width">Leveys</param>
40        /// <param name="height">Korkeus</param>
41        /// <param name="hp">Osumapisteet</param>
42        public Alus(double width, double height, int hp)
43            : base(width,height)
44        {
45            this.Shape = Shapes.Rectangle;
46            this.CanRotate = false;
47            this.IgnoresCollisionResponse = true;
48            this.IgnoresExplosions = true;
49            this.hp = new IntMeter(hp);
50            this.AddedToGame += LoadWeapon;
51        }
52
53        private void LoadWeapon()
54        {
55
56            this.SetWeapon(new Beam(5, 35, Game.LoadImage("sade")));
57        }
58
59        /// <summary>
60        /// Ottaa osumaa. Jos hp:t on loppu, tuhoaa aluksen
61        /// </summary>
62        /// <param name="damage"></param>
63        public void TakeHit(int damage)
64        {
65            Hp -= damage;
66            if (Hp <= 0) this.Destroy();
67        }
68
69
70        public void SetWeapon(Weapon ase) 
71        {
72            kaytossaOlevaAse = ase;
73        }
74
75        /// <summary>
76        /// Ampuu käytössä olevalla aseella
77        /// </summary>
78        public void Shoot()
79        {
80            PhysicsObject panos = kaytossaOlevaAse.Shoot();
81            if ( panos != null) { 
82                panos.Angle = this.Angle;
83            }   
84        }
85
86        /// <summary>
87        /// Ampuu silloin kun kutsutaan, timer-kutsuja varten
88        /// </summary>
89        /// <param name="sender">Ei käytössä</param>
90        public void Shoot(Timer sender)
91        {
92            this.Shoot();
93        }
94
95    }
96}
Note: See TracBrowser for help on using the repository browser.