Beispiel #1
0
 public Map()
 {
     Layer = (int)Global.LayerPriority.Map;
     Tilemap = new Tilemap(Resources.Sprites.TILE_IMG, Global.WIDTH, Global.HEIGHT, 32, 32);
     Tilemap.CenterOrigin();
     AddGraphic(Tilemap);
     //Graphic.CenterOrigin();
     Tilemap.SetTile(0, 0, 0);
     Tilemap.SetTile(1, 0, 0);
     Tilemap.SetTile(2, 0, 0);
     Tilemap.SetTile(0, 4, 1);
     Tilemap.SetTile(2, 12, 3);
 }
Beispiel #2
0
        public Floor()
        {
            floorMap = new Tilemap(Assets.GFX_FLOORTILES, 256 * 64, 64);
            floorCol = new GridCollider(256 * 64, 256 * 64, 64, 64, (int)Global.ColliderTags.FLOOR);
            wallMap = new Tilemap(Assets.GFX_WALLTILES, 256 * 64, 64);
            wallCol = new GridCollider(256 * 64, 256 * 64, 64, 64, (int)Global.ColliderTags.WALL);
            myGasManager.relatedFloor = this;
            GenerateMap();

            AddGraphic(floorMap);
            AddCollider(floorCol);
            AddGraphic(wallMap);
            AddCollider(wallCol);
        }
Beispiel #3
0
        public override void Added()
        {
            base.Added();

            // Create the grid collider based off of the scene's dimensions.
            GridCollider = new GridCollider(Scene.Width, Scene.Height, GridSize, GridSize);

            // Create the tilemap based off of the scene's dimensions.
            Tilemap = new Tilemap("tiles.png", Scene.Width, Scene.Height, GridSize, GridSize);

            // Add the tilemap graphic.
            AddGraphic(Tilemap);

            // Add the grid collider.
            AddCollider(GridCollider);
        }
Beispiel #4
0
        // we need text-reveal mode or sth. edit richtext?
        public PlayState()
        {
            //Load shader
            VHSShader = new Shader(ShaderType.Fragment, Assets.VHS_SHADER);
            VHSShader2 = new Shader(ShaderType.Fragment, Assets.VHS_SHADER2);
            Global.theGame.Surface.AddShader(VHSShader);
            Global.theGame.Surface.AddShader(VHSShader2);

            // Create starfield.
            starFieldFar = new Image(Assets.GFX_STARFIELD);
            starFieldFar.Repeat = true;
            starFieldFar.Scroll = 0.3f;
            starFieldMid = new Image(Assets.GFX_STARFIELD);
            starFieldMid.Repeat = true;
            starFieldMid.Scroll = 0.6f;
            starFieldMid.Scale = 1.5f;
            starFieldClose = new Image(Assets.GFX_STARFIELD);
            starFieldClose.Repeat = true;
            starFieldClose.Scroll = 1.3f;
            starFieldClose.Scale = 3.0f;
            starFieldClose.Alpha = 0.5f;

            AddGraphic(starFieldFar);
            AddGraphic(starFieldMid);
            AddGraphic(starFieldClose);

            // Load map
            floorTiles = mapProject.CreateTilemap((TiledTileLayer)mapProject.Layers[0]);
            wallTiles = mapProject.CreateTilemap((TiledTileLayer)mapProject.Layers[1], mapProject.TileSets[1]);

            // Make sure walls have the correct tiles
            wallCollision = mapProject.CreateGridCollider((TiledTileLayer)mapProject.Layers[1], 3);
            floorCollision = mapProject.CreateGridCollider((TiledTileLayer)mapProject.Layers[0], 8);

            // Move camera to start point
            TiledObjectGroup mapObjects = (TiledObjectGroup)mapProject.Layers[2];
            TiledObject strt = mapObjects.Objects[0];

            // Make machines

            CameraX = strt.X - 320;
            CameraY = strt.Y - 240;

            // Add player
            thePlayer = new Player(strt.X, strt.Y);
            thePlayer.Layer = 20;

            // Add station & player to scene

            AddGraphic(floorTiles);
            Add(thePlayer);

            // Make items / machines
            for (int i = 0; i < mapObjects.Objects.Count; i++)
            {
                TiledObject curObj = mapObjects.Objects[i];
                if (curObj.Name == "Wrench")
                {
                    Item newWrench = new Item(curObj.X, curObj.Y, 4);
                    Add(newWrench);
                }
                if (curObj.Name == "Crisps")
                {
                    Item newWrench = new Item(curObj.X, curObj.Y, 7);
                    Add(newWrench);
                }
                if (curObj.Name == "Donut")
                {
                    Item newWrench = new Item(curObj.X, curObj.Y, 6);
                    Add(newWrench);
                }
                if (curObj.Name == "VendingMachine")
                {
                    Machine newMachine = new Machine(curObj.X, curObj.Y, "Vending Machine", "Full of delicious snacks.", "Looks like it's busted.", "It's rebooting.", 300, Assets.GFX_MACHINETOP, Assets.GFX_VENDING);
                    Add(newMachine);
                }
                if (curObj.Name == "Computer")
                {
                    Machine newMachine = new Machine(curObj.X, curObj.Y, "Computer", "The communications terminal... me.", "ERROR: HHHH\nhelp\n \n{color:ff0000}ERRCODE#391293EFF3{color:ffffff}", "It was just a screensaver.\nYou idiot.", 600, Assets.GFX_PC_TOP, Assets.GFX_PC_FRONT);
                    Add(newMachine);
                }
                if (curObj.Type == "AirlockVert")
                {
                    Airlock newAirlock = new Airlock(curObj.X, curObj.Y, true);
                    Add(newAirlock);

                }
                if (curObj.Type == "AirlockHoriz")
                {
                    Airlock newAirlock = new Airlock(curObj.X, curObj.Y, false);
                    Add(newAirlock);

                }
            }

            AddGraphic(wallTiles);
            Add(thePlayer.crossHair);

            wallTest = new Entity(0, 0, null, wallCollision);
            Add(wallTest);
            floorTest = new Entity(0, 0, null, floorCollision);
            Add(floorTest);

            // Add hud
            msgBox = new Image(Assets.GFX_HUD);
            msgBox.Scroll = 0;
            msgBox.CenterOrigin();
            msgBox.X = 320;
            msgBox.Y = 255 + msgBox.Height + 16;
            Entity hud1 = new Entity();

            hud1.AddGraphic(msgBox);
            hud1.Layer = 10;
            Add(hud1);

            msgText = new RichText("", Assets.FONT_MSG, 8, 270, 50);
            msgText.DefaultShakeX = 0.4f;
            msgText.DefaultShakeY = 0.4f;
            msgText.X = 325 - msgBox.HalfWidth;
            msgText.Y = 255 + msgBox.Height - 8;
            msgText.Scroll = 0;
            msgText.String = "";
            Entity hud2 = new Entity();

            hud2.AddGraphic(msgText);
            hud2.Layer = 5;
            Add(hud2);
        }
Beispiel #5
0
 /// <summary>
 /// Load collision data from a Tilemap.
 /// </summary>
 /// <param name="source">The source Tilemap.</param>
 /// <param name="layerName">The layer of tiles to use to mark collisions.</param>
 public void LoadTilemap(Tilemap source, Enum layerName)
 {
     LoadTilemap(source, source.LayerDepth(layerName));
 }
Beispiel #6
0
 /// <summary>
 /// Load collision data from a Tilemap.
 /// </summary>
 /// <param name="source">The source Tilemap.</param>
 /// <param name="layerDepth">The layer of tiles to use to mark collisions.</param>
 public void LoadTilemap(Tilemap source, int layerDepth)
 {
     if (source.Width != Width) throw new ArgumentException("Tilemap size and tile size must match grid size and tile size.");
     if (source.Height != Height) throw new ArgumentException("Tilemap size and tile size must match grid size and tile size.");
     if (source.TileWidth != TileWidth) throw new ArgumentException("Tilemap size and tile size must match grid size and tile size.");
     if (source.TileWidth != TileWidth) throw new ArgumentException("Tilemap size and tile size must match grid size and tile size.");
     foreach(var t in source.GetTiles(layerDepth)) {
         SetTile(t.X / TileWidth, t.Y / TileHeight, true);
     }
 }
        /// <summary>
        /// Load data into a scene from a source .oel file.
        /// </summary>
        /// <param name="source">The oel to load.</param>
        /// <param name="scene">The scene to load into.</param>
        public void LoadLevel(string source, Scene scene)
        {
            Entities.Clear();

            var xmlDoc = new XmlDocument();
            xmlDoc.Load(source);

            var xmlLevel = xmlDoc["level"];

            scene.Width = int.Parse(xmlDoc["level"].Attributes["width"].Value);
            scene.Height = int.Parse(xmlDoc["level"].Attributes["height"].Value);

            int i = 0;

            foreach (var layer in Layers.Values) {

                if (layer.Type == "GridLayerDefinition") {
                    var Entity = new Entity();

                    var grid = new GridCollider(scene.Width, scene.Height, layer.GridWidth, layer.GridHeight);

                    grid.LoadString(xmlLevel[layer.Name].InnerText);
                    if (ColliderTags.ContainsKey(layer.Name)) {
                        grid.AddTag(ColliderTags[layer.Name]);
                    }

                    if (DisplayGrids) {
                        var tilemap = new Tilemap(scene.Width, scene.Height, layer.GridWidth, layer.GridHeight);
                        tilemap.LoadString(xmlLevel[layer.Name].InnerText, layer.Color);
                        Entity.AddGraphic(tilemap);
                    }

                    Entity.AddCollider(grid);

                    scene.Add(Entity);
                    Entities.Add(layer.Name, Entity);
                }
                if (layer.Type == "TileLayerDefinition") {
                    var Entity = new Entity();

                    var xmlTiles = xmlLevel[layer.Name];

                    var tileset = xmlTiles.Attributes["tileset"].Value;

                    var tilemap = new Tilemap(ImagePath + TileMaps[tileset], scene.Width, scene.Height, layer.GridWidth, layer.GridHeight);

                    foreach (XmlElement t in xmlTiles) {
                        tilemap.SetTile(t);
                    }

                    tilemap.Update();

                    Entity.AddGraphic(tilemap);

                    Entity.Layer = BaseTileDepth - i * TileDepthIncrement;
                    i++;

                    scene.Add(Entity);
                    Entities.Add(layer.Name, Entity);
                }
                if (layer.Type == "EntityLayerDefinition") {
                    var xmlEntities = xmlLevel[layer.Name];

                    foreach (XmlElement e in xmlEntities) {
                        CreateEntity(e, scene);
                    }
                }

            }

            if (UseCameraBounds) {
                scene.CameraBounds = new Rectangle(0, 0, scene.Width, scene.Height);
                scene.UseCameraBounds = true;
            }
        }
Beispiel #8
0
 /// <summary>
 /// Returns the index of the tile on the source Texture of a Tilemap.
 /// </summary>
 /// <param name="tilemap">The Tilemap that uses the Texture to be tested against.</param>
 /// <returns>The index of the tile on the Tilemap's Texture.</returns>
 public int GetIndex(Tilemap tilemap) {
     return Util.OneDee(tilemap.Texture.Width / Width, TX / Width, TY / Height);
 }
Beispiel #9
0
 /// <summary>
 /// Merges another tilemap into this one.
 /// </summary>
 /// <param name="other">The tilemap to merge into this one.</param>
 /// <param name="above">True if the other tilemap's base layer should be above this one's base layer.</param>
 public void MergeTilemap(Tilemap other, string layerPrefix = "", int layerOffset = -1) {
     foreach (var layer in other.TileLayers) {
         AddLayer(layerPrefix + other.LayerName(layer.Key), layer.Key + layerOffset);
         TileLayers[layer.Key + layerOffset] = new List<TileInfo>(other.TileLayers[layer.Key]);
     }
 }
Beispiel #10
0
        public void LoadLevel(String LevelToLoad)
        {
            Global.theGame.Color = new Color("9cd9e2");
            CurrentLevel = LevelToLoad;
            LoadedLevel = new TiledProject(LevelToLoad);

            // Load Layers
            BackgroundLayer = LoadedLevel.CreateTilemap((TiledTileLayer)LoadedLevel.Layers[0]);
            SolidLayer = LoadedLevel.CreateTilemap((TiledTileLayer)LoadedLevel.Layers[1]);
            DecorationLayer = LoadedLevel.CreateTilemap((TiledTileLayer)LoadedLevel.Layers[2]);

            // Create collision layer
            CollisionLayer = LoadedLevel.CreateGridCollider((TiledTileLayer)LoadedLevel.Layers[1], Tags.GROUND_SOLID_COLLISION);
            Entity CollisionEnt = new Entity();
            CollisionEnt.AddCollider(CollisionLayer);
            Add(CollisionEnt);

            // Add Graphics for lower layers
            AddGraphic(BackgroundLayer);
            AddGraphic(SolidLayer);

            // Objects go between the solid and decoration layers
            CreateLevelObjects();

            // Set camera bounds based on map size.
            UseCameraBounds = true;
            ApplyCamera = true;
            CameraBounds.X = 0;
            CameraBounds.Y = 0;
            CameraBounds.Width = LoadedLevel.PixelWidth;
            CameraBounds.Height = LoadedLevel.PixelHeight;

            // Finish up
            Entity ForegroundEnt = new Entity();
            ForegroundEnt.AddGraphic(DecorationLayer);
            ForegroundEnt.Layer = Layers.FG;
            Add(ForegroundEnt);
        }
Beispiel #11
0
        /// <summary>
        /// Load level data from a string into a Scene.
        /// </summary>
        /// <param name="data">The level data to load.</param>
        /// <param name="scene">The Scene to load into.</param>
        public void LoadLevel(string data, Scene scene)
        {
            Entities.Clear();

            CurrentLevel = data;

            var xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(data);

            var xmlLevel = xmlDoc["level"];

            scene.Width  = int.Parse(xmlDoc["level"].Attributes["width"].Value);
            scene.Height = int.Parse(xmlDoc["level"].Attributes["height"].Value);

            int i = 0;

            foreach (var layer in Layers.Values)
            {
                if (layer.Type == "GridLayerDefinition")
                {
                    var Entity = new Entity();

                    var grid = new GridCollider(scene.Width, scene.Height, layer.GridWidth, layer.GridHeight);

                    grid.LoadString(xmlLevel[layer.Name].InnerText);
                    if (ColliderTags.ContainsKey(layer.Name))
                    {
                        grid.AddTag(ColliderTags[layer.Name]);
                    }

                    if (DisplayGrids)
                    {
                        var tilemap = new Tilemap(scene.Width, scene.Height, layer.GridWidth, layer.GridHeight);
                        tilemap.LoadString(xmlLevel[layer.Name].InnerText, layer.Color);
                        Entity.AddGraphic(tilemap);
                    }

                    Entity.AddCollider(grid);

                    scene.Add(Entity);
                    Entities.Add(layer.Name, Entity);
                }
                if (layer.Type == "TileLayerDefinition")
                {
                    var Entity = new Entity();

                    var xmlTiles = xmlLevel[layer.Name];

                    var tileset = xmlTiles.Attributes["tileset"].Value;

                    var tilepath = ImagePath + TileMaps[tileset];

                    foreach (var kv in assetMappings)
                    {
                        var find    = kv.Key;
                        var replace = kv.Value;

                        if (tilepath.EndsWith(find))
                        {
                            tilepath = replace;
                            break;
                        }
                    }

                    var tilemap = new Tilemap(tilepath, scene.Width, scene.Height, layer.GridWidth, layer.GridHeight);

                    var exportMode = xmlTiles.Attributes["exportMode"].Value;
                    switch (exportMode)
                    {
                    case "CSV":
                        tilemap.LoadCSV(xmlTiles.InnerText);
                        break;

                    case "XMLCoords":
                        foreach (XmlElement t in xmlTiles)
                        {
                            tilemap.SetTile(t);
                        }
                        break;
                    }

                    tilemap.Update();

                    Entity.AddGraphic(tilemap);

                    Entity.Layer = BaseTileDepth - i * TileDepthIncrement;
                    i++;

                    scene.Add(Entity);
                    Entities.Add(layer.Name, Entity);
                }
                if (layer.Type == "EntityLayerDefinition")
                {
                    var xmlEntities = xmlLevel[layer.Name];

                    if (xmlEntities != null)
                    {
                        foreach (XmlElement e in xmlEntities)
                        {
                            CreateEntity(e, scene);
                        }
                    }
                }
            }

            if (UseCameraBounds)
            {
                scene.CameraBounds    = new Rectangle(0, 0, scene.Width, scene.Height);
                scene.UseCameraBounds = true;
            }
        }
Beispiel #12
0
 /// <summary>
 /// Load collision data from a Tilemap.
 /// </summary>
 /// <param name="source">The source Tilemap.</param>
 /// <param name="layerName">The layer of tiles to use to mark collisions.</param>
 public void LoadTilemap(Tilemap source, Enum layerName)
 {
     LoadTilemap(source, source.LayerDepth(layerName));
 }
Beispiel #13
0
        /// <summary>
        /// Load data into a scene from a source .oel file.
        /// </summary>
        /// <param name="source">The oel to load.</param>
        /// <param name="scene">The scene to load into.</param>
        public void LoadLevel(string source, Scene scene)
        {
            Entities.Clear();

            var xmlDoc = new XmlDocument();

            xmlDoc.Load(source);

            var xmlLevel = xmlDoc["level"];

            scene.Width  = int.Parse(xmlDoc["level"].Attributes["width"].Value);
            scene.Height = int.Parse(xmlDoc["level"].Attributes["height"].Value);

            int i = 0;

            foreach (var layer in Layers.Values)
            {
                if (layer.Type == "GridLayerDefinition")
                {
                    var Entity = new Entity();

                    var grid = new GridCollider(scene.Width, scene.Height, layer.GridWidth, layer.GridHeight);

                    grid.LoadString(xmlLevel[layer.Name].InnerText);
                    if (ColliderTags.ContainsKey(layer.Name))
                    {
                        grid.AddTag(ColliderTags[layer.Name]);
                    }

                    if (DisplayGrids)
                    {
                        var tilemap = new Tilemap(scene.Width, scene.Height, layer.GridWidth, layer.GridHeight);
                        tilemap.LoadString(xmlLevel[layer.Name].InnerText, layer.Color);
                        Entity.AddGraphic(tilemap);
                    }

                    Entity.AddCollider(grid);

                    scene.Add(Entity);
                    Entities.Add(layer.Name, Entity);
                }
                if (layer.Type == "TileLayerDefinition")
                {
                    var Entity = new Entity();

                    var xmlTiles = xmlLevel[layer.Name];

                    var tileset = xmlTiles.Attributes["tileset"].Value;

                    var tilemap = new Tilemap(ImagePath + TileMaps[tileset], scene.Width, scene.Height, layer.GridWidth, layer.GridHeight);

                    foreach (XmlElement t in xmlTiles)
                    {
                        tilemap.SetTile(t);
                    }

                    tilemap.Update();

                    Entity.AddGraphic(tilemap);

                    Entity.Layer = BaseTileDepth - i * TileDepthIncrement;
                    i++;

                    scene.Add(Entity);
                    Entities.Add(layer.Name, Entity);
                }
                if (layer.Type == "EntityLayerDefinition")
                {
                    var xmlEntities = xmlLevel[layer.Name];

                    if (xmlEntities != null)
                    {
                        foreach (XmlElement e in xmlEntities)
                        {
                            CreateEntity(e, scene);
                        }
                    }
                }
            }

            if (UseCameraBounds)
            {
                scene.CameraBounds    = new Rectangle(0, 0, scene.Width, scene.Height);
                scene.UseCameraBounds = true;
            }
        }