protected virtual void OnSelectCharacter(IPlayerCharacterData playerCharacterData) { eventOnSelectCharacter.Invoke(playerCharacterData); characterModelContainer.SetChildrenActive(false); SelectedDataId = playerCharacterData.DataId; SelectedEntityId = playerCharacterData.EntityId; CharacterModelByEntityId.TryGetValue(playerCharacterData.EntityId, out selectedModel); // Clear character class selection CacheCharacterClassSelectionManager.Clear(); CacheCharacterClassList.HideAll(); // Show selected model if (SelectedModel != null) { SelectedModel.gameObject.SetActive(true); } // Setup character class list PlayerCharacter firstData = null; PlayerCharacterDataByEntityId.TryGetValue(playerCharacterData.EntityId, out selectableCharacterClasses); CacheCharacterClassList.Generate(selectableCharacterClasses, (index, playerCharacter, ui) => { // Cache player character to dictionary, we will use it later PlayerCharacterByDataId[playerCharacter.DataId] = playerCharacter; // Setup UI if (ui != null) { UICharacterClass uiCharacterClass = ui.GetComponent <UICharacterClass>(); uiCharacterClass.Data = playerCharacter; CacheCharacterClassSelectionManager.Add(uiCharacterClass); } if (index == 0) { firstData = playerCharacter; } }); // Select first entry if (CacheCharacterClassSelectionManager.Count > 0) { CacheCharacterClassSelectionManager.Select(0); } else { OnSelectCharacterClass(firstData); } }
protected void OnSelectCharacterClass(UICharacterClass uiCharacterClass) { OnSelectCharacterClass(uiCharacterClass.Data); }