Changeset 4081 for 2013/24


Ignore:
Timestamp:
2013-06-11 15:03:27 (6 years ago)
Author:
tojukarp
Message:
 
Location:
2013/24/LauriK/Defend The Computer
Files:
57 added
3 edited

Legend:

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

    r4058 r4081  
    1     #region Alustus ja luokat 
     1#region Alustus ja luokat 
    22 
    33using System; 
     
    1313    public DoubleMeter elamalaskuri; 
    1414    public DoubleMeter suojalaskuri; 
     15    public DoubleMeter ammuslaskuri; 
    1516    public Pelaaja(double leveys, double korkeus, Shape muoto, Color vari) 
    1617        : base(leveys, korkeus) 
     
    2425        this.Color = Color.Green; 
    2526        this.Tag = "Pelaaja"; 
     27        this.KineticFriction = 0.7; 
     28        this.CollisionIgnoreGroup = 2; 
    2629    } 
    2730 
     
    3740        this.Image = vihunkuva; 
    3841        this.Mass = 10; 
     42        this.LinearDamping = 0.3; 
     43        this.AngularDamping = 0.9; 
    3944        vihunelamat.LowerLimit += delegate { this.Destroy(); }; 
    4045        this.Tag = "Vihu"; 
     46    } 
     47} 
     48 
     49public class Paketti : PhysicsObject 
     50{ 
     51    public Paketti(double leveys, double korkeus) 
     52        : base(leveys, korkeus) 
     53    { 
     54        this.Mass = 10; 
     55        this.IgnoresExplosions = false; 
     56        this.IgnoresCollisionResponse = true; 
    4157    } 
    4258} 
     
    4864    IntMeter pistelaskuri; 
    4965 
     66    GameObject aseenkuva1; 
     67 
     68    GameObject aseenkuva2; 
     69 
     70    ExplosionSystem hienorajahdys; 
     71    ExplosionSystem hienorajahdys2; 
     72 
    5073    int pelaajienlukumaara2; 
    51     double nopeus = 100; 
     74 
     75    int pakettienlukumaara; 
     76 
     77    int vihujenmaara = 0; 
     78 
     79    bool AJ = false; 
     80    bool NC = false; 
     81    bool noenemies = false; 
     82 
     83    bool Debug = false; 
     84 
     85    double nopeus = 500; 
    5286    double kaantymisnopeus = 100; 
    5387    [Save] 
     
    6094    bool aanetpaalla; 
    6195 
    62     string pelaaja1ase = "Luoti"; 
    63     string pelaaja2ase = "Luoti"; 
     96    string pelaaja1ase = "Antivirus"; 
     97    string pelaaja2ase = "Antivirus"; 
     98 
     99    Image Intta = LoadImage("A-J"); 
     100    Image Inttapaha = LoadImage("A-J_bad"); 
     101    Image Egac = LoadImage("NC"); 
     102    Image Egacpaha = LoadImage("NC_bad"); 
     103 
     104    Image suojakuva = LoadImage("suoja"); 
     105    Image bosskuva = LoadImage("virus_cartoon"); 
     106    Image stopkuva = LoadImage("process_stop"); 
     107 
     108    Color tekstienvari = Color.LightGreen; 
    64109 
    65110    List<Pelaaja> pelaajat = new List<Pelaaja>(); 
     
    279324        vaikeustasonvalinta.AddItemHandler(0, delegate 
    280325        { 
    281             vaikeustaso = 0; 
    282             Aloitapeli(); 
    283         }); 
    284         vaikeustasonvalinta.AddItemHandler(1, delegate 
    285         { 
    286326            vaikeustaso = 1; 
    287327            Aloitapeli(); 
    288328        }); 
    289         vaikeustasonvalinta.AddItemHandler(2, delegate 
     329        vaikeustasonvalinta.AddItemHandler(1, delegate 
    290330        { 
    291331            vaikeustaso = 2; 
    292332            Aloitapeli(); 
    293333        }); 
     334        vaikeustasonvalinta.AddItemHandler(2, delegate 
     335        { 
     336            vaikeustaso = 3; 
     337            Aloitapeli(); 
     338        }); 
    294339        vaikeustasonvalinta.AddItemHandler(3, delegate 
    295340        { 
    296             vaikeustaso = 3; 
     341            vaikeustaso = 4; 
    297342            Aloitapeli(); 
    298343        }); 
     
    308353        IsPaused = true; 
    309354 
    310         MultiSelectWindow paussivalikko = new MultiSelectWindow("Paused", "Continue", "Help", "Exit"); 
     355        MultiSelectWindow paussivalikko = new MultiSelectWindow("Paused", "Continue", "Help", "Cheats", "Exit"); 
    311356        paussivalikko.AddItemHandler(0, delegate 
    312357        { 
     
    318363            Lisaanappaimet(); 
    319364            ShowControlHelp(); 
    320         }); 
    321         paussivalikko.AddItemHandler(2, Alkuvalikko); 
     365            Paussivalikko(); 
     366        }); 
     367 
     368        paussivalikko.AddItemHandler(2, delegate 
     369        { 
     370            InputWindow kysymysIkkuna = new InputWindow("Enter cheat"); 
     371            kysymysIkkuna.TextEntered += Cheat; 
     372            Add(kysymysIkkuna); 
     373        }); 
     374 
     375        paussivalikko.AddItemHandler(3, delegate 
     376        { 
     377            Tallennakaikki(); 
     378            IsPaused = false; 
     379            Begin(); 
     380        }); 
    322381        paussivalikko.DefaultCancel = 0; 
    323382 
     
    331390    } 
    332391 
     392    void Cheat(InputWindow ikkuna) 
     393    { 
     394        Paussivalikko(); 
     395 
     396        string vastaus = ikkuna.InputBox.Text; 
     397 
     398        if (vastaus == "ajlakane") 
     399        { 
     400            AJ = true; 
     401            MessageDisplay.Add("A-J -mode activated."); 
     402        } 
     403        else if (vastaus == "Nicolas Cage") 
     404        { 
     405            NC = true; 
     406            MessageDisplay.Add("Nicolas Cage mode activated."); 
     407        } 
     408        else if (vastaus == "Debug") 
     409        { 
     410            Debug = true; 
     411            MessageDisplay.Add("Debug mode activated."); 
     412        } 
     413        else if (vastaus == "NoEnemies") 
     414        { 
     415            noenemies = true; 
     416            MessageDisplay.Add("Enemy spawning disabled."); 
     417        } 
     418        else if (vastaus == "ClearAll") 
     419        { 
     420            AJ = false; 
     421            NC = false; 
     422            Debug = false; 
     423            noenemies = false; 
     424        } 
     425        else MessageDisplay.Add("False code!"); 
     426    } 
     427 
     428 
    333429    #endregion 
    334430 
     
    339435        Tallennakaikki(); 
    340436 
     437        ClearAll(); 
     438 
    341439        Lataakaikki(true, survivalkentannro, pelaajienlukumaara); 
    342  
    343         ClearAll(); 
    344440 
    345441        IsPaused = false; 
     
    371467        kentta.SetTileMethod(Color.FromPaintDotNet(0, 3), Luolattia); 
    372468        kentta.SetTileMethod(Color.FromPaintDotNet(0, 4), Luolattia); 
     469        kentta.SetTileMethod(Color.FromPaintDotNet(0, 7), Luovoidalue); 
    373470        //kentta.SetTileMethod(Color.Red, Luomaali); 
    374471        //kentta.SetTileMethod(Color.FromPaintDotNet(0, 15), Luovirus); 
     
    379476        Level.CreateBorders(false); 
    380477 
     478        pakettienlukumaara = 0; 
     479 
    381480        Gravity = new Vector(0, 0); 
    382481 
     
    384483 
    385484        Lisaanappaimet(); 
     485 
    386486        Luomittarit(); 
    387487 
     
    391491 
    392492        Camera.StayInLevel = true; 
     493 
     494        hienorajahdys = new ExplosionSystem(LoadImage("yksi"), 200); 
     495        Add(hienorajahdys); 
     496        hienorajahdys.MinScale = 4; 
     497        hienorajahdys.MaxScale = 5; 
     498        hienorajahdys2 = new ExplosionSystem(LoadImage("nolla"), 200); 
     499        Add(hienorajahdys2); 
     500        hienorajahdys2.MinScale = 4; 
     501        hienorajahdys2.MaxScale = 5; 
    393502    } 
    394503 
     
    423532        pelaaja.Tag = "Pelaaja"; 
    424533 
     534        pelaajat.Add(pelaaja); 
     535        Add(pelaaja, 2); 
     536 
    425537        pelaaja.elamalaskuri = new DoubleMeter(100); 
    426538        pelaaja.elamalaskuri.MaxValue = 100; 
    427539        pelaaja.elamalaskuri.LowerLimit += delegate { Kuoli(pelaaja); }; 
    428540 
    429         pelaajat.Add(pelaaja); 
    430         Add(pelaaja); 
    431  
    432         pelaaja.CollisionIgnoreGroup = 2; 
    433  
    434541        pelaaja.suojalaskuri = new DoubleMeter(100, 0, 100); 
    435542        pelaaja.suojalaskuri.MaxValue = 100; 
    436         pelaaja.suojalaskuri.LowerLimit += delegate { pelaaja.elamalaskuri.Value -= 10; }; 
     543        pelaaja.suojalaskuri.LowerLimit += delegate { pelaaja.elamalaskuri.Value -= 10; pelaaja.suojalaskuri.Value = 0.001; }; 
     544 
     545        pelaaja.ammuslaskuri = new DoubleMeter(Double.PositiveInfinity); 
     546        pelaaja.ammuslaskuri.MinValue = 0; 
     547        pelaaja.ammuslaskuri.MaxValue = Double.PositiveInfinity; 
     548        pelaaja.ammuslaskuri.LowerLimit += delegate 
     549        { 
     550            if (pelaajat[0] == pelaaja) 
     551            { 
     552                pelaaja1ase = "Luoti"; 
     553                pelaaja.ammuslaskuri.Value = Double.PositiveInfinity; 
     554            } 
     555            if (pelaajat.Count == 2 && pelaajat[1] == pelaaja) 
     556            { 
     557                pelaaja2ase = "Luoti"; 
     558                pelaaja.ammuslaskuri.Value = Double.PositiveInfinity; 
     559            }; 
     560        }; 
     561 
     562        Timer ajastin = new Timer(); 
     563        ajastin.Interval = 1; 
     564        ajastin.Timeout += delegate 
     565        { 
     566            if (AJ == true) pelaaja.Image = Intta; 
     567            if (NC == true) pelaaja.Image = Egac; 
     568        }; 
     569        ajastin.Start(); 
     570 
    437571    } 
    438572 
     
    449583        Label nimi = new Label("Computer 1 health"); 
    450584        nimi.Position = pelaaja1elamapalkki.Position; 
    451         nimi.TextColor = Color.LightGreen; 
     585        nimi.TextColor = tekstienvari; 
    452586        nimi.Y = pelaaja1elamapalkki.Y + 50; 
    453587        Add(nimi); 
     
    463597        Label suojanimi = new Label("Computer 1 firewall"); 
    464598        suojanimi.Position = pelaaja1suojapalkki.Position; 
    465         suojanimi.TextColor = Color.LightGreen; 
     599        suojanimi.TextColor = tekstienvari; 
    466600        suojanimi.Y = pelaaja1suojapalkki.Y + 50; 
    467601        Add(suojanimi); 
     
    472606        pistenaytto.X = Screen.Center.X; 
    473607        pistenaytto.Top = Screen.Top - 10; 
    474         pistenaytto.Color = Color.Green; 
    475  
     608        pistenaytto.Color = tekstienvari; 
    476609        pistenaytto.BindTo(pistelaskuri); 
    477610        Add(pistenaytto); 
     611 
     612        aseenkuva1 = new Widget(50, 50); 
     613        aseenkuva1.Image = null; 
     614        aseenkuva1.Color = Color.Gold; 
     615        aseenkuva1.Left = pelaaja1suojapalkki.Left; 
     616        aseenkuva1.Y = pelaaja1suojapalkki.Y - 50; 
     617        Add(aseenkuva1); 
     618 
     619        Label panostenmaara1 = new Label("0"); 
     620        panostenmaara1.Size = aseenkuva1.Size; 
     621        panostenmaara1.Y = aseenkuva1.Y; 
     622        panostenmaara1.X = aseenkuva1.X + 100; 
     623        panostenmaara1.TextColor = tekstienvari; 
     624        Add(panostenmaara1); 
     625 
     626        Timer ammukset = new Timer(); 
     627        ammukset.Interval = 0.1; 
     628        ammukset.Timeout += delegate 
     629        { 
     630            if (pelaajat[0].ammuslaskuri.Value > 1e100) 
     631            { 
     632                panostenmaara1.Text = "oo"; 
     633            } 
     634            else 
     635            { 
     636                panostenmaara1.Text = pelaajat[0].ammuslaskuri.Value.ToString(); 
     637            } 
     638        }; 
     639        ammukset.Start(); 
     640 
    478641 
    479642        if (pelaajat.Count == 1) return; 
     
    489652        Label nimi2 = new Label("Computer 2 health"); 
    490653        nimi2.Position = pelaaja2elamapalkki.Position; 
    491         nimi2.TextColor = Color.LightGreen; 
     654        nimi2.TextColor = tekstienvari; 
    492655        nimi2.Y = pelaaja2elamapalkki.Y + 50; 
    493656        Add(nimi2); 
     
    503666        Label suojanimi2 = new Label("Computer 2 firewall"); 
    504667        suojanimi2.Position = pelaaja2suojapalkki.Position; 
    505         suojanimi2.TextColor = Color.LightGreen; 
     668        suojanimi2.TextColor = tekstienvari; 
    506669        suojanimi2.Y = pelaaja2suojapalkki.Y + 50; 
    507670        Add(suojanimi2); 
     671 
     672        aseenkuva2 = new GameObject(20, 20); 
     673        aseenkuva2.Image = null; 
     674        aseenkuva2.X = pelaaja2suojapalkki.X; 
     675        aseenkuva2.Y = pelaaja2suojapalkki.Y - 100; 
     676        Add(aseenkuva2); 
     677 
     678        Label panostenmaara2 = new Label(pelaajat[1].ammuslaskuri); 
     679        panostenmaara2.Y = aseenkuva2.Y; 
     680        panostenmaara2.X = aseenkuva2.X + 10; 
     681        panostenmaara2.TextColor = tekstienvari; 
     682        Add(panostenmaara2); 
    508683    } 
    509684 
     
    608783    void Ammu(Pelaaja pelaaja) 
    609784    { 
     785        Vector vektori = Vector.FromLengthAndAngle(nopeus, pelaaja.Angle + Angle.FromDegrees(90)); 
     786 
    610787        if (pelaajat[0] == pelaaja) 
    611788        { 
    612789            if (pelaaja1ase == "Luoti") 
    613790            { 
    614                 Luoluoti(pelaajat[0].Position, Vector.FromLengthAndAngle(nopeus, pelaajat[0].Angle + Angle.FromDegrees(90))); 
     791                Luoluoti(pelaaja.Position, vektori); 
    615792            } 
    616         } 
    617  
    618         else if (pelaajat[1] == pelaaja) 
     793 
     794            if (pelaaja1ase == "Antivirus") 
     795            { 
     796                Luoantivirus(pelaaja.Position, vektori); 
     797            } 
     798        } 
     799 
     800        if (pelaajat.Count == 2 && pelaajat[1] == pelaaja) 
    619801        { 
    620802            if (pelaaja2ase == "Luoti") 
    621803            { 
    622                 Luoluoti(pelaajat[1].Position, Vector.FromLengthAndAngle(nopeus, pelaajat[1].Angle + Angle.FromDegrees(90))); 
     804                Luoluoti(pelaaja.Position, vektori); 
     805            } 
     806 
     807            if (pelaaja2ase == "Antivirus") 
     808            { 
     809                Luoantivirus(pelaaja.Position, vektori); 
    623810            } 
    624811        } 
     
    629816        PhysicsObject luoti = new PhysicsObject(5, 5); 
    630817        luoti.CollisionIgnoreGroup = 2; 
    631         Add(luoti); 
     818        Add(luoti, 2); 
     819 
    632820        luoti.CanRotate = false; 
    633821        luoti.Position = paikka; 
    634         luoti.Hit(suunta * 0.2); 
     822        luoti.Hit(suunta * 0.5); 
    635823 
    636824        AddCollisionHandler(luoti, "Seina", Aseosuiseinaan); 
     
    638826    } 
    639827 
     828    void Luoantivirus(Vector paikka, Vector suunta) 
     829    { 
     830        PhysicsObject antivirus = new PhysicsObject(ruudunkoko * 0.5, ruudunkoko * 0.5); 
     831        antivirus.Mass = 10; 
     832        antivirus.Image = null; 
     833        antivirus.IgnoresExplosions = true; 
     834        antivirus.Position = paikka; 
     835        Add(antivirus); 
     836        antivirus.CollisionIgnoreGroup = 2; 
     837 
     838        antivirus.MaximumLifetime = new TimeSpan(0, 0, 20); 
     839 
     840        antivirus.Hit(suunta); 
     841 
     842        FollowerBrain aivo = new FollowerBrain("Vihu"); 
     843        aivo.Speed = nopeus * 0.5; 
     844        aivo.TurnWhileMoving = true; 
     845        antivirus.Brain = aivo; 
     846 
     847        AddCollisionHandler(antivirus, Antivirusosui); 
     848 
     849    } 
     850 
     851    void Antivirusosui(PhysicsObject antivirus, PhysicsObject virus) 
     852    { 
     853        if (virus.Tag.ToString() == "Vihu") 
     854        { 
     855            Vihollinen vihollinen = (Vihollinen)virus; 
     856            vihollinen.vihunelamat.Value -= 100; 
     857 
     858            Explosion rajahdys = new Explosion(10); 
     859            rajahdys.Force = 0; 
     860            rajahdys.Position = antivirus.Position; 
     861            if (aanetpaalla == false) rajahdys.Sound = null; 
     862            Add(rajahdys, 2); 
     863 
     864            antivirus.Destroy(); 
     865 
     866            if (vihollinen.vihunelamat.Value < 1) 
     867            { 
     868                pistelaskuri.Value += 10; 
     869                hienorajahdys.AddEffect(vihollinen.Position, 30); 
     870                hienorajahdys2.AddEffect(vihollinen.Position, 30); 
     871            } 
     872        } 
     873    } 
     874 
    640875    void Aseosui(PhysicsObject osuja, PhysicsObject kohde) 
    641876    { 
    642877        Vihollinen vihollinen = (Vihollinen)kohde; 
    643878        vihollinen.vihunelamat.Value -= 10; 
     879 
     880        vihollinen.Brain.Active = false; 
     881 
     882        Timer.SingleShot(5, delegate { vihollinen.Brain.Active = true; }); 
     883 
     884        kohde.Push((osuja.Position - kohde.Position).Normalize() * 150000); 
    644885 
    645886        Explosion rajahdys = new Explosion(5); 
    646887        rajahdys.Force = 0; 
    647888        rajahdys.Position = osuja.Position; 
    648         Add(rajahdys); 
     889        Add(rajahdys, 2); 
    649890 
    650891        osuja.Destroy(); 
     892 
     893        if (vihollinen.vihunelamat.Value < 1) 
     894        { 
     895            pistelaskuri.Value += 10; 
     896            hienorajahdys.AddEffect(vihollinen.Position, 30); 
     897            hienorajahdys2.AddEffect(vihollinen.Position, 30); 
     898        } 
    651899    } 
    652900 
     
    657905        rajahdys.Position = osuja.Position; 
    658906        if (aanetpaalla == false) rajahdys.Sound = null; 
    659         Add(rajahdys); 
     907        Add(rajahdys, 2); 
    660908 
    661909        osuja.Destroy(); 
     
    670918        rajahdys.Force = 0; 
    671919        if (aanetpaalla == false) rajahdys.Sound = null; 
    672         Add(rajahdys); 
     920        Add(rajahdys, 2); 
    673921 
    674922        pelaaja.Destroy(); 
     
    692940        if (Vector.Distance(paikka, pelaajat[0].Position) > spawnausmatka) 
    693941        { 
    694             Add(vihu); 
     942            Add(vihu, 0); 
    695943        } 
    696944 
    697945        if (pelaajat.Count == 2 && Vector.Distance(paikka, pelaajat[1].Position) > spawnausmatka) 
    698946        { 
    699             Add(vihu); 
     947            Add(vihu, 0); 
    700948        } 
    701949 
     
    705953        AddCollisionHandler<Vihollinen, Pelaaja>(vihu, delegate(Vihollinen tormaaja, Pelaaja kohde) { kohde.Hit(kohde.Position - tormaaja.Position.Normalize() * 50000); }); 
    706954 
     955        if (kuva != null) vihu.Shape = Shape.FromImage(kuva); 
    707956        RandomMoverBrain satunnaisaivot = new RandomMoverBrain(); 
    708957        satunnaisaivot.ChangeMovementSeconds = RandomGen.NextDouble(suunnanvaihtomin, suunnanvaihtomax); 
     
    714963        aivot.DistanceFar = kaukanaolo; 
    715964        aivot.FarBrain = satunnaisaivot; 
     965        aivot.TurnWhileMoving = true; 
    716966 
    717967        aivot.StopWhenTargetClose = false; 
    718968 
    719  
    720969        if (toiminto != null) aivot.TargetClose += delegate { toiminto(vihu); }; 
    721970 
     
    723972 
    724973        vihu.Brain = aivot; 
     974 
     975        Timer ajastin = new Timer(); 
     976        ajastin.Interval = 1; 
     977        ajastin.Timeout += delegate 
     978        { 
     979            if (AJ == true) vihu.Image = Inttapaha; 
     980            if (NC == true) vihu.Image = Egacpaha; 
     981        }; 
     982        ajastin.Start(); 
    725983    } 
    726984 
     
    731989        ajastin.Timeout += delegate 
    732990        { 
    733             double luku = RandomGen.NextDouble(0, 1000); 
    734             if (luku < 1*vaikeustaso) 
     991            if (noenemies == false) 
    735992            { 
    736                 Luovihu(paikka, ruudunkoko * 6, ruudunkoko, ruudunkoko, 10, "Perus", 0.1, 3, 50, 75, ruudunkoko * 6, 20, null, null); 
     993                double luku = RandomGen.NextDouble(0, 100); 
     994 
     995                if (luku < 0.05 * vaikeustaso) 
     996                { 
     997                    if (Debug == true) 
     998                    { 
     999                        vihujenmaara++; 
     1000                        MessageDisplay.Add("Vihuja lisätty " + vihujenmaara.ToString()); 
     1001                    } 
     1002 
     1003                    Luovihu(paikka, ruudunkoko * 6, ruudunkoko, ruudunkoko, 10, "Nopea", 0.1, 1, nopeus * 0.5, nopeus * 0.7, ruudunkoko * 6, 20, null, null); 
     1004                } 
     1005 
     1006                else if (luku < 0.2 * vaikeustaso) 
     1007                { 
     1008                    if (Debug == true) 
     1009                    { 
     1010                        vihujenmaara++; 
     1011                        MessageDisplay.Add("Vihuja lisätty " + vihujenmaara.ToString()); 
     1012                    } 
     1013                    Luovihu(paikka, ruudunkoko * 6, ruudunkoko, ruudunkoko, 10, "Perus", 0.1, 3, nopeus * 0.2, nopeus * 0.5, ruudunkoko * 6, 20, null, null); 
     1014                } 
     1015 
     1016                else if (luku < 1 * vaikeustaso) 
     1017                { 
     1018                    if (Debug == true) 
     1019                    { 
     1020                        vihujenmaara++; 
     1021                        MessageDisplay.Add("Vihuja lisätty " + vihujenmaara.ToString()); 
     1022                    } 
     1023                    Luovihu(paikka, ruudunkoko * 6, ruudunkoko, ruudunkoko, 10, "Perus", 0.5, 5, nopeus * 0.2, nopeus * 0.4, ruudunkoko * 6, 20, null, stopkuva); 
     1024                } 
     1025 
     1026                // delegate(Vihollinen v) { v.Color = Color.Black; } -> Actioniin 
    7371027            } 
    738  
    739             if (luku < 0.5*vaikeustaso) 
    740             { 
    741                 Luovihu(paikka, ruudunkoko * 6, ruudunkoko, ruudunkoko, 10, "Nopea", 0.1, 1, 50, 40, ruudunkoko * 6, 20, null, null); 
    742             } 
    743             // delegate(Vihollinen v) { v.Color = Color.Black; } -> Actioniin 
    7441028        }; 
    745  
    7461029        ajastin.Start(); 
    7471030    } 
     
    7611044        seina.Color = Color.Gold; 
    7621045        seina.Tag = "Seina"; 
    763         Add(seina); 
     1046        Add(seina, -1); 
    7641047    } 
    7651048 
     
    7701053        lattia.Tag = "Lattia"; 
    7711054        Add(lattia, -3); 
    772         lattia.Color = Color.Black; 
     1055        lattia.Color = Color.Transparent; 
     1056 
    7731057        Vihuspawneri(paikka); 
    774     } 
     1058        Pakettispawneri(paikka); 
     1059    } 
     1060 
     1061    void Luovoidalue(Vector paikka, double leveys, double korkeus) 
     1062    { 
     1063        PhysicsObject alue = new PhysicsObject(leveys, korkeus); 
     1064        alue.Position = paikka; 
     1065        alue.IgnoresCollisionResponse = true; 
     1066        alue.IgnoresPhysicsLogics = true; 
     1067        alue.Color = Color.Transparent; 
     1068 
     1069        AddCollisionHandler(alue, Osuivoidiin); 
     1070    } 
     1071 
     1072    void Osuivoidiin(PhysicsObject alue, PhysicsObject kohde) 
     1073    { 
     1074        if (kohde.Tag.ToString() != "Seina") kohde.Destroy(); 
     1075    } 
     1076 
     1077    #region Paketit 
     1078 
     1079    void Luohealthpaketti(Vector paikka, double leveys, double korkeus) 
     1080    { 
     1081 
     1082        if (Vector.Distance(paikka, pelaajat[0].Position) > ruudunkoko * 6) 
     1083        { 
     1084            Paketti healthpaketti = new Paketti(leveys, korkeus); 
     1085            healthpaketti.Position = paikka; 
     1086            //healthpaketti.Image = null; 
     1087            healthpaketti.Color = Color.Red; 
     1088            healthpaketti.Tag = "Elamaa"; 
     1089            Add(healthpaketti, 1); 
     1090 
     1091            AddCollisionHandler(healthpaketti, "Pelaaja", Osuihealthpakettiin); 
     1092        } 
     1093    } 
     1094 
     1095    void Osuihealthpakettiin(PhysicsObject paketti, PhysicsObject pelaaja) 
     1096    { 
     1097        if (Debug == true) MessageDisplay.Add("Osuttiin healthpakettiin."); 
     1098 
     1099        if (pelaaja == pelaajat[0]) 
     1100        { 
     1101            paketti.Destroy(); 
     1102            pelaajat[0].elamalaskuri.Value += 10; 
     1103        } 
     1104 
     1105        if (pelaajat.Count == 2 && pelaaja == pelaajat[1]) 
     1106        { 
     1107            paketti.Destroy(); 
     1108            pelaajat[1].elamalaskuri.Value += 10; 
     1109        } 
     1110    } 
     1111 
     1112    void Luosuojapaketti(Vector paikka, double leveys, double korkeus) 
     1113    { 
     1114        if (Vector.Distance(paikka, pelaajat[0].Position) > ruudunkoko * 6) 
     1115        { 
     1116            Paketti suojapaketti = new Paketti(leveys, korkeus); 
     1117            suojapaketti.Position = paikka; 
     1118            suojapaketti.Image = suojakuva; 
     1119            suojapaketti.Shape = Shape.FromImage(suojakuva); 
     1120            suojapaketti.Tag = "Suojaa"; 
     1121            suojapaketti.Color = Color.Blue; 
     1122            Add(suojapaketti, 1); 
     1123 
     1124            AddCollisionHandler(suojapaketti, "Pelaaja", Osuisuojapakettiin); 
     1125        } 
     1126    } 
     1127 
     1128    void Osuisuojapakettiin(PhysicsObject paketti, PhysicsObject pelaaja) 
     1129    { 
     1130        if (Debug == true) MessageDisplay.Add("Osuttiin suojapakettiin."); 
     1131 
     1132        if (pelaaja == pelaajat[0]) 
     1133        { 
     1134            paketti.Destroy(); 
     1135            pelaajat[0].suojalaskuri.Value += 10; 
     1136        } 
     1137 
     1138        if (pelaajat.Count == 2 && pelaaja == pelaajat[1]) 
     1139        { 
     1140            paketti.Destroy(); 
     1141            pelaajat[1].suojalaskuri.Value += 10; 
     1142        } 
     1143    } 
     1144 
     1145    void Luoasepaketti(Vector paikka, double leveys, double korkeus) 
     1146    { 
     1147        if (Vector.Distance(paikka, pelaajat[0].Position) > ruudunkoko * 6) 
     1148        { 
     1149            Paketti asepaketti = new Paketti(leveys, korkeus); 
     1150            asepaketti.Position = paikka; 
     1151            //asepaketti.Image = null; 
     1152            asepaketti.Tag = "Aseita"; 
     1153            asepaketti.Color = Color.HanPurple; 
     1154            Add(asepaketti, 1); 
     1155 
     1156            AddCollisionHandler(asepaketti, "Pelaaja", Osuiasepakettiin); 
     1157        } 
     1158    } 
     1159 
     1160    void Osuiasepakettiin(PhysicsObject paketti, PhysicsObject pelaaja) 
     1161    { 
     1162 
     1163        if (Debug == true) MessageDisplay.Add("Osuttiin asepakettiin."); 
     1164 
     1165        if (pelaaja == pelaajat[0]) 
     1166        { 
     1167            paketti.Destroy(); 
     1168        } 
     1169 
     1170        if (pelaajat.Count == 2 && pelaaja == pelaajat[1]) 
     1171        { 
     1172            paketti.Destroy(); 
     1173        } 
     1174    } 
     1175 
     1176    void Pakettispawneri(Vector paikka) 
     1177    { 
     1178        Timer ajastin = new Timer(); 
     1179        ajastin.Interval = RandomGen.NextDouble(1, 10); 
     1180        ajastin.Timeout += delegate 
     1181        { 
     1182            double luku = RandomGen.NextDouble(0, 100); 
     1183 
     1184            if (luku < 0.5 / vaikeustaso) 
     1185            { 
     1186                pakettienlukumaara += 1; 
     1187 
     1188                if (pakettienlukumaara > 3) 
     1189                { 
     1190                    if (Debug == true) MessageDisplay.Add("Paketti luotu."); 
     1191 
     1192                    int toinenluku = RandomGen.NextInt(1, 4); 
     1193 
     1194                    if (toinenluku == 1) Luohealthpaketti(paikka, ruudunkoko, ruudunkoko); 
     1195 
     1196                    if (toinenluku == 2) Luosuojapaketti(paikka, ruudunkoko, ruudunkoko); 
     1197 
     1198                    if (toinenluku == 3) Luoasepaketti(paikka, ruudunkoko, ruudunkoko); 
     1199                } 
     1200            } 
     1201        }; 
     1202        ajastin.Start(); 
     1203    } 
     1204 
     1205    #endregion 
    7751206 
    7761207    #endregion 
     
    7901221        HighScoreWindow topIkkuna = new HighScoreWindow( 
    7911222                             "Highscores", 
    792                              "Congratulations, you made it to the high score list with {0:0.##} points! Enter your name:", 
     1223                             "Congratulations, you made it to the high score list with \n{0:0.##} points! Enter your name:", 
    7931224                             pistelista, pistelaskuri); 
    7941225        topIkkuna.List.ScoreFormat = "{0:0.##}"; 
    795         topIkkuna.Closed += delegate { TallennaLista(); Begin(); }; 
     1226        topIkkuna.Closed += delegate 
     1227        { 
     1228            TallennaLista(); 
     1229            Tallennakaikki(); 
     1230            Begin(); 
     1231        }; 
    7961232        Add(topIkkuna); 
    7971233    } 
  • 2013/24/LauriK/Defend The Computer/Defend The Computer/Defend The ComputerContent/Defend The ComputerContent.contentproj

    r4044 r4081  
    5252    </Compile> 
    5353  </ItemGroup> 
     54  <ItemGroup> 
     55    <Compile Include="A-J.png"> 
     56      <Name>A-J</Name> 
     57      <Importer>TextureImporter</Importer> 
     58      <Processor>TextureProcessor</Processor> 
     59    </Compile> 
     60  </ItemGroup> 
     61  <ItemGroup> 
     62    <Compile Include="A-J_bad.png"> 
     63      <Name>A-J_bad</Name> 
     64      <Importer>TextureImporter</Importer> 
     65      <Processor>TextureProcessor</Processor> 
     66    </Compile> 
     67  </ItemGroup> 
     68  <ItemGroup> 
     69    <Compile Include="NC.png"> 
     70      <Name>NC</Name> 
     71      <Importer>TextureImporter</Importer> 
     72      <Processor>TextureProcessor</Processor> 
     73    </Compile> 
     74    <Compile Include="NC_bad.png"> 
     75      <Name>NC_bad</Name> 
     76      <Importer>TextureImporter</Importer> 
     77      <Processor>TextureProcessor</Processor> 
     78    </Compile> 
     79  </ItemGroup> 
     80  <ItemGroup> 
     81    <Compile Include="nolla.png"> 
     82      <Name>nolla</Name> 
     83      <Importer>TextureImporter</Importer> 
     84      <Processor>TextureProcessor</Processor> 
     85    </Compile> 
     86    <Compile Include="yksi.png"> 
     87      <Name>yksi</Name> 
     88      <Importer>TextureImporter</Importer> 
     89      <Processor>TextureProcessor</Processor> 
     90    </Compile> 
     91  </ItemGroup> 
     92  <ItemGroup> 
     93    <Compile Include="process_stop.png"> 
     94      <Name>process_stop</Name> 
     95      <Importer>TextureImporter</Importer> 
     96      <Processor>TextureProcessor</Processor> 
     97    </Compile> 
     98    <Compile Include="suoja.png"> 
     99      <Name>suoja</Name> 
     100      <Importer>TextureImporter</Importer> 
     101      <Processor>TextureProcessor</Processor> 
     102    </Compile> 
     103    <Compile Include="virus_cartoon.png"> 
     104      <Name>virus_cartoon</Name> 
     105      <Importer>TextureImporter</Importer> 
     106      <Processor>TextureProcessor</Processor> 
     107    </Compile> 
     108  </ItemGroup> 
    54109  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    55110  <!--  To modify your build process, add your task inside one of the targets below and uncomment it.  
Note: See TracChangeset for help on using the changeset viewer.