Beispiel #1
0
        private Node2D GenerateScene(OgmoProject project, OgmoLevel level, out Node2D player)
        {
            nodes  = new List <Node2D>();
            player = null;
            var tileMap = (TileMap)((PackedScene)ResourceLoader.Load("res://prefab/TileMap.tscn")).Instance();

            tileMap.Name = "TileMap";
            Node2D ultimateParent = new Node2D();

            ultimateParent.Name = "Level";
            ultimateParent.AddChild(tileMap);

            //Load set tiles in
            var tileData = level.layers.First(x => x.name == "Tiles").data2D;

            for (int y = 0; y < tileData.Count; y++)
            {
                for (int x = 0; x < tileData[y].Count; x++)
                {
                    tileMap.SetCell(x, y, tileData[y][x]);
                    if (y == 0)
                    {
                        tileMap.SetCell(x, -1, 0);
                    }
                    if (x == 0)
                    {
                        tileMap.SetCell(-1, y, 0);
                    }
                    if (x == tileData.Count - 1)
                    {
                        tileMap.SetCell(tileData.Count, y, 0);
                    }
                    if (y == tileData[y].Count - 1)
                    {
                        tileMap.SetCell(x, tileData[y].Count, 0);
                    }
                }
            }

            var playerScene         = (PackedScene)ResourceLoader.Load("res://prefab/PlayerOwl.tscn");
            var bugScene            = ((PackedScene)ResourceLoader.Load("res://prefab/Enemies/Bug.tscn"));
            var beeScene            = ((PackedScene)ResourceLoader.Load("res://prefab/Enemies/Beee.tscn"));
            var carnosaurScene      = ((PackedScene)ResourceLoader.Load("res://prefab/Enemies/Carnosaur.tscn"));
            var carnosaurusRexScene = ((PackedScene)ResourceLoader.Load("res://prefab/Enemies/CarnosaurusRex.tscn"));

            var playerEntity = level.layers.First(x => x.name == "Entity").entities.First(x => x.name == "LevelSpawn");

            player          = (Node2D)playerScene.Instance();
            player.Name     = "Player_" + playerEntity._eid;
            player.Position = new Vector2(playerEntity.x, playerEntity.y);

            foreach (var entity in level.layers.First(x => x.name == "Entity").entities)
            {
                Node2D childInstance = null;
                switch (entity.name)
                {
                case "Walker":
                    childInstance      = (Node2D)bugScene.Instance();
                    childInstance.Name = "Walker_" + entity._eid;
                    break;

                case "TargetFlyer":
                    childInstance      = (Node2D)carnosaurScene.Instance();
                    childInstance.Name = "Flyer_" + entity._eid;
                    break;

                case "Bee":
                    childInstance      = (Node2D)beeScene.Instance();
                    childInstance.Name = "Bee_" + entity._eid;
                    break;

                case "Boss":
                    childInstance      = (Node2D)carnosaurusRexScene.Instance();
                    childInstance.Name = "Boss_" + entity._eid;
                    break;
                }
                if (childInstance != null)
                {
                    childInstance.AddToGroup("enemy", true);
                    nodes.Add(childInstance);
                    ultimateParent.AddChild(childInstance);
                    childInstance.Position = new Vector2(entity.x, entity.y);
                }
            }

            return(ultimateParent);
        }
Beispiel #2
0
 void addItemToGroup(string groupId)
 {
     currentlyAdded.AddToGroup(groupId);
 }