source: 2013/30/MiskaK/MW2(My Warfare 2)/MW2(My Warfare 2)/MW2(My Warfare 2)/Escape.cs @ 4734

Revision 4734, 3.9 KB checked in by anlakane, 6 years ago (diff)

Bugikorjauksia ja viilauksia.

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6using Jypeli.Widgets;
7
8/// <summary>
9/// Pelimuoto, jossa on tarkoituksena päästä kentän toiselle laidalle kopterin laskeutumispaikalle,
10/// tyhjentää laskeutumisalue zombeista ja puolustaa kopteria nousuun asti.
11/// </summary>
12public class Escape : Infinite
13{
14    /// <summary>
15    /// Tämänhetkinen peli.
16    /// </summary>
17    public static Escape Peli { get; set; }
18
19    /// <summary>
20    /// Mihin kopteri laskeutuu. Muokkaa muualta vain LuoKentta-kohdassa.
21    /// </summary>
22    public Vector LaskeutumisPaikka { get; set; }
23
24    public const double LASKEUTUMISEEN_VAADITTAVAN_VAPAAN_ALUEEN_HALKAISIJA = 50.0;
25
26    private List<Pelaaja> PelaajatPelissa { get; set; }
27
28    /// <summary>
29    /// Helikopterin puolustusaika maassa.
30    /// </summary>
31    private Timer PuolustusAjastin { get; set; }
32
33    private Timer OnkoLaskeutumisAlueTyhjaTarkistus { get; set; }
34
35    public DoubleMeter PuolustetutSekunnit { get; private set; }
36
37    public ProgressBar PuolustusAikaPalkki { get; private set; }
38
39    public Helikopteri Kopteri { get; set; }
40
41    public Escape(int respaustenMaara, double puolustettavaAika, List<Pelaaja> pelaajat)
42        : base(respaustenMaara)
43    {
44        //LaskeutumisPaikka = landingPosition;
45        Peli = this;
46        PelaajatPelissa = pelaajat;
47
48        PuolustetutSekunnit = new DoubleMeter(0, 0, puolustettavaAika);
49
50        PuolustusAjastin = new Timer();
51        PuolustusAjastin.Interval = 1;
52        PuolustusAjastin.Timeout += delegate { PuolustetutSekunnit.Value++; };
53
54        PuolustusAikaPalkki = new ProgressBar(150, 10);
55        PuolustusAikaPalkki.Color = Color.Blue;
56        PuolustusAikaPalkki.BindTo(PuolustetutSekunnit);
57        PuolustusAikaPalkki.BorderColor = Color.White;
58        PuolustusAikaPalkki.Position = new Vector(LaskeutumisPaikka.X, LaskeutumisPaikka.Y + 150);
59
60        OnkoLaskeutumisAlueTyhjaTarkistus = new Timer();
61        OnkoLaskeutumisAlueTyhjaTarkistus.Interval = 1;
62        OnkoLaskeutumisAlueTyhjaTarkistus.Timeout += OnkoLaskeutumisAlueVapaa;
63        OnkoLaskeutumisAlueTyhjaTarkistus.Start();
64
65        //Kopteri = new Helikopteri(233, 73, 50, false); // 211, 171
66        //Kopteri.Position =
67        //SpawnataankoVihollisia = false;
68
69    }
70
71    /// <summary>
72    /// Nostetaan kopteri ilmaan, poistetaan pelaajat, lennetään pois ja voitetaan peli.
73    /// </summary>
74    void LastausValmis()
75    {
76        Kopteri.NouseIlmaan();
77    }
78
79    void OnkoLaskeutumisAlueVapaa()
80    {
81        foreach (Pelaaja p in PelaajatPelissa)
82        {
83            if (p != null)
84                if (!OnkoLaskeutumisAlueenSisapuolella(p.Position)) return;
85        }
86
87        //foreach (Vihollinen v in VihollisetKentalla)
88        //{
89        //    if (VihollisetKentalla.Count == 0) return;
90        //    if (OnkoLaskeutumisAlueenSisapuolella(v.Position)) return;
91        //}
92
93        // Kopteri voi saapua
94        //MW2_My_Warfare_2_.Peli.MessageDisplay.Add("[TESTI] Alue " + LASKEUTUMISEEN_VAADITTAVAN_VAPAAN_ALUEEN_HALKAISIJA + " yksikön säteeltä puhdas!");
95    }
96
97    /// <summary>
98    /// Onko jokin piste laskeutumisalueen sisäpuolella.
99    /// </summary>
100    /// <param name="paikka">Tarkistettava piste.</param>
101    /// <returns>Onko sisäpuolella.</returns>
102    bool OnkoLaskeutumisAlueenSisapuolella(Vector paikka)
103    {
104        if (paikka.X < LaskeutumisPaikka.X - LASKEUTUMISEEN_VAADITTAVAN_VAPAAN_ALUEEN_HALKAISIJA / 2 || paikka.X > LaskeutumisPaikka.X + LASKEUTUMISEEN_VAADITTAVAN_VAPAAN_ALUEEN_HALKAISIJA / 2)
105            return false;
106        if (paikka.Y < LaskeutumisPaikka.Y - LASKEUTUMISEEN_VAADITTAVAN_VAPAAN_ALUEEN_HALKAISIJA / 2 || paikka.Y > LaskeutumisPaikka.Y + LASKEUTUMISEEN_VAADITTAVAN_VAPAAN_ALUEEN_HALKAISIJA / 2)
107            return false;
108        return true;
109    }
110}
Note: See TracBrowser for help on using the repository browser.