- Timestamp:
- 2015-06-09 14:02:07 (8 years ago)
- Location:
- 2014/24/EemeliK
- Files:
-
- 3 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
2014/24/EemeliK/Zombieland/Files/ZombieLandV1.0/ZombieLand/ZombieLand/ZombieLand.cs
r5907 r5942 80 80 DoubleMeter ElamaLaskuri2; 81 81 List<Vector> Spawnauspaikat = new List<Vector>(); 82 IntMeter zombilaskuri = new IntMeter(0, 0, 10); 82 int zombilaskuri = 0; 83 const int MAX_ZOMBIEN_MAARA = 10; 84 IntMeter BensaLaskuri = new IntMeter(100, 0, 120); 85 Timer BensaAjastin = new Timer(); 86 bool onkoAutoaKaytetty = false; 83 87 PhysicsObject pelaaja; 84 88 PhysicsObject hela; … … 122 126 private Image[] jalkaKuvat = LoadImages("officer_legs_0001", "officer_legs_0002", "officer_legs_0003", "officer_legs_0004"); 123 127 124 Label pObj = new Label();125 128 126 129 public override void Begin() 127 130 { 128 131 IsFullScreen = false; 129 Add(pObj);130 132 LuoKentta(); 131 133 LuoElamaLaskuri(); 134 LuoBensaLaskuri(); 132 135 LuoElamaLaskuri2(); 133 136 LuoPelaajan2Ase(); … … 143 146 144 147 AddCollisionHandler(pelaaja, auto, MeneAutoon); 148 145 149 AddCollisionHandler(pelaaja2, auto, MeneAutoon); 146 150 AddCollisionHandler(pelaaja, "Ammoboxi", SaaAmmoBoxi); … … 152 156 Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 153 157 } 154 155 protected override void Update(Time time) 156 { 157 pObj.Text = GetObjects(x => x is PhysicsObject).Count.ToString(); 158 base.Update(time); 158 void LuoBensaLaskuri() 159 { 160 BensaAjastin.Interval = 1; 161 BensaAjastin.Timeout += delegate { BensaLaskuri.Value--; }; 162 163 BensaLaskuri.LowerLimit += delegate { auto.LinearDamping = 0.0000001; auto.Mass = 100000; }; 159 164 } 160 165 … … 163 168 pelaaja = new PhysicsObject(70, 70); 164 169 pelaaja.Position = paikka; 170 pelaaja.Shape = Shape.FromImage(pelaajanKuva); 165 171 pelaaja.Color = Color.Blue; 166 172 pelaaja.Tag = "pelaaja"; … … 171 177 172 178 Add(inventory); 173 174 // GameObject jalat = new GameObject(50,50);175 // jalat.Image = jalkaKuvat[0];176 // Add(jalat, -1);177 // Animation kavely = new Animation(jalkaKuvat);178 // kavely.FPS = 9;179 // jalat.Animation = kavely;180 // jalat.Animation.Start();181 // Timer kavelyajastin = new Timer();182 // kavelyajastin.Interval = 0.01;183 // kavelyajastin.Timeout += delegate184 // {185 // jalat.Position = pelaaja.Position;186 // jalat.AbsoluteAngle = pelaaja.AbsoluteAngle;187 188 189 /*190 if (pelaaja.Velocity.Magnitude >= 0.5)191 {192 kavely.FPS = pelaaja.Velocity.Magnitude / 200.0 * 8;193 }194 */195 196 // if (pelaaja.Velocity.Magnitude >= 0.5 && !kavely.IsPlaying)197 // {198 // kavely.Start();199 // }200 // if (pelaaja.Velocity.Magnitude < 0.5 && kavely.IsPlaying)201 // {202 // kavely.Stop();203 // }204 //};205 //kavelyajastin.Start();206 179 207 180 pelaajanase = new AssaultRifle(1, 1); … … 224 197 Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Allah", pelaajanase); 225 198 Mouse.ListenMovement(0.0, AllahuAkbar, "pommi"); 226 227 228 199 } 200 201 void TuhoaPenkki(PhysicsObject auto, PhysicsObject penkki) 202 { 203 penkki.Destroy(); 229 204 } 230 205 … … 236 211 palikka.Position = paikka; 237 212 Add(palikka, -1); 238 239 240 213 } 241 214 … … 252 225 level.SetTileMethod('#', LuoLattia); 253 226 level.SetTileMethod('W', LuoPenkki); 254 level.SetTileMethod('Q', LuoPuu);227 // level.SetTileMethod('Q', LuoPuu); 255 228 level.SetTileMethod('I', ParkkiPaikka); 256 229 level.SetTileMethod('N', LuoLoottiSpawniLattia); … … 258 231 level.SetTileMethod('C', LuoKoriPallo); 259 232 level.SetTileMethod('L', LuoAuto); 260 level.SetTileMethod('Z', LuoZombi);233 level.SetTileMethod('Z', delegate(Vector pos, double w, double h) { LuoZombi(pos, w, h, false); }); 261 234 level.SetTileMethod('M', LuoMagicPalikka); 262 235 level.SetTileMethod('A', LuoKiviBlock); 263 236 level.SetTileMethod('K', LuoAutoTieFlipped); 264 237 265 IsFullScreen = true;238 // IsFullScreen = true; 266 239 level.Execute(40, 40); 267 240 level.Optimize('G', '#', 'K', 'A', 'M'); … … 376 349 if(Level.AmbientLight <= 0.5) 377 350 { 378 LuoZombi(RandomGen.SelectOne<Vector>(Spawnauspaikat), 70, 70 );351 LuoZombi(RandomGen.SelectOne<Vector>(Spawnauspaikat), 70, 70, false); 379 352 } 380 353 } … … 556 529 void AjaAutoa(Vector vektori, PhysicsObject ajaja) 557 530 { 531 if (!BensaAjastin.Enabled) 532 { 533 BensaAjastin.Start(); 534 } 535 558 536 if (kuski == ajaja) 559 537 { … … 587 565 } 588 566 589 void LuoZombi(Vector paikka, double leveys, double korkeus) 590 { 591 if(zombilaskuri.Value == zombilaskuri.MaxValue) 592 { 593 return; 567 void LuoZombi(Vector paikka, double leveys, double korkeus, bool forceCreation) 568 { 569 if (!forceCreation) 570 { 571 if (zombilaskuri >= MAX_ZOMBIEN_MAARA) 572 { 573 return; 574 } 594 575 } 595 576 … … 597 578 zombi.Image = zombinkuva; 598 579 zombi.Position = paikka; 580 zombi.CanRotate = false; 599 581 zombi.Tag = "zombi"; 600 582 Add(zombi); 601 583 RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200); 602 584 satunnaisAivot.ChangeMovementSeconds = 3; 585 satunnaisAivot.TurnWhileMoving = true; 603 586 604 587 AddCollisionHandler(pelaaja, zombi, PelaajatTormaavat); … … 613 596 seuraajanAivot.TurnWhileMoving = true; 614 597 zombi.Brain = seuraajanAivot; 615 zombilaskuri.Value++; 616 } 598 zombilaskuri++; 599 } 600 617 601 void Tappaa(PhysicsObject kohde) 618 602 { 619 603 //kohde.Destroy(); 620 604 } 605 621 606 void LuoElamaLaskuri() 622 607 { … … 738 723 auto.Image = autonKuva; 739 724 auto.LinearDamping = 0.9; 725 AddCollisionHandler(auto, "penkki", TuhoaPenkki); 740 726 auto.AngularDamping = 0.5; 741 727 auto.Angle = Angle.FromDegrees(90); 742 728 auto.CanRotate = true; 729 auto.Collided += delegate(IPhysicsObject a, IPhysicsObject kohde) 730 { 731 const double DMG_FACTOR = 1.0 / 100.0; 732 733 if (a.Velocity.Magnitude <= 0) return; 734 735 Vihu v = kohde as Vihu; 736 if (v == null) return; 737 738 // max nopeudessa magnitude about 800 739 // vihuilla 9 hp 740 // => max vauhdista noin 8 dmg 741 v.ElamaLaskuri.Value -= a.Velocity.Magnitude * DMG_FACTOR; 742 }; 743 743 744 Add(auto, 1); 744 745 } … … 3838 3839 void MeneAutoon(PhysicsObject tormaaja, PhysicsObject auto) 3839 3840 { 3841 const double CHANCE_TO_SPAWN_ENEMIES = 50.0; 3842 const int ZOMBIEN_MAARA = 3; 3843 const double MIN_DISTANCE = 200; 3844 const double MAX_DISTANCE = 400; 3845 3846 if (!onkoAutoaKaytetty) 3847 { 3848 if (RandomGen.NextDouble(0, 100) <= CHANCE_TO_SPAWN_ENEMIES) 3849 { 3850 // spawnataan zombeja 3851 for (int i = 0; i < ZOMBIEN_MAARA; i++) 3852 { 3853 LuoZombi(tormaaja.Position + RandomGen.NextVector(MIN_DISTANCE, MAX_DISTANCE), 40.0, 40.0, true); 3854 } 3855 3856 onkoAutoaKaytetty = true; 3857 return; 3858 } 3859 } 3860 3861 onkoAutoaKaytetty = true; 3840 3862 tormaaja.IsVisible = false; 3841 3863 tormaaja.IgnoresCollisionResponse = true; … … 3883 3905 { 3884 3906 kuski = null; 3907 BensaAjastin.Stop(); 3885 3908 Camera.Follow(ajaja, auto); 3886 3909 //Camera.Follow(pelaaja, pelaaja2);
Note: See TracChangeset
for help on using the changeset viewer.