Example #1
0
    public void AffectPlayer(int playerId)
    {
        var value = (myType == SpotType.BLUE) ? 3 : -3;

        GM.AddCashToPlayer(playerId, value);
        GamePlayerMover.RepositionGamePieces(transform.position, ref currentPieces);
    }
    /*
     * public static void RepositionGamePieces(
     *  Vector3 spotPosition,
     *  ref List<GameObject> currentPieces
     * )
     *
     * Repositions game pieces found in ref currentPieces. This method gets called by
     *  a MapSpot when a piece enters its trigger.
     */
    public static void RepositionGamePieces(
        Vector3 spotPosition,
        ref List <GameObject> currentPieces
        )
    {
        var count = currentPieces.Count;

        // Early exit for whern there aren't any GamePlayers on the MapSpot.
        if (count == 0)
        {
            return;
        }

        for (var i = 0; i < count; i++)
        {
            var piece         = currentPieces[i];
            var player        = piece.GetComponent <GamePlayer>();
            var piecePosition = Utils.CalculatePosition(spotPosition, count, i);

            // If the piece is currently in the MOVING state, then we don't need to bother
            //  trying to move it. It's on its own mission.
            if (player.myState == PlayerState.MOVING)
            {
                continue;
            }

            // Each GamePlayer needs to execute GamePlayerMover.MoveMe on its so to
            //  prevent weirdness.
            player.StartCoroutine(GamePlayerMover.MoveMe(piece.transform, piecePosition, Constants.MOVE_TIME / 2f));
        }
    }
Example #3
0
 public void OnTriggerExit(Collider col)
 {
     if (col.tag == "Player")
     {
         currentPieces.Remove(col.gameObject);
         GamePlayerMover.RepositionGamePieces(transform.position, ref currentPieces);
     }
 }
    public static IEnumerator MoveMe(GamePlayer player, MapSpot nextSpot, bool finalStop)
    {
        var target    = nextSpot.gameObject.transform.position;
        var transform = player.gameObject.transform;
        var spotCount = nextSpot.currentPieces.Count;

        target = Utils.CalculatePosition(target, spotCount + 1, spotCount);

        yield return(player.StartCoroutine(
                         GamePlayerMover.MoveMe(
                             transform,
                             target,
                             Constants.MOVE_TIME
                             )
                         ));
    }
    public static IEnumerator MoveGamePlayer(GamePlayer player)
    {
        GameManager gm = GameManager.instance;

        while (player.movesLeft > 0)
        {
            MapSpot nextSpot;
            var     spots = player.currentSpot.nextSpots;
            nextSpot = spots[spots.Keys.ToList()[0]];

            if (spots.Count > 1)
            {
                gm.MakePlayerChooseDirection(player, spots.Keys.ToList());

                while (gm.playerWantsToGo == MovementDirection.WAITING)
                {
                    yield return(null);
                }

                var ds = DirectionSelector.instance;
                ds.DisableButtons(spots.Keys.ToList());
                nextSpot = spots[gm.playerWantsToGo];
            }

            var finalStop = player.movesLeft == 1;

            yield return(player
                         .StartCoroutine(
                             GamePlayerMover.MoveMe(
                                 player,
                                 nextSpot,
                                 finalStop
                                 )
                             ));

            gm.playerWantsToGo = MovementDirection.WAITING;

            yield return(new WaitForSeconds(Constants.MOVE_DELAY));

            player.movesLeft--;
        }

        player.StartCoroutine(player.LandOnSpot());
    }
Example #6
0
 private void HandlePlayerTurn(GamePlayer player)
 {
     currentState = GameState.PLAYERMOVING;
     playerRolls.Clear();
     player.StartCoroutine(GamePlayerMover.MoveGamePlayer(player));
 }