Ignore:
Timestamp:
2015-07-02 11:39:47 (4 years ago)
Author:
saveviku
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2015/27/SanteriK/Hundreddays/Hundreddays/Hundreddays/Hundreddays.cs

    r6685 r6735  
    1414    Image groundImage = LoadImage("lattia"); 
    1515    Image zombinkuva = LoadImage("zombie"); 
    16  
    17  
     16    Image valonkuva = LoadImage("valo"); 
     17    Image laatikonkuva = LoadImage("laatikko"); 
    1818    PhysicsObject ukkeli2; 
    1919    PhysicsObject ukkeli1; 
     
    2222    //Kuinka nopeasti ukkeli liikkuu maksimissaan 
    2323    double maxLiikkuminen = 1800.0; 
     24    int AmmuksetLaatikosta = 100; 
    2425 
    2526    AssaultRifle ase; 
     
    5152        ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoPelaaja2); 
    5253        ruudut.SetTileMethod(Color.FromHexCode("FF0000"), Luozombi); 
     54        ruudut.SetTileMethod(Color.FromHexCode("FF006E"), Luolaatikko); 
    5355        ruudut.SetTileMethod(Color.Black, LuoTaso); 
    5456        ruudut.SetTileMethod(Color.Gray, LuoLattia); 
    5557        ruudut.Execute(20, 20); 
    5658        Camera.ZoomToLevel(); 
     59        GameObject pimeys = new GameObject(Level.Width,Level.Height); 
     60        pimeys.Color = new Color(0, 0, 0, 100); 
     61        Add(pimeys,2); 
     62 
    5763    } 
    5864    void LuoTaso(Vector paikka, double leveys, double korkeus) 
     
    8389 
    8490        FollowerBrain seuraajanAivot = new FollowerBrain("ukkeli"); 
     91        seuraajanAivot.TurnWhileMoving = true; 
    8592        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(); 
    8693        seuraajanAivot.Speed = 50;                 // Millä nopeudella kohdetta seurataan 
    8794        seuraajanAivot.DistanceFar = 150;           // Etäisyys jolla aletaan seurata kohdetta 
    88          
     95        seuraajanAivot.TurnWhileMoving = true; 
    8996        seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana 
    9097        satunnaisAivot.ChangeMovementSeconds = 3; 
     
    93100        zombi.Brain = seuraajanAivot; 
    94101 
    95         
     102        Timer nakyvyysAjastin = new Timer(); 
     103        nakyvyysAjastin.Interval = 0.05; 
     104        nakyvyysAjastin.Timeout += delegate { TarkistaNakyvyys(zombi); }; 
     105        nakyvyysAjastin.Start(); 
    96106    } 
    97107 
     
    126136    void AmmuAseella(AssaultRifle ase) 
    127137    { 
     138        if (ase.Parent.IsDestroyed) 
     139        { 
     140            return; 
     141        } 
    128142        PhysicsObject ammus = ase.Shoot(); 
    129143 
     
    151165        ukkeli.Color = Color.Red; 
    152166        ukkeli.Tag = "ukkeli"; 
    153         Add(ukkeli); 
     167        Add(ukkeli,3); 
     168 
    154169 
    155170        AddCollisionHandler(ukkeli, "zombi", PelaajaosuuVihuun); 
    156171 
     172        GameObject valo = new GameObject(200, 200); 
     173        valo.X = 100; 
     174        valo.Image = valonkuva; 
     175        ukkeli.Add(valo); 
     176 
    157177        LuoLattia(paikka, leveys, korkeus); 
    158178 
     
    163183    { 
    164184        ukkeli1 = LuoPelaaja(paikka, leveys, korkeus); 
     185 
    165186        ase = new AssaultRifle(30, 10); 
    166187 
     
    172193        ukkeli1.Add(ase); 
    173194 
     195        AddCollisionHandler(ukkeli1, "laatikko", delegate(PhysicsObject a, PhysicsObject b) 
     196        { 
     197            b.Destroy(); 
     198            ase.Ammo.Value += AmmuksetLaatikosta; 
     199        }); 
     200 
    174201    } 
    175202 
     
    186213        ukkeli2.Add(ase2); 
    187214 
     215        AddCollisionHandler(ukkeli2, "laatikko", delegate(PhysicsObject a, PhysicsObject b) 
     216        { 
     217            b.Destroy(); 
     218            ase2.Ammo.Value += AmmuksetLaatikosta; 
     219        }); 
     220 
     221    } 
     222    void Luolaatikko(Vector paikka, double leveys, double korkeus) 
     223    { 
     224        PhysicsObject laatikko = new PhysicsObject(leveys,korkeus); 
     225        laatikko.Image = laatikonkuva; 
     226        laatikko.Position = paikka; 
     227        laatikko.Tag = "laatikko"; 
     228        Add(laatikko); 
    188229    } 
    189230    void PelaajaosuuVihuun(PhysicsObject ukkeli,PhysicsObject zombi ) 
    190231    { 
    191232        ukkeli.Destroy(); 
     233    } 
     234 
     235    void TarkistaNakyvyys(GameObject olio) 
     236    { 
     237        PhysicsObject[] ukkelit = { ukkeli1, ukkeli2 }; 
     238 
     239        int valonPituus = 150; 
     240        int valonKulma = 45; 
     241 
     242        bool piilossa = true; 
     243        foreach (var ukkeli in ukkelit) 
     244        { 
     245            if (ukkeli.IsDestroyed) 
     246                continue; 
     247 
     248            if (Math.Abs((olio.Position - ukkeli.Position).Angle.Degrees - ukkeli.Angle.Degrees) < valonKulma && Vector.Distance(olio.Position, ukkeli.Position) < valonPituus) 
     249            { 
     250                piilossa = false; 
     251                break; 
     252            } 
     253        } 
     254 
     255        olio.IsVisible = !piilossa; 
    192256    } 
    193257} 
Note: See TracChangeset for help on using the changeset viewer.