public bool AddNewPlayer(SPlayer sp, PlayerLocation ploc) { if (ploc.IsEdgePosition(BoardSize) && GetPlayersAtLocation(ploc, sp).Count == 0) { CurrentPlayersIn.Add(sp); m_players.Add(sp); sp.MoveToPosition(ploc); CurrentDeck.OnPlayerAdd(sp.MyHand, CurrentPlayersIn); return(true); } return(false); }
public void IsOnEdge() { List <Vector2Int> testPaths = new List <Vector2Int> (); testPaths.Add(new Vector2Int(0, 5)); testPaths.Add(new Vector2Int(1, 3)); testPaths.Add(new Vector2Int(2, 6)); testPaths.Add(new Vector2Int(4, 7)); Tile t = new Tile(testPaths); SPlayer p = new SPlayer(); p.MoveToPosition(new PlayerLocation(t.Coordinate, 7)); Assert.True(p.IsOnEdge(t.Coordinate, Direction.LEFT), "Detected Correct Direction"); }
public List <SPlayer> MovePlayer(SPlayer sp, Tile t) { List <SPlayer> playersEliminated = new List <SPlayer> (); if (sp.Location.Coordinate != t.Coordinate) { return(playersEliminated); } int positionAfterPath = t.GetPathConnection(sp.Location.PositionOnTile); Vector2Int newCoord = sp.Location.Coordinate + DirectionUtils.DirectionToVector(DirectionUtils.IntToDirection(positionAfterPath)); int newPos = DirectionUtils.AdjacentPosition(positionAfterPath); PlayerLocation newLoc = new PlayerLocation(newCoord, newPos); sp.MoveToPosition(newLoc); List <SPlayer> colP = GetPlayersAtLocation(newLoc, sp); if (colP.Count > 0) { playersEliminated.Add(sp); playersEliminated.AddRange(colP); return(playersEliminated); } if (!isPositionInBoard(newCoord)) { playersEliminated.Add(sp); return(playersEliminated); } if (m_placedTiles.ContainsKey(newCoord)) { return(MovePlayer(sp, m_placedTiles [newCoord])); } return(playersEliminated); }