Ignore:
Timestamp:
2013-06-06 13:16:08 (8 years ago)
Author:
tojukarp
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2012/23/AnttiR/From above/FysiikkaPeli2/FysiikkaPeli2/FromAbove.cs

    r3982 r3994  
    2424    public Explosion Viimeisinrajahdus = null; 
    2525    public double Ampumisnopeus; 
    26     public String Asekuva; 
     26    public Image Asekuva; 
    2727    public string Ase; 
    2828    public Vector viimeisinSuunta = Vector.Zero; 
    2929    public PhysicsObject apupallo; 
     30 
     31 
    3032 
    3133    public Pelaaja(double leveys, double korkeus) 
     
    3840        Pisteputki = new DoubleMeter(0, 0, 10); 
    3941        Ampumisnopeus = 512; 
    40         Ase = "Heavy"; 
    41         Asekuva = "HMG"; 
    4242        Latausnopeus = 6.0; 
    4343        Latapati = 250; 
     
    4949        if (apupallo != null) this.apupallo.Destroy(); 
    5050        base.Destroy(); 
     51    } 
     52} 
     53public class Zombi : PhysicsObject 
     54{ 
     55    public DoubleMeter elamaMittari; 
     56    public Explosion Viimeisinrajahdus = null; 
     57    public static int Zombinvauhti = 100; 
     58    public static int Zombinelpit = 200; 
     59    public static int Zombinvahinko = 50; 
     60 
     61    public Zombi(double leveys, double korkeus) 
     62        : base(leveys, korkeus) 
     63    { 
     64        elamaMittari = new DoubleMeter(Zombinelpit, 0, Zombinelpit); 
    5165    } 
    5266} 
     
    6074    { 
    6175 
     76    } 
     77 
     78} 
     79public class Hautausmaa : PhysicsObject 
     80{ 
     81    public DoubleMeter Elpit; 
     82    public bool OnKunnossa = true; 
     83 
     84    public Hautausmaa(double leveys, double korkeus) 
     85        : base(leveys, korkeus) 
     86    { 
     87         Elpit = new DoubleMeter(1500, 0, 1500); 
    6288    } 
    6389 
     
    7197    Flag sinilippu; 
    7298    Flag punalippu; 
     99    Label pisteLukub = new Label(); 
     100 
     101    ScoreList topZombeissa = new ScoreList(10, false, 0); 
    73102 
    74103    Vector siirtyma = new Vector(0, 130); 
     
    77106    List<Vector> spawnilista1 = new List<Vector>(); 
    78107    List<Vector> spawnilista2 = new List<Vector>(); 
     108    List<Vector> Hautausmaalista = new List<Vector>(); 
    79109 
    80110    PhysicsObject alareuna; 
     
    83113    GameObject Text; 
    84114    GameObject Text2; 
    85     PhysicsObject m; 
    86     PhysicsObject n; 
    87     PhysicsObject n2; 
    88     PhysicsObject m2; 
     115    int kuolemat = 0; 
    89116    BarGauge elppiPalkki = new BarGauge(150, 122); 
    90117    BarGauge elppiPalkki2 = new BarGauge(150, 122); 
     
    108135    Image Caliber = LoadImage("Caliber 89"); 
    109136    Image Ak47u = LoadImage("Aku"); 
     137    Image Flag = LoadImage("Flag"); 
    110138    Image Sniper = LoadImage("Barret"); 
    111139    Image Light = LoadImage("Light"); 
     
    126154    Image palikka = LoadImage("Palikka"); 
    127155    Image vaarapalikka = LoadImage("Vaara"); 
     156 
     157    Image ZOMBI = LoadImage("Zombi"); 
     158    Image Hauta = LoadImage("Hautakivikakkaperkele"); 
     159    Image HautaRikki = LoadImage("Hautakivikakkaperkelehakattupaska"); 
    128160 
    129161    SoundEffect Kolikonkerays = LoadSoundEffect("coin-drop-5"); 
     
    135167    bool Kenttalad; 
    136168    bool CTF; 
     169    bool Zsurvival; 
    137170 
    138171    public override void Begin() 
     172    { 
     173        AloitaAlusta(); 
     174 
     175    } 
     176 
     177    void AloitaAlusta() 
    139178    { 
    140179        Kenttalad = false; 
    141180        CTF = false; 
     181        Zsurvival = false; 
     182 
     183        topZombeissa = DataStorage.TryLoad<ScoreList>(topZombeissa, "pisteet.xml"); 
    142184 
    143185        //Kirjoita ohjelmakoodisi tähän 
     
    149191        Level.Background.CreateGradient(Color.Black, Color.Black); 
    150192 
     193        Pause(); 
    151194        Luokentta(); 
    152195        AsetaOhjaimet(); 
    153196        Luoajastin(); 
    154197        Alkuvalikko(); 
    155  
    156198 
    157199    } 
     
    168210        pallo.CanRotate = false; 
    169211        pallo.Tag = "pallo"; 
     212        pallo.Ase = "Heavy"; 
     213        pallo.Asekuva = HMG; 
    170214        pallo.Color = vari; 
    171215 
     
    179223        apupallo.Brain = fb; 
    180224        pallo.apupallo = apupallo; 
    181         AddCollisionHandler(apupallo, "Vaara!", delegate(PhysicsObject p, PhysicsObject o) { Pelaajakuoli(pallo); }); 
     225        AddCollisionHandler(apupallo, "Vaara!", delegate(PhysicsObject p, PhysicsObject o) { pallo.elamaMittari.Value = pallo.elamaMittari.MinValue; }); 
    182226        AddCollisionHandler(apupallo, "Flag", delegate(PhysicsObject p, Flag f) { LippuTankoKosketus(pallo, f); }); 
    183227        // AddCollisionHandler(apupallo, "BlueFlag", delegate(PhysicsObject p, Flag f) { LippuTankoKosketus(pallo, f); }); 
     
    187231        AddCollisionHandler(pallo, "Elppibonus", Elppibonuskerays); 
    188232        AddCollisionHandler(pallo, "Turbobonus", Vauhtibonuskerays); 
     233        AddCollisionHandler<Pelaaja,Zombi>(pallo, "Zombi", ZombiHyokkaa); 
    189234        return pallo; 
    190235    } 
     
    274319        pistePalkkib.Direction = BarGauge.BarDirection.BarHorizontalLeft; 
    275320        Add(pistePalkkib); 
    276         Label pisteLukub = new Label(); 
     321         
    277322        pisteLukub.BindTo(pallo2.Pistemittari); 
    278323        pisteLukub.Position = new Vector(200, -190); 
     
    304349 
    305350        ControllerOne.ListenAnalog(AnalogControl.LeftStick, -1, LiikutaTatilla, "Liikuta", pallo); 
    306         ControllerOne.ListenAnalog(AnalogControl.RightStick, -1, TahtaaTatilla, "tahtaa", pallo); 
     351        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0, TahtaaTatilla, "tahtaa", pallo); 
    307352        ControllerOne.Listen(Button.LeftStick, ButtonState.Pressed, Kayta, "Pelaaja 1:Käytä turbo", pallo); 
    308353        ControllerOne.Listen(Button.B, ButtonState.Pressed, Tayta, "Pelaaja 1:Paranna elamia", pallo); 
    309354        ControllerOne.Listen(Button.A, ButtonState.Pressed, Lataa, "Pelaaja 1:Lataa ase", pallo); 
    310         ControllerOne.Listen(Button.RightTrigger, ButtonState.Pressed, HKranaatti, "Pelaaja 1:Heita kranaatti", pallo); // heitetään kranaatti siihen suuntaan mihin on viimeksi liikuttu 
    311         ControllerOne.Listen(Button.LeftShoulder, ButtonState.Down, AmmuOhjaimella, "Pelaaja 1: ammu", pallo, pPati); 
     355        ControllerOne.Listen(Button.RightTrigger, ButtonState.Pressed, HKranaatti, "Pelaaja 1:Heita kranaatti", pallo, ControllerOne); // heitetään kranaatti siihen suuntaan mihin on viimeksi liikuttu 
     356        ControllerOne.Listen(Button.RightShoulder, ButtonState.Down, AmmuOhjaimella, "Pelaaja 1: ammu", pallo, pPati); 
    312357 
    313358        // Pelaaja 2 
     
    330375 
    331376        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, -1, LiikutaTatilla, "Liikuta", pallo2); 
    332         ControllerTwo.ListenAnalog(AnalogControl.RightStick, -1, TahtaaTatilla, "tahtaa", pallo2); 
     377        ControllerTwo.ListenAnalog(AnalogControl.RightStick, 0, TahtaaTatilla, "tahtaa", pallo2); 
    333378        ControllerTwo.Listen(Button.LeftStick, ButtonState.Pressed, Kayta, "Pelaaja 2:Käytä turbo", pallo2); 
    334379        ControllerTwo.Listen(Button.B, ButtonState.Pressed, Tayta, "Pelaaja 2:Paranna elamia", pallo2); 
    335380        ControllerTwo.Listen(Button.A, ButtonState.Pressed, Lataa, "Pelaaja 2:Lataa ase", pallo2); 
    336         ControllerTwo.Listen(Button.RightTrigger, ButtonState.Pressed, HKranaatti, "Pelaaja heitä kranaatti", pallo2); // heitetään kranaatti siihen suuntaan mihin on viimeksi tähdatty 
    337         ControllerTwo.Listen(Button.LeftShoulder, ButtonState.Down, AmmuOhjaimella, "Pelaaja 2: ammu", pallo2, pPati); 
     381        ControllerTwo.Listen(Button.RightTrigger, ButtonState.Pressed, HKranaatti, "Pelaaja heitä kranaatti", pallo2, ControllerTwo); // heitetään kranaatti siihen suuntaan mihin on viimeksi tähdatty 
     382        ControllerTwo.Listen(Button.RightShoulder, ButtonState.Down, AmmuOhjaimella, "Pelaaja 2: ammu", pallo2, sPati); 
    338383 
    339384        //General 
     
    344389    void AmmuOhjaimella(Pelaaja pallo, Image i) 
    345390    { 
    346         if (pallo.viimeisinSuunta != Vector.Zero && !double.IsNaN(pallo.viimeisinSuunta.X)) 
     391        if (pallo.viimeisinSuunta != Vector.Zero) 
    347392            Ammu(pallo, pallo.viimeisinSuunta.Normalize(), i); 
    348393    } 
     
    361406        AddCollisionHandler(ammus, "tuhottava", AmmusOsui); 
    362407        AddCollisionHandler(ammus, ammusosui); 
     408         
    363409        Add(ammus); 
    364410        ammus.Tag = "ammus"; 
     
    367413        double vahinko = 0; 
    368414 
    369         if (pallo.Ase == "Heavy") 
     415        if (pallo.HasFlag == true) 
     416        { 
     417            ammus.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 700); 
     418            vahinko = 150; 
     419            pallo.Recoil = true; 
     420            Timer.SingleShot(0.5, delegate 
     421            { 
     422                pallo.Recoil = false; 
     423            }); 
     424        } 
     425        else if (pallo.Ase == "Heavy") 
    370426        { 
    371427 
     
    373429            vahinko = 9; 
    374430        } 
    375         if (pallo.Ase == "Famas") 
     431        else if (pallo.Ase == "Famas") 
    376432        { 
    377433 
     
    386442 
    387443        } 
    388         if (pallo.Ase == "LMG Type") 
     444        else if (pallo.Ase == "LMG Type") 
    389445        { 
    390446 
     
    399455 
    400456        } 
    401         if (pallo.Ase == "Dragunov") 
     457        else if (pallo.Ase == "Dragunov") 
    402458        { 
    403459            pallo.Recoil = true; 
     
    409465 
    410466        } 
    411         if (pallo.Ase == "Barret") 
     467        else if (pallo.Ase == "Barret") 
    412468        { 
    413469            vahinko = 298; 
    414470        } 
    415471 
    416         if (pallo.Ase == "Ak") 
     472        else if (pallo.Ase == "Ak") 
    417473        { 
    418474            ammus.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 600); 
     
    424480            }); 
    425481        } 
    426         if (pallo.Ase == "Cal89") 
     482        else if (pallo.Ase == "Cal89") 
    427483        { 
    428484            ammus.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 500); 
     
    434490            }); 
    435491        } 
    436         if (pallo.Ase == "Spas") 
     492        else if (pallo.Ase == "Spas") 
    437493        { 
    438494            ammus.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 100); 
     
    446502 
    447503 
    448         if (pallo.Ase == "Shotgun") 
     504        else if (pallo.Ase == "Shotgun") 
    449505        { 
    450506            ammus.MaximumLifetime = new TimeSpan(0, 0, 0, 0, 100); 
     
    500556            kohdepelaaja.elamaMittari.Value -= vahinko; 
    501557        }); 
     558 
     559        AddCollisionHandler(ammus, "Hautausmaa", delegate(PhysicsObject tormaaja, PhysicsObject kohde) 
     560        { 
     561            Hautausmaa hautausmaa = (Hautausmaa)kohde; 
     562            if (!hautausmaa.OnKunnossa) return; 
     563            hautausmaa.Elpit.Value -= vahinko; 
     564            pallo.Pistemittari.Value += vahinko; 
     565        }); 
     566     
     567 
     568            AddCollisionHandler(ammus, "Zombi", delegate(PhysicsObject tormaaja, PhysicsObject zombi) 
     569        { 
     570            Zombi zombi1 = (Zombi)zombi; 
     571            zombi1.elamaMittari.Value -= vahinko; 
     572            pallo.Pistemittari.Value += vahinko; 
     573 
     574        }); 
    502575    } 
    503576    void ammusosui(PhysicsObject tormaaja, PhysicsObject kohde) 
    504577    { 
    505578        if (kohde.Tag == "Vaara!") return; 
     579        if (kohde.Tag == "Flag") return; 
    506580        else tormaaja.Destroy(); 
    507581    } 
     
    663737        Spawnkulta(paikka); 
    664738    } 
     739    void Syntyykozombi() 
     740    { 
     741        int paikka = RandomGen.NextInt(Hautausmaalista.Count); 
     742        SpawnZombie(paikka); 
     743    } 
    665744 
    666745    void Syntyykoelppibonus() 
     
    802881 
    803882    } 
     883    void Luopelikentta6() 
     884    { 
     885        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Zsurvival Arena"); 
     886 
     887        ruudut.SetTileMethod(Color.White, Luomaa); 
     888        ruudut.SetTileMethod(Color.Black, Luoseina); 
     889        ruudut.SetTileMethod(Color.FromHexCode("#0026FF"), setspawn2); 
     890        ruudut.SetTileMethod(Color.FromHexCode("#FF0000"), setspawn1); 
     891        ruudut.SetTileMethod(Color.FromHexCode("#C0C0C0"), LuoHautausmaa); 
     892        ruudut.SetTileMethod(Color.FromHexCode("#FF6A00"), Luovaara); 
     893        ruudut.SetTileMethod(Color.FromHexCode("#B6FF00"), Luoelppibonuspaikka); 
     894 
     895        Timer elppiajastin = new Timer(); 
     896        elppiajastin.Interval = 30.0; 
     897        elppiajastin.Timeout += Syntyykoelppibonus; 
     898        elppiajastin.Start(); 
     899        ruudut.Execute(35, 35); 
     900 
     901        ruudut.Execute(35, 35); 
     902        int spawninumero = RandomGen.NextInt(spawnilista1.Count); 
     903        pallo.X = spawnilista1[spawninumero].X; 
     904        pallo.Y = spawnilista1[spawninumero].Y; 
     905        pallo.apupallo.Position = pallo.Position; 
     906 
     907        int spawninumero2 = RandomGen.NextInt(spawnilista2.Count); 
     908        pallo2.X = spawnilista2[spawninumero2].X; 
     909        pallo2.Y = spawnilista2[spawninumero2].Y; 
     910        pallo2.apupallo.Position = pallo2.Position; 
     911 
     912    } 
    804913 
    805914    //Valikot!!!! 
    806915    void Alkuvalikko() 
    807916    { 
    808         MultiSelectWindow alkuv = new MultiSelectWindow("Welcome", "Start game/Continue", "Game settings", "Player 1 weapon", "Player 2 weapon", "Under work", "Quit"); 
     917        MultiSelectWindow alkuv = new MultiSelectWindow("Welcome", "Start game/Continue", "Game settings", "Player 1 weapon", "Player 2 weapon", "Restart", "Quit"); 
    809918        alkuv.ItemSelected += PainettiinValikonNappia; 
    810919        alkuv.Color = Color.MediumBlue; 
    811         Add(alkuv); 
     920        Add(alkuv);         
    812921    } 
    813922    void PainettiinValikonNappia(int valinta) 
     
    817926            case 0: 
    818927                //Sulje ikkuna,Pelaa norm.asetuksilla 
     928                if (IsPaused) Pause(); 
     929                if (Zsurvival) 
     930                { 
     931                    Timer ajastin = new Timer(); 
     932                    ajastin.Interval = 3.0; 
     933                    ajastin.Timeout += Syntyykozombi; 
     934                    ajastin.Start(); 
     935                } 
    819936                break; 
    820937            case 1: 
     
    831948                break; 
    832949            case 4: 
    833                 if (m != null) 
    834                     m.Destroy(); 
    835                 if (n != null) 
    836                     n.Destroy(); 
    837                 Alkuvalikko(); 
     950                //if (m != null) 
     951                //    m.Destroy(); 
     952                //if (n != null) 
     953                //    n.Destroy(); 
     954                //Alkuvalikko(); 
     955                kultaLista.Clear(); 
     956                elppibonusLista.Clear(); 
     957                spawnilista1.Clear(); 
     958                spawnilista2.Clear(); 
     959                Hautausmaalista.Clear(); 
     960 
     961                ClearAll(); 
     962                AloitaAlusta(); 
    838963                break; 
    839964            case 5: 
     
    8771002                pallo.Latausnopeus = 6.0; 
    8781003                pallo.Latapati = 400; 
    879                 pallo.Asekuva = "HMG"; 
     1004                pallo.Asekuva = HMG; 
    8801005                Sinikuva.Image = HMG; 
    8811006                Alkuvalikko(); 
     
    9101035                pallo2.Latausnopeus = 6.0; 
    9111036                pallo2.Latapati = 400; 
    912                 pallo2.Asekuva = "HMG2"; 
     1037                pallo2.Asekuva = HMG; 
    9131038                Punakuva.Image = HMG; 
    9141039                Alkuvalikko(); 
     
    9291054    { 
    9301055        MultiSelectWindow a1 = new MultiSelectWindow("Maps:", 
    931               "Caves DM", "Yin DM", "Caves Gold rush", "Yin Gold rush", "CTF Middle", "Back"); 
     1056              "Caves DM", "Yin DM", "Caves Gold rush", "Yin Gold rush", "CTF Middle","Zsurvival Arena", "Back"); 
    9321057        a1.Color = Color.Azure; 
    9331058        a1.ItemSelected += PVN3; 
     
    9361061    void PVN3(int Valinta) 
    9371062    { 
    938         if (Kenttalad == true) return; 
    939         //Estaa Kenttien synnyn paallekkain 
     1063        if (Kenttalad == true) 
     1064        { 
     1065            Alkuvalikko(); 
     1066            return; 
     1067        }//Estaa Kenttien synnyn paallekkain 
    9401068 
    9411069        switch (Valinta) 
     
    9731101                break; 
    9741102            case 5: 
     1103                //Zsurvival Arena 
     1104                Luopelikentta6(); 
     1105                Kenttalad = true; 
     1106                Zsurvival = true; 
     1107                pallo.Pistemittari.MaxValue = 3000000; 
     1108                pallo2.Pistemittari.MaxValue = 3000000; 
     1109                pisteLukub.BindTo(pallo.Pistemittari); 
     1110                Alkuvalikko(); 
     1111                break; 
     1112            case 6: 
    9751113                Alkuvalikko(); 
    9761114                break; 
     
    9821120    void Gasetukset3() 
    9831121    { 
    984         MultiSelectWindow a1 = new MultiSelectWindow("Points limit", "1000", "3000", "5000", "10000", "15000", "Back"); 
     1122        MultiSelectWindow a1 = new MultiSelectWindow("Points limit", "1000", "3000", "5000", "10000", "15000"); 
    9851123        a1.Color = Color.Azure; 
    9861124        a1.ItemSelected += PVN33; 
     
    10141152                pallo.Pistemittari.MaxValue = 15000; 
    10151153                pallo2.Pistemittari.MaxValue = 15000; 
    1016                 Alkuvalikko(); 
    1017                 break; 
    1018             case 5: 
    10191154                Alkuvalikko(); 
    10201155                break; 
     
    10501185                pallo.Latausnopeus = 1.9; 
    10511186                pallo.Latapati = 100; 
    1052                 pallo.Asekuva = "Famas2"; 
     1187                pallo.Asekuva = Famas; 
    10531188                Sinikuva.Image = Famas; 
    10541189                Alkuvalikko(); 
     
    10611196                pallo.Latausnopeus = 5.0; 
    10621197                pallo.Latapati = 400; 
    1063                 pallo.Asekuva = "Light2"; 
     1198                pallo.Asekuva = Light; 
    10641199                Sinikuva.Image = Light; 
    10651200                Alkuvalikko(); 
     
    10821217                pallo2.Latausnopeus = 1.9; 
    10831218                pallo2.Latapati = 100; 
    1084                 pallo2.Asekuva = "Famas2"; 
     1219                pallo2.Asekuva = Famas; 
    10851220                Punakuva.Image = Famas; 
    10861221                Alkuvalikko(); 
     
    10931228                pallo2.Latausnopeus = 5.0; 
    10941229                pallo2.Latapati = 400; 
    1095                 pallo2.Asekuva = "Light2"; 
     1230                pallo2.Asekuva = Light; 
    10961231                Punakuva.Image = Light; 
    10971232                Alkuvalikko(); 
     
    11221257                pallo.Latausnopeus = 0.8; 
    11231258                pallo.Latapati = 64; 
    1124                 pallo.Asekuva = "Ak47u2"; 
     1259                pallo.Asekuva = Ak47u; 
    11251260                Sinikuva.Image = Ak47u; 
    11261261                Alkuvalikko(); 
     
    11331268                pallo.Latausnopeus = 2.1; 
    11341269                pallo.Latapati = 25; 
    1135                 pallo.Asekuva = "Caliber2"; 
     1270                pallo.Asekuva = Caliber; 
    11361271                Sinikuva.Image = Caliber; 
    11371272                Alkuvalikko(); 
     
    11611296                pallo2.Latausnopeus = 0.8; 
    11621297                pallo2.Latapati = 64; 
    1163                 pallo2.Asekuva = "Ak47u2"; 
     1298                pallo2.Asekuva = Ak47u; 
    11641299                Punakuva.Image = Ak47u; 
    11651300                Alkuvalikko(); 
     
    11721307                pallo2.Latausnopeus = 2.1; 
    11731308                pallo2.Latapati = 25; 
    1174                 pallo2.Asekuva = "Caliber2"; 
     1309                pallo2.Asekuva = Caliber; 
    11751310                Punakuva.Image = Caliber; 
    11761311                Alkuvalikko(); 
     
    13331468    { 
    13341469        Remove(p); 
    1335         Remove(p.apupallo); 
    13361470        p.HasFlag = false; 
     1471        kuolemat += 1; 
     1472        if (Zsurvival) { 
     1473            String jaljella = (6 - kuolemat).ToString(); 
     1474            Label elamia = new Label(150, 20, "Lifes left: " + jaljella); 
     1475            elamia.Y = Screen.Top - 20; 
     1476            elamia.TextColor = Color.Red; 
     1477            Add(elamia); 
     1478            elamia.LifetimeLeft = TimeSpan.FromSeconds(4); 
     1479            if (kuolemat == 7) 
     1480            { 
     1481                Pause(); 
     1482                toplista(); 
     1483            } 
     1484 
     1485            else if (kuolemat > 5) 
     1486                return; 
     1487        } 
    13371488 
    13381489        if (p == pallo) 
    1339         { 
    1340             pallo2.Pistemittari.Value += 1000; 
     1490        {            
    13411491            pallo.kuollut = true; 
    13421492            pallo.Stop(); 
     1493            if (!Zsurvival) { pallo2.Pistemittari.Value += 1000; } 
    13431494            if (CTF) 
    13441495            { 
    13451496                punalippu.OnLippu = true; 
    13461497                punalippu.Image = Punalippu; 
     1498                Sinikuva.Image = p.Asekuva; 
    13471499            } 
    13481500 
     
    13641516        if (p == pallo2) 
    13651517        { 
    1366             pallo.Pistemittari.Value += 1000; 
    13671518            pallo2.kuollut = true; 
    13681519            pallo2.Stop(); 
     1520            if (!Zsurvival) { pallo.Pistemittari.Value += 1000; } 
    13691521            if (CTF) 
    13701522            { 
    13711523                sinilippu.OnLippu = true; 
    13721524                sinilippu.Image = Sinilippu; 
     1525                Punakuva.Image = p.Asekuva; 
    13731526            } 
    13741527            Timer.SingleShot(3.1, delegate 
     
    13921545    void HKranaatti(Pelaaja Pallo) 
    13931546    { 
     1547        HKranaatti(Pallo, null); 
     1548    } 
     1549 
     1550    void HKranaatti(Pelaaja Pallo, GamePad padi) 
     1551    { 
    13941552        if (Pallo.turbomittari < Pallo.turbomittari.MaxValue) return; 
    13951553        if (Pallo.kuollut == true) return; 
     
    14011559        Kransu.Position = Pallo.Position; 
    14021560        Kransu.IgnoresCollisionResponse = true; 
    1403         Kransu.Hit(Pallo.viimeisinSuunta * 1.6); 
     1561 
     1562        if (padi != null) 
     1563        { 
     1564            Pallo.viimeisinSuunta = Vector.ComponentProduct(padi.RightThumbDirection.Normalize(), new Vector(pallo.liikkumisnopeus, pallo.liikkumisnopeus)); 
     1565            if (Double.IsNaN(Pallo.viimeisinSuunta.X)) 
     1566                Pallo.viimeisinSuunta.X = 0; 
     1567            if (Double.IsNaN(Pallo.viimeisinSuunta.Y)) 
     1568                Pallo.viimeisinSuunta.Y = 0; 
     1569        } 
     1570        Kransu.Hit(Pallo.viimeisinSuunta * 1.2); 
    14041571        Kransu.IgnoresExplosions = true; 
    1405         Timer.SingleShot(1.2, delegate 
     1572        Timer.SingleShot(1.0, delegate 
    14061573        { 
    14071574            ExplosionSystem es = new ExplosionSystem(Boom, 80); 
     
    14221589    void Rajahdusosui(Pelaaja ampuja, IPhysicsObject kohde, Vector v, Explosion es) 
    14231590    { 
    1424         if (!(kohde is Pelaaja)) return; 
    1425         Pelaaja kohdePelaaja = kohde as Pelaaja; 
    1426         if (kohdePelaaja == null) return; 
    1427         if (kohdePelaaja.Viimeisinrajahdus == es) return; 
    1428         double etaisyys = Vector.Distance(kohdePelaaja.Position, es.Position); 
    1429         int damage = (int)Math.Floor(15000 / etaisyys); 
    1430         kohdePelaaja.elamaMittari.Value -= damage; 
     1591        if (kohde is Pelaaja) 
     1592        { 
     1593            Pelaaja kohdePelaaja = kohde as Pelaaja; 
     1594            if (kohdePelaaja == null) return; 
     1595            if (kohdePelaaja.Viimeisinrajahdus == es) return; 
     1596            double etaisyys = Vector.Distance(kohdePelaaja.Position, es.Position); 
     1597            int damage = (int)Math.Floor(15000 / etaisyys); 
     1598            kohdePelaaja.elamaMittari.Value -= damage; 
     1599        } 
     1600        else if (kohde is Zombi) 
     1601        { 
     1602            Zombi kohdezombi = kohde as Zombi; 
     1603            if (kohdezombi == null) return; 
     1604            if (kohdezombi.Viimeisinrajahdus == es) return; 
     1605            double etaisyys = Vector.Distance(kohdezombi.Position, es.Position); 
     1606            int damage = (int)Math.Floor(15000 / etaisyys); 
     1607            pallo.Pistemittari.Value += damage; 
     1608            kohdezombi.elamaMittari.Value -= damage; 
     1609 
     1610        } 
     1611 
    14311612    } 
    14321613    void Tayta(Pelaaja p) 
     
    14751656        elppibonusLista.Add(paikka + siirtyma); 
    14761657    } 
     1658    void LuoHautausmaa(Vector paikka, double leveys, double korkeus) 
     1659    { 
     1660        Luomaa(paikka, leveys, korkeus); 
     1661        Hautausmaalista.Add(paikka + siirtyma); 
     1662 
     1663        Hautausmaa hautausmaa = new Hautausmaa(35, 35); 
     1664        hautausmaa.Image = Hauta; 
     1665        hautausmaa.Tag = "Hautausmaa"; 
     1666        hautausmaa.Elpit.LowerLimit += delegate { 
     1667          hautausmaa.OnKunnossa = false; 
     1668          Hautausmaalista.Remove(hautausmaa.Position); 
     1669          hautausmaa.Image = HautaRikki; 
     1670          Timer.SingleShot(10, delegate {  
     1671              hautausmaa.OnKunnossa = true; 
     1672              hautausmaa.Image = Hauta; 
     1673              Hautausmaalista.Add(paikka + siirtyma); 
     1674              hautausmaa.Elpit.Value = hautausmaa.Elpit.MaxValue; 
     1675          }); 
     1676 
     1677        }; 
     1678        hautausmaa.CollisionIgnoreGroup = 2; 
     1679        hautausmaa.Position = paikka + siirtyma; 
     1680        hautausmaa.MakeStatic(); 
     1681        Add(hautausmaa, -2); 
     1682 
     1683    } 
    14771684    void Spawnkulta(int numero) 
    14781685    { 
     
    14831690        Kultapala.MaximumLifetime = TimeSpan.FromSeconds(15); 
    14841691        Kultapala.Image = kulta; 
     1692        Kultapala.MakeStatic(); 
    14851693        Kultapala.Tag = "Kulta"; 
    14861694 
     
    14951703        Elppilaatikko.MaximumLifetime = TimeSpan.FromSeconds(20); 
    14961704        Elppilaatikko.Image = elppibonus; 
     1705        Elppilaatikko.MakeStatic(); 
    14971706        Elppilaatikko.Tag = "Elppibonus"; 
    14981707 
    14991708        Add(Elppilaatikko); 
     1709    } 
     1710    void SpawnZombie(int numero) 
     1711    { 
     1712        if(Hautausmaalista.Count == 0)return; 
     1713        Zombi Zombie = new Zombi(20, 20); 
     1714 
     1715        Zombie.X = Hautausmaalista[numero].X; 
     1716        Zombie.Y = Hautausmaalista[numero].Y; 
     1717        Zombie.Image = ZOMBI; 
     1718        Zombie.Tag = "Zombi"; 
     1719        Zombie.CollisionIgnoreGroup = 2; 
     1720        Zombie.Shape = Shape.Circle; 
     1721 
     1722        FollowerBrain zombinAivot = new FollowerBrain("pallo"); 
     1723        zombinAivot.Speed = Zombi.Zombinvauhti; 
     1724        zombinAivot.TurnWhileMoving = true; 
     1725        Zombie.Brain = zombinAivot; 
     1726 
     1727        Add(Zombie, 3); 
     1728        Zombie.elamaMittari.LowerLimit += delegate { Zombie.Destroy(); }; 
     1729 
     1730        Zombi.Zombinvauhti += 1; 
     1731        Zombi.Zombinelpit += 1; 
     1732        Zombi.Zombinvahinko += 1; 
    15001733    } 
    15011734    void Spawnvauhtibonus(int numero) 
     
    15071740        turbolaatikko.MaximumLifetime = TimeSpan.FromSeconds(20); 
    15081741        turbolaatikko.Image = energiabonus; 
     1742        turbolaatikko.MakeStatic(); 
    15091743        turbolaatikko.Tag = "Turbobonus"; 
    15101744        Add(turbolaatikko); 
     
    15591793        } 
    15601794    } 
     1795    void ZombiHyokkaa (Pelaaja olio, PhysicsObject zombi) 
     1796    { 
     1797        if (olio is Pelaaja) 
     1798        { 
     1799            olio.elamaMittari.Value -= Zombi.Zombinvahinko; 
     1800        } 
     1801    } 
     1802         
    15611803 
    15621804    void LippuTankoKosketus(Pelaaja p, Flag f) 
     
    15671809        { 
    15681810            p.HasFlag = true; 
     1811            Sinikuva.Image = Flag; 
    15691812            f.OnLippu = false; 
    15701813            punalippu.Image = Punatanko; 
     
    15731816        { 
    15741817            p.HasFlag = true; 
     1818            Punakuva.Image = Flag; 
    15751819            f.OnLippu = false; 
    15761820            sinilippu.Image = Sinitanko; 
    15771821        } 
    1578         if (p == pallo && !f.OnPunainen) 
     1822        if (p == pallo && !f.OnPunainen && p.HasFlag) 
    15791823        { 
    15801824            p.HasFlag = false; 
     
    15841828            punalippu.OnLippu = true; 
    15851829            sinilippu.OnLippu = true; 
     1830            Sinikuva.Image = p.Asekuva; 
    15861831            ExplosionSystem es = new ExplosionSystem(Redlippu, 5); 
    15871832            es.Position = f.Position; 
     
    15921837            es.AddEffect(f.Position, 5); 
    15931838        } 
    1594         if (p == pallo2 && f.OnPunainen) 
     1839        if (p == pallo2 && f.OnPunainen && p.HasFlag) 
    15951840        { 
    15961841            p.HasFlag = false; 
     
    15981843            punalippu.Image = Punalippu; 
    15991844            sinilippu.Image = Sinilippu; 
     1845            Punakuva.Image = p.Asekuva; 
    16001846            punalippu.OnLippu = true; 
    16011847            sinilippu.OnLippu = true; 
     
    16311877        } 
    16321878    } 
     1879    void toplista() 
     1880    { 
     1881        HighScoreWindow topIkkuna = new HighScoreWindow( 
     1882                             "The best survivors", 
     1883                             "Congrats, you made it to the top list with points %p, please enter your nic.", 
     1884                             topZombeissa, pallo.Pistemittari.Value); 
     1885  topIkkuna.Closed += TallennaPisteet; 
     1886  Add( topIkkuna ); 
     1887    } 
     1888    void TallennaPisteet(Window sender) 
     1889    { 
     1890        DataStorage.Save<ScoreList>(topZombeissa, "pisteet.xml"); 
     1891    } 
    16331892} 
Note: See TracChangeset for help on using the changeset viewer.