Exemple #1
0
        public bool TryGetTileAt(Vector position, out AbstractBoardTile element)
        {
            element = null;
            if (!InBounds(position))
            {
                return(false);
            }

            element = Tiles[position.x][position.y];
            return(true);
        }
Exemple #2
0
        protected override void OnTileArrive(AbstractBoardTile tile)
        {
            if (PacmanEngine.Instance.GameOver)
            {
                return;
            }

            if (State == GhostState.EATEN && tile.Position.Compare(Board.PositionInsideOfPrision))
            {
                Revive();
            }
            else if (State == GhostState.UNLOCKED && tile.Position.Compare(Board.PositionInFrontOfPrision))
            {
                UnityEngine.Debug.LogWarning("ARRIVING IN FRONT OF THE PRISION IN STATE UNLOCKED");
                ChangeState(GhostState.CHASE);
            }
        }
Exemple #3
0
    private Tuple <TileBase, AbstractPrize> GetViewPrizeInTile(AbstractBoardTile tile)
    {
        var walkable = tile as WalkableBoardTile;

        if (walkable?.Prize == null)
        {
            return(null);
        }

        switch (walkable.Prize.Type)
        {
        case PrizeFactory.PrizeTypes.NONE: return(null);

        case PrizeFactory.PrizeTypes.PAC_DOTS: return(new Tuple <TileBase, AbstractPrize>(pacDot, walkable.Prize));

        case PrizeFactory.PrizeTypes.POWER_PELLETS: return(new Tuple <TileBase, AbstractPrize>(powerPellet, walkable.Prize));
        }

        throw new PacException($"Id {walkable.Prize.Type} not implmented in BoardView.GetConsumableById");
    }
Exemple #4
0
        public Board(TileInfo[][] boardTilesInfo, Vector positionInFrontOfPrision, Vector positionInsideOfPrision)
        {
            PositionInFrontOfPrision = positionInFrontOfPrision;
            PositionInsideOfPrision  = positionInsideOfPrision;

            Tiles = new AbstractBoardTile[boardTilesInfo.Length][];
            for (int x = 0; x < boardTilesInfo.Length; x++)
            {
                Tiles[x] = new AbstractBoardTile[boardTilesInfo[x].Length];
                for (int y = 0; y < boardTilesInfo[x].Length; y++)
                {
                    Tiles[x][y] = TileFactory.GetTile(boardTilesInfo[x][y], new Vector(x, y));
                }
            }

            for (int x = 0; x < boardTilesInfo.Length; x++)
            {
                for (int y = 0; y < boardTilesInfo[x].Length; y++)
                {
                    Tiles[x][y].ResolveNeighbors(this);
                }
            }
        }
Exemple #5
0
        protected override void OnTileArrive(AbstractBoardTile tile)
        {
            if (PacmanEngine.Instance.GameOver)
            {
                return;
            }

            waitToMove = false;

            (tile as WalkableBoardTile)?.Prize?.TryCollect();

            if (!nextDirection.HasValue)
            {
                return;
            }

            if (!tile.AvailableDirectionsToWalk.Contains(nextDirection.Value))
            {
                return;
            }

            LastMoveDirection = nextDirection.Value;
            nextDirection     = null;
        }
 protected abstract void OnTileArrive(AbstractBoardTile tile);
Exemple #7
0
 protected override void OnTileArrive(AbstractBoardTile tile)
 {
     //throw new System.NotImplementedException();
 }