Пример #1
0
        void HandleCustomTilePropertyAt(int worldX, int worldY, CCTileMapLayer layer)
        {
            CCTileMapCoordinates tileAtXy = layer.ClosestTileCoordAtNodePosition(new CCPoint(worldX, worldY));

            CCTileGidAndFlags info = layer.TileGIDAndFlags(tileAtXy.Column, tileAtXy.Row);

            if (info != null)
            {
                Dictionary <string, string> properties = null;

                try
                {
                    properties = _map.TilePropertiesForGID(info.Gid);
                }
                catch
                {
                    // CocosSharp
                }

                if (properties != null && properties.ContainsKey("IsTreasure") && properties["IsTreasure"] == "true")
                {
                    layer.RemoveTile(tileAtXy);

                    // todo: Create a treasure chest entity
                }
            }
        }
Пример #2
0
        void flipIt(float dt)
        {
            CCTileMapLayer layer = tileMap.LayerNamed("Layer 0");

            //blue diamond
            var tileCoord = new CCTileMapCoordinates(1, 10);

            CCTileGidAndFlags gidAndFlags = layer.TileGIDAndFlags(tileCoord);
            CCTileFlags       flags       = gidAndFlags.Flags;
            short             GID         = gidAndFlags.Gid;

            // Vertical
            if ((flags & CCTileFlags.Vertical) != 0)
            {
                flags &= ~CCTileFlags.Vertical;
            }
            else
            {
                flags |= CCTileFlags.Vertical;
            }


            layer.SetTileGID(new CCTileGidAndFlags(GID, flags), tileCoord);


            tileCoord   = new CCTileMapCoordinates(1, 8);
            gidAndFlags = layer.TileGIDAndFlags(tileCoord);
            GID         = gidAndFlags.Gid;
            flags       = gidAndFlags.Flags;

            // Vertical
            if ((flags & CCTileFlags.Vertical) != 0)
            {
                flags &= ~CCTileFlags.Vertical;
            }
            else
            {
                flags |= CCTileFlags.Vertical;
            }

            layer.SetTileGID(new CCTileGidAndFlags(GID, flags), tileCoord);

            tileCoord   = new CCTileMapCoordinates(2, 8);
            gidAndFlags = layer.TileGIDAndFlags(tileCoord);
            GID         = gidAndFlags.Gid;
            flags       = gidAndFlags.Flags;

            // Horizontal
            if ((flags & CCTileFlags.Horizontal) != 0)
            {
                flags &= ~CCTileFlags.Horizontal;
            }
            else
            {
                flags |= CCTileFlags.Horizontal;
            }

            layer.SetTileGID(new CCTileGidAndFlags(GID, flags), tileCoord);
        }
Пример #3
0
        public IEnumerable <PropertyLocation> GetPropertyLocations()
        {
            // Width and Height are equal so we can use either
            int tileDimension = (int)tileMap.TileTexelSize.Width;

            // Find out how many rows and columns are in our tile map
            int numberOfColumns = (int)tileMap.MapDimensions.Size.Width;
            int numberOfRows    = (int)tileMap.MapDimensions.Size.Height;

            // Tile maps can have multiple layers, so let's loop through all of them:
            foreach (CCTileMapLayer layer in tileMap.TileLayersContainer.Children)
            {
                // Loop through the columns and rows to find all tiles
                for (int column = 0; column < numberOfColumns; column++)
                {
                    // We're going to add tileDimension / 2 to get the position
                    // of the center of the tile - this will help us in
                    // positioning entities, and will eliminate the possibility
                    // of floating point error when calculating the nearest tile:
                    int worldX = tileDimension * column + tileDimension / 2;
                    for (int row = 0; row < numberOfRows; row++)
                    {
                        // See above on why we add tileDimension / 2
                        int worldY = tileDimension * row + tileDimension / 2;

                        CCTileMapCoordinates tileAtXy = layer.ClosestTileCoordAtNodePosition(new CCPoint(worldX, worldY));

                        CCTileGidAndFlags info = layer.TileGIDAndFlags(tileAtXy.Column, tileAtXy.Row);

                        if (info != null)
                        {
                            Dictionary <string, string> properties = null;

                            try
                            {
                                properties = tileMap.TilePropertiesForGID(info.Gid);
                            }
                            catch
                            {
                                // CocosSharp crashed here...but this may be fixed in the current version
                            }

                            if (properties != null)
                            {
                                yield return(new PropertyLocation
                                {
                                    WorldX = worldX,
                                    WorldY = worldY,
                                    Properties = properties,
                                    Layer = layer,
                                    TileCoordinates = tileAtXy
                                });
                            }
                        }
                    }
                }
            }
        }
Пример #4
0
        public TMXOrthoTest4() : base("TileMaps/orthogonal-test4")
        {
            CCTileMapLayer       layer = tileMap.LayerNamed("Layer 0");
            CCTileMapCoordinates s     = layer.LayerSize;

            sprite       = layer.ExtractTile(0, 0);
            sprite.Scale = 2;

            sprite2       = layer.ExtractTile(s.Column - 1, 0);
            sprite2.Scale = 2;

            sprite3       = layer.ExtractTile(0, s.Row - 1);
            sprite3.Scale = 2;

            sprite4       = layer.ExtractTile(s.Column - 1, s.Row - 1);
            sprite4.Scale = 2;

            Schedule(removeSprite, 2);
        }