31using System.Collections.Generic;
45 private List<PhysicsObject>
wheels =
new List<PhysicsObject>();
46 private List<IMotorJoint>
joints =
new List<IMotorJoint>();
55 get {
return base.Size; }
56 set {
throw new NotImplementedException(
"The size of the tank can not be changed." ); }
85 return joints[0].MaxMotorTorque;
89 joints.ForEach(j => j.MaxMotorTorque = value);
97 public Tank(
double width,
double height )
98 : base( width, height )
122 if ( pg ==
null )
throw new InvalidOperationException(
"Cannot have a tank in non-physics game" );
124 const int wheelCount = 6;
126 double r = this.
Width / ( 2 * wheelCount );
127 double left = this.
X - this.
Width / 2 + r;
128 double[] wheelYPositions =
new double[wheelCount];
129 for (
int i = 0; i < wheelYPositions.Length; i++ )
130 wheelYPositions[i] = this.
Y - this.
Height / 2;
131 wheelYPositions[0] = wheelYPositions[wheelCount - 1] = this.
Position.
Y - ( this.
Height * 3 / 8 );
133 for (
int i = 0; i < wheelCount; i++ )
140 Vector axlePos =
new Vector(left + i * (this.
Width / wheelCount), wheelYPositions[i]);
161 foreach ( var j
in joints )
163 foreach ( var w
in wheels )
186 double rotSpeed = speed /
wheels[0].Width * 2;
189 j.MotorEnabled =
true;
190 j.MotorSpeed = rotSpeed;
217 j.MotorEnabled =
false;
Yksinkertainen tykki, joka ampuu kuulia tai muuta ammuksia.
double Force
Voima, jolla räjähdyksen paineaallon uloin reuna heittää olioita räjähdyksestä poispäin....
Yksinkertainen tankki eli panssarivaunu.
IntMeter HitPoints
Tankin osumapisteet. Kun nämä menevät nollaan, tankki hajoaa.
override void Update(Time time)
Peliolion päivitys. Tätä kutsutaan, kun IsUpdated-ominaisuuden arvoksi on asetettu true ja olio on li...
List< IMotorJoint > joints
void Shoot()
Ampuu tankin tykillä, jos ammuksia on vielä jäljellä.
Tank(double width, double height)
Alustaa uuden tankin.
double MotorTorque
Moottorin vääntömomentti
IntMeter Ammo
Ammusten määrä.
Cannon Cannon
Tankin piippu.
void Accelerate(double speed)
Kiihdyttää tankkia annettuun nopeuteen. Kutsu tätä jatkuvasti (Esim. Keyboard.Listen ja ButtonState....
void Shoot(double power)
Ampuu halutulla voimalla.
override Vector Size
Tankin koko. Tätä ei voi muuttaa.
override void Destroy()
Tuhoaa olion.
List< PhysicsObject > wheels
DoubleMeter Power
Voima, jolla panos ammutaan. Nollautuu ammuttaessa.
PhysicsObject Shoot()
Ampuu aseella, ja palauttaa ammuksen tai null, jos ampuminen ei onnistu (esimerkiksi jos panokset ova...
IntMeter Ammo
Panosten määrä.
TimeSpan TimeBetweenUse
Kuinka kauan kestää, että asetta voidaan käyttää uudestaan.
static Image LoadImageFromResources(string name)
Lataa kuvan Jypelin sisäisistä resursseista.
void Add(Light light)
Lisää valon peliin. Nykyisellään valoja voi olla ainoastaan yksi kappale. Toistaiseksi ei tuettu Wind...
static Game Instance
Käynnissä olevan pelin pääolio.
override Vector?? Position
override void Destroy()
Tuhoaa olion. Tuhottu olio poistuu pelistä.
void Add(IGameObject childObject)
Lisää annetun peliolion tämän olion lapseksi. Lapsiolio liikkuu tämän olion mukana.
virtual Color Color
Väri, jonka värisenä olio piirretään, jos tekstuuria ei ole määritelty.
double X
Olion paikan X-koordinaatti.
double Height
Olion korkeus (Y-suunnassa, korkeimmassa kohdassa).
Action AddedToGame
Tapahtuu, kun olio lisätään peliin.
double Y
Olion paikan Y-koordinaatti.
double Width
Olion leveys (X-suunnassa, leveimmässä kohdassa).
Mittari, joka mittaa int-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGauge...
Action LowerLimit
Tapahtuu, kun mittari saavuttaa pienimmän sallitun arvonsa.
ValueType Value
Mittarin arvo.
A collision ignorer that uses reference comparison. All Bodies with the same instance of this ignorer...
Kantaluokka fysiikkapeleille.
void Add(IAxleJoint j)
Lisää liitoksen peliin.
Kappale joka noudattaa fysiikan lakeja, johon voi törmätä. Vaatii että käytössä on fysiikkapeli.
double KineticFriction
Liikekitka (hidastaa kun olio on jo liikkeessä). Ks. StaticFriction (lepokitka)
override Vector?? Position
double Mass
Olion massa (paino). Mitä enemmän massaa, sitä enemmän voimaa tarvitaan saamaan olio liikkeelle / pys...
virtual Ignorer CollisionIgnorer
Olio, jolla voi välttää oliota osumasta tiettyihin muihin olioihin.
double LinearDamping
Nopeuskerroin. Pienempi arvo kuin 1 (esim. 0.998) toimii kuten kitka / ilmanvastus.
PhysicsObject(double width, double height, Shape shape, double x=0.0, double y=0.0)
Alustaa fysiikkaolion käyttöön.
double AngularDamping
Kulmanopeuskerroin. Pienempi arvo kuin 1 (esim. 0.998) toimii kuten kitka / ilmanvastus.
static readonly Ellipse Circle
Ympyrä tai ellipsi.
static Shape FromImage(Image image)
Luo kuvion annetusta kuvasta. Kuvassa tulee olla vain yksi yhtenäinen muoto (toisin sanoen kuvio ei v...
double Softness
Liitoksen pehmeys eli kuinka paljon sillä on liikkumavaraa.
Rajapinta liitoksille jotka pitävät sisällään moottorin. Esimerkiksi Farseerin WheelJoint
Vector Axis
Akseli, jonka suhteen liitos joustaa. Vector.One(oletus) sallii liikkumisen x ja y-akselilla....
bool MotorEnabled
Onko liitoksen sisältämä moottori päällä.
double MaxMotorTorque
Vääntömomentti jolla moottori yrittää pyörittää siihen liitettyä kappaletta.
JointTypes
Käytössä olevat liitostyypit
static readonly Color Gray
Harmaa.
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
double Y
Vektorin Y-komponentti
static readonly Vector UnitY
Pystysuuntainen yksikkövektori (pituus 1, suunta ylös).