source: 2016/26/JonniN/TankHero/TankHero/TankHero/TankHero.cs @ 7599

Revision 7599, 5.0 KB checked in by jonnurmi, 7 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public 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}
Note: See TracBrowser for help on using the repository browser.