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 | |
---|
10 | |
---|
11 | public class Sbinu : PhysicsGame |
---|
12 | { |
---|
13 | Image[] imgs = LoadImages("def", "2", "3", "4", "rustyLager","lightLager", "trustyLagers"); |
---|
14 | Image[] redImgs = LoadImages(null, "2_red", "3_red", "4_red", "rustyLager_red","lightLager_red", "trustyLagers_red" ); |
---|
15 | Image currImg; SoundEffect spin = LoadSoundEffect("spinner4"); |
---|
16 | List<PushButton> items = new List<PushButton>(); |
---|
17 | |
---|
18 | enum ItemType { skin, upgrade }; |
---|
19 | PhysicsObject spinner; Label l; Label cash; |
---|
20 | double angle = -180, angVel = 0.8; int spins = 0; |
---|
21 | |
---|
22 | public override void Begin() |
---|
23 | { |
---|
24 | if (!MediaPlayer.IsPlaying) MediaPlayer.Play("bgmp3"); |
---|
25 | Window.Height = 800; Window.Width = 500; |
---|
26 | Level.Width = Window.Width; Level.Height = Window.Height; |
---|
27 | |
---|
28 | //Sound spinSound = spin.CreateSound(); |
---|
29 | //spinSound.IsLooped = true; |
---|
30 | //spinSound.Play(); |
---|
31 | //spin.Play(); |
---|
32 | |
---|
33 | Level.Background.Color = Color.Lavender; |
---|
34 | if (currImg == null) currImg = imgs[0]; |
---|
35 | |
---|
36 | spinner = new PhysicsObject(300, 300, Shape.Circle); |
---|
37 | spinner.Image = currImg; |
---|
38 | spinner.AngularDamping = angVel; |
---|
39 | Add(spinner); |
---|
40 | |
---|
41 | Mouse.IsCursorVisible = true; |
---|
42 | Mouse.ListenOn(spinner, MouseButton.Left, ButtonState.Pressed, () => spinner.AngularVelocity += 5, null); |
---|
43 | Mouse.ListenOn(spinner, MouseButton.Right, ButtonState.Pressed, () => spinner.AngularVelocity -= 5, null); |
---|
44 | |
---|
45 | l = new Label(); l.Position = new Vector(0, -200); Add(l); |
---|
46 | |
---|
47 | PushButton pb = new PushButton("shob"); |
---|
48 | pb.Position = new Vector(Level.Left + 50, Level.Bottom + 30); |
---|
49 | Add(pb); pb.Clicked += fStore; |
---|
50 | |
---|
51 | PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); |
---|
52 | Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); |
---|
53 | } |
---|
54 | |
---|
55 | void fStore() |
---|
56 | { |
---|
57 | ClearAll(); |
---|
58 | Window.Height = 800; |
---|
59 | spinner.AngularVelocity = 0; |
---|
60 | spinner.Angle = Angle.FromDegrees(0); |
---|
61 | Level.Background.Color = Color.Beige; |
---|
62 | |
---|
63 | cash = new Label(); |
---|
64 | cash.Y = -200; |
---|
65 | cash.Text = ((int)spins).ToString(); |
---|
66 | Add(cash); |
---|
67 | |
---|
68 | Mouse.ListenMovement(1.0, (a) => { foreach (PushButton g in items) g.Image = Mouse.IsCursorOn(g) ? |
---|
69 | redImgs[items.IndexOf(g) + 1] : |
---|
70 | imgs[items.IndexOf(g) + 1]; }, null); |
---|
71 | |
---|
72 | PushButton leave = new PushButton("kikee"); |
---|
73 | leave.Position = new Vector(Level.Left + 50, Level.Bottom + 30); |
---|
74 | leave.Clicked += delegate { items.Clear(); ClearAll(); Begin(); }; |
---|
75 | Add(leave); |
---|
76 | |
---|
77 | AddItem(new Vector(-150, 0), imgs[1], 10, ItemType.skin); |
---|
78 | AddItem(new Vector(0, 0), imgs[2], 20, ItemType.skin); |
---|
79 | AddItem(new Vector(150, 0), imgs[3], 30, ItemType.skin); |
---|
80 | |
---|
81 | AddItem(new Vector(-150, -200), imgs[4], 1, ItemType.upgrade, 0.9); |
---|
82 | AddItem(new Vector(0, -200), imgs[5], 2, ItemType.upgrade, 0.95); |
---|
83 | AddItem(new Vector(150, -200), imgs[6], 2, ItemType.upgrade, 0.995 ); |
---|
84 | } |
---|
85 | |
---|
86 | void AddItem(Vector pos, Image img, int price, ItemType i, double vel = 0) |
---|
87 | { |
---|
88 | PushButton pb = new PushButton(150, 150, img); |
---|
89 | pb.Position = pos; pb.Tag = "item"; Add(pb); |
---|
90 | items.Add(pb); |
---|
91 | |
---|
92 | pb.Clicked += () => { if (spins >= price) |
---|
93 | { |
---|
94 | spins -= price; angle -= price * 360; |
---|
95 | cash.Text = ((int)spins).ToString(); |
---|
96 | if (i == ItemType.skin) currImg = img; |
---|
97 | if (i == ItemType.upgrade) angVel = vel; |
---|
98 | MessageDisplay.Add("bought"); |
---|
99 | } else MessageDisplay.Add("get moni"); }; |
---|
100 | |
---|
101 | Label l = new Label(price + " spins"); |
---|
102 | l.Position = new Vector(pb.X, pb.Y - 75); Add(l); |
---|
103 | } |
---|
104 | |
---|
105 | protected override void Update(Time time) |
---|
106 | { |
---|
107 | angle += (spinner.AngularVelocity*time.SinceLastUpdate.TotalSeconds) * (180/Math.PI); |
---|
108 | spins = (int)angle / 360; |
---|
109 | l.Text = String.Format("velocity = {0:0} \n kierrokset = {1:0}", spinner.AngularVelocity * 1000, spins); |
---|
110 | if (!spin.IsPlaying && (spinner.AngularVelocity > 0.1 || spinner.AngularVelocity < -0.1)) spin.Play(1, spinner.AngularVelocity/100000, 0); |
---|
111 | |
---|
112 | |
---|
113 | base.Update(time); |
---|
114 | } |
---|
115 | } |
---|