Changeset 6040 for 2015/24


Ignore:
Timestamp:
2015-06-11 20:20:57 (8 years ago)
Author:
sieerinn
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2015/24/ohjaajat/Dungeon/Dungeon/Dungeon/Dungeon.cs

    r6039 r6040  
    2727    public int Price { get; set; } 
    2828 
    29     public Upgrade() 
     29    protected Upgrade() 
    3030        : base(Dungeon.RUUDUN_KOKO, Dungeon.RUUDUN_KOKO) 
    3131    { 
     
    5555        this.Animation.Start(1); 
    5656 
    57         if(peli.barbaarit.Count < 1) 
     57        if (peli.barbaarit.Count < 1) 
    5858        { 
    5959            peli.kierrosKaynnissa = false; 
     
    143143    public List<Point> Reitti { get; set; } 
    144144 
     145    public int Askel { get; set; } 
     146 
     147    public Room Kohde { get; set; } 
     148 
     149    public Point Location { get; set; } 
     150 
    145151    public Barbaari(double width, double height) 
    146152        : base(width, height) 
    147153    { 
    148154        Reitti = new List<Point>(); 
    149     } 
    150  
    151     public int Askel { get; set; } 
    152  
    153     private Room kohde; 
    154     public Room Kohde 
    155     { 
    156         get { return kohde; } 
    157         set { kohde = value; } 
    158     } 
    159     public Point Location 
    160     { 
    161         get; 
    162         set; 
    163155    } 
    164156 
     
    174166    Image reikaSeinaKuva = LoadImage("wallhole"); 
    175167    Image kiviKuva = LoadImage("rock"); 
    176     //static Image kulttuuriKuva1 = LoadImage("es"); 
    177     //static Image kulttuuriKuva2 = LoadImage("nyan"); 
    178     //static Image kulttuuriKuva3 = LoadImage("spurdo"); 
    179168    Image[] kultuuriKuvat = LoadImages("nyan", "es", "spurdo"); 
    180169    Image[] ansaKuvat = LoadImages((from i in Enumerable.Range(1, 7) select String.Format("piikit{0:0000}", i)).ToArray()); 
    181170    Image[] vihuKuvat = LoadImages((from i in Enumerable.Range(1, 10) select String.Format("v{0:0000}", i)).ToArray()); 
    182     Image partikkeli = LoadImage("partikkeli"); 
     171    Image partikkeliKuva = LoadImage("partikkeli"); 
    183172    Image taideVeri = LoadImage("taideveri"); 
    184173    #endregion 
    185174 
    186     int[] hinnat = new int[] { 100, 200, 300, 100}; 
     175    int[] hinnat = { 100, 200, 300, 100 }; 
    187176    private int barbaariMaara = 2; 
    188177 
     
    229218        LuoSpawn(); 
    230219 
    231         Timer sykliAjastin = new Timer(); 
    232         sykliAjastin.Interval = 2.0; 
     220        Timer sykliAjastin = new Timer { Interval = 2.0 }; 
    233221        sykliAjastin.Timeout += Sykli; 
    234222        sykliAjastin.Start(); 
    235223 
    236         barbaariAjastin.Timeout += delegate { LuoBarbaareja(); }; 
     224        barbaariAjastin.Timeout += LuoBarbaareja; 
    237225        barbaariAjastin.Interval = 3; 
    238226    } 
     
    292280            }; 
    293281 
    294             Label teksti = new Label(); 
    295             teksti.Position = kuva.Position + new Vector((RUUDUN_KOKO * 1.2), 0); 
    296             teksti.TextColor = Color.White; 
    297             teksti.Text = hinnat[i].ToString(); 
    298             Add(teksti); 
    299   
    300         } 
    301  
    302         for(int i = 0; i<1; i++) 
     282            Add(new Label 
     283            { 
     284                Position = kuva.Position + new Vector((RUUDUN_KOKO * 1.2), 0), 
     285                TextColor = Color.White, 
     286                Text = hinnat[i].ToString() 
     287            }); 
     288        } 
     289 
     290        for (int i = 0; i < 1; i++) 
    303291        { 
    304292            PushButton kuva = new PushButton(ansaKuvat[i]); 
     
    311299            kuva.Clicked += delegate 
    312300            { 
    313                ostamassa = LuoAnsaPaivitys(ansaKuvat[ansaKuvat.Length-1], hinnat[indeksi]); 
     301                ostamassa = LuoAnsaPaivitys(ansaKuvat[ansaKuvat.Length - 1], hinnat[indeksi]); 
    314302            }; 
    315303 
    316             Label teksti = new Label(); 
    317             teksti.Position = kuva.Position + new Vector((RUUDUN_KOKO * 1.2), 0); 
    318             teksti.TextColor = Color.White; 
    319             teksti.Text = hinnat[i].ToString(); 
    320             Add(teksti); 
     304            Add(new Label 
     305            { 
     306                Position = kuva.Position + new Vector((RUUDUN_KOKO * 1.2), 0), 
     307                TextColor = Color.White, 
     308                Text = hinnat[i].ToString() 
     309            }); 
    321310        } 
    322311    } 
     
    324313    Upgrade LuoAnsaPaivitys(Image kuva, int hinta) 
    325314    { 
    326         TrapUpgrade upg = new TrapUpgrade(); 
    327         upg.Image = kuva; 
    328         upg.Size = new Vector(0.5, 0.5) * RUUDUN_KOKO; 
    329         upg.Price = hinta; 
    330         upg.Animation = new Animation(ansaKuvat); 
    331         return upg; 
     315        return new TrapUpgrade 
     316        { 
     317            Image = kuva, 
     318            Size = new Vector(0.5, 0.5) * RUUDUN_KOKO, 
     319            Price = hinta, 
     320            Animation = new Animation(ansaKuvat) 
     321        }; 
    332322    } 
    333323 
    334324    Upgrade LuoKultuuriPaivitys(Image kuva, int hinta) 
    335325    { 
    336         CultureUpgrade upg = new CultureUpgrade(); 
    337         upg.Image = kuva; 
    338         upg.Size = new Vector(0.5, 0.5) * RUUDUN_KOKO; 
    339         upg.Price = hinta; 
    340         return upg; 
     326        return new CultureUpgrade 
     327        { 
     328            Image = kuva, 
     329            Size = new Vector(0.5, 0.5) * RUUDUN_KOKO, 
     330            Price = hinta 
     331        }; 
    341332    } 
    342333 
     
    345336        Barbaari barbaari = new Barbaari(RUUDUN_KOKO * 0.4, RUUDUN_KOKO * 0.4); 
    346337        barbaari.Color = Color.Red; 
    347         //barbaari.Position = RandomGen.NextVector(Level.Right, Level.Bottom, Level.Left, Level.Top); 
    348338        barbaari.Position = spawn.Position; 
    349         barbaari.Animation = new Animation(vihuKuvat); 
    350         barbaari.Animation.FPS = 10; 
     339        barbaari.Animation = new Animation(vihuKuvat) { FPS = 10 }; 
    351340        barbaari.Animation.Start(); 
    352341        barbaari.Location = spawn.Location; 
     
    361350        barbaari.Kohde = kohteet[RandomGen.NextInt(kohteet.Count)]; 
    362351        barbaari.Reitti = FindPath(barbaari.Kohde.Location, (barbaari.Location.Equals(spawn.Location)) ? spawn.Location : barbaari.Location); 
    363  
    364  
    365352    } 
    366353 
    367354    void Sykli() 
    368355    { 
    369         //List<Barbaari> poistettavat = new List<Barbaari>();   //TODO: Ansahuoneet poistamaan barbaareja, ei me. 
    370356        foreach (var barbaari in barbaarit) 
    371357        { 
    372358            if (barbaari.Reitti.Count == 0) 
    373359            { 
    374  
    375360                EtsiBarbaarinReitti(barbaari);  //Etsitään uusi reitti poiston sijaan 
    376  
    377                 /*poistettavat.Add(barbaari); 
    378                 barbaari.Destroy(); 
    379                 continue;*/ 
    380361            } 
    381362 
    382363            Point seuraavaPaikka = barbaari.Reitti[0]; 
    383364            barbaari.Reitti.RemoveAt(0); 
    384             barbaari.MoveTo(huoneet[seuraavaPaikka.X, seuraavaPaikka.Y].Position, 100, () => SyklinPaatteeksi(barbaari, seuraavaPaikka)); 
    385         } 
    386  
    387         /*foreach (var poista in poistettavat) 
    388             barbaarit.Remove(poista);*/ 
     365            Barbaari b = barbaari; 
     366            barbaari.MoveTo(huoneet[seuraavaPaikka.X, seuraavaPaikka.Y].Position, 100, () => SyklinPaatteeksi(b, seuraavaPaikka)); 
     367        } 
    389368    } 
    390369 
     
    409388        Keyboard.Listen(Key.F1, ButtonState.Pressed, Begin, null); 
    410389 
    411  
    412390        Keyboard.Listen(Key.Space, ButtonState.Pressed, SeuraavaAalto, "Anna kivan barbaariaallon tulla"); 
    413391    } 
     
    415393    void SeuraavaAalto() 
    416394    { 
    417         if (!kierrosKaynnissa) 
    418         { 
    419             barbaariAjastin.Start(barbaariMaara); 
    420             barbaariMaara += 2; 
    421             kierrosKaynnissa = false; 
    422         } 
     395        if (kierrosKaynnissa) return; 
     396 
     397        barbaariAjastin.Start(barbaariMaara); 
     398        barbaariMaara += 2; 
     399        kierrosKaynnissa = false; 
    423400    } 
    424401 
     
    449426        digging = false; 
    450427        digArrowHead.IsVisible = digArrow.IsVisible = false; 
    451         if (CanDig()) 
    452         { 
    453             int dx = kohdeHuone.Location.X - digStart.X; 
    454             int dy = kohdeHuone.Location.Y - digStart.Y; 
    455             Point[] kaivettavatPaikat = RuudutSuoralta(digStart, dx, dy).ToArray(); 
    456             MessageDisplay.Add("" + kaivettavatPaikat.Length); 
    457             for (int i = 0; i < kaivettavatPaikat.Length - 1; i++) 
    458             { 
    459                 Dig(GetRoom(kaivettavatPaikat[i]), GetRoom(kaivettavatPaikat[i + 1])); 
    460             } 
    461  
    462             //var alkuHuone = huoneet[digStart.X, digStart.Y]; 
    463  
    464             // Päivitetään huoneiden kultuuri-infot. 
    465             PaivitaHuoneidenKultuurit(); 
    466         } 
     428        if (!CanDig()) return; 
     429 
     430        int dx = kohdeHuone.Location.X - digStart.X; 
     431        int dy = kohdeHuone.Location.Y - digStart.Y; 
     432        Point[] kaivettavatPaikat = RuudutSuoralta(digStart, dx, dy).ToArray(); 
     433        MessageDisplay.Add("" + kaivettavatPaikat.Length); 
     434        for (int i = 0; i < kaivettavatPaikat.Length - 1; i++) 
     435        { 
     436            Dig(GetRoom(kaivettavatPaikat[i]), GetRoom(kaivettavatPaikat[i + 1])); 
     437        } 
     438 
     439        // Päivitetään huoneiden kultuuri-infot. 
     440        PaivitaHuoneidenKultuurit(); 
    467441    } 
    468442 
     
    500474 
    501475        Mouse.ListenOn(huone, MouseButton.Left, ButtonState.Pressed, AsetaPaivitys, "Asetetaan ostettu päivitys paikoilleen", huone); 
    502         Mouse.Listen(MouseButton.Right, ButtonState.Pressed, delegate() { ostamassa = null; }, "Perutaan ostos"); 
     476        Mouse.Listen(MouseButton.Right, ButtonState.Pressed, delegate { ostamassa = null; }, "Perutaan ostos"); 
    503477        Mouse.ListenOn(huone, MouseButton.Right, ButtonState.Pressed, PoistaPaivitys, "Poistetaan asetettu päivitys", huone); 
    504478 
     
    533507    void PaivitaHuoneidenKultuurit() 
    534508    { 
    535         RuutujenPaikat().Select(GetRoom).ToList().ForEach(PaivitaHuoneenKultuuri); // :D ;___;; MIKSI 
     509        RuutujenPaikat().Select(GetRoom).ToList().ForEach(PaivitaHuoneenKultuuri); // :D ;___;; MIKSI <- koska pystyn 
    536510    } 
    537511 
     
    665639    } 
    666640 
    667     void LuoKiviPartikkelit(Vector alkupaikka) 
     641    public void LuoLentavaPartikkeli(Vector alkupaikka, Image kuva, double koko, int maara, bool veri=false) 
    668642    { 
    669643        // Feikki 3D partikkeli juttu. 
    670644        // Heittää ilmaan GameObjekteja joiden alla on varjo. 
    671         for (int i = 0; i < 6; i++) 
    672         { 
    673             GameObject p = new GameObject(25, 25); 
    674             p.Image = partikkeli; 
    675             p.Position = alkupaikka + RandomGen.NextVector(0.0, RUUDUN_KOKO * 0.4); 
    676             Add(p, 3); 
    677  
    678             GameObject varjo = new GameObject(20, 10); 
    679             varjo.Position = p.Position; 
     645 
     646        // VAROITUS: SISÄLTÄÄ JÄRKYTTÄVÄÄ KOODIA 
     647 
     648        for (int i = 0; i < maara; i++) 
     649        { 
     650            GameObject partikkeli = new GameObject(koko, koko); 
     651            partikkeli.Image = kuva; 
     652            partikkeli.Position = alkupaikka + RandomGen.NextVector(0.0, RUUDUN_KOKO * 0.4); 
     653            Add(partikkeli, 3); 
     654 
     655            GameObject varjo = new GameObject(koko, koko / 2.0); 
     656            varjo.Position = partikkeli.Position; 
    680657            varjo.Shape = Shape.Circle; 
    681658            varjo.Color = Color.Lerp(Color.Black, Color.Transparent, 0.5); 
    682659            Add(varjo, 2); 
    683660 
    684             Vector paikka = p.Position; 
     661            Vector paikka = partikkeli.Position; 
    685662            Vector nopeus = RandomGen.NextVector(0.2, 3.0); 
    686663            nopeus.Y *= 0.3; 
     
    690667            double angularVelocity = RandomGen.NextDouble(-1.0, 1.0) * 8; 
    691668 
    692             Timer ajastin = new Timer(); 
     669            var verenLuontiAjastin = veri ? new Timer() : null; 
     670 
     671            var ajastin = new Timer(); 
    693672            ajastin.Interval = 0.02; 
    694673            ajastin.Timeout += delegate 
     
    697676                z += vz; 
    698677                paikka += nopeus; 
    699                 p.Position = paikka + new Vector(0.0, 1.0) * z; 
    700                 p.Angle += Angle.FromDegrees(angularVelocity); 
     678                partikkeli.Position = paikka + new Vector(0.0, 1.0) * z; 
     679                partikkeli.Angle += Angle.FromDegrees(angularVelocity); 
    701680                varjo.Position = paikka; 
    702681 
     
    704683                { 
    705684                    ajastin.Stop(); 
    706                     p.Destroy(); 
     685                    partikkeli.Destroy(); 
    707686                    varjo.Destroy(); 
     687                    if (verenLuontiAjastin != null) 
     688                        verenLuontiAjastin.Stop(); 
    708689                } 
    709690            }; 
    710691            ajastin.Start(); 
    711         } 
     692 
     693            if (verenLuontiAjastin != null) 
     694            { 
     695                verenLuontiAjastin.Interval = 0.1; 
     696                verenLuontiAjastin.Timeout += delegate 
     697                { 
     698                    GameObject veriPartikkeli = new GameObject(3, 3); 
     699                    veriPartikkeli.Color = Color.DarkRed; 
     700                    Add(veriPartikkeli, 2); 
     701 
     702                    Vector veriPaikka = paikka; 
     703                    double veriZ = z; 
     704                    double veriVz = 0.0; 
     705 
     706                    var veriPaivitysAjastin = new Timer(); 
     707                    veriPaivitysAjastin.Interval = 0.02; 
     708                    veriPaivitysAjastin.Timeout += delegate 
     709                    { 
     710                        veriVz += g; 
     711                        veriZ += veriVz; 
     712                        veriPartikkeli.Position = veriPaikka + new Vector(0.0, 1.0)*veriZ; 
     713 
     714                        if (veriZ < 0.0) 
     715                        { 
     716                            veriPaivitysAjastin.Stop(); 
     717                            veriPartikkeli.Destroy(); 
     718                        } 
     719                    }; 
     720                    veriPaivitysAjastin.Start(); 
     721                }; 
     722                verenLuontiAjastin.Start(); 
     723            } 
     724        } 
     725    } 
     726 
     727    void LuoKiviPartikkelit(Vector alkupaikka) 
     728    { 
     729        LuoLentavaPartikkeli(alkupaikka, partikkeliKuva, 25, 6); 
    712730    } 
    713731 
    714732    public void Splatter(Vector alkupaikka) 
    715733    { 
    716         for (int i = 0; i < 6; i++) 
    717         { 
    718             GameObject p = new GameObject(8, 8); 
    719             //p.Color = Color.Red; 
    720             p.Image = taideVeri; 
    721             p.Position = alkupaikka + RandomGen.NextVector(0.0, RUUDUN_KOKO * 0.4); 
    722             Add(p, 3); 
    723  
    724             GameObject varjo = new GameObject(5, 5); 
    725             varjo.Position = p.Position; 
    726             varjo.Shape = Shape.Circle; 
    727             varjo.Color = Color.Lerp(Color.Black, Color.Transparent, 0.5); 
    728             Add(varjo, 2); 
    729  
    730             Vector paikka = p.Position; 
    731             Vector nopeus = RandomGen.NextVector(0.2, 3.0); 
    732             nopeus.Y *= 0.3; 
    733             double g = -0.2; // painovoima 
    734             double z = 0.0; // sijainti z-akselilla 
    735             double vz = RandomGen.NextDouble(3.5, 4.5); // nopeus z-akselilla 
    736             double angularVelocity = RandomGen.NextDouble(-1.0, 1.0) * 8; 
    737  
    738             Timer ajastin = new Timer(); 
    739             ajastin.Interval = 0.02; 
    740             ajastin.Timeout += delegate 
    741             { 
    742                 vz += g; 
    743                 z += vz; 
    744                 paikka += nopeus; 
    745                 p.Position = paikka + new Vector(0.0, 1.0) * z; 
    746                 p.Angle += Angle.FromDegrees(angularVelocity); 
    747                 varjo.Position = paikka; 
    748  
    749                 if (z < 0.0) 
    750                 { 
    751                     ajastin.Stop(); 
    752                     p.Destroy(); 
    753                     varjo.Destroy(); 
    754                 } 
    755             }; 
    756             ajastin.Start(); 
    757         } 
     734        LuoLentavaPartikkeli(alkupaikka, taideVeri, 8, 10, true); 
    758735    } 
    759736 
Note: See TracChangeset for help on using the changeset viewer.