source: 2017/27/MikkoH/Sbinu/Sbinu/Sbinu/Sbinu.cs @ 8977

Revision 8977, 4.0 KB checked in by mianhayr, 4 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
9
10
11public 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;
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        Window.Height = 800; Window.Width = 500;
25        Level.Width = Window.Width; Level.Height = Window.Height;
26
27        Level.Background.Color = Color.Lavender;
28        if (currImg == null) currImg = imgs[0];
29
30        spinner = new PhysicsObject(300, 300, Shape.Circle);
31        spinner.Image = currImg;
32        spinner.AngularDamping = angVel;
33        Add(spinner);
34
35        Mouse.IsCursorVisible = true;
36        Mouse.ListenOn(spinner, MouseButton.Left, ButtonState.Pressed, () => spinner.AngularVelocity += 5, null);
37        Mouse.Listen(MouseButton.Right, ButtonState.Pressed, () => spinner.AngularVelocity -= 5, null);
38
39        l = new Label(); l.Position = new Vector(0, -200); Add(l);
40
41        PushButton pb = new PushButton("shob");
42        pb.Position = new Vector(Level.Left + 50, Level.Bottom + 30);
43        Add(pb); pb.Clicked += fStore;
44
45        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
46        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
47    }
48
49    void fStore()
50    {
51        ClearAll();
52        Window.Height = 800;
53        spinner.AngularVelocity = 0;
54        spinner.Angle = Angle.FromDegrees(0);
55        Level.Background.Color = Color.Beige;
56
57        cash = new Label();
58        cash.Y = -200;
59        cash.Text = ((int)spins).ToString();
60        Add(cash);
61
62        Mouse.ListenMovement(1.0, (a) => { foreach (PushButton g in items) g.Image = Mouse.IsCursorOn(g) ? redImgs[items.IndexOf(g) + 1] : imgs[items.IndexOf(g) + 1]; }, null);
63
64        PushButton leave = new PushButton("kikee");
65        leave.Position = new Vector(Level.Left + 50, Level.Bottom + 30);
66        leave.Clicked += delegate {
67            items.Clear();
68            ClearAll();
69            Begin(); };
70        Add(leave);
71
72        AddItem(new Vector(-150, 0), imgs[1], 10, ItemType.skin);
73        AddItem(new Vector(0, 0), imgs[2], 20, ItemType.skin);
74        AddItem(new Vector(150, 0), imgs[3], 30, ItemType.skin);
75
76        AddItem(new Vector(-150, -200), imgs[4], 1, ItemType.upgrade, 0.9);
77        AddItem(new Vector(0, -200), imgs[5], 2, ItemType.upgrade, 0.95);
78        AddItem(new Vector(150, -200), imgs[6], 50, ItemType.upgrade, 0.995 );
79    }
80
81    void AddItem(Vector pos, Image img, int price, ItemType i, double vel = 0)
82    {
83        PushButton pb = new PushButton(150, 150, img);
84        pb.Position = pos; pb.Tag = "item"; Add(pb);
85        items.Add(pb);
86       
87        pb.Clicked += () => { if (spins >= price)
88            {
89                spins -= price; angle -= price * 360;
90                cash.Text = ((int)spins).ToString();
91                if (i == ItemType.skin) currImg = img;
92                if (i == ItemType.upgrade) angVel = vel;
93                MessageDisplay.Add("bought");
94            } else MessageDisplay.Add("get moni"); };
95
96        Label l = new Label(price + " spins");
97        l.Position = new Vector(pb.X, pb.Y - 75); Add(l);
98    }
99
100    void AddUpgrade()
101    {
102
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
111        base.Update(time);
112    }
113}
Note: See TracBrowser for help on using the repository browser.