public bool TryGetTileAt(Vector position, out AbstractBoardTile element) { element = null; if (!InBounds(position)) { return(false); } element = Tiles[position.x][position.y]; return(true); }
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); } }
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"); }
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); } } }
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);
protected override void OnTileArrive(AbstractBoardTile tile) { //throw new System.NotImplementedException(); }