Ignore:
Timestamp:
2013-07-25 15:04:33 (8 years ago)
Author:
anlakane
Message:

Korjattu kopteri. Tehty uutta Escape-pelimuotoa ja lisätty sille valikko. Lisätty deathmatchiin vaihtoehtoinen teema.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2013/30/MiskaK/MW2(My Warfare 2)/MW2(My Warfare 2)/MW2(My Warfare 2)/MW2_My_Warfare_2_.cs

    r4640 r4677  
    4242    /// </summary> 
    4343    public static IntMeter MonestakoVoittaa = new IntMeter(Int32.MaxValue); 
     44 
     45    /// <summary> 
     46    /// Kauanko Escapessa puolustetaan kopteria. 
     47    /// </summary> 
     48    public static DoubleMeter KauankoPuolustetaan = new DoubleMeter(120.0); 
    4449 
    4550    // Tämä attribuuttikönttä POIS 
     
    103108    static readonly Image killballKeski = LoadImage("killball_keski"); 
    104109    static readonly Image killballYla = LoadImage("killball_ylä"); 
     110    static readonly Image helikopteriLaskeutumisAlusta = LoadImage("kopteri_laskeutumisalusta"); 
     111    static readonly Image kuusi = LoadImage("kuusi"); 
    105112 
    106113    static readonly Image hudKuva = LoadImage("hudtausta"); 
     
    438445            tehosteet.RemoveAt(0); 
    439446        } 
    440  
    441447    } 
    442448 
     
    477483                ruudut.SetTileMethod(Color.Black, LuoKentanOsa, piikkilankaKuva, "piikkilanka", 5); 
    478484                ruudut.SetTileMethod(Color.Gray, LuoTuhoutuvaKentanOsa, kivenKuva, "kivi", 20, 1.0, 1.0); 
    479                 ruudut.SetTileMethod(Color.DarkRed, LuoLapiMentavaKentanOsa, kivenKuva, "valekivi", 1.0, 1.0); 
     485                ruudut.SetTileMethod(Color.DarkRed, LuoLapiMentavaKentanOsa, kivenKuva, "valekivi", 1.0, 1.0, 1); 
    480486                ruudut.SetTileMethod(Color.Orange, LuoTuhoutuvaKentanOsa, pystypuunKuva, "puu", 10, 0.3, 1.0); 
    481487                ruudut.SetTileMethod(Color.Red, LuoKentanOsa, pystypiikkilankaKuva, "piikkilanka", 5); 
     
    483489                //ruudut.SetTileMethod(Color.ForestGreen, LuoLapiMentavaKentanOsa, naamioverkonKuva, "naamioverkko", 1); 
    484490                ruudut.SetTileMethod(Color.Purple, LuoLaatikko); 
    485                 ruudut.SetTileMethod(Color.Yellow, LuoLapiMentavaKentanOsa, seinäSoihdunKuva, "seinäsoihtu", 1.0, 1.0); 
    486                 ruudut.SetTileMethod(Color.Olive, LuoLapiMentavaKentanOsa, valonKuva, "valo", 6.0, 6.0); 
     491                ruudut.SetTileMethod(Color.Yellow, LuoLapiMentavaKentanOsa, seinäSoihdunKuva, "seinäsoihtu", 1.0, 1.0, -1); 
     492                ruudut.SetTileMethod(Color.Olive, LuoLapiMentavaKentanOsa, valonKuva, "valo", 6.0, 6.0, 1); 
    487493                ruudut.SetTileMethod(Color.Rose, LuoTynnyri); 
    488494                ruudut.SetTileMethod(Color.BloodRed, delegate(Vector p, double w, double h, IntPoint posInLevel) 
     
    503509                    vaihtoehtoisetSpawnit.Add(p); 
    504510                }); 
     511                // ruudut.SetTileMethod(Color.YellowGreen, LuoLapiMentavaKentanOsa, helikopteriLaskeutumisAlusta, "laskeutumisalusta", 1.0, 1.0, -1); 
     512                ruudut.SetTileMethod(Color.YellowGreen, delegate(Vector p, double w, double h, IntPoint posInLevel) { 
     513                    LuoLapiMentavaKentanOsa(p, w, h, posInLevel, helikopteriLaskeutumisAlusta, "laskeutumisalusta", 1.0, 1.0, -1); 
     514                    if (Escape.Peli != null) 
     515                        Escape.Peli.LaskeutumisPaikka = p; 
     516                }); 
     517                ruudut.SetTileMethod(Color.ForestGreen, LuoLapiMentavaKentanOsa, kuusi, "kuusi", 2.0, 2.0, 0); 
     518                ruudut.SetTileMethod(Color.DarkViolet, delegate(Vector p, double w, double h, IntPoint posInLevel) { Blood.AddNormalBlood(p, 5, 1.5); }); 
    505519 
    506520                //ruudut.Optimize(Color.Gray); 
     
    966980    /// <param name="kuva">Kappaleen kuva.</param> 
    967981    /// <param name="tag">Kappaleen tagi.</param> 
    968     void LuoLapiMentavaKentanOsa(Vector paikka, double leveys, double korkeus, IntPoint positionInLevelArray, Image kuva, string tag, double leveydenKerroin, double korkeudenKerroin) 
     982    void LuoLapiMentavaKentanOsa(Vector paikka, double leveys, double korkeus, IntPoint positionInLevelArray, Image kuva, string tag, double leveydenKerroin, double korkeudenKerroin, int layer = -1) 
    969983    { 
    970984        GameObject kentanosa = new GameObject(leveys * leveydenKerroin, korkeus * korkeudenKerroin); 
     
    973987        kentanosa.Position = paikka; 
    974988        kentanosa.PositionInLevelArray = positionInLevelArray; 
    975         Add(kentanosa, -1); 
     989        Add(kentanosa, layer); 
    976990 
    977991        KentanOsat.LisaaSeina(positionInLevelArray.X, positionInLevelArray.Y, kentanosa); 
     
    11051119    void LuoHelikopteri(Vector paikka) 
    11061120    { 
    1107         Helikopteri kopteri = new Helikopteri(73, 233, 50, false); // 211, 171 
     1121        Helikopteri kopteri = new Helikopteri(330, 73, 50, false); // 211, 171 
    11081122        kopteri.Position = paikka; 
    11091123        Add(kopteri, 2); 
    11101124 
    11111125#if DEBUG 
     1126        Vector[] reitti = { new Vector(200.0, 200.0), new Vector(100.0, -500.0), new Vector(0.0, -100.0) }; 
    11121127        Keyboard.Listen(Key.I, ButtonState.Pressed, kopteri.NouseIlmaan, null); 
    1113         Keyboard.Listen(Key.U, ButtonState.Pressed, kopteri.AloitaLaskeutuminen, null); 
     1128        Keyboard.Listen(Key.U, ButtonState.Pressed, kopteri.Laskeudu, null); 
     1129        Keyboard.Listen(Key.Y, ButtonState.Pressed, delegate { kopteri.LiikutaKopteria(100.0, true, reitti); }, null); 
    11141130#endif 
    11151131    } 
     
    11191135    /// </summary> 
    11201136    /// <param name="realPos">Paikka, johon seinää yritetään lisätä.</param> 
    1121     void SijoitaKentanosaRuudukkoon(Vector mousePos) 
     1137    Vector SijoitaKentanosaRuudukkoon(Vector mousePos) 
    11221138    { 
    11231139        int merkki = Math.Sign(mousePos.X); 
     
    11271143 
    11281144        Vector posRuudukossa = new Vector(x, y); 
    1129  
    1130         LuoTuhoutuvaKentanOsa(posRuudukossa, 50, 50, null, kivenKuva, "kivi", 20, 1.0, 1.0); 
     1145        return posRuudukossa; 
    11311146    } 
    11321147 
     
    14301445                break; 
    14311446            case 1: 
    1432                 LuoInfinitevalikko(); 
     1447                LuoInfinitePeliMuodonValintaValikko(); 
    14331448                break; 
    14341449            case 2: 
     
    14491464    } 
    14501465 
     1466    void LuoInfinitePeliMuodonValintaValikko() 
     1467    { 
     1468        AnimatedMultiSelectWindow infinitePelimuotoValikko = new AnimatedMultiSelectWindow("Valitse pelimuoto", valikonPainikeKuva, "Infinite", "Escape", "Takaisin"); 
     1469        infinitePelimuotoValikko.ItemSelected += PainettiinInfinitePelimuotoValikonNappia; 
     1470        infinitePelimuotoValikko.Color = Color.Transparent; 
     1471        infinitePelimuotoValikko.BorderColor = Color.Transparent; 
     1472        Level.Background.Image = valikonKuva; 
     1473        Level.BackgroundColor = Color.Black; 
     1474        infinitePelimuotoValikko.DefaultCancel = 2; 
     1475        Add(infinitePelimuotoValikko); 
     1476 
     1477    } 
     1478 
     1479    void PainettiinInfinitePelimuotoValikonNappia(int valinta) 
     1480    { 
     1481        switch (valinta) 
     1482        { 
     1483            case 0: 
     1484                LuoInfinitevalikko(); 
     1485                break; 
     1486            case 1: 
     1487                LuoEscapeValikko();  
     1488                break; 
     1489            case 2: 
     1490                LuoPelimuodonValintaValikko(); 
     1491                break; 
     1492        } 
     1493    } 
     1494 
     1495    void LuoEscapeValikko() 
     1496    { 
     1497        List<Widget> ikkunanKomponentit = new List<Widget>(); 
     1498 
     1499        MultiSelectWindow valikko = new MultiSelectWindow("Escapen kustomointi", "Yksinpeli", "Moninpeli", "Takaisin"); 
     1500        valikko.ItemSelected += delegate(int valinta) { PainettiinEscapenKustomointiIkkunanNappia(valinta, ikkunanKomponentit); }; 
     1501        valikko.Color = Color.Transparent; 
     1502        valikko.SelectionColor = Color.Green; 
     1503        valikko.BorderColor = Color.Transparent; 
     1504        Level.Background.Image = valikonKuva; 
     1505        Level.BackgroundColor = Color.Black; 
     1506        valikko.DefaultCancel = 2; 
     1507        valikko.Position = new Vector(0.0, Screen.Top - valikko.Height); 
     1508        Add(valikko); 
     1509 
     1510        MonestakoVoittaa = new IntMeter(5, 1, 100); 
     1511 
     1512        Slider kuolematJoillaHaviaa = new Slider(300.0, 20.0); 
     1513        kuolematJoillaHaviaa.Position = new Vector(valikko.X, valikko.Y - 200); 
     1514        Add(kuolematJoillaHaviaa); 
     1515        kuolematJoillaHaviaa.BorderColor = Color.Transparent; 
     1516        kuolematJoillaHaviaa.Color = Color.Transparent; 
     1517        kuolematJoillaHaviaa.Knob.Color = Color.Green; 
     1518        kuolematJoillaHaviaa.Track.Color = Color.DarkGreen; 
     1519        kuolematJoillaHaviaa.BindTo(KauankoPuolustetaan); 
     1520        ikkunanKomponentit.Add(kuolematJoillaHaviaa); 
     1521 
     1522        Label kuolematJoillaHaviaaOtsikko = new Label("Tappoja voittoon:"); 
     1523        kuolematJoillaHaviaaOtsikko.Position = new Vector(kuolematJoillaHaviaa.X - kuolematJoillaHaviaa.Width, kuolematJoillaHaviaa.Y); 
     1524        Add(kuolematJoillaHaviaaOtsikko); 
     1525        ikkunanKomponentit.Add(kuolematJoillaHaviaaOtsikko); 
     1526 
     1527        Label kuolematJoillaHaviaaNaytto = new Label(); 
     1528        kuolematJoillaHaviaaNaytto.BindTo(MonestakoVoittaa); 
     1529        kuolematJoillaHaviaaNaytto.Position = new Vector(kuolematJoillaHaviaa.X + kuolematJoillaHaviaa.Width / 1.5, kuolematJoillaHaviaa.Y); 
     1530        Add(kuolematJoillaHaviaaNaytto); 
     1531        ikkunanKomponentit.Add(kuolematJoillaHaviaaNaytto); 
     1532    } 
     1533 
     1534    void PainettiinEscapenKustomointiIkkunanNappia(int valinta, List<Widget> ikkunanKomponentit) 
     1535    { 
     1536        foreach (Widget k in ikkunanKomponentit) 
     1537        { 
     1538            k.Destroy(); 
     1539        } 
     1540 
     1541        switch (valinta) 
     1542        { 
     1543            case 0: 
     1544                AloitaEscapeGame(1, 1, KauankoPuolustetaan); 
     1545                break; 
     1546            case 1: 
     1547                break; 
     1548            case 2: 
     1549                break; 
     1550             
     1551        } 
     1552    } 
     1553 
     1554 
    14511555    /// <summary> 
    14521556    /// Pelin kustomointi-ikkunan luonti. 
     
    14551559    { 
    14561560        List<Widget> ikkunanKomponentit = new List<Widget>(); 
     1561        OnOffButton ulkonakoValitsin = new OnOffButton(25, 25, false); 
     1562 
    14571563 
    14581564        MultiSelectWindow valikko = new MultiSelectWindow("Pelin kustomointi", "Klassinen mäppi", "Satunnaisgeneroitu mäppi", "Takaisin"); 
    1459         valikko.ItemSelected += delegate(int valinta) { PainettiinPelinKustomointiIkkunanNappia(valinta, ikkunanKomponentit); }; 
     1565        valikko.ItemSelected += delegate(int valinta) { PainettiinPelinKustomointiIkkunanNappia(valinta, ikkunanKomponentit, ulkonakoValitsin.IsPressed); }; 
    14601566        valikko.Color = Color.Transparent; 
    14611567        valikko.SelectionColor = Color.Green; 
     
    14891595        Add(tapotJoillaVoittaaNaytto); 
    14901596        ikkunanKomponentit.Add(tapotJoillaVoittaaNaytto); 
     1597 
     1598        ulkonakoValitsin.ColorWhileOn = Color.Green; 
     1599        ulkonakoValitsin.ColorWhileOff = Color.Red; 
     1600        ulkonakoValitsin.Position = new Vector(tapotJoillaVoittaa.X, tapotJoillaVoittaa.Y - 50); 
     1601        Add(ulkonakoValitsin); 
     1602        ikkunanKomponentit.Add(ulkonakoValitsin); 
     1603 
     1604        Label ulkoNakoValitsinOtsikko = new Label("Vaihtoehtoinen grafiikkateema:"); 
     1605        ulkoNakoValitsinOtsikko.Y = ulkonakoValitsin.Y; 
     1606        ulkoNakoValitsinOtsikko.Left = tapotJoillaVoittaaOtsikko.Left; 
     1607        Add(ulkoNakoValitsinOtsikko); 
     1608        ikkunanKomponentit.Add(ulkoNakoValitsinOtsikko); 
    14911609    } 
    14921610 
     
    14961614    /// <param name="valinta">Valittu nappi.</param> 
    14971615    /// <param name="poistettavatIkkunanKomponentit">Mitkä kaikki poistetaan, kun nappia painetaan.</param> 
    1498     void PainettiinPelinKustomointiIkkunanNappia(int valinta, List<Widget> poistettavatIkkunanKomponentit) 
     1616    void PainettiinPelinKustomointiIkkunanNappia(int valinta, List<Widget> poistettavatIkkunanKomponentit, bool kaytetaankoVaihtoEhtoistaUlkonakoa) 
    14991617    { 
    15001618        foreach (Widget ikkunanKomponentti in poistettavatIkkunanKomponentit) 
     
    15021620            ikkunanKomponentti.Destroy(); 
    15031621        } 
    1504  
    1505  
    15061622 
    15071623        switch (valinta) 
     
    15141630                AsetaOhjaimet(); 
    15151631                SoitaMusiikkia(1); // DarkLurk deathmatchiin 
    1516                 //Level.Background.Image = LoadImage("Pohja_testi"); 
    15171632                Partikkelit.PoistaValikkoTaustaPartikkelit(); 
     1633                if (kaytetaankoVaihtoEhtoistaUlkonakoa) 
     1634                { 
     1635                    Level.Background.Image = LoadImage("Pohja_testi"); 
     1636                    Camera.StayInLevel = true; 
     1637                    Level.AmbientLight = 0.0; 
     1638                } 
    15181639                break; 
    15191640            case 1: 
     
    15911712            case 0: // Infiniten yksinpeli 
    15921713                Level.Background.Image = null; 
    1593                 ValittuKenttaTiedosto = "Minium"; // zombimäppi1 
     1714                ValittuKenttaTiedosto = "zombimäppi1"; // zombimäppi1 
    15941715                ClearControls(); 
    15951716                SoitaMusiikkia(4); // OrcsCome Special 
     
    16011722            case 1: // Infiniten kaksinpeli 
    16021723                Level.Background.Image = null; 
    1603                 ValittuKenttaTiedosto = "Minium"; 
     1724                ValittuKenttaTiedosto = "zombimäppi1"; 
    16041725                ClearControls(); 
    16051726                SoitaMusiikkia(4); // OrcsCome Special 
     
    17671888        peli.VihollistenFixedSpawnit.Add(new Vector(1300, 920)); 
    17681889        peli.VihollistenFixedSpawnit.Add(new Vector(-1300, 920)); 
     1890    } 
     1891 
     1892    #endregion 
     1893 
     1894    #region Escape 
     1895 
     1896    void AloitaEscapeGame(int pelaajienMaara, int respaustenMaara, double puolustettavaAika) 
     1897    { 
     1898        List<Pelaaja> pelaajatList = new List<Pelaaja>(pelaajat); 
     1899 
     1900        LuoKentta(0, pelaajienMaara, true); 
     1901 
     1902        Escape escapeGame = new Escape(respaustenMaara, puolustettavaAika, pelaajatList); 
     1903 
     1904        LuoVihollistenMallineet(escapeGame); 
     1905        escapeGame.PeliPaattyi += InfiniteHavio; 
     1906        escapeGame.VihollistenSpawnausAjastin.Timeout += delegate { SpawnaaInfinitenVihollisia(escapeGame); }; 
     1907        foreach (Pelaaja p in pelaajat) 
     1908        { 
     1909            p.Kuoli += escapeGame.PelaajaKuoli; 
     1910        } 
     1911 
     1912        escapeGame.KaytetaankoFixedSpawneja = true; 
     1913        Level.AmbientLight = 0.4; 
     1914        if (pelaajienMaara == 1) Level.AmbientLight = 0.7; // koska taskulamppu 
    17691915    } 
    17701916 
     
    19812127            ammus.Collided += delegate 
    19822128            { 
    1983                 Timer.SingleShot(pelaaja.ValittuAse.AseenLapaisy, delegate { ammus.IgnoresCollisionResponse = false; }); 
     2129                if (pelaaja.ValittuAse.AseenLapaisy > 0) 
     2130                    Timer.SingleShot(pelaaja.ValittuAse.AseenLapaisy, delegate { ammus.IgnoresCollisionResponse = false; }); 
    19842131            }; 
    19852132        } 
     
    22502397            Timer.SingleShot(0.5, delegate { valo.Intensity = 0.0; }); 
    22512398        }; 
     2399        kranaatti.Collided += delegate(IPhysicsObject k, IPhysicsObject kohde) { if (kohde.Tag.ToString() != "pelaaja") kranaatti.Velocity = Vector.Zero; }; 
    22522400        kranaatti.IsUpdated = true; 
    22532401        kranaatti.NeedsUpdateCall = true; 
     
    23742522        } 
    23752523 
    2376         if (pelaaja == pelaajat[1]) 
     2524        if (pelaaja == pelaajat[1] && ammusmittariNäyttö2 != null) 
    23772525        { 
    23782526            pelaaja.Image = pelaaja.ValittuAse.Pelaajan2AseKuva; 
     
    24412589        Keyboard.Listen(Key.P, ButtonState.Pressed, delegate { MessageDisplay.Add(OnkoNaytonAlueella(new Vector(0.0, 0.0)).ToString()); }, null); 
    24422590        Keyboard.Listen(Key.NumPad9, ButtonState.Pressed, delegate { Add(fysLaskuri); }, null); 
    2443         Keyboard.Listen(Key.C, ButtonState.Down, delegate 
    2444         { 
    2445             Vihollinen zombi = new Vihollinen(normaaliZombiKuva.Width / 1.2, normaaliZombiKuva.Height / 1.2, normaaliZombiKuva, 20, 4, 100, pelaajat, false, false, this, null); 
    2446             Add(zombi); 
    2447             zombi.Position = pelaajat[0].tahtain.Position; 
    2448  
    2449         }, null); 
    24502591        Keyboard.Listen(Key.O, ButtonState.Pressed, LuoHelikopteri, null, pelaajat[0].tahtain.Position); 
    24512592#endif 
     
    24842625    void AsetaSandboxOhjaimet() 
    24852626    { 
    2486         Keyboard.Listen(Key.Space, ButtonState.Pressed, delegate { SijoitaKentanosaRuudukkoon(pelaajat[0].tahtain.Position); }, null); 
     2627        Keyboard.Listen(Key.Space, ButtonState.Pressed, delegate { LuoTuhoutuvaKentanOsa(SijoitaKentanosaRuudukkoon(pelaajat[0].tahtain.Position), 50, 50, null, kivenKuva, "kivi", 20, 1.0, 1.0); }, null); 
    24872628        Keyboard.Listen(Key.K, ButtonState.Pressed, delegate { LuoKillBall(pelaajat[0].tahtain.Position); }, null); 
    2488         Keyboard.Listen(Key.T, ButtonState.Pressed, delegate { LuoTynnyri(pelaajat[0].tahtain.Position, 50.0, 50.0, null); }, null); 
     2629        Keyboard.Listen(Key.T, ButtonState.Pressed, delegate { LuoTynnyri(SijoitaKentanosaRuudukkoon(pelaajat[0].tahtain.Position), 50.0, 50.0, null); }, null); 
    24892630        Keyboard.Listen(Key.Delete, ButtonState.Pressed, RemoveAllEntities, null); 
    2490         ControllerOne.Listen(Button.B, ButtonState.Pressed, delegate { SijoitaKentanosaRuudukkoon(pelaajat[1].tahtain.Position); }, null); 
     2631        Keyboard.Listen(Key.C, ButtonState.Down, delegate 
     2632        { 
     2633            Vihollinen zombi = new Vihollinen(normaaliZombiKuva.Width / 1.2, normaaliZombiKuva.Height / 1.2, normaaliZombiKuva, 20, 4, 100, pelaajat, false, false, this, null); 
     2634            Add(zombi); 
     2635            zombi.Position = pelaajat[0].tahtain.Position; 
     2636 
     2637        }, null); 
     2638        ControllerOne.Listen(Button.B, ButtonState.Pressed, delegate { LuoTuhoutuvaKentanOsa(SijoitaKentanosaRuudukkoon(pelaajat[1].tahtain.Position), 50, 50, null, kivenKuva, "kivi", 20, 1.0, 1.0); }, null); 
     2639        ControllerOne.Listen(Button.Y, ButtonState.Pressed, delegate { LuoTynnyri(SijoitaKentanosaRuudukkoon(pelaajat[1].tahtain.Position), 50.0, 50.0, null); }, null); 
     2640        ControllerOne.Listen(Button.DPadUp, ButtonState.Pressed, delegate 
     2641        { 
     2642            Vihollinen zombi = new Vihollinen(normaaliZombiKuva.Width / 1.2, normaaliZombiKuva.Height / 1.2, normaaliZombiKuva, 20, 4, 100, pelaajat, false, false, this, null); 
     2643            Add(zombi); 
     2644            zombi.Position = pelaajat[1].tahtain.Position; 
     2645 
     2646        }, null); 
    24912647    } 
    24922648 
Note: See TracChangeset for help on using the changeset viewer.