Changeset 2529 for 2011/31/TeemuT/Diamond TD/Diamond TD/Diamond TD/Peli.cs
- Timestamp:
- 2011-08-03 14:55:37 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
2011/31/TeemuT/Diamond TD/Diamond TD/Diamond TD/Peli.cs
r2500 r2529 10 10 { 11 11 List<Vector> polku = new List<Vector>(); 12 Vector[] reitti; 12 13 14 GameObject start; 15 PhysicsObject maali; 13 16 17 bool asetetaanTykkia = false; 14 18 15 19 public override void Begin() 16 20 { 17 21 TeeKentta(); 22 TeeKayttoliittyma(); 18 23 LuoPolku(); 19 LahetaViholline(); 20 24 Timer ajastin = new Timer(); 25 ajastin.Interval = 0.2; 26 ajastin.Timeout += LuoViholline; 27 ajastin.Start(10); 28 Mouse.IsCursorVisible = true; 21 29 } 22 30 23 31 void TeeKentta() 24 32 { 25 Level.BackgroundColor = Color.DarkGreen; 33 Level.BackgroundColor = Color.ForestGreen; 34 TileMap ruudut = TileMap.FromLevelAsset("kentta"); 35 ruudut.SetTileMethod('=', LuoPalikka); 36 ruudut.SetTileMethod('o', LuoPalikka); 37 ruudut.SetTileMethod('a', LuoWaypoint); 38 ruudut.SetTileMethod('s', LuoStartti); 39 ruudut.SetTileMethod('l', LuoMaali); 40 ruudut.Execute(20, 20); 41 Level.CreateBorders(1.0, true); 26 42 } 43 44 void TeeKayttoliittyma() 45 { 46 Widget tykki = new Widget(50, 50); 47 tykki.Top = Level.Top; 48 Add(tykki); 49 Mouse.ListenOn(tykki, MouseButton.Left, ButtonState.Pressed, TykkinappiPainettu, null, tykki); 50 } 51 52 void TykkinappiPainettu(Widget w) 53 { 54 w.Color = Color.Black; 55 // Voit muuttaa kuvaa 56 asetetaanTykkia = true; 57 Mouse.Listen(MouseButton.Left, ButtonState.Pressed, AsetaTykki, null, w); 58 } 59 60 void AsetaTykki(Widget w) 61 { 62 if (asetetaanTykkia) 63 { 64 GameObject tykki = new GameObject(20, 20); 65 Add(tykki); 66 tykki.Position = new Vector(Mouse.PositionOnWorld.X, Mouse.PositionOnWorld.Y); 67 asetetaanTykkia = false; 68 w.Color = Color.White; 69 } 70 } 71 27 72 void LuoPolku() 28 73 { 29 polku.Add(new Vector (-200, 200)); 30 polku.Add(new Vector(-200, 0)); 31 polku.Add(new Vector( 200, 0)); 32 polku.Add(new 33 RoadMap tie = new RoadMap(polku.ToArray()); 34 tie.DefaultWidth = 100.0; 35 tie.Insert(); 74 reitti = ParsiReitti(start, polku); 75 } 36 76 77 void LuoWaypoint(Vector paikka, double leveys, double korkeus) 78 { 79 polku.Add(paikka); 80 } 37 81 38 82 void LuoStartti(Vector paikka, double leveys, double korkeus) 83 { 84 start = new GameObject(1, 1); 85 start.Position = paikka; 86 } 39 87 40 for (int i = polku.Count-1; i > -1; i--) 88 void LuoMaali(Vector paikka, double lev, double korkeus) 89 { 90 maali = PhysicsObject.CreateStaticObject(20, 20); 91 polku.Add(paikka); 92 maali.Position = paikka; 93 Add(maali); 94 AddCollisionHandler(maali, KasitteleMaalinTormaus); 95 maali.IsVisible = false; 96 97 } 98 99 void KasitteleMaalinTormaus(PhysicsObject maali, PhysicsObject vih) 100 { 101 vih.Destroy(); 102 } 103 104 void LuoViholline() 105 { 106 PhysicsObject vih = new PhysicsObject(20, 20); 107 vih.Position = start.Position; 108 109 PathFollowerBrain testiaivot = new PathFollowerBrain(); 110 testiaivot.Path = reitti; 111 testiaivot.Speed = 200; 112 testiaivot.Loop = false; 113 114 vih.Brain = testiaivot; 115 Add(vih); 116 vih.Color = Color.Red; 117 vih.Shape = Shape.Circle; 118 } 119 120 void LuoPalikka(Vector paikka, double leveys, double korkeus) 121 { 122 PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus); 123 palikka.Position = paikka; 124 palikka.Shape = Shape.Rectangle; 125 palikka.Color = Color.Gray; 126 Add(palikka); 127 128 } 129 130 Vector[] ParsiReitti(GameObject npc, List<Vector> waypoints) 131 { 132 int n = waypoints.Count; 133 Vector[] reitti = new Vector[n]; 134 Vector v = npc.Position; 135 136 for (int i = 0; i < n; i++) 41 137 { 42 polku.Add(polku[i]); 138 v = FindNearest(waypoints, v); 139 waypoints.Remove(v); 140 reitti[i] = v; 43 141 } 142 143 return reitti; 44 144 } 145 146 Vector FindNearest(IEnumerable<Vector> list, Vector vector) 147 { 148 Vector nearest = Vector.Zero; 149 double minDistance = double.PositiveInfinity; 150 151 foreach (Vector candidate in list) 152 { 153 double d = Vector.Distance(vector, candidate); 154 155 if (d < minDistance) 156 { 157 nearest = candidate; 158 minDistance = d; 159 } 160 } 161 162 return nearest; 45 163 46 164 47 165 48 166 49 void LahetaViholline()50 {51 PhysicsObject vih = new PhysicsObject(20, 20);52 vih.Position = polku[0];53 54 PathFollowerBrain testiaivot = new PathFollowerBrain();55 testiaivot.Path = polku;56 testiaivot.Speed = 100;57 testiaivot.Loop = true;58 vih.Brain = testiaivot;59 Add(vih);60 vih.Color = Color.Red61 ;62 vih.Shape = Shape.Circle;63 64 }65 167 66 168 169 } 67 170 } 68 171
Note: See TracChangeset
for help on using the changeset viewer.