Exemplo n.º 1
0
        /// <summary>
        /// Gets the specified layer settings.
        /// </summary>
        /// <typeparam name="T">The type of layer settings to retrieve.</typeparam>
        /// <param name="name">The name of the layer settings.</param>
        /// <returns>Returns the specified layer settings if found; otherwise, <c>null</c>.</returns>
        public T GetLayerSettings <T>(string name) where T : OgmoLayerSettings
        {
            OgmoLayerSettings value = null;

            if (layerSettings.TryGetValue(name, out value))
            {
                return(value as T);
            }
            return(null);
        }
Exemplo n.º 2
0
        private static void ExtractTileLayer(Layer layer, OgmoLayer olayer, OgmoLayerSettings olayersettings)
        {
            if (olayer is OgmoTileLayer)
            {
                var tilelayer = olayer as OgmoTileLayer;
                var tilelayersettings = olayersettings as OgmoTileLayerSettings;

                if (tilelayersettings.ExportTileIDs == true) throw new ApplicationException("Unsupported option : exportIds=true");

                // Create a grid with right options
                var tileDim = new Vector2(tilelayersettings.GridSize, tilelayersettings.GridSize);

                // We need to know the grid dimension before creating it, but we have to compute it from all tiles...
                List<KeyValuePair<Vector2, Tile>> tiles = new List<KeyValuePair<Vector2, Tile>>();

                foreach (OgmoTile otile in tilelayer.Tiles)
                {
                    Rectangle source = new Rectangle(otile.TextureOffset.X, otile.TextureOffset.Y, otile.Tileset.TileWidth, otile.Tileset.TileHeight);

                    if (otile.RectSize != Vector2.Zero)
                    {
                        // Create multiple tiles from this one
                        var tileSize = Grid.WorldToGrid(otile.RectSize, tileDim);

                        for (int x = 0; x < tileSize.X; x++)
                        {
                            for (int y = 0; y < tileSize.Y; y++)
                            {
                                Vector2 tileGridLocation = Grid.WorldToGrid(otile.Position, tileDim);
                                tileGridLocation += new Vector2(x, y);

                                var newTile = new Tile(otile.Tileset.Name, source);

                                tiles.Add(new KeyValuePair<Vector2, Tile>(tileGridLocation, newTile));
                            }
                        }
                    }
                    else
                    {
                        Vector2 tileGridLocation = Grid.WorldToGrid(otile.Position, tileDim);
                        var newTile = new Tile(otile.Tileset.Name, source);

                        tiles.Add(new KeyValuePair<Vector2, Tile>(tileGridLocation, newTile));
                    }

                }

                foreach (KeyValuePair<Vector2, Tile> tile in tiles)
                {
                    layer.Tiles.SetTile(tile.Key, tile.Value);
                }

            }
        }
Exemplo n.º 3
0
        private static void ExtractObjectLayer(Layer layer, OgmoLayer olayer, OgmoLayerSettings olayersettings)
        {
            if (olayer is OgmoObjectLayer)
            {
                var objlayer = olayer as OgmoObjectLayer;
                var objlayersettings = olayersettings as OgmoObjectLayerSettings;

                foreach (OgmoObject oo in objlayer.Objects)
                {
                    OgmoObjectEntity newObject = null;

                    if (oo.IsTiled)
                    {
                        throw new ArgumentException("Tiled object are not supported !");
                        ////Find template
                        //foreach (OgmoObjectTemplate template in ogmoLevel.Project.ObjectTemplates)
                        //{
                        //    if (template.Name == oo.Name)
                        //    {
                        //        newSprite = context.SpriteFactory.CreateSprite(context, oo.Name, oo.Position, oo.Source, new Vector2(template.Width, template.Height));
                        //        break;
                        //    }
                        //}
                    }
                    else
                    {
                        newObject = InstanciateOgmoObject(oo);
                        //newObject = InstanciateOgmoObject(oo.Name, oo.Position, oo.Source);
                    }

                    layer.Entities.Add(newObject);
                }

            }
        }
Exemplo n.º 4
0
        private static List<Rectangle> ExtractGridRectLayer(OgmoLayer olayer, OgmoLayerSettings olayersettings)
        {
            List<Rectangle> floors = new List<Rectangle>();

            if (olayer is OgmoGridLayer)
            {
                var gridlayer = olayer as OgmoGridLayer;
                var gridlayersettings = olayersettings as OgmoGridLayerSettings;

                foreach (Rectangle rect in gridlayer.RectangleData)
                {
                    floors.Add(rect);
                }
            }

            return floors;
        }
Exemplo n.º 5
0
        internal OgmoProject(ContentReader reader)
        {
            // Name
            this.Name = reader.ReadString();
            // Settings
            this.Settings = new OgmoProjectSettings(reader);
            // Values
            int valueCount = reader.ReadInt32();

            if (valueCount > 0)
            {
                for (int i = 0; i < valueCount; i++)
                {
                    OgmoValueTemplate ogmoValue = OgmoValueTemplateReader.Read(reader);
                    if (ogmoValue != null)
                    {
                        values.Add(ogmoValue.Name, ogmoValue);
                    }
                }
            }
            // Tilesets
            int tilesetCount = reader.ReadInt32();

            if (tilesetCount > 0)
            {
                for (int i = 0; i < tilesetCount; i++)
                {
                    OgmoTileset tileset = new OgmoTileset(reader);
                    if (tileset != null)
                    {
                        tilesets.Add(tileset.Name, tileset);
                    }
                }
            }
            // Objects
            int objectCount = reader.ReadInt32();

            if (objectCount > 0)
            {
                for (int i = 0; i < objectCount; i++)
                {
                    OgmoObjectTemplate obj = new OgmoObjectTemplate(reader);
                    if (obj != null)
                    {
                        objects.Add(obj.Name, obj);
                    }
                }
            }
            // Layer Settings
            int layerSettingsCount = reader.ReadInt32();

            if (layerSettingsCount > 0)
            {
                for (int i = 0; i < layerSettingsCount; i++)
                {
                    OgmoLayerSettings layerSettings = OgmoLayerSettingsReader.Read(reader);
                    if (layerSettings != null)
                    {
                        this.layerSettings.Add(layerSettings.Name, layerSettings);
                    }
                }
            }
        }