Exemple #1
0
        async public Task PerformMovement(int nextNodeID)
        {
            Vector3 nextLocation = pathService.GetNodeLocation(nextNodeID);

            if (pathService.CheckIfTeleportable(playerNodeID, nextNodeID))
            {
                pathService.HighlightTeleportNodes(nextNodeID);
            }
            //else {
            //    pathService.UnhighlightTeleportableNodes();
            //}

            await MoveToLocation(nextLocation);

            playerNodeID = nextNodeID;


            if (interactableService.CheckForInteractable(nextNodeID))
            {
                IInteractableController interactableController = interactableService.ReturnInteractableController(nextNodeID);
                PerformInteractableAction(interactableController);
            }
            if (IsGameFinished())
            {
                playerService.FireLevelFinishedSignal();
            }
            else if (GetPlayerState() != PlayerStates.WAIT_FOR_INPUT)
            {
                gameService.ChangeToEnemyState();
            }
        }