39 private TimeSpan timeOfLastUse;
45 public virtual bool IsReady
56 public bool CanHitOwner {
get;
set; }
71 public bool InfiniteAmmo
73 get {
return Ammo.Value == Int32.MaxValue; }
76 if ( !value && Ammo.Value == Int32.MaxValue )
79 Ammo.Value = Int32.MaxValue;
86 public bool AmmoIgnoresGravity {
get;
set; }
91 public bool AmmoIgnoresExplosions {
get;
set; }
97 public TimeSpan MaxAmmoLifetime {
get;
set; }
107 public TimeSpan TimeBetweenUse {
get;
set; }
112 public double FireRate
114 get {
return 1 / TimeBetweenUse.TotalSeconds; }
117 if (value < 0)
throw new ArgumentException(
"Fire rate cannot be negative!");
118 if (value == 0) TimeBetweenUse = TimeSpan.MaxValue;
119 else TimeBetweenUse = TimeSpan.FromSeconds( 1 / value );
132 if ( Shooting != null )
133 Shooting( projectile );
146 public Weapon(
double width,
double height )
147 : base( width, height )
152 Ammo =
new IntMeter( Int32.MaxValue, 0, Int32.MaxValue );
154 MaxAmmoLifetime = TimeSpan.MaxValue;
180 if (AttackSound != null)
185 SetCollisionHandler( p, ProjectileCollision );
189 ShootProjectile( p, Power.Value );
190 if ( !InfiniteAmmo ) Ammo.Value--;
202 if ( !IsAddedToGame )
205 Vector impulse =
Vector.FromLengthAndAngle( power, AbsoluteAngle );
206 Vector direction =
Vector.FromLengthAndAngle( 1.0, AbsoluteAngle );
207 Vector position = this.Position;
209 if ( Parent != null )
213 position = this.AbsolutePosition + direction * 0.75 * ( Math.Max(this.Parent.Width,
this.Parent.Height) );
217 projectile.
Angle = this.AbsoluteAngle;
225 if (physParent.
Body.CollisionIgnorer == null)
228 (physParent as PlatformCharacter).CollisionIgnorer =
new Physics2DDotNet.Ignorers.ObjectIgnorer();
232 projectile.
Body.CollisionIgnorer = physParent.
Body.CollisionIgnorer;
236 projectile.
Hit( impulse );
241 if ( handler == null )
250 throw new InvalidOperationException(
"Cannot set a collision handler to non-physics game!" );
void AddCollisionHandler(IPhysicsObject obj, CollisionHandler< IPhysicsObject, IPhysicsObject > handler)
Määrää, mihin aliohjelmaan siirrytään kun yleinen fysiikkaolio
TimeSpan MaximumLifetime
Olion suurin mahdollinen elinaika. Kun Lifetime on suurempi kuin tämä, olio kuolee.
static readonly Rectangle Rectangle
Suorakulmio.
bool IgnoresGravity
Jättääkö olio painovoiman huomioimatta.
TimeSpan SinceStartOfGame
Aika joka on kulunut pelin alusta.
Ääniefekti. Yhdestä efektistä voi luoda CreateSound-metodilla monta ääntä (Sound), jotka voivat soida yhtäaikaa. Ääntä ei tarvitse kuitenkaan luoda itse, jos vain kutsuu Play-metodia.
void OnShooting(PhysicsObject projectile)
Peliolio, joka noudattaa fysiikkamoottorin määräämiä fysiikan lakeja. Voidaan kuitenkin myös laittaa ...
override Angle Angle
Kulma, jossa olio on. Oliota voi pyörittää kulmaa vaihtamalla.
Action< PhysicsObject > Shooting
Tapahtumankäsittelijä ampumiselle, parametrinä ammus. Voit antaa kaikille aseesta lähteville ammuksil...
Mittari, joka mittaa double-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGauge...
void ShootProjectile(PhysicsObject projectile, double power)
void SetCollisionHandler(PhysicsObject projectile, CollisionHandler< PhysicsObject, PhysicsObject > handler)
void Add(IGameObject o)
Lisää olion peliin. Tavalliset oliot tulevat automaattisesti kerrokselle 0 ja ruutuoliot päällimmäise...
virtual void Hit(Vector impulse)
Kohdistaa kappaleeseen impulssin. Tällä kappaleen saa nopeasti liikkeeseen.
Peliluokka reaaliaikaisille peleille.
Weapon(double width, double height)
Luo uuden aseen.
Mittari, joka mittaa int-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGauge...
Body Body
Fysiikkamoottorin käyttämä tietorakenne.
Kantaluokka fysiikkapeleille.
override Vector Position
Olion paikka koordinaatistossa. Käsittää sekä X- että Y-koordinaatin.
bool IgnoresExplosions
Jättääkö olio räjähdyksen paineaallon huomiotta.
static Time Time
Peliaika. Sisältää tiedon siitä, kuinka kauan peliä on pelattu (Time.SinceStartOfGame) ja kuinka kaua...
Kokoelma valmiita törmäyksenkäsittelijöitä.
Pelialueella liikkuva olio. Käytä fysiikkapeleissä PhysicsObject-olioita.
PhysicsObject Shoot()
Ampuu aseella, ja palauttaa ammuksen tai null, jos ampuminen ei onnistu (esimerkiksi jos panokset ova...