source: 2010/27/sijoseha/BuildingBuilder/Peli.cs @ 1118

Revision 1118, 2.5 KB checked in by sijoseha, 11 years ago (diff)

BuildingBuilder? eka versio

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5
6public class Peli : PhysicsGame
7{
8    //PhysicsObject block;
9    PhysicsObject ground;
10    PhysicsObject newestBlock;
11
12    PhysicsObject dropArrow;
13    Image dropArrowImage;
14    Boolean drop;
15    WandererBrain dropArrowBrain;
16
17    protected override void Begin()
18    {
19        LoadContent();
20        CreateLevel();
21        Keyboard.Listen(Key.Space, ButtonState.Released, CreateBlock, "");
22        //CreateBlock(new Vector(0, 200));
23        //CreateBlock(new Vector(10, 350));
24        //CreateBlock(new Vector(-10, 500));
25    }
26    void LoadContent()
27    {
28        dropArrowImage = LoadImage("dropArrow");
29    }
30    void CreateLevel()
31    {
32        ground = Level.CreateGround(Level.Bottom, 20, 10, Color.Green, 10);
33        Camera.ZoomToLevel();
34        Gravity = new Vector(0, -400);
35        drop = true;
36
37        CreateDropArrow();
38    }
39
40    void CreateDropArrow()
41    {
42        dropArrow = new PhysicsObject(48, 48);
43        dropArrow.Image = dropArrowImage;
44        dropArrow.Position = new Vector(Camera.X, Camera.Y + 350);
45        Add(dropArrow);
46
47        UpdateDropArrowBrain();
48    }
49
50    void UpdateDropArrowBrain()
51    {
52        dropArrow.Y = Camera.Y + 350;
53        dropArrowBrain = new WandererBrain();
54        Vector point1 = new Vector(Camera.X - 150, Camera.Y + 350);
55        Vector point2 = new Vector(Camera.X + 150, Camera.Y + 350);
56        dropArrowBrain.Add(point1, point2);
57        dropArrowBrain.Active = true;
58        dropArrowBrain.MovingSpeed = 100;
59        dropArrow.Brain = dropArrowBrain;
60    }
61
62    void CreateBlock()
63    {
64        if (drop)
65        {
66            drop = false;
67            PhysicsObject block = new PhysicsObject(100, 100, Shapes.Rectangle);
68            block.Position = new Vector(dropArrow.X, Camera.Y + 200);
69            block.KineticFriction = 1.0;
70            block.AngularVelocity = 0;
71            //block.CanRotate = false;
72            block.LinearDamping = 1.0;
73            block.Restitution = 0.2;
74            block.Tag = "block";
75            Add(block);
76            newestBlock = block;
77            AddCollisionHandler(block, BlockCollision);
78        }
79    }
80
81    void BlockCollision(PhysicsObject collider, PhysicsObject target)
82    {
83        if (collider == newestBlock)
84        {
85            drop = true;
86        }
87        if (collider.Y > Camera.Y)
88        {
89            Camera.Y += 100;
90            UpdateDropArrowBrain();
91        }
92    }
93}
Note: See TracBrowser for help on using the repository browser.