public void UpdateFogTile(TileFogState state) { switch (state) { case TileFogState.Active: _spriteRenderer.sprite = null; break; case TileFogState.Revealed: _spriteRenderer.sprite = Fog1; break; case TileFogState.Hiden: _spriteRenderer.sprite = BlackFog; break; } }
// Update is called once per frame public static void UpdateFog(int index, TileFogState state) { int x = index - (int)(index / Scene.Width) * Scene.Width; int y = index / Scene.Height; int startX; int startY; int endX; int endY; int iX; int iY; startX = x - 1; startY = y - 1; endX = x + 1; endY = y + 1; iX = startX; iY = startY; /*for (iX = startX; iX <= endX; iX++) { for (iY = startY; iY <= endY; iY++) { if ((iX + iY * Scene.Height) < Scene._grid.Length && Scene._grid[iX + iY * Scene.Height].tile != Tile.Full) { if (Scene._grid[iX + iY * Scene.Height].FogScript.State != state) { Scene._grid[iX + iY * Scene.Height].FogScript.UpdateFogTile(state); Scene._grid[iX + iY * Scene.Height].FogScript.State = state; } } } }*/ foreach(Grid grid in Scene.GetSurroundingHexes(Scene._grid[index])) { if (grid.FogScript != null) { grid.FogScript.UpdateFogTile(state); grid.FogScript.State = state; //Show item if (grid.TileItem != null && grid.TileItem.GetComponent<MonoItem>() != null) grid.TileItem.GetComponent<MonoItem>().spriteRenderer.enabled = true; } } foreach (Grid grid in Scene.GetSurroundingHexes(Scene._grid[index], 2)) { if (grid.FogScript != null) { grid.FogScript.UpdateFogTile(TileFogState.Revealed); grid.FogScript.State = TileFogState.Revealed; } } return; startX = x - 2; startY = y - 2; endX = x + 2; endY = y + 2; iX = startX; iY = startY; for (iX = startX; iX <= endX; iX++) { for (iY = startY; iY <= endY; iY++) { if (iX == startX || iX == endX || iY == startY || iY == endY) { if ((iX + iY * Scene.Height) < Scene._grid.Length && Scene._grid[iX + iY * Scene.Height].tile != Tile.Full) { //if (Scene._grid[iX + iY * Scene.Height].FogScript.State != TileFogState.Revealed) //{ Scene._grid[iX + iY * Scene.Height].FogScript.UpdateFogTile(TileFogState.Revealed); Scene._grid[iX + iY * Scene.Height].FogScript.State = TileFogState.Revealed; //} } } } } }
// Update is called once per frame public static void UpdateFog(int index, TileFogState state) { int x = index - (int)(index / Scene.Width) * Scene.Width; int y = index / Scene.Height; int startX; int startY; int endX; int endY; int iX; int iY; startX = x - 1; startY = y - 1; endX = x + 1; endY = y + 1; iX = startX; iY = startY; /*for (iX = startX; iX <= endX; iX++) * { * for (iY = startY; iY <= endY; iY++) * { * if ((iX + iY * Scene.Height) < Scene._grid.Length && Scene._grid[iX + iY * Scene.Height].tile != Tile.Full) * { * if (Scene._grid[iX + iY * Scene.Height].FogScript.State != state) * { * Scene._grid[iX + iY * Scene.Height].FogScript.UpdateFogTile(state); * Scene._grid[iX + iY * Scene.Height].FogScript.State = state; * } * } * } * }*/ foreach (Grid grid in Scene.GetSurroundingHexes(Scene._grid[index])) { if (grid.FogScript != null) { grid.FogScript.UpdateFogTile(state); grid.FogScript.State = state; //Show item if (grid.TileItem != null && grid.TileItem.GetComponent <MonoItem>() != null) { grid.TileItem.GetComponent <MonoItem>().spriteRenderer.enabled = true; } } } foreach (Grid grid in Scene.GetSurroundingHexes(Scene._grid[index], 2)) { if (grid.FogScript != null) { grid.FogScript.UpdateFogTile(TileFogState.Revealed); grid.FogScript.State = TileFogState.Revealed; } } return; startX = x - 2; startY = y - 2; endX = x + 2; endY = y + 2; iX = startX; iY = startY; for (iX = startX; iX <= endX; iX++) { for (iY = startY; iY <= endY; iY++) { if (iX == startX || iX == endX || iY == startY || iY == endY) { if ((iX + iY * Scene.Height) < Scene._grid.Length && Scene._grid[iX + iY * Scene.Height].tile != Tile.Full) { //if (Scene._grid[iX + iY * Scene.Height].FogScript.State != TileFogState.Revealed) //{ Scene._grid[iX + iY * Scene.Height].FogScript.UpdateFogTile(TileFogState.Revealed); Scene._grid[iX + iY * Scene.Height].FogScript.State = TileFogState.Revealed; //} } } } } }