1 | using System; |
---|
2 | using System.Collections.Generic; |
---|
3 | using Jypeli; |
---|
4 | using Jypeli.Assets; |
---|
5 | using Jypeli.Controls; |
---|
6 | using Jypeli.Effects; |
---|
7 | using Jypeli.Widgets; |
---|
8 | |
---|
9 | public class TankHero : PhysicsGame |
---|
10 | { |
---|
11 | |
---|
12 | Cannon torni; |
---|
13 | Cannon botintorni; |
---|
14 | Image leopard2a4 = LoadImage("leopard2a4"); |
---|
15 | Image torninKuva = LoadImage("leopard2a4valmistorni"); |
---|
16 | Image kartanKuva = LoadImage("kartta"); |
---|
17 | Image puuKuva = LoadImage("puu"); |
---|
18 | Image hiekanKuva = LoadImage("hiekka"); |
---|
19 | Image bottiRunko = LoadImage("t90runko"); |
---|
20 | Image bottiTorni = LoadImage("t90torni"); |
---|
21 | PhysicsObject pelaaja; |
---|
22 | PhysicsObject botti; |
---|
23 | Vector spawn = new Vector(-1400, -1300); |
---|
24 | public override void Begin() |
---|
25 | { |
---|
26 | Mouse.IsCursorVisible = true; |
---|
27 | Vector kursoriruudulla = Mouse.PositionOnScreen; |
---|
28 | Vector paikkakentällä = Mouse.PositionOnWorld; |
---|
29 | LuoKentta(); |
---|
30 | LuoPelaaja(); |
---|
31 | LuoBotti(); |
---|
32 | LuoOhjaimet(); |
---|
33 | MediaPlayer.Play("684240_Zound---Metallic"); |
---|
34 | |
---|
35 | |
---|
36 | PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); |
---|
37 | Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); |
---|
38 | } |
---|
39 | void LuoPelaaja() |
---|
40 | { |
---|
41 | pelaaja = new PhysicsObject(150, 200); |
---|
42 | pelaaja.Shape = Shape.FromImage(leopard2a4); |
---|
43 | pelaaja.Image = leopard2a4; |
---|
44 | pelaaja.LinearDamping = 0.90; |
---|
45 | pelaaja.AngularDamping = 0.99; |
---|
46 | pelaaja.Position = spawn; |
---|
47 | pelaaja.Tag = "pelaaja1"; |
---|
48 | Add(pelaaja); |
---|
49 | Camera.Zoom(1.5); |
---|
50 | Camera.Follow(pelaaja); |
---|
51 | //Camera.ZoomToAllObjects(); |
---|
52 | pelaaja.IgnoresExplosions = true; |
---|
53 | |
---|
54 | |
---|
55 | torni = new Cannon(180, 100); |
---|
56 | torni.Shape = Shape.FromImage(torninKuva); |
---|
57 | torni.Image = torninKuva; |
---|
58 | torni.Position = new Vector(-7, -37); |
---|
59 | torni.Ammo.Value = 10000; |
---|
60 | pelaaja.Add(torni); |
---|
61 | |
---|
62 | } |
---|
63 | void LuoBotti() |
---|
64 | { |
---|
65 | PhysicsObject botti = new PhysicsObject(150, 200); |
---|
66 | botti.Image = bottiRunko; |
---|
67 | botti.LinearDamping = 0.90; |
---|
68 | botti.AngularDamping = 0.99; |
---|
69 | Add(botti); |
---|
70 | |
---|
71 | botintorni = new Cannon(100, 180); |
---|
72 | botintorni.Image = bottiTorni; |
---|
73 | botintorni.Position = new Vector(-10, 40); |
---|
74 | botti.Add(botintorni); |
---|
75 | |
---|
76 | FollowerBrain botinaivot = new FollowerBrain("pelaaja1"); |
---|
77 | botinaivot.Speed = 200; |
---|
78 | botinaivot.DistanceFar = 500; |
---|
79 | botti.Brain = botinaivot; |
---|
80 | botinaivot.Active = true; |
---|
81 | |
---|
82 | botinaivot.TargetClose += mitaTapahtuuKunOllaanLahella; |
---|
83 | |
---|
84 | |
---|
85 | |
---|
86 | } |
---|
87 | void mitaTapahtuuKunOllaanLahella() |
---|
88 | { |
---|
89 | |
---|
90 | } |
---|
91 | void LuoKentta() |
---|
92 | { |
---|
93 | Level.Background.Color = Color.LightGreen; |
---|
94 | ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kartta"); |
---|
95 | ruudut.SetTileMethod(Color.FromHexCode("FFD800"), LuoHiekka); |
---|
96 | ruudut.SetTileMethod(Color.FromHexCode("4CFF00"), LuoPuu); |
---|
97 | ruudut.Execute(100, 100); |
---|
98 | |
---|
99 | |
---|
100 | } |
---|
101 | |
---|
102 | void LuoHiekka(Vector paikka, double leveys, double korkeus) |
---|
103 | { |
---|
104 | GameObject hiekka = new GameObject(100, 100); |
---|
105 | hiekka.Image = hiekanKuva; |
---|
106 | hiekka.Position = paikka; |
---|
107 | Add(hiekka); |
---|
108 | } |
---|
109 | void LuoPuu(Vector paikka, double leveys, double korkeus) |
---|
110 | { |
---|
111 | PhysicsObject puu = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
112 | puu.Position = paikka; |
---|
113 | puu.Image = puuKuva; |
---|
114 | Add(puu); |
---|
115 | } |
---|
116 | |
---|
117 | void LuoOhjaimet() |
---|
118 | { |
---|
119 | Keyboard.Listen(Key.W, ButtonState.Down, Aja, null, new Vector(0, 1200)); |
---|
120 | Keyboard.Listen(Key.S, ButtonState.Down, Aja, null, new Vector(0, -400)); |
---|
121 | Keyboard.Listen(Key.A, ButtonState.Down, Kaanny, null, 1); |
---|
122 | Keyboard.Listen(Key.D, ButtonState.Down, Kaanny, null, -1); |
---|
123 | |
---|
124 | Mouse.Listen(MouseButton.Left, ButtonState.Pressed, AmmuTykilla, "Ammu", torni); |
---|
125 | Mouse.ListenMovement(0.1, TorninLiike, "Käännä tornia"); |
---|
126 | |
---|
127 | |
---|
128 | |
---|
129 | } |
---|
130 | void AmmuTykilla(Cannon tykki) |
---|
131 | { |
---|
132 | PhysicsObject ammus = tykki.Shoot(); |
---|
133 | |
---|
134 | if(ammus !=null) |
---|
135 | { |
---|
136 | ammus.Size *= 1; |
---|
137 | tykki.FireRate = 10; |
---|
138 | Explosion rajahdys = new Explosion(60); |
---|
139 | rajahdys.Position = torni.AbsolutePosition + torni.AbsoluteAngle.GetVector().Normalize() * 95; |
---|
140 | rajahdys.Speed = 500; |
---|
141 | rajahdys.UseShockWave = false; |
---|
142 | Add(rajahdys); |
---|
143 | } |
---|
144 | tykki.ProjectileCollision = AmmusOsuu; |
---|
145 | } |
---|
146 | void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde) |
---|
147 | { |
---|
148 | ammus.Destroy(); |
---|
149 | kohde.Destroy(); |
---|
150 | |
---|
151 | } |
---|
152 | void TorninLiike(AnalogState hiirenLiike) |
---|
153 | { |
---|
154 | Vector suunta = (Mouse.PositionOnWorld - torni.AbsolutePosition).Normalize(); |
---|
155 | torni.AbsoluteAngle = suunta.Angle; |
---|
156 | } |
---|
157 | void Aja(Vector suunta) |
---|
158 | { |
---|
159 | Vector menosuunta = Vector.FromLengthAndAngle(suunta.Y, pelaaja.Angle); |
---|
160 | pelaaja.Push(menosuunta); |
---|
161 | |
---|
162 | } |
---|
163 | void Kaanny(int kaannos) |
---|
164 | { |
---|
165 | pelaaja.Angle += Angle.FromDegrees(kaannos); |
---|
166 | } |
---|
167 | } |
---|