//Reveals the tile and releases ownership (all objects will have read permission) public void SetVisibility(TileVisibility value, int accessKey = 0) { //If the value is the same, don't bother if (visibility == value) { return; } //Check if locked for ownership permissions and if so, check access key if (_accessKey != 0 && accessKey != _accessKey) { Debug.Log("Wrong acess key: Tile.SetVisiblity(value, accessKey)"); return; } //Set visibility visibility = value; //If it's face up, there's no point in restricting read permissions anymore. if (visibility == TileVisibility.FaceUp) { ReleaseOwnership(_accessKey); } //Pass visibility setting to renderer if (!(initialized)) { Initialize(); } Renderer.Visibility = visibility; }
private void CheckTilesVisibilityAround(int x, int y) { Element type = LevelManager.Main.Grid.GetTile(x, y); TileVisibility visibility = grid.GetTile(x, y); if (showDebugLog.HasFlag(LevelFogDebug.Tiles_Around)) { Debug.Log($"Checking Tiles Visibility around {x},{y} ({visibility})"); } if (type != Element.NULL && visibility == TileVisibility.Visible) { List <Vector2Int> neighbours = grid.GatherNeighbourCells(x, y, 1, true, false); foreach (Vector2Int neighbour in neighbours) { IsNullTileReadyToVisible(neighbour.x, neighbour.y); } } else { if (type == Element.NULL && visibility == TileVisibility.ReadyToVisible) { if (showDebugLog.HasFlag(LevelFogDebug.Cluster_Logic)) { Debug.Log("Checking for cluster completion"); } List <Vector2Int> cellsChecked = new List <Vector2Int>() { }; if (CheckClusterTileVisibility(x, y, ref cellsChecked)) { DiscoverNextClusterTile(0, cellsChecked); } } } }
public TileVisibility[,] CalculateTileVisibility() { TileVisibility[,] visibilityArray = new TileVisibility[m_map.Width, m_map.Height]; m_fovManager.CalculateForMultipleCalls(m_map, m_player.Position, m_player.Vision); for (int i = 0; i < m_map.Width; ++i) { for (int j = 0; j < m_map.Height; ++j) { Point p = new Point(i, j); if (m_fovManager.Visible(p)) { visibilityArray[i, j] = TileVisibility.Visible; } else { if (m_map.IsVisitedAt(p)) visibilityArray[i, j] = TileVisibility.Visited; else visibilityArray[i, j] = TileVisibility.Unvisited; } } } return visibilityArray; }
public virtual void UpdateFromVisibilityData(TileVisibility[,] visibility) { }
public override void UpdateFromVisibilityData(TileVisibility[,] visibility) { m_tileVisibility = visibility; }
private void DrawItems(TileVisibility[,] visibility) { MageCrawlPoint upperLeft = UpperLeftViewPoint; foreach (var i in m_engine.Map.Items.Where(i => IsPointDrawable(i.Second))) { if (visibility[i.Second.X, i.Second.Y] == TileVisibility.Visible) { AddObjectLayerImage(GetImageForItem(i.First), i.Second.X - upperLeft.X, i.Second.Y - upperLeft.Y); } } }
private void DrawMapObjects(TileVisibility[,] visibility, IGameEngine engine) { MageCrawlPoint upperLeft = UpperLeftViewPoint; foreach (IMapObject o in m_engine.Map.MapObjects.Where(o => IsPointDrawable(o.Position))) { if (visibility[o.Position.X, o.Position.Y] != TileVisibility.Unvisited) { AddObjectLayerImage(GetImageForMapObject(o, engine), o.Position.X - upperLeft.X, o.Position.Y - upperLeft.Y); } } }
private void DrawMonsters(TileVisibility[,] visibility) { MageCrawlPoint upperLeft = UpperLeftViewPoint; foreach (IMonster m in m_engine.Map.Monsters.Where(m => IsPointDrawable(m.Position))) { if (visibility[m.Position.X, m.Position.Y] == TileVisibility.Visible) { AddObjectLayerImage(GetImageForMonster(m), m.Position.X - upperLeft.X, m.Position.Y - upperLeft.Y); } } }
private TCODColor ConvertTerrainSpotToColor(TerrainType terrain, TileVisibility visibility) { if (m_honorFOV && visibility == TileVisibility.Unvisited) return ColorPresets.Black; bool visible = visibility == TileVisibility.Visible; switch (terrain) { case TerrainType.Floor: if (visible) return s_floorColorVisible; else return s_floorColorNotVisible; case TerrainType.Wall: if (visible) return s_wallColorVisible; else return s_wallColorNotVisible; default: throw new System.ArgumentException("Unknown Type - ConvertTerrianToChar"); } }