Ejemplo n.º 1
0
        private MapTileModel[,] CloneMap(MapTileModel[,] map)
        {
            MapTileModel[,] privateMap = new MapTileModel[GameSettings.Map.NumberOfTiles_Column, GameSettings.Map.NumberOfTiles_Row];

            for (int col = 0; col < GameSettings.Map.NumberOfTiles_Column; col++)
            {
                for (int row = 0; row < GameSettings.Map.NumberOfTiles_Row; row++)
                {
                    MapTileModel sessionTile = map[col, row];

                    privateMap[col, row] = new MapTileModel(sessionTile.Tile, sessionTile.Number, sessionTile.Graph);
                }
            }

            return(privateMap);
        }
Ejemplo n.º 2
0
        public void Hover(HoverEventArgs eventArgs)
        {
            // we are still hovering over the same coordinates as last time,
            // nothing to do
            if (_lastHover.Equals(_uiState.HoverHexCoords))
            {
                return;
            }

            // remove previous indicator
            _lastHoverTile?.Indicators.Remove(_hoverTileIndicator);

            // add new indicator
            _lastHover     = _uiState.HoverHexCoords;
            _lastHoverTile = _uiState.HoverTile;

            if (_lastHoverTile != null)
            {
                _hoverTileIndicator.Position = _lastHoverTile.Position;
                _lastHoverTile.Indicators.Add(_hoverTileIndicator);
            }
        }
Ejemplo n.º 3
0
 public void SetModel(MapTileModel model)
 {
     this.model = model;
 }
Ejemplo n.º 4
0
            protected async override Task ExecuteAsync()
            {
                if (Clear)
                {
                    await API.World.SetMap(WorldKey, new MapModel
                    {
                        Rows    = 0,
                        Columns = 0
                    });

                    return;
                }

                var map         = new TmxMap(File);
                var groundLayer = map.Layers.FirstOrDefault(l => l.Name == "Ground");

                var spawnLocation =
                    map.ObjectGroups.SelectMany(g => g.Objects)
                    .Where(o => o.Type == "SpawnPoint")
                    .Select(p => new Vector2((float)p.X, (float)p.Y))
                    .FirstOrDefault();

                var mapOffset = new Vector2(-(map.Width * Size) / 2, -(map.Height * Size) / 2);

                if (spawnLocation != null)
                {
                    await API.World.PostHookAsync(new
                    {
                        SpawnLocation = spawnLocation / map.TileWidth *Size + mapOffset
                    }, WorldKey);
                }

                if (groundLayer != null)
                {
                    var tileSet = map.Tilesets[0];

                    var mapModel = new MapModel
                    {
                        Rows     = map.Height,
                        Columns  = map.Width,
                        TileSize = Size,
                        Tiles    = groundLayer.Tiles.Select(t =>
                        {
                            var gridID = t.Gid - tileSet.FirstGid;

                            var tile = tileSet.Tiles.ContainsKey(gridID)
                                ? tileSet.Tiles[gridID]
                                : null;

                            var mapTileModel = new MapTileModel
                            {
                                Row        = t.Y,
                                Column     = t.X,
                                TileGridID = gridID
                            };

                            if (tile != null)
                            {
                                if (tile.TerrainEdges.All(e => e?.Name == "Water"))
                                {
                                    mapTileModel.Type = "turret";
                                }


                                if (tile.TerrainEdges.All(e => e?.Name == "Obstacle"))
                                {
                                    mapTileModel.Type = "obstacle";
                                }

                                if (tile.TerrainEdges.Any(e => e?.Name == "Bouncy"))
                                {
                                    mapTileModel.Type = "bouncy";
                                }

                                if (tile.Properties.ContainsKey("drag"))
                                {
                                    mapTileModel.Drag = float.Parse(tile.Properties["drag"]);
                                }
                            }

                            return(mapTileModel);
                        }).ToList()
                    };

                    await API.World.SetMap(WorldKey, mapModel);
                }
            }