Changeset 4058 for 2013/24


Ignore:
Timestamp:
2013-06-10 14:56:38 (6 years ago)
Author:
sijoseha
Message:

Talletus.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2013/24/LauriK/Defend The Computer/Defend The Computer/Defend The Computer/Defend_The_Computer.cs

    r4044 r4058  
    1 using System; 
     1    #region Alustus ja luokat 
     2 
     3using System; 
    24using System.Collections.Generic; 
    35using Jypeli; 
     
    4446    ScoreList pistelista; 
    4547 
    46     double pelaajienlukumaara2; 
    47     double nopeus = 1000; 
     48    IntMeter pistelaskuri; 
     49 
     50    int pelaajienlukumaara2; 
     51    double nopeus = 100; 
    4852    double kaantymisnopeus = 100; 
    49     double pisteet; 
    50     int highscorekentannro; 
    5153    [Save] 
    5254    int survivalkentannro; 
     
    5456    int vaikeustaso; 
    5557    [Save] 
    56     double pelaajienlukumaara; 
     58    int pelaajienlukumaara; 
     59    [Save] 
     60    bool aanetpaalla; 
    5761 
    5862    string pelaaja1ase = "Luoti"; 
    59     string pelaaja2ase; 
     63    string pelaaja2ase = "Luoti"; 
    6064 
    6165    List<Pelaaja> pelaajat = new List<Pelaaja>(); 
     
    6569    double ruudunkoko = 16; 
    6670 
     71#endregion 
     72 
    6773    public override void Begin() 
    6874    { 
    6975        ClearAll(); 
    7076 
     77        pistelista = new ScoreList(10, false, 0); 
     78 
    7179        pelaajat.Clear(); 
    7280 
    7381        IsPaused = true; 
    7482 
    75         Lataakaikki(false, 0); 
     83        Lataakaikki(false, 0, 0); 
    7684 
    7785        Alkuvalikko(); 
     
    8088    #region Tallennus ja lataus 
    8189 
    82     void UusiKentta(int uusikentannro) 
    83     { 
    84         pistelista = new ScoreList(10, false, 0); 
    85         DataStorage.TryLoad<ScoreList>(pistelista, "Survival" + survivalkentannro + ".xml"); 
    86         survivalkentannro = uusikentannro; 
    87     } 
    88  
    8990    void Tyhjennanappaimet() 
    9091    { 
    9192        ClearControls(); 
    9293    } 
    93      
     94 
    9495    void Tallennakaikki() 
    9596    { 
    9697        SaveGame("Save.xml"); 
    97         DataStorage.Save<ScoreList>(pistelista, "Survival" + survivalkentannro + ".xml"); 
    98     } 
    99  
    100     void Lataakaikki(bool kentta, int kenttanro) 
     98    } 
     99 
     100    void TallennaLista() 
     101    { 
     102        DataStorage.Save<ScoreList>(pistelista, "Survival" + survivalkentannro + pelaajienlukumaara + ".xml"); 
     103    } 
     104 
     105    void Lataakaikki(bool kentta, int kenttanro, int players) 
    101106    { 
    102107        if (kentta == true) 
    103108        { 
    104109            pistelista = new ScoreList(10, false, 0); 
    105             DataStorage.TryLoad<ScoreList>(pistelista, "Survival" + kentta + ".xml"); 
     110            DataStorage.TryLoad<ScoreList>(pistelista, "Survival" + kenttanro + players + ".xml"); 
    106111        } 
    107          
     112 
    108113        if (DataStorage.Exists("Save.xml")) LoadGame("Save.xml"); 
    109114    } 
     
    116121    { 
    117122        Tyhjennanappaimet(); 
    118          
    119         MultiSelectWindow alkuvalikko = new MultiSelectWindow("", "Start game", "Highscores", "Help", "Exit"); 
     123 
     124        MultiSelectWindow alkuvalikko = new MultiSelectWindow("", "Start game", "Highscores", "Help", "Sounds: " + ((aanetpaalla == true) ? "ON" : "OFF"), "Exit"); 
    120125        alkuvalikko.AddItemHandler(0, Valitsepelinlataus); 
    121126        alkuvalikko.AddItemHandler(1, Ennatykset); 
    122127        alkuvalikko.AddItemHandler(2, Ohjeet); 
    123         alkuvalikko.AddItemHandler(3, Exit); 
    124         alkuvalikko.DefaultCancel = 3; 
     128        alkuvalikko.AddItemHandler(3, delegate 
     129        { 
     130            aanetpaalla = !aanetpaalla; 
     131            Tallennakaikki(); 
     132            Alkuvalikko(); 
     133        }); 
     134        alkuvalikko.AddItemHandler(4, delegate 
     135        { 
     136            YesNoWindow ikkuna = new YesNoWindow("Do you want to quit?"); 
     137            ikkuna.Yes += Exit; 
     138            ikkuna.No += delegate 
     139            { 
     140                ikkuna.Destroy(); 
     141                Alkuvalikko(); 
     142            }; 
     143            Add(ikkuna); 
     144        }); 
     145        alkuvalikko.DefaultCancel = 4; 
    125146        Add(alkuvalikko); 
    126147 
    127         Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Exit"); 
     148        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Exit"); 
    128149    } 
    129150 
     
    131152    { 
    132153        Tyhjennanappaimet(); 
    133          
    134         MultiSelectWindow valitsepeli = new MultiSelectWindow("Select level", "1", "2", "Back"); 
     154 
     155        MultiSelectWindow valitsepeli = new MultiSelectWindow("Select level", "Level 1", "Level 2", "Back"); 
    135156        valitsepeli.AddItemHandler(0, delegate 
    136157        { 
     
    143164            Valitsevaikeustaso(); 
    144165        }); 
    145         valitsepeli.AddItemHandler(2, Alkuvalikko); 
     166        valitsepeli.AddItemHandler(2, Valitsepelinlataus); 
    146167        valitsepeli.DefaultCancel = 2; 
    147168        Add(valitsepeli); 
     
    154175        Tyhjennanappaimet(); 
    155176 
    156         MultiSelectWindow alkuvalikko = new MultiSelectWindow("Select level", "Level 1", "Level 2", "Level 3", "Back"); 
     177        pistelista = new ScoreList(10, false, 0); 
     178 
     179        MultiSelectWindow alkuvalikko = new MultiSelectWindow("Select level", "Level 1 (1p)", "Level 1 (2p)", "Level 2 (1p)", "Level 2 (2p)", "Back"); 
    157180        alkuvalikko.AddItemHandler(0, delegate 
    158181        { 
    159             Lataakaikki(true, 1); 
     182            Lataakaikki(true, 1, 1); 
     183            HighScoreWindow topIkkuna = new HighScoreWindow( 
     184                              "Highscores: Level 1, 1 players", 
     185                             pistelista); 
     186            topIkkuna.Closed += delegate { Ennatykset(); }; 
     187            topIkkuna.List.ScoreFormat = "{0:0.##}"; 
     188            Add(topIkkuna); 
    160189        }); 
    161190        alkuvalikko.AddItemHandler(1, delegate 
    162191        { 
    163             Lataakaikki(true, 2); 
     192            Lataakaikki(true, 1, 2); 
     193            HighScoreWindow topIkkuna = new HighScoreWindow( 
     194                              "Highscores: Level 1, 2 players", 
     195                              pistelista); 
     196            topIkkuna.Closed += delegate { Ennatykset(); }; 
     197            topIkkuna.List.ScoreFormat = "{0:0.##}"; 
     198            Add(topIkkuna); 
    164199        }); 
    165200        alkuvalikko.AddItemHandler(2, delegate 
    166201        { 
    167             Lataakaikki(true, 3); 
    168         }); 
    169         alkuvalikko.AddItemHandler(3, Exit); 
    170         alkuvalikko.DefaultCancel = 3; 
     202            Lataakaikki(true, 2, 1); 
     203            HighScoreWindow topIkkuna = new HighScoreWindow( 
     204                              "Highscores: Level 2, 1 players", 
     205                              pistelista); 
     206            topIkkuna.Closed += delegate { Ennatykset(); }; 
     207            topIkkuna.List.ScoreFormat = "{0:0.##}"; 
     208            Add(topIkkuna); 
     209        }); 
     210        alkuvalikko.AddItemHandler(3, delegate 
     211        { 
     212            Lataakaikki(true, 2, 2); 
     213            HighScoreWindow topIkkuna = new HighScoreWindow( 
     214                              "Highscores: Level 2, 2 players", 
     215                              pistelista); 
     216            topIkkuna.Closed += delegate { Ennatykset(); }; 
     217            topIkkuna.List.ScoreFormat = "{0:0.##}"; 
     218            Add(topIkkuna); 
     219        }); 
     220        alkuvalikko.AddItemHandler(4, Alkuvalikko); 
     221        alkuvalikko.DefaultCancel = 4; 
    171222        Add(alkuvalikko); 
    172223 
     
    182233    { 
    183234        Tyhjennanappaimet(); 
    184          
     235 
    185236        MultiSelectWindow uusipeli = new MultiSelectWindow("Load existing game?", "New game", "Continue game", "Back"); 
    186237        uusipeli.AddItemHandler(0, delegate 
     
    200251    { 
    201252        Tyhjennanappaimet(); 
    202          
     253 
    203254        MultiSelectWindow pelaajienmaara = new MultiSelectWindow("Select number of players", "1 player", "2 players", "Back"); 
    204255        pelaajienmaara.AddItemHandler(0, delegate 
     
    224275    { 
    225276        Tyhjennanappaimet(); 
    226          
     277 
    227278        MultiSelectWindow vaikeustasonvalinta = new MultiSelectWindow("Select difficulty", "Easy", "Normal", "Hard", "Insane", "Back"); 
    228279        vaikeustasonvalinta.AddItemHandler(0, delegate 
     
    280331    } 
    281332 
    282  
    283333    #endregion 
    284334 
     
    288338    { 
    289339        Tallennakaikki(); 
     340 
     341        Lataakaikki(true, survivalkentannro, pelaajienlukumaara); 
    290342 
    291343        ClearAll(); 
     
    354406        aikanaytto.Y = Screen.TopSafe - 50; 
    355407    } 
     408 
    356409    #endregion 
    357410 
     
    413466        suojanimi.Y = pelaaja1suojapalkki.Y + 50; 
    414467        Add(suojanimi); 
     468 
     469        pistelaskuri = new IntMeter(0); 
     470 
     471        Label pistenaytto = new Label(); 
     472        pistenaytto.X = Screen.Center.X; 
     473        pistenaytto.Top = Screen.Top - 10; 
     474        pistenaytto.Color = Color.Green; 
     475 
     476        pistenaytto.BindTo(pistelaskuri); 
     477        Add(pistenaytto); 
    415478 
    416479        if (pelaajat.Count == 1) return; 
     
    494557        Keyboard.Listen(Key.Space, ButtonState.Pressed, Ammu, "Shoot (P1)", pelaajat[0]); 
    495558 
     559        Keyboard.Listen(Key.R, ButtonState.Pressed, delegate { pelaajat[0].elamalaskuri.Value -= 50; }, null); 
     560 
     561        Keyboard.Listen(Key.Q, ButtonState.Pressed, delegate { pistelaskuri.Value++; }, null, pelaajat[0]); 
     562 
    496563        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Paussivalikko, "Pause"); 
    497564        Keyboard.Listen(Key.Back, ButtonState.Pressed, Paussivalikko, "Pause"); 
     
    504571            Keyboard.Listen(Key.Left, ButtonState.Down, Kaanna, "Turn (P2)", pelaajat[1], kaantymisnopeus); 
    505572            Keyboard.Listen(Key.Right, ButtonState.Down, Kaanna, "Turn (P2)", pelaajat[1], -kaantymisnopeus); 
     573            Keyboard.Listen(Key.RightControl, ButtonState.Pressed, Ammu, "Shoot (P2)", pelaajat[1]); 
    506574        } 
    507575    } 
     
    525593    } 
    526594 
    527  
    528595    void Liikuta(Pelaaja tyyppi, double nopeus) 
    529596    { 
     
    536603        tyyppi.AngularVelocity = kaantymisnopeus; 
    537604    } 
     605 
     606    #region Aseet ja ampuminen 
    538607 
    539608    void Ammu(Pelaaja pelaaja) 
     
    547616        } 
    548617 
    549         else 
    550         { 
    551  
     618        else if (pelaajat[1] == pelaaja) 
     619        { 
     620            if (pelaaja2ase == "Luoti") 
     621            { 
     622                Luoluoti(pelaajat[1].Position, Vector.FromLengthAndAngle(nopeus, pelaajat[1].Angle + Angle.FromDegrees(90))); 
     623            } 
    552624        } 
    553  
    554625    } 
    555626 
     
    585656        rajahdys.Force = 0; 
    586657        rajahdys.Position = osuja.Position; 
     658        if (aanetpaalla == false) rajahdys.Sound = null; 
    587659        Add(rajahdys); 
    588660 
    589661        osuja.Destroy(); 
    590662    } 
     663 
     664    #endregion 
     665 
    591666    void Kuoli(Pelaaja pelaaja) 
    592667    { 
     
    594669        rajahdys.Position = pelaaja.Position; 
    595670        rajahdys.Force = 0; 
     671        if (aanetpaalla == false) rajahdys.Sound = null; 
    596672        Add(rajahdys); 
    597673 
     
    610686    #region Vihut 
    611687 
    612     void Luovihu(Vector paikka, double spawnausmatka, double leveys, double korkeus, double damage, string vihuntyyppi, double suunnanvaihtomin, double suunnanvaihtomax, double kaukonopeus, double lahinopeus, double kaukanaolo, int kuolemaaika, Image kuva) 
     688    void Luovihu(Vector paikka, double spawnausmatka, double leveys, double korkeus, double damage, string vihuntyyppi, double suunnanvaihtomin, double suunnanvaihtomax, double kaukonopeus, double lahinopeus, double kaukanaolo, int kuolemaaika, Action<Vihollinen> toiminto, Image kuva) 
    613689    { 
    614690        Vihollinen vihu = new Vihollinen(leveys, korkeus, kuva); 
     
    639715        aivot.FarBrain = satunnaisaivot; 
    640716 
     717        aivot.StopWhenTargetClose = false; 
     718 
     719 
     720        if (toiminto != null) aivot.TargetClose += delegate { toiminto(vihu); }; 
     721 
    641722        vihu.MaximumLifetime = new TimeSpan(0, 0, kuolemaaika); 
    642723 
     
    646727    void Vihuspawneri(Vector paikka) 
    647728    { 
    648         //for (int i = 1; i < 10*pelaajienlukumaara; i++) 
    649729        Timer ajastin = new Timer(); 
    650         ajastin.Interval = 5; 
     730        ajastin.Interval = RandomGen.NextDouble(1, 5); 
    651731        ajastin.Timeout += delegate 
    652732        { 
    653733            double luku = RandomGen.NextDouble(0, 1000); 
    654             if (luku < 1) 
     734            if (luku < 1*vaikeustaso) 
    655735            { 
    656                 Luovihu(paikka, ruudunkoko * 6, ruudunkoko, ruudunkoko, 10, "Perus", 0.1, 3, 50, 75, ruudunkoko * 6, 20, null); 
     736                Luovihu(paikka, ruudunkoko * 6, ruudunkoko, ruudunkoko, 10, "Perus", 0.1, 3, 50, 75, ruudunkoko * 6, 20, null, null); 
    657737            } 
    658738 
    659             if (luku < 3) 
     739            if (luku < 0.5*vaikeustaso) 
    660740            { 
    661                 Luovihu(paikka, ruudunkoko * 6, ruudunkoko*3, ruudunkoko*3, 10, "Uber", 0.1, 1, 50, 25, ruudunkoko * 6, 20, null); 
     741                Luovihu(paikka, ruudunkoko * 6, ruudunkoko, ruudunkoko, 10, "Nopea", 0.1, 1, 50, 40, ruudunkoko * 6, 20, null, null); 
    662742            } 
     743            // delegate(Vihollinen v) { v.Color = Color.Black; } -> Actioniin 
    663744        }; 
    664745 
    665746        ajastin.Start(); 
    666747    } 
    667  
    668  
    669     //void Luovirus(Vector paikka, double leveys, double korkeus) 
    670     //{ 
    671     //    PhysicsObject virus = new PhysicsObject(leveys, korkeus); 
    672     //    AddCollisionHandler<PhysicsObject, Pelaaja>(virus, delegate(PhysicsObject tormaaja, Pelaaja kohde) { kohde.suojalaskuri.Value -= 10; }); 
    673     //    AddCollisionHandler<PhysicsObject, Pelaaja>(virus, delegate(PhysicsObject tormaaja, Pelaaja kohde) { kohde.Hit(kohde.Position - tormaaja.Position.Normalize() * 20000); }); 
    674     //    Add(virus); 
    675  
    676     //    virus.Tag = "Vihu"; 
    677  
    678     //    RandomMoverBrain satunnaisaivot = new RandomMoverBrain(); 
    679     //    satunnaisaivot.ChangeMovementSeconds = RandomGen.NextDouble(0.1, 3); 
    680     //    satunnaisaivot.Speed = 20; 
    681  
    682     //    // FollowerBrain aivot = new FollowerBrain(pelaajat.ToArray()); 
    683     //    FollowerBrain aivot = new FollowerBrain("Pelaaja", "Seurattava"); 
    684     //    aivot.Speed = 25; 
    685     //    aivot.DistanceFar = 70; 
    686     //    aivot.FarBrain = satunnaisaivot; 
    687  
    688     //    virus.Brain = aivot; 
    689     //} 
    690  
    691     //void Luotroijalainen(Vector paikka, double leveys, double korkeus) 
    692     //{ 
    693     //    PhysicsObject troijalainen = new PhysicsObject(leveys*0.5, korkeus*0.5); 
    694     //    AddCollisionHandler<PhysicsObject, Pelaaja>(troijalainen, delegate(PhysicsObject tormaaja, Pelaaja kohde) { kohde.suojalaskuri.Value -= 20; }); 
    695     //    AddCollisionHandler<PhysicsObject, Pelaaja>(troijalainen, delegate(PhysicsObject tormaaja, Pelaaja kohde) { kohde.Hit(kohde.Position - tormaaja.Position.Normalize() * 20000); }); 
    696     //    Add(troijalainen); 
    697  
    698     //    troijalainen.Tag = "Vihu"; 
    699  
    700     //    troijalainen.Color = Color.Fuchsia; 
    701  
    702     //    RandomMoverBrain satunnaisaivot = new RandomMoverBrain(); 
    703     //    satunnaisaivot.ChangeMovementSeconds = RandomGen.NextDouble(0.1, 5); 
    704     //    satunnaisaivot.Speed = 20; 
    705  
    706     //    FollowerBrain aivot = new FollowerBrain("Pelaaja", "Seurattava"); 
    707     //    aivot.Speed = 30; 
    708     //    aivot.DistanceFar = 70; 
    709     //    aivot.FarBrain = satunnaisaivot; 
    710     //    aivot.DistanceClose = 20; 
    711     //    aivot.TargetClose += delegate {if(troijalainen.Height < 10) troijalainen.Size = troijalainen.Size * 1.5; }; 
    712  
    713     //    troijalainen.Brain = aivot; 
    714     //} 
    715748 
    716749    #endregion 
     
    751784        aikalaskuri.Stop(); 
    752785 
    753         pisteet = aikalaskuri.SecondCounter.Value; 
     786        Lataakaikki(true, survivalkentannro, pelaajienlukumaara); 
     787 
     788        pistelaskuri.Value = pistelaskuri.Value += (int)Math.Round(aikalaskuri.SecondCounter.Value); 
    754789 
    755790        HighScoreWindow topIkkuna = new HighScoreWindow( 
    756791                             "Highscores", 
    757                              "Congratulations, you made it to the high score list with %p points! Enter your name:", 
    758                              pistelista, pisteet); 
    759         topIkkuna.Closed += delegate { Tallennakaikki(); }; 
    760  
    761         Begin(); 
     792                             "Congratulations, you made it to the high score list with {0:0.##} points! Enter your name:", 
     793                             pistelista, pistelaskuri); 
     794        topIkkuna.List.ScoreFormat = "{0:0.##}"; 
     795        topIkkuna.Closed += delegate { TallennaLista(); Begin(); }; 
     796        Add(topIkkuna); 
    762797    } 
    763798 
Note: See TracChangeset for help on using the changeset viewer.