- Timestamp:
- 2015-06-11 20:20:57 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
2015/24/ohjaajat/Dungeon/Dungeon/Dungeon/Dungeon.cs
r6039 r6040 27 27 public int Price { get; set; } 28 28 29 p ublicUpgrade()29 protected Upgrade() 30 30 : base(Dungeon.RUUDUN_KOKO, Dungeon.RUUDUN_KOKO) 31 31 { … … 55 55 this.Animation.Start(1); 56 56 57 if (peli.barbaarit.Count < 1)57 if (peli.barbaarit.Count < 1) 58 58 { 59 59 peli.kierrosKaynnissa = false; … … 143 143 public List<Point> Reitti { get; set; } 144 144 145 public int Askel { get; set; } 146 147 public Room Kohde { get; set; } 148 149 public Point Location { get; set; } 150 145 151 public Barbaari(double width, double height) 146 152 : base(width, height) 147 153 { 148 154 Reitti = new List<Point>(); 149 }150 151 public int Askel { get; set; }152 153 private Room kohde;154 public Room Kohde155 {156 get { return kohde; }157 set { kohde = value; }158 }159 public Point Location160 {161 get;162 set;163 155 } 164 156 … … 174 166 Image reikaSeinaKuva = LoadImage("wallhole"); 175 167 Image kiviKuva = LoadImage("rock"); 176 //static Image kulttuuriKuva1 = LoadImage("es");177 //static Image kulttuuriKuva2 = LoadImage("nyan");178 //static Image kulttuuriKuva3 = LoadImage("spurdo");179 168 Image[] kultuuriKuvat = LoadImages("nyan", "es", "spurdo"); 180 169 Image[] ansaKuvat = LoadImages((from i in Enumerable.Range(1, 7) select String.Format("piikit{0:0000}", i)).ToArray()); 181 170 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"); 183 172 Image taideVeri = LoadImage("taideveri"); 184 173 #endregion 185 174 186 int[] hinnat = new int[] { 100, 200, 300, 100};175 int[] hinnat = { 100, 200, 300, 100 }; 187 176 private int barbaariMaara = 2; 188 177 … … 229 218 LuoSpawn(); 230 219 231 Timer sykliAjastin = new Timer(); 232 sykliAjastin.Interval = 2.0; 220 Timer sykliAjastin = new Timer { Interval = 2.0 }; 233 221 sykliAjastin.Timeout += Sykli; 234 222 sykliAjastin.Start(); 235 223 236 barbaariAjastin.Timeout += delegate { LuoBarbaareja(); };224 barbaariAjastin.Timeout += LuoBarbaareja; 237 225 barbaariAjastin.Interval = 3; 238 226 } … … 292 280 }; 293 281 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++) 303 291 { 304 292 PushButton kuva = new PushButton(ansaKuvat[i]); … … 311 299 kuva.Clicked += delegate 312 300 { 313 ostamassa = LuoAnsaPaivitys(ansaKuvat[ansaKuvat.Length-1], hinnat[indeksi]);301 ostamassa = LuoAnsaPaivitys(ansaKuvat[ansaKuvat.Length - 1], hinnat[indeksi]); 314 302 }; 315 303 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 }); 321 310 } 322 311 } … … 324 313 Upgrade LuoAnsaPaivitys(Image kuva, int hinta) 325 314 { 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 }; 332 322 } 333 323 334 324 Upgrade LuoKultuuriPaivitys(Image kuva, int hinta) 335 325 { 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 }; 341 332 } 342 333 … … 345 336 Barbaari barbaari = new Barbaari(RUUDUN_KOKO * 0.4, RUUDUN_KOKO * 0.4); 346 337 barbaari.Color = Color.Red; 347 //barbaari.Position = RandomGen.NextVector(Level.Right, Level.Bottom, Level.Left, Level.Top);348 338 barbaari.Position = spawn.Position; 349 barbaari.Animation = new Animation(vihuKuvat); 350 barbaari.Animation.FPS = 10; 339 barbaari.Animation = new Animation(vihuKuvat) { FPS = 10 }; 351 340 barbaari.Animation.Start(); 352 341 barbaari.Location = spawn.Location; … … 361 350 barbaari.Kohde = kohteet[RandomGen.NextInt(kohteet.Count)]; 362 351 barbaari.Reitti = FindPath(barbaari.Kohde.Location, (barbaari.Location.Equals(spawn.Location)) ? spawn.Location : barbaari.Location); 363 364 365 352 } 366 353 367 354 void Sykli() 368 355 { 369 //List<Barbaari> poistettavat = new List<Barbaari>(); //TODO: Ansahuoneet poistamaan barbaareja, ei me.370 356 foreach (var barbaari in barbaarit) 371 357 { 372 358 if (barbaari.Reitti.Count == 0) 373 359 { 374 375 360 EtsiBarbaarinReitti(barbaari); //Etsitään uusi reitti poiston sijaan 376 377 /*poistettavat.Add(barbaari);378 barbaari.Destroy();379 continue;*/380 361 } 381 362 382 363 Point seuraavaPaikka = barbaari.Reitti[0]; 383 364 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 } 389 368 } 390 369 … … 409 388 Keyboard.Listen(Key.F1, ButtonState.Pressed, Begin, null); 410 389 411 412 390 Keyboard.Listen(Key.Space, ButtonState.Pressed, SeuraavaAalto, "Anna kivan barbaariaallon tulla"); 413 391 } … … 415 393 void SeuraavaAalto() 416 394 { 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; 423 400 } 424 401 … … 449 426 digging = false; 450 427 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(); 467 441 } 468 442 … … 500 474 501 475 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"); 503 477 Mouse.ListenOn(huone, MouseButton.Right, ButtonState.Pressed, PoistaPaivitys, "Poistetaan asetettu päivitys", huone); 504 478 … … 533 507 void PaivitaHuoneidenKultuurit() 534 508 { 535 RuutujenPaikat().Select(GetRoom).ToList().ForEach(PaivitaHuoneenKultuuri); // :D ;___;; MIKSI 509 RuutujenPaikat().Select(GetRoom).ToList().ForEach(PaivitaHuoneenKultuuri); // :D ;___;; MIKSI <- koska pystyn 536 510 } 537 511 … … 665 639 } 666 640 667 void LuoKiviPartikkelit(Vector alkupaikka)641 public void LuoLentavaPartikkeli(Vector alkupaikka, Image kuva, double koko, int maara, bool veri=false) 668 642 { 669 643 // Feikki 3D partikkeli juttu. 670 644 // 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; 680 657 varjo.Shape = Shape.Circle; 681 658 varjo.Color = Color.Lerp(Color.Black, Color.Transparent, 0.5); 682 659 Add(varjo, 2); 683 660 684 Vector paikka = p .Position;661 Vector paikka = partikkeli.Position; 685 662 Vector nopeus = RandomGen.NextVector(0.2, 3.0); 686 663 nopeus.Y *= 0.3; … … 690 667 double angularVelocity = RandomGen.NextDouble(-1.0, 1.0) * 8; 691 668 692 Timer ajastin = new Timer(); 669 var verenLuontiAjastin = veri ? new Timer() : null; 670 671 var ajastin = new Timer(); 693 672 ajastin.Interval = 0.02; 694 673 ajastin.Timeout += delegate … … 697 676 z += vz; 698 677 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); 701 680 varjo.Position = paikka; 702 681 … … 704 683 { 705 684 ajastin.Stop(); 706 p .Destroy();685 partikkeli.Destroy(); 707 686 varjo.Destroy(); 687 if (verenLuontiAjastin != null) 688 verenLuontiAjastin.Stop(); 708 689 } 709 690 }; 710 691 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); 712 730 } 713 731 714 732 public void Splatter(Vector alkupaikka) 715 733 { 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); 758 735 } 759 736
Note: See TracChangeset
for help on using the changeset viewer.