Beispiel #1
0
        public void DeHighlightOtherTeamTilePieces(List <PieceEV> alteredPieces, PlayerColor pieceTeam, IEntitiesDB entitiesDB)
        {
            HighlightState highlightStateToRemove = HighlightService.CalcClickHighlightState(pieceTeam);

            // TODO Remove team highlights based on Team Color, not piece ref id
            List <TileEV> tiles = tileService.FindAllTileEVs(entitiesDB)
                                  .Where(tile => tile.Highlight.IsHighlighted &&
                                         tile.Highlight.CurrentColorStates.Contains(highlightStateToRemove)
                                         ).ToList();

            foreach (TileEV tile in tiles)
            {
                entitiesDB.ExecuteOnEntity(
                    tile.ID,
                    (ref TileEV tileToChange) =>
                {
                    tileToChange.Highlight.CurrentColorStates.Remove(highlightStateToRemove);
                    tileToChange.Tile.PieceRefEntityId = null;

                    if (!tileToChange.Highlight.CurrentColorStates.Any())
                    {
                        tileToChange.Highlight.IsHighlighted = false;
                    }
                });

                tile.ChangeColorTrigger.PlayChangeColor = true;
            }
        }
Beispiel #2
0
        private void ClearPieceReferenceFromTiles()
        {
            TileEV[] tileEVs = tileService.FindAllTileEVs(entitiesDB);

            for (int i = 0; i < tileEVs.Length; ++i)
            {
                tileEVs[i].Tile.PieceRefEntityId = null;
            }
        }
        public void Step(ref TurnStartStepState token, int condition)
        {
            TurnEV turnEV = turnService.GetCurrentTurnEV(entitiesDB);

            TileEV[] tiles = tileService.FindAllTileEVs(entitiesDB);

            FindAndHighlightTeamTiles(PlayerColor.BLACK, tiles, PlayerColor.BLACK == turnEV.TurnPlayer.PlayerColor);
            FindAndHighlightTeamTiles(PlayerColor.WHITE, tiles, PlayerColor.WHITE == turnEV.TurnPlayer.PlayerColor);

            PlayColorAllTiles(tiles);
        }
Beispiel #4
0
        private void UnPressTiles()
        {
            TileEV[] tileEVs = tileService.FindAllTileEVs(entitiesDB);

            for (int i = 0; i < tileEVs.Length; ++i)
            {
                if (tileEVs[i].Highlight.IsPressed.value)
                {
                    tileEVs[i].Highlight.IsPressed.value = false; // Will trigger a TilePressEngine, but IsPressed check will stop it
                }
            }
        }
Beispiel #5
0
        private List <TileEV> FindTilesToChange(List <Vector2> affectedTiles)
        {
            List <TileEV> returnValue = new List <TileEV>();

            // TODO Cache all Tiles, since they will not change
            var entityViews = tileService.FindAllTileEVs(entitiesDB);

            // TODO Use Linq Where() filtering
            for (int i = 0; i < entityViews.Length; ++i)
            {
                if (affectedTiles.Contains(entityViews[i].Location.Location))
                {
                    returnValue.Add(entityViews[i]);
                }
            }

            return(returnValue);
        }
Beispiel #6
0
        private void UnHighlightTiles()
        {
            TileEV[] tileEVs = tileService.FindAllTileEVs(entitiesDB);

            for (int i = 0; i < tileEVs.Length; ++i)
            {
                // TODO Sloppy coding; if gated with an if statement, captured piece's range highlight remains.
                entitiesDB.ExecuteOnEntity(
                    tileEVs[i].ID,
                    (ref TileEV tileToChange) =>
                {
                    tileToChange.Highlight.IsHighlighted = false;
                    tileToChange.Highlight.CurrentColorStates.Clear();
                });

                tileEVs[i].ChangeColorTrigger.PlayChangeColor = true;
            }
        }