source: 2016/27/PaavoH/GoldbergMachineSimulator/GoldbergMachineSimulator/GoldbergMachineSimulator/GoldbergMachineSimulator.cs @ 10077

Revision 10077, 3.0 KB checked in by paharvol, 2 months 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 GoldbergMachineSimulator : PhysicsGame
10{
11    PhysicsObject bottle;
12   
13    bool paalla = false;
14
15    public override void Begin()
16    {
17        PhoneBackButton.Listen(ConfirmExit, null);
18        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, null);
19
20        Gravity = new Vector(0.0, -800.0);
21
22        Bottle();
23
24        var plank = PhysicsObject.CreateStaticObject(300.0, 30);
25        plank.Y = -90;
26        plank.Color = Color.Violet;
27        Add(plank);
28
29        var plank2 = PhysicsObject.CreateStaticObject(300.0, 30);
30        plank2.Y = -40;
31        plank2.Angle = Angle.FromDegrees(45);
32        plank2.Color = Color.Violet;
33        Add(plank2);
34
35        Keyboard.Listen(Key.Space, ButtonState.Released, delegate { Bottle(); }, "Pelaaja liikkuu vasemmalle");
36        Mouse.ListenWheel(Scroll, "Rullaat!");
37        Mouse.Listen(MouseButton.Left,ButtonState.Down, MoveWithMouse, null);
38        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, delegate
39        {
40            GameObject b = GetObjectAt(Mouse.PositionOnWorld);
41            if (b != null && b is PhysicsObject)
42            {
43                if (GetObjectAt(Mouse.PositionOnWorld)?.Tag == "Bottle")
44                {
45                    bottle = (PhysicsObject)b;
46                    paalla = true;
47                    bottle.IgnoresPhysicsLogics = true;
48                }
49            }
50                   
51        }, null);
52        Mouse.Listen( MouseButton.Left, ButtonState.Up, delegate { paalla = false; if(bottle != null)bottle.IgnoresPhysicsLogics = false; }, null);
53    }
54
55    private void Scroll()
56    {
57        if(paalla)
58        {
59            double speed = 10;
60            bottle.Angle += Angle.FromDegrees(Mouse.WheelChange * speed);
61        }
62    }
63
64    //protected override void Update(Time time)
65    //{
66    //    if(Mouse.PositionOnScreen == bottle.Position)
67    //    {
68    //        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, MoveWithMouse, "");
69    //    }
70    //}
71
72    void Bottle()
73    {
74        //PhysicsStructure fullBottle
75
76        PhysicsObject bottle = new PhysicsObject(30.0, 70.0);
77        bottle.Color = Color.Violet;
78        bottle.Position = (new Vector (0, 0));
79        bottle.Mass = 5;
80        //bottle.CollisionIgnoreGroup = 2;
81        Add(bottle);
82        bottle.Tag = "Bottle";
83
84        PhysicsObject cap = new PhysicsObject(5.0, 2.0);
85        cap.Color = Color.Red;
86        cap.Position = (bottle.Position + new Vector(0, 30));
87        cap.Mass = 2;
88        //cap.CollisionIgnoreGroup = 2;
89        Add(cap);
90
91        AxleJoint bottlestructure = new AxleJoint(cap, bottle);
92        bottlestructure.Softness = 0;
93        Add(bottlestructure);
94    }
95
96    void MoveWithMouse()
97    {
98        if (paalla)
99        {
100            bottle.Position = Mouse.PositionOnWorld;
101        }
102    }
103}
Note: See TracBrowser for help on using the repository browser.