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

Revision 8995, 4.4 KB checked in by mianhayr, 6 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; 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}
Note: See TracBrowser for help on using the repository browser.