Пример #1
0
        private void OnStartButtonClicked(int characterIndex)
        {
            var clickedCharacter = characters[characterIndex];

            clickedCharacter.PlayWalkAnimationAction();

            var noticeWindow = Utils.ShowNotice("Entering to the world... Please wait.", null, true);

            noticeWindow.OkButton.interactable = false;

            var parameters = new ValidateCharacterRequestParameters(characterIndex);

            coroutinesExecutor.StartTask((y) => ValidateCharacter(y, parameters), exception => ServiceConnectionProviderUtils.OnOperationFailed());
        }
Пример #2
0
        private async Task ValidateCharacter(IYield yield, ValidateCharacterRequestParameters parameters)
        {
            var characterPeerLogic = ServiceContainer.GameService.GetPeerLogic <ICharacterPeerLogicAPI>().AssertNotNull();
            var responseParameters = await characterPeerLogic.ValidateCharacter(yield, parameters);

            switch (responseParameters.Status)
            {
            case CharacterValidationStatus.Ok:
            {
                var map = responseParameters.Map;
                OnCharacterValidated(map);
                break;
            }

            case CharacterValidationStatus.Wrong:
            {
                var noticeWindow = UserInterfaceContainer.Instance.Get <NoticeWindow>().AssertNotNull();
                noticeWindow.Message.text          = "Can not enter to the world with this character. Please try again.";
                noticeWindow.OkButton.interactable = true;
                break;
            }

            default:
            {
                var noticeWindow = UserInterfaceContainer.Instance.Get <NoticeWindow>().AssertNotNull();
                noticeWindow.Message.text          = "Something went wrong, please try again.";
                noticeWindow.OkButton.interactable = true;
                break;
            }
            }

            if (responseParameters.Status != CharacterValidationStatus.Ok)
            {
                var index = parameters.CharacterIndex;
                PlayIdleCharacterAnimation(index);
            }
        }
Пример #3
0
        public async Task <ValidateCharacterResponseParameters> ValidateCharacter(IYield yield, ValidateCharacterRequestParameters parameters)
        {
            var responseParameters = await ServerPeerHandler.SendOperation <ValidateCharacterRequestParameters, ValidateCharacterResponseParameters>
                                         (yield, (byte)CharacterOperations.ValidateCharacter, parameters, MessageSendOptions.DefaultReliable());

            if (responseParameters.Status == CharacterValidationStatus.Ok)
            {
                ServiceContainer.GameService.SetPeerLogic <GameScenePeerLogic, GameOperations, GameEvents>();
            }
            return(responseParameters);
        }