Changeset 6042 for 2015/24/ohjaajat


Ignore:
Timestamp:
2015-06-11 21:47:25 (4 years ago)
Author:
sieerinn
Message:

Ansat toimii.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2015/24/ohjaajat/Dungeon/Dungeon/Dungeon/Dungeon.cs

    r6041 r6042  
    3838 
    3939    /// <summary> 
    40     /// Tätä kutsutaan kun barbaari tulee kylään 
     40    /// Tätä kutsutaan kun barbaari tulee kylään. 
    4141    /// </summary> 
    4242    public virtual void Invasion(Dungeon peli, Barbaari barbaari, Room huone) { } 
     43 
     44    /// <summary> 
     45    /// Kutsutaan joka syklin alussa. 
     46    /// </summary> 
     47    public virtual void SykliPaivitys() { } 
    4348} 
    4449 
     
    4752    public int Damage { get; set; } 
    4853 
     54    public bool Active { 
     55        get { return LatausMittari.Value == LatausMittari.MaxValue; } 
     56    } 
     57 
     58    // Jos täynnä, niin ansa on aktiivinen. 
     59    public IntMeter LatausMittari { get; set; } 
     60 
     61    public TrapUpgrade() 
     62    { 
     63        LatausMittari = new IntMeter(4, 0, 4); 
     64        LatausMittari.UpperLimit += delegate 
     65        { 
     66            // Askelletaan vikasta framesta ekaan. 
     67            Animation.Step(); 
     68        }; 
     69    } 
     70 
    4971    public override void Invasion(Dungeon peli, Barbaari barbaari, Room huone) 
    5072    { 
     73        if (!Active) return; 
     74 
    5175        peli.barbaarit.Remove(barbaari); 
    52         barbaari.Destroy(); //TODO: Mitä nyt oikeasti tapahtuu, kun barbaari astuu ansaan. Meidän tapauksessa kai tapetaan saman tien. 
     76        barbaari.Destroy(); 
    5377        peli.Splatter(huone.Position); 
    5478 
    55         this.Animation.Start(1); 
    56  
    57         /* 
    58         if (peli.barbaarit.Count < 1) 
    59         { 
    60             peli.KierrosKaynnissa = false; 
    61         } 
    62         */ 
     79        // Barbaarin tappo pudottaa latausmittarin nollaan. 
     80        LatausMittari.Value = LatausMittari.MinValue; 
     81 
     82        Animation.StopOnLastFrame = true; 
     83        Animation.Start(1); 
     84    } 
     85 
     86    public override void SykliPaivitys() 
     87    { 
     88        base.SykliPaivitys(); 
     89        if (LatausMittari.Value < LatausMittari.MaxValue) 
     90        { 
     91            LatausMittari.Value++;    
     92        } 
    6393    } 
    6494} 
     
    99129    { 
    100130        this.Destroy(); 
    101         peli.kohteet.Remove(huone); 
    102         if (peli.kohteet.Count < 1) 
     131        huone.Upgrade = null; 
     132        if (peli.KultuuriHuoneidenPaikat().Count < 1) 
    103133        { 
    104134            peli.LopetaPeli(); 
     
    144174    public List<Point> Reitti { get; set; } 
    145175 
    146     public Room Kohde { get; set; } 
     176    public Point Kohde { get; set; } 
    147177 
    148178    public Point Location { get; set; } 
     
    190220 
    191221    Room[,] huoneet; 
    192     public List<Room> kohteet = new List<Room>(); 
     222    //public List<Room> kohteet = new List<Room>(); 
    193223    public List<Barbaari> barbaarit = new List<Barbaari>(); 
    194224    Room spawn; 
     
    229259        LuoSpawn(); 
    230260 
    231         Timer sykliAjastin = new Timer { Interval = 2.0 }; 
     261        Timer sykliAjastin = new Timer { Interval = 1.0 }; 
    232262        sykliAjastin.Timeout += Sykli; 
    233263        sykliAjastin.Start(); 
     
    365395    void EtsiBarbaarinReitti(Barbaari barbaari) 
    366396    { 
     397        var kohteet = KultuuriHuoneidenPaikat(); 
    367398        barbaari.Kohde = kohteet[RandomGen.NextInt(kohteet.Count)]; 
    368         barbaari.Reitti = FindPath(barbaari.Kohde.Location, (barbaari.Location.Equals(spawn.Location)) ? spawn.Location : barbaari.Location); 
     399        barbaari.Reitti = FindPath(barbaari.Kohde, (barbaari.Location.Equals(spawn.Location)) ? spawn.Location : barbaari.Location); 
     400    } 
     401 
     402    public List<Point> KultuuriHuoneidenPaikat() 
     403    { 
     404        return RuutujenPaikat().Select(GetRoom).Where(r => r.Upgrade != null && r.Upgrade is CultureUpgrade).Select(r => r.Location).ToList(); 
    369405    } 
    370406 
    371407    void Sykli() 
    372408    { 
     409        // Päivitetään huoneiden päivityksiä. 
     410        RuutujenPaikat().Select(GetRoom).Where(r => r.Upgrade != null).ToList().ForEach(r => r.Upgrade.SykliPaivitys()); 
     411 
     412        // Päivitetään barbaareja. 
    373413        foreach (var barbaari in barbaarit) 
    374414        { 
    375415            if (barbaari.Reitti.Count == 0) 
    376416            { 
    377                 EtsiBarbaarinReitti(barbaari);  //Etsitään uusi reitti poiston sijaan 
     417                EtsiBarbaarinReitti(barbaari);  //Etsitään uusi reitti poiston sijaan. 
     418                continue; 
    378419            } 
    379420 
     
    543584            //       se on vain suoraan polun pituus. 
    544585            upg.Culture.Value = polku.Count; 
    545  
    546             kohteet.Add(room); 
    547586        } 
    548587    } 
Note: See TracChangeset for help on using the changeset viewer.