source: 2016/27/ohjaajat/VenienteFragore/VenienteFragore/VenienteFragore/VenienteFragore.cs @ 7733

Revision 7733, 3.3 KB checked in by sieerinn, 3 years ago (diff)

Objektien luontia aloitettu

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class VenienteFragore : SimplePhysics.Game
10{
11    private delegate void ObjectMethod(Vector position, double width, double height, Dictionary<string, string> properties);
12    private Dictionary<string, ObjectMethod> objectMethods;
13
14    public VenienteFragore() : base(tileSize: 50)
15    {
16    }
17
18    public override void Begin()
19    {
20        objectMethods = new Dictionary<string, ObjectMethod>();
21        objectMethods.Add("ball", TestBall);
22        objectMethods.Add("player", CreatePlayer);
23
24        var tileMap = TiledTileMap.FromLevelAsset("thehub");
25        tileMap.SetTileMethod("Tile Layer 1", TileMethod);
26        tileMap.SetObjectMethod("Object Layer 1", CreateObject);
27        tileMap.Execute();
28
29        Gravity = new Vector(0, -800);
30
31        Camera.ZoomToAllObjects();
32
33        Level.Background.Color = Color.AshGray;
34
35        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
36    }
37
38    private void CreateObject(Vector position, double width, double height, Angle angle, Shape shape, string name, Dictionary<string, string> properties)
39    {
40        objectMethods[name](position, width, height, properties);
41    }
42
43    void TestBall(Vector position, double width, double height, Dictionary<string, string> properties)
44    {
45        var testObject = new SimplePhysics.Object(TileSize * 0.99, TileSize * 0.99);
46        testObject.Position = position;
47        testObject.Color = Color.DarkGreen;
48        testObject.Shape = Shape.Circle;
49        testObject.RestitutionX = 0.5;
50        testObject.RestitutionY = 0.5;
51        testObject.CollisionIgnoreGroup = 1;
52        Add(testObject);
53    }
54
55    void CreatePlayer(Vector position, double width, double height, Dictionary<string, string> properties)
56    {
57       
58    }
59
60    private void TileMethod(int x, int y, Image image, string layerName, Dictionary<string, string> properties)
61    {
62        var tile = new SimplePhysics.Object(TileSize, TileSize) { IsStatic = true };
63        tile.Image = image;
64        Add(tile);
65        SetTile(x, y, tile);
66
67        if (properties.ContainsKey("type"))
68        {
69            var features = properties["type"].Split(',');
70            foreach (var feature in features)
71            {
72                ApplyFeature(tile, feature);
73            }
74        }
75    }
76
77    private void ApplyFeature(SimplePhysics.Object tile, string feature)
78    {
79        switch (feature)
80        {
81            case "ice":
82                tile.Friction = 0.0;
83                break;
84
85            case "death":
86                tile.Tag = "death";
87                break;
88
89            case "oneway":
90                tile.OneWayPlatform = true;
91                break;
92
93            case "break":
94                tile.AddCollisionHandler("player", (t, player) =>
95                {
96                    if (player.Top <= tile.Bottom)
97                    {
98                        tile.Destroy();
99                    }
100                });
101                break;
102            default:
103                throw new Exception("Unknown tile feature: " + feature);
104        }
105    }
106}
Note: See TracBrowser for help on using the repository browser.