private void OnDeleteCharacterButtonClicked(int characterIndex) { var noticeWindow = Utils.ShowNotice("Deleting a character... Please wait.", null, true); noticeWindow.OkButton.interactable = false; var parameters = new RemoveCharacterRequestParameters(characterIndex); coroutinesExecutor.StartTask((y) => DeleteCharacter(y, parameters), exception => ServiceConnectionProviderUtils.OnOperationFailed()); }
private async Task DeleteCharacter(IYield yield, RemoveCharacterRequestParameters parameters) { var characterPeerLogic = ServiceContainer.GameService.GetPeerLogic <ICharacterPeerLogicAPI>().AssertNotNull(); var responseParameters = await characterPeerLogic.RemoveCharacter(yield, parameters); switch (responseParameters.Status) { case RemoveCharacterStatus.Succeed: { var characterParameters = new CharacterParameters { HasCharacter = false, Index = (CharacterIndex)parameters.CharacterIndex }; RecreateCharacter(characterParameters); var noticeWindow = UserInterfaceContainer.Instance.Get <NoticeWindow>().AssertNotNull(); noticeWindow.Message.text = "Character deleted successfully."; noticeWindow.OkButton.interactable = true; break; } case RemoveCharacterStatus.Failed: { var noticeWindow = UserInterfaceContainer.Instance.Get <NoticeWindow>().AssertNotNull(); noticeWindow.Message.text = "Could not remove a 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; } } }
public async Task <RemoveCharacterResponseParameters> RemoveCharacter(IYield yield, RemoveCharacterRequestParameters parameters) { return(await ServerPeerHandler.SendOperation <RemoveCharacterRequestParameters, RemoveCharacterResponseParameters> (yield, (byte)CharacterOperations.RemoveCharacter, parameters, MessageSendOptions.DefaultReliable())); }