source: 2014/27/ArttuR/Peli_1/Peli_1/Peli_1/Peli_1/Peli_1.cs @ 5246

Revision 5246, 5.1 KB checked in by arosrinn, 9 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 Peli_1 : PhysicsGame
10{
11    PhysicsObject pelaaja;
12    PhysicsObject hirvio;
13    GameObject tahtain;
14    Vector suunta;
15
16    AssaultRifle pelaajanAse;
17
18    Image avaimenKuva = LoadImage("Avain");
19    Image aseenKuva = LoadImage("ase_1");
20    Image hirvionKuva = LoadImage("Hirvio");
21    Image tahtainKuva = LoadImage("Tahtain");
22    Image seinaKuva = LoadImage("Seina_1");
23    Image pelaajanKuva = LoadImage("Pelaaja");
24    Image lattiaKuva = LoadImage("Lattia_1");
25
26    public override void Begin()
27    {
28        LuoAlkuvalikko();
29
30        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
31        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
32    }
33
34    void AloitaPeli()
35    {
36        LuoKentta();
37    }
38
39    void LuoKentta()
40    {
41
42        LuoPelaaja(Level.Left + 50, 0);
43        LuoHirvio(500, 0);
44        LuoAvain(500, -75);
45        LisaaOhjaimet();
46        Camera.Follow(pelaaja);
47        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Kentta_1");
48
49        Level.Background.Color = Color.Black;
50
51        //ruudut.SetTileMethod(Color.FromHexCode("00FF00"), LuoPelaaja);
52        ruudut.SetTileMethod(Color.Black, LuoSeina);
53        //ruudut.SetTileMethod(Color.Yellow, LuoAvain);
54        //ruudut.SetTileMethod(Color.Red, LuoVihu);
55        //ruudut.SetTileMethod(Color.Brown, LuoOvi);
56        ruudut.SetTileMethod(Color.White, LuoLattia);
57        ruudut.Execute(40, 40);
58
59        //IsMouseVisible = true;
60    }
61
62    void LisaaOhjaimet()
63    {
64        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-20000, 0));
65        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, new Vector(20000, 0));
66        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 20000));
67        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -20000));
68        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", pelaajanAse);
69    }
70
71    void LiikutaPelaajaa(Vector vektori)
72    {
73        pelaaja.Push(vektori);
74    }
75
76    void LuoPelaaja(double x, double y)
77    {
78        pelaaja = new PhysicsObject(20, 20);
79        pelaaja.Shape = Shape.Circle;
80        //pelaaja.Position = paikka;
81        pelaaja.X = x;
82        pelaaja.Y = y;
83        pelaaja.LinearDamping = 0.5;
84        pelaaja.Image = pelaajanKuva;
85        pelaaja.CanRotate = false;
86        pelaaja.RotateImage = true;
87        Add(pelaaja, 2);
88
89        pelaajanAse = new AssaultRifle(30, 10);
90        pelaajanAse.Ammo.Value = 1000;
91        pelaajanAse.FireRate = 2;
92        pelaajanAse.Image = aseenKuva;
93        pelaajanAse.X = 5;
94        pelaajanAse.Y = 10;
95        pelaaja.Add(pelaajanAse);
96        pelaajanAse.Layer = pelaaja.Layer;
97
98        LuoTahtain();
99
100        Camera.Zoom(1.2);
101
102        Mouse.ListenMovement(1.0, HiiriLiikkui, "");
103    }
104
105
106    void HiiriLiikkui(AnalogState hiirenLiike)
107    {
108        suunta = (Mouse.PositionOnWorld - pelaaja.AbsolutePosition).Normalize();
109        pelaaja.Angle = suunta.Angle;
110        tahtain.AbsolutePosition = Mouse.PositionOnWorld;
111    }
112
113
114    void LuoAvain(double x, double y)
115    {
116        PhysicsObject avain = new PhysicsObject(20, 20);
117        avain.Image = avaimenKuva;
118        avain.X = x;
119        avain.Y = y;
120        Add(avain, 2);
121    }
122
123
124    void LuoSeina(Vector paikka, double leveys, double korkeus)
125    {
126        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
127        seina.Position = paikka;
128        seina.Image = seinaKuva;
129        seina.CollisionIgnoreGroup = 1;
130        Add(seina,2);
131    }
132
133
134    void LuoLattia(Vector paikka, double leveys, double korkeus)
135    {
136        GameObject lattia = new GameObject(40, 40);
137        lattia.Position = paikka;
138        lattia.Image = lattiaKuva;
139        Add(lattia,-3);
140    }
141
142    void LuoTahtain()
143    {
144        tahtain = new GameObject (20, 20);
145        tahtain.Image = tahtainKuva;
146        //tahtain.IgnoresPhysicsLogics = true;
147        Add(tahtain, 3);
148    }
149
150    void LuoHirvio(double x, double y)
151    {
152        hirvio = new PhysicsObject(50, 50);
153        hirvio.LinearDamping = 0.5;
154        hirvio.Image = hirvionKuva;
155        hirvio.CanRotate = false;
156        hirvio.X = x;
157        hirvio.Y = y;
158        Add(hirvio, 2);
159
160        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
161        seuraajanAivot.Speed = 200;
162        seuraajanAivot.DistanceFar = 600;
163        seuraajanAivot.TurnWhileMoving = true;
164        hirvio.Brain = seuraajanAivot;
165    }
166
167    void AmmuAseella(AssaultRifle ase)
168    {
169        PhysicsObject ammus = ase.Shoot();
170    }
171
172    void LuoAlkuvalikko()
173    {
174        MultiSelectWindow alkuValikko = new MultiSelectWindow("Peli_1", "Aloita peli", "Asetukset", "Lopeta");
175        Add(alkuValikko);
176
177        Level.Background.Color = Color.Gray;
178
179        alkuValikko.AddItemHandler(0, AloitaPeli);
180    }
181}
Note: See TracBrowser for help on using the repository browser.