Changeset 2813 for 2012/23


Ignore:
Timestamp:
2012-06-06 13:54:15 (7 years ago)
Author:
jijoback
Message:

naatteja!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2012/23/JimB/NameInPending/NameinPending/NameinPending/NameinPending/NameinPending.cs

    r2810 r2813  
    1010{ 
    1111    public IntMeter Elamat; 
     12    public Explosion ViimeisinRajahdys = null; 
     13    public bool aseValmiina = true; 
     14    public bool naattiValmiina = true; 
    1215 
    1316    public PeliUkko(double leveys, double korkeus) 
     
    2528    PeliUkko pelaaja1, pelaaja2, pelaaja3, pelaaja4; 
    2629    double ampumisnopeus = 450; 
     30    ExplosionSystem NaattiPoks; 
     31    PhysicsObject naatti; 
     32 
    2733 
    2834    public override void Begin() 
    2935    { 
     36        NaattiPoks = new ExplosionSystem(LoadImage("naattishard"), 375); 
     37        Add(NaattiPoks); 
    3038        // TODO: Kirjoita ohjelmakoodisi tähän 
    3139        LuoKentta(); 
    3240 
    33  
    34  
    35  
    36  
    37  
    3841        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    3942    } 
     43 
    4044    void LuoKentta() 
    4145    { 
     
    7276        Keyboard.Listen(Key.W, ButtonState.Released, Liike, null, pelaaja1, new Vector(0, 0)); 
    7377        Keyboard.Listen(Key.Q, ButtonState.Down, Ammu, null, pelaaja1); 
     78        Keyboard.Listen(Key.E, ButtonState.Down, Heita, null, pelaaja1); 
    7479    } 
    7580    void LuoPelaaja2(Vector paikka, double leveys, double korkeus) 
     
    165170        ammus.Destroy(); 
    166171    } 
    167     bool aseReady = true; 
    168     void Ammu(PhysicsObject pelaaja) 
    169     { 
    170         if (aseReady) 
     172     
     173    void Ammu(PeliUkko pelaaja) 
     174    { 
     175        if (pelaaja.aseValmiina) 
    171176        { 
    172177            PhysicsObject bullet = new PhysicsObject(LoadImage("bullet")); 
     
    181186            Vector suunta = Vector.FromLengthAndAngle(ampumisnopeus, pelaaja.Angle + Angle.RightAngle); 
    182187            bullet.Hit(suunta); 
    183             aseReady = false; 
    184             Timer.SingleShot(0.5, delegate { aseReady = true; }); 
    185         } 
    186     } 
    187     bool naattiReady = true; 
    188     void Heita(PhysicsObject pelaaja) 
    189     { 
    190         if (naattiReady) 
    191         { 
    192             PhysicsObject naatti = new PhysicsObject(LoadImage("naatti")); 
     188            pelaaja.aseValmiina = false; 
     189            Timer.SingleShot(0.5, delegate { pelaaja.aseValmiina = true; }); 
     190        } 
     191    } 
     192    void Heita(PeliUkko pelaaja) 
     193    { 
     194        if (pelaaja.naattiValmiina) 
     195        { 
     196            naatti = new PhysicsObject(LoadImage("naatti")); 
    193197            Add(naatti); 
    194198            naatti.Tag = "naatti"; 
     
    199203            Vector suunta = Vector.FromLengthAndAngle(ampumisnopeus, pelaaja.Angle + Angle.RightAngle); 
    200204            naatti.Hit(suunta); 
    201             naattiReady = false; 
    202             Timer.SingleShot(10.5, delegate { naattiReady = true; }); 
    203         } 
    204  
    205     } 
     205            pelaaja.naattiValmiina = false; 
     206            Timer.SingleShot(2.5, delegate { KranaattiRajahti(naatti.X, naatti.Y, 375); naatti.Destroy(); }); 
     207            Timer.SingleShot(6.5, delegate { pelaaja.naattiValmiina = true; }); 
     208        } 
     209 
     210    } 
     211    void KranaattiRajahti(double x, double y, int numberOfParticles) 
     212    { 
     213        NaattiPoks.X = x; 
     214        NaattiPoks.Y = y; 
     215        NaattiPoks.MinScale = 1; 
     216        NaattiPoks.MaxScale = 10; 
     217        NaattiPoks.AddEffect(x, y, numberOfParticles); 
     218        Explosion e = new Explosion(65); 
     219        Add(e); 
     220        e.Position = new Vector(x, y); 
     221        e.ShockwaveReachesObject += delegate(IPhysicsObject kohde, Vector suunta) { ShockHit(kohde, suunta, e); }; 
     222    } 
     223 
     224    void ShockHit(IPhysicsObject kohde, Vector suunta, Explosion rajahdys) 
     225    { 
     226        if (!(kohde is PeliUkko)) return; 
     227        PeliUkko ukko = kohde as PeliUkko; 
     228        if (ukko.ViimeisinRajahdys == rajahdys) return; 
     229 
     230        double etaisyys = Vector.Distance(ukko.Position, rajahdys.Position); 
     231        ukko.Elamat.Value -= (int) Math.Floor( 1500/etaisyys); 
     232        ukko.ViimeisinRajahdys = rajahdys; 
     233    } 
     234 
    206235    void Liike(PeliUkko pelaaja, Vector nopeus) 
    207236    { 
Note: See TracChangeset for help on using the changeset viewer.