protected override void OnSelectCharacter(IPlayerCharacterData playerCharacterData) { if (buttonStart) { buttonStart.gameObject.SetActive(true); } if (buttonDelete) { buttonDelete.gameObject.SetActive(true); } characterModelContainer.SetChildrenActive(false); // Load selected character, set selected player character data and also validate its data PlayerCharacterDataById.TryGetValue(playerCharacterData.Id, out selectedPlayerCharacterData); // Validate map data if (!GameInstance.Singleton.GetGameMapIds().Contains(SelectedPlayerCharacterData.CurrentMapName)) { PlayerCharacter database = SelectedPlayerCharacterData.GetDatabase() as PlayerCharacter; SelectedPlayerCharacterData.CurrentMapName = database.StartMap.Id; SelectedPlayerCharacterData.CurrentPosition = database.StartPosition; } // Set selected character to network manager (BaseGameNetworkManager.Singleton as LanRpgNetworkManager).selectedCharacter = SelectedPlayerCharacterData; // Show selected character model CharacterModelById.TryGetValue(playerCharacterData.Id, out selectedModel); if (SelectedModel != null && SelectedModel is ICharacterModelUma) { // Setup Uma model and applies options ICharacterModelUma characterModelUMA = SelectedModel as ICharacterModelUma; UmaModel = characterModelUMA; SelectedModel.gameObject.SetActive(true); UmaModel.ApplyUmaAvatar(SelectedPlayerCharacterData.UmaAvatarData); } }
protected override void OnSelectCharacter(IPlayerCharacterData playerCharacterData) { if (buttonStart) { buttonStart.gameObject.SetActive(true); } if (buttonDelete) { buttonDelete.gameObject.SetActive(true); } characterModelContainer.SetChildrenActive(false); // Load selected character and also set selected player character data PlayerCharacterDataById.TryGetValue(playerCharacterData.Id, out selectedPlayerCharacterData); // Show selected character model CharacterModelById.TryGetValue(playerCharacterData.Id, out selectedModel); if (SelectedModel != null) { SelectedModel.gameObject.SetActive(true); } }
protected override void OnSelectCharacter(IPlayerCharacterData playerCharacterData) { if (buttonStart) { buttonStart.gameObject.SetActive(true); } if (buttonDelete) { buttonDelete.gameObject.SetActive(true); } characterModelContainer.SetChildrenActive(false); // Load selected character and also set selected player character data PlayerCharacterDataById.TryGetValue(playerCharacterData.Id, out selectedPlayerCharacterData); // Show selected character model CharacterModelById.TryGetValue(playerCharacterData.Id, out selectedModel); if (SelectedModel != null && SelectedModel is ICharacterModelUma) { // Setup Uma model and applies options ICharacterModelUma characterModelUMA = SelectedModel as ICharacterModelUma; UmaModel = characterModelUMA; SelectedModel.gameObject.SetActive(true); UmaModel.ApplyUmaAvatar(SelectedPlayerCharacterData.UmaAvatarData); } }
private void OnRequestedCharacters(ResponseHandlerData responseHandler, AckResponseCode responseCode, ResponseCharactersMessage response) { // Clear character list CacheCharacterSelectionManager.Clear(); CacheCharacterList.HideAll(); // Unable buttons buttonStart.gameObject.SetActive(false); buttonDelete.gameObject.SetActive(false); // Remove all models characterModelContainer.RemoveChildren(); CharacterModelById.Clear(); // Remove all cached data PlayerCharacterDataById.Clear(); // Proceed response List <PlayerCharacterData> selectableCharacters = new List <PlayerCharacterData>(); if (!responseCode.ShowUnhandledResponseMessageDialog(response.message)) { // Success, so set selectable characters by response's data selectableCharacters = response.characters; } // Show list of created characters for (int i = selectableCharacters.Count - 1; i >= 0; --i) { PlayerCharacterData selectableCharacter = selectableCharacters[i]; if (selectableCharacter == null || !GameInstance.PlayerCharacterEntities.ContainsKey(selectableCharacter.EntityId) || !GameInstance.PlayerCharacters.ContainsKey(selectableCharacter.DataId)) { // If invalid entity id or data id, remove from selectable character list selectableCharacters.RemoveAt(i); } } if (GameInstance.Singleton.maxCharacterSaves > 0 && selectableCharacters.Count >= GameInstance.Singleton.maxCharacterSaves) { eventOnNotAbleToCreateCharacter.Invoke(); } else { eventOnAbleToCreateCharacter.Invoke(); } // Clear selected character data, will select first in list if available selectedPlayerCharacterData = null; // Generate list entry by saved characters if (selectableCharacters.Count > 0) { selectableCharacters.Sort(new PlayerCharacterDataLastUpdateComparer().Desc()); CacheCharacterList.Generate(selectableCharacters, (index, characterData, ui) => { // Cache player character to dictionary, we will use it later PlayerCharacterDataById[characterData.Id] = characterData; // Setup UIs UICharacter uiCharacter = ui.GetComponent <UICharacter>(); uiCharacter.Data = characterData; // Select trigger when add first entry so deactivate all models is okay beacause first model will active BaseCharacterModel characterModel = characterData.InstantiateModel(characterModelContainer); if (characterModel != null) { CharacterModelById[characterData.Id] = characterModel; characterModel.SetEquipWeapons(characterData.EquipWeapons); characterModel.SetEquipItems(characterData.EquipItems); characterModel.gameObject.SetActive(false); CacheCharacterSelectionManager.Add(uiCharacter); } }); } else { eventOnNoCharacter.Invoke(); } }
private void OnRequestedCharacters(AckResponseCode responseCode, BaseAckMessage message) { ResponseCharactersMessage castedMessage = (ResponseCharactersMessage)message; CacheCharacterSelectionManager.Clear(); // Unenabled buttons buttonStart.gameObject.SetActive(false); buttonDelete.gameObject.SetActive(false); // Remove all models characterModelContainer.RemoveChildren(); CharacterModelById.Clear(); // Remove all cached data PlayerCharacterDataById.Clear(); List <PlayerCharacterData> selectableCharacters = new List <PlayerCharacterData>(); switch (responseCode) { case AckResponseCode.Error: string errorMessage = string.Empty; switch (castedMessage.error) { case ResponseCharactersMessage.Error.NotLoggedin: errorMessage = LanguageManager.GetText(UILocaleKeys.UI_ERROR_NOT_LOGGED_IN.ToString()); break; } UISceneGlobal.Singleton.ShowMessageDialog(LanguageManager.GetText(UILocaleKeys.UI_LABEL_ERROR.ToString()), errorMessage); break; case AckResponseCode.Timeout: UISceneGlobal.Singleton.ShowMessageDialog(LanguageManager.GetText(UILocaleKeys.UI_LABEL_ERROR.ToString()), LanguageManager.GetText(UILocaleKeys.UI_ERROR_CONNECTION_TIMEOUT.ToString())); break; default: selectableCharacters = castedMessage.characters; break; } // Show list of created characters for (int i = selectableCharacters.Count - 1; i >= 0; --i) { PlayerCharacterData selectableCharacter = selectableCharacters[i]; if (selectableCharacter == null || !GameInstance.PlayerCharacters.ContainsKey(selectableCharacter.DataId)) { selectableCharacters.RemoveAt(i); } } selectableCharacters.Sort(new PlayerCharacterDataLastUpdateComparer().Desc()); CacheCharacterList.Generate(selectableCharacters, (index, characterData, ui) => { // Cache player character to dictionary, we will use it later PlayerCharacterDataById[characterData.Id] = characterData; UICharacter uiCharacter = ui.GetComponent <UICharacter>(); uiCharacter.Data = characterData; // Select trigger when add first entry so deactivate all models is okay beacause first model will active BaseCharacterModel characterModel = characterData.InstantiateModel(characterModelContainer); if (characterModel != null) { CharacterModelById[characterData.Id] = characterModel; characterModel.gameObject.SetActive(false); characterModel.SetEquipWeapons(characterData.EquipWeapons); characterModel.SetEquipItems(characterData.EquipItems); CacheCharacterSelectionManager.Add(uiCharacter); } }); }
private void OnRequestedCharacters(ResponseHandlerData responseHandler, AckResponseCode responseCode, INetSerializable response) { // Clear character list CacheCharacterSelectionManager.Clear(); CacheCharacterList.HideAll(); // Unable buttons buttonStart.gameObject.SetActive(false); buttonDelete.gameObject.SetActive(false); // Remove all models characterModelContainer.RemoveChildren(); CharacterModelById.Clear(); // Remove all cached data PlayerCharacterDataById.Clear(); // Don't make character list if timeout if (responseCode == AckResponseCode.Timeout) { UISceneGlobal.Singleton.ShowMessageDialog(LanguageManager.GetText(UITextKeys.UI_LABEL_ERROR.ToString()), LanguageManager.GetText(UITextKeys.UI_ERROR_CONNECTION_TIMEOUT.ToString())); return; } // Proceed response ResponseCharactersMessage castedResponse = response as ResponseCharactersMessage; List <PlayerCharacterData> selectableCharacters = new List <PlayerCharacterData>(); switch (responseCode) { case AckResponseCode.Error: string errorMessage = string.Empty; switch (castedResponse.error) { case ResponseCharactersMessage.Error.NotLoggedin: errorMessage = LanguageManager.GetText(UITextKeys.UI_ERROR_NOT_LOGGED_IN.ToString()); break; } UISceneGlobal.Singleton.ShowMessageDialog(LanguageManager.GetText(UITextKeys.UI_LABEL_ERROR.ToString()), errorMessage); break; default: selectableCharacters = castedResponse.characters; break; } // Show list of created characters for (int i = selectableCharacters.Count - 1; i >= 0; --i) { PlayerCharacterData selectableCharacter = selectableCharacters[i]; if (selectableCharacter == null || !GameInstance.PlayerCharacterEntities.ContainsKey(selectableCharacter.EntityId) || !GameInstance.PlayerCharacters.ContainsKey(selectableCharacter.DataId)) { // If invalid entity id or data id, remove from selectable character list selectableCharacters.RemoveAt(i); } } if (GameInstance.Singleton.maxCharacterSaves > 0 && selectableCharacters.Count >= GameInstance.Singleton.maxCharacterSaves) { eventOnNotAbleToCreateCharacter.Invoke(); } else { eventOnAbleToCreateCharacter.Invoke(); } // Clear selected character data, will select first in list if available selectedPlayerCharacterData = null; // Generate list entry by saved characters if (selectableCharacters.Count > 0) { selectableCharacters.Sort(new PlayerCharacterDataLastUpdateComparer().Desc()); CacheCharacterList.Generate(selectableCharacters, (index, characterData, ui) => { // Cache player character to dictionary, we will use it later PlayerCharacterDataById[characterData.Id] = characterData; // Setup UIs UICharacter uiCharacter = ui.GetComponent <UICharacter>(); uiCharacter.Data = characterData; // Select trigger when add first entry so deactivate all models is okay beacause first model will active BaseCharacterModel characterModel = characterData.InstantiateModel(characterModelContainer); if (characterModel != null) { CharacterModelById[characterData.Id] = characterModel; characterModel.SetEquipWeapons(characterData.EquipWeapons); characterModel.SetEquipItems(characterData.EquipItems); characterModel.gameObject.SetActive(false); CacheCharacterSelectionManager.Add(uiCharacter); } }); } else { eventOnNoCharacter.Invoke(); } }