コード例 #1
0
 /// <summary>
 /// 获取棋格的另一方
 /// </summary>
 public static GridSide GetOtherGridSide(GridSide side)
 {
     if (side == GridSide.Black)
     {
         return(GridSide.White);
     }
     return(GridSide.Black);
 }
コード例 #2
0
ファイル: GridMap.cs プロジェクト: dylanjay/GridBossRush
 public GridTile GetTile(GridSide side, int x, int y)
 {
     x = Mathf.Clamp(x, 0, width - 1);
     y = Mathf.Clamp(y, 0, height - 1);
     if (side == GridSide.Left)
     {
         return(leftGrid[x][y]);
     }
     else
     {
         return(rightGrid[x][y]);
     }
 }
コード例 #3
0
    public static List <Vector2Int> GetGridSide(GridSide side)
    {
        List <Vector2Int> sideList;

        sideList = new List <Vector2Int>();

        switch (side)
        {
        case GridSide.xMin:
            for (int i = 0; i < gridX; i++)
            {
                sideList.Add(new Vector2Int(i, 0));
            }
            break;

        case GridSide.xMax:
            for (int i = 0; i < gridX; i++)
            {
                sideList.Add(new Vector2Int(i, gridZ - 1));
            }
            break;

        case GridSide.zMin:
            for (int i = 0; i < gridZ; i++)
            {
                sideList.Add(new Vector2Int(0, i));
            }
            break;

        case GridSide.zMax:
            for (int i = 0; i < gridZ; i++)
            {
                sideList.Add(new Vector2Int(gridX - 1, i));
            }
            break;

        case GridSide.outter:
            foreach (Vector2Int hex in edgeHexes)
            {
                if (GetHex(hex.x, hex.y).edge == EdgeType.outter)
                {
                    sideList.Add(hex);
                }
            }
            break;
        }
        return(sideList);
    }
コード例 #4
0
ファイル: GridMap.cs プロジェクト: dylanjay/GridBossRush
    public GridTile Move(GridSide side, GridTile from, int x, int y)
    {
        GridTile to = GetTile(side, x, y);

        if (!to.moveable)
        {
            return(from);
        }

        if (to != from)
        {
            to.Enter();
            from.Exit();
        }
        return(to);
    }
コード例 #5
0
ファイル: GridMap.cs プロジェクト: dylanjay/GridBossRush
    public GridTile Move(GridSide side, int x, int y)
    {
        GridTile to = GetTile(side, x, y);

        return(to);
    }
コード例 #6
0
ファイル: Spotter.cs プロジェクト: sicknasty454/CrewChiefV4
        protected Tuple <GridSide, Dictionary <int, GridSide> > getGridSideInternal(Object currentStateObj, float playerRotation, float playerXPosition,
                                                                                    float playerZPosition, int playerStartingPosition, int numCars)
        {
            GridSide playerGridSide = GridSide.UNKNOWN;
            Boolean  countForwards  = playerStartingPosition != 1;

            float[] worldPositionOfOpponent         = null;
            int     opponentStartingPositionToCheck = countForwards ? playerStartingPosition - 1 : playerStartingPosition + 1;
            int     opponentCheckCount = 0;

            // only check 5 opponents, then give up
            while (opponentCheckCount < 5)
            {
                worldPositionOfOpponent = getWorldPositionOfDriverAtPosition(currentStateObj, opponentStartingPositionToCheck);
                if (worldPositionOfOpponent != null)
                {
                    float[] alignedCoordiates = this.internalSpotter.getAlignedXZCoordinates(playerRotation,
                                                                                             playerXPosition, playerZPosition, worldPositionOfOpponent[0], worldPositionOfOpponent[1]);
                    if (alignedCoordiates[0] < -2)
                    {
                        playerGridSide = GridSide.LEFT;
                        break;
                    }
                    else if (alignedCoordiates[0] > 2)
                    {
                        playerGridSide = GridSide.RIGHT;
                        break;
                    }
                }
                if (countForwards)
                {
                    if (opponentStartingPositionToCheck == 1)
                    {
                        // we're counting forwards and have reached pole, so go back from the player
                        opponentStartingPositionToCheck = playerStartingPosition + 1;
                        countForwards = false;
                    }
                    else
                    {
                        opponentStartingPositionToCheck--;
                    }
                }
                else
                {
                    if (opponentStartingPositionToCheck == numCars - 1)
                    {
                        // we're counting backwards and have reached last, so go forward from the player
                        opponentStartingPositionToCheck = playerStartingPosition - 1;
                        countForwards = true;
                    }
                    else
                    {
                        opponentStartingPositionToCheck++;
                    }
                }
            }
            // now get GridSide for the opponents starting ahead
            int opponentAheadPosition = playerStartingPosition - 1;
            Dictionary <int, GridSide> opponentGridSides = new Dictionary <int, GridSide>();

            while (opponentAheadPosition > 0)
            {
                worldPositionOfOpponent = getWorldPositionOfDriverAtPosition(currentStateObj, opponentAheadPosition);
                if (worldPositionOfOpponent != null)
                {
                    float[] alignedCoordiates = this.internalSpotter.getAlignedXZCoordinates(playerRotation,
                                                                                             playerXPosition, playerZPosition, worldPositionOfOpponent[0], worldPositionOfOpponent[1]);
                    if (Math.Abs(alignedCoordiates[0]) > 2)
                    {
                        if (playerGridSide == GridSide.LEFT)
                        {
                            opponentGridSides.Add(opponentAheadPosition, GridSide.RIGHT);
                        }
                        else if (playerGridSide == GridSide.RIGHT)
                        {
                            opponentGridSides.Add(opponentAheadPosition, GridSide.LEFT);
                        }
                    }
                    else if (playerGridSide == GridSide.LEFT)
                    {
                        opponentGridSides.Add(opponentAheadPosition, GridSide.LEFT);
                    }
                    else if (playerGridSide == GridSide.RIGHT)
                    {
                        opponentGridSides.Add(opponentAheadPosition, GridSide.RIGHT);
                    }
                }
                opponentAheadPosition--;
            }
            return(new Tuple <GridSide, Dictionary <int, GridSide> >(playerGridSide, opponentGridSides));
        }
コード例 #7
0
 public GridSizeEdit(Session session, GridSide side)
 {
     InitializeComponent();
     viewModel   = new GridSideEditViewModel(session, side);
     DataContext = viewModel;
 }