public void SetInGameCharacterInfo(UICharacter uiCharacter) { var characterDataSheet = DataBase.Instance.characterDataSheet; if (characterDataSheet.TryGetCharacterData(uiCharacter.characterInfo.id, out var characterData)) { // 후에 변경 필요 if (characterData.HeadImage == null) { SetCharacterImage(characterData.Image); } else { SetCharacterImage(characterData.HeadImage); } SetNameText(characterData.Name); SetTribeImage(characterData.TribeData.Image); SetOriginImage(characterData.OriginData.Image); SetStarGrade(uiCharacter.characterInfo.star); var characterAbilityDataSheet = DataBase.Instance.characterAbilityDataSheet; if (characterAbilityDataSheet.TryGetCharacterAbilityData(uiCharacter.characterInfo.id, uiCharacter.characterInfo.star, out var abilityData)) { AbilityData defaultAbilityData = new AbilityData(); defaultAbilityData.SetAbilityData(abilityData); SetCharacterAbilityText(defaultAbilityData, uiCharacter.character.ability); } } }
private void Awake() { transform.GetComponent <RawImage>("RawImage")?.SafeSetActive(true); uiCharacter = transform.GetComponent <UICharacter>("RawImage"); name = transform.GetComponent <Text> ("base/name"); level = transform.GetComponent <Text> ("base/name/level_txt"); equiped = transform.GetComponent <Transform> ("base/equiped_img"); var typeIconRoot = transform.GetComponent <Transform>("base/icon"); var iconNames = new string[] { "sword", "katana", "axe", "fist", "pistol", "suit" }; for (var i = 0; i < iconNames.Length; i++) { typeIcons.Add(typeIconRoot.GetComponent <Image>(iconNames[i])); } model = uiCharacter.GetComponentDefault <UIModel>(); var starGroup = transform.GetComponent <Transform>("base/qualityGrid"); stars = starGroup.GetChildList().ToArray(); }
// Use this for initialization void Start() { char1 = (UICharacter)ui.Add(UIType.Character, npc1, "Sprites/NPC/CoordLady"); //char1 = (UICharacter)ui.Add(UIType.Character, npc1, "Sprites/NPC/Rentner"); char1.Emotion = EmotionType.POSITIVE; }
private void EndDrag(UICharacter uiCharacter) { if (TransformService.ContainPos(uiCharacterArea.transform as RectTransform, uiCharacter.transform.position)) { isMovetoBattleArea = true; } else if (TransformService.ContainPos(uiPrepareArea.transform as RectTransform, uiCharacter.transform.position)) { isMovetoBattleArea = false; } uiInGameCharacterInfo.OnHide(); uiSellArea.OnHide(); if (isSelling) { selledCharacterInfo = uiCharacter.DeleteCharacterBySell(); uiSellArea.gameObject.GetComponent <Image>().color = Color.white; } //if(!IsNotChanged()) //{ // if (IsPlaceableSpaceFull()) // { // if (IsMoveFromPrepareAreaToEmptyBattleArea()) // { // SwapCharacters(invisibleCharacter, swappedCharacter); // SwapCharacters(invisibleCharacter, uiCharacter); // isSwapped = false; // return; // } // } //} //UpdateCurrentPlacedCharacters(); //SwapCharacters(invisibleCharacter, uiCharacter); //UpdateSynergyService(uiCharacter); //SetCharacterImage(uiCharacter); if (IsPlaceableSpaceFull()) { if (IsMoveFromPrepareAreaToEmptyBattleArea()) { SwapCharacters(invisibleCharacter, swappedCharacter); SwapCharacters(invisibleCharacter, uiCharacter); isSwapped = false; Debug.Log("In!!"); return; } } SwapCharacters(invisibleCharacter, uiCharacter); UpdateCurrentPlacedCharacters(uiCharacter); UpdateSynergyService(uiCharacter); SetCharacterImage(uiCharacter); isSwapped = false; }
void Start() { mainCamera = GameObject.Find("Main Camera").GetComponent <Camera>(); root = transform.root; uiCharacter = GetComponent <UICharacter>(); }
void SwapCharacters(UICharacter source, UICharacter destination) { Transform sourceTransform = source.transform; Transform destinationTransform = destination.transform; Transform sourceParent = sourceTransform.parent; Transform destinationParent = destinationTransform.parent; sourceTransform.SetParent(destinationParent); destinationTransform.SetParent(sourceParent); Vector3 sourcePosition = sourceTransform.position; Vector3 destinationPosition = destinationTransform.position; sourceTransform.position = destinationPosition; destinationTransform.position = sourcePosition; source.FollowCharacter(); destination.FollowCharacter(); TransformService.SetFullSize(source.transform as RectTransform); TransformService.SetFullSize(destination.transform as RectTransform); foreach (var arranger in arrangers) { arranger.UpdateChildren(); } }
static private void Menu_UICharacterListItem(On.Terraria.GameContent.UI.Elements.UICharacterListItem.orig_DrawSelf orig, UICharacterListItem self, SpriteBatch spriteBatch) { orig(self, spriteBatch); if (!SGAConfigClient.Instance.PlayerWorldData) { return; } Vector2 origin = new Vector2(self.GetDimensions().X, self.GetDimensions().Y); //hooray double reflection, f**k you vanilla-Scalie //I couldn't agree more-IDG UICharacter character = (UICharacter)_playerPanel.GetValue(self); Player player = (Player)_player.GetValue(character); SGAPlayer sgaPly = player.SGAPly(); bool drakenUnlocked = sgaPly.dragonFriend; if (sgaPly == null) { return; } if (sgaPly.nightmareplayer) { Color color1 = new Color(204, 130, 204); Texture2D tex = Main.inventoryBack10Texture; Color acolor = Color.Lerp(color1, Color.White, 0.5f); Color color3 = Color.Lerp(color1, Color.Lerp(color1, Color.DarkMagenta, 0.33f), 0.50f + (float)Math.Sin(Main.GlobalTime * 2f) / 2f); spriteBatch.Draw(tex, origin + new Vector2(440, 0), new Rectangle(0, 0, 16, 27), acolor, 0, Vector2.Zero, 1f, SpriteEffects.None, 0); int i; for (i = 16; i < 128 + 16; i += 16) { spriteBatch.Draw(tex, origin + new Vector2(440 + i, 0), new Rectangle(16, 0, 16, 27), acolor, 0, Vector2.Zero, 1f, SpriteEffects.None, 0); } spriteBatch.Draw(tex, origin + new Vector2(440 + i, 0), new Rectangle(32, 0, 16, 27), acolor, 0, Vector2.Zero, 1f, SpriteEffects.None, 0); Utils.DrawBorderString(spriteBatch, "NIGHTMARE", origin + new Vector2(454, 5), color3); //Hmmm color hearts spriteBatch.Draw(SGAmod.Instance.GetTexture("GreyHeart"), origin + new Vector2(80, 37), color3 * (0.50f + (float)Math.Cos(Main.GlobalTime * 2f) / 2f)); } if (drakenUnlocked) { Texture2D DergonHeadTex = ModContent.GetTexture("SGAmod/NPCs/TownNPCs/Dergon_Head"); CalculatedStyle style = self.GetDimensions(); Vector2 offset = style.Position() + new Vector2(style.Width, style.Height); float heartBeat = (Main.GlobalTime) % 1f; if (Main.GlobalTime % 2 >= 1) { heartBeat = 1f - ((Main.GlobalTime) % 1f); } Vector2 drawerPos = offset - new Vector2(self.IsFavorite ? 16 : 48, 16); spriteBatch.Draw(Main.heartTexture, drawerPos, null, Color.White, 0, Main.heartTexture.Size() / 2f, 1.5f + MathHelper.SmoothStep(-1f, 1f, (heartBeat) / 2f), SpriteEffects.None, 0f); spriteBatch.Draw(DergonHeadTex, drawerPos, null, Color.White, 0, DergonHeadTex.Size() / 2f, 1f, SpriteEffects.None, 0f); } }
private void OnSelectCharacter(UICharacter ui) { buttonStart.gameObject.SetActive(true); buttonDelete.gameObject.SetActive(true); characterModelContainer.SetChildrenActive(false); var playerCharacter = ui.Data as IPlayerCharacterData; ShowCharacter(playerCharacter.Id); }
public void Setup(UICharacter currentCharacter, CharactersLoader currentCharactersLoader) { character = currentCharacter; name.text = character.name; level.text = character.level; weapon.text = character.weapon; armor.text = character.armor; quality = character.quality; weapon.color = quality; armor.color = quality; charactersLoader = currentCharactersLoader; }
/// <summary> /// 조합으로 인한 배틀 공간에 배치한 캐릭터 수 1감소 /// </summary> /// <param name="uiCharacter"></param> /// <param name="isFirstCharacter"></param> public void SubCurrentPlacedCharacterFromCombinations(UICharacter uiCharacter, bool isFirstCharacter) { if (isFirstCharacter) { return; } if (uiCharacter.GetArea <UIBattleArea>() != null) { SubCurrentPlacedCharacter(); } }
public void SubCharacterFromCombinations(UICharacter uiCharacter, bool isFirstCharacter) { if (isFirstCharacter) { return; } if (uiCharacter.GetArea <UIBattleArea>() != null) { InGameManager.instance.synergySystem.SubCharacter(uiCharacter.characterInfo); } }
public void Initialize() { uiInGameCharacterInfo.Initialize(); InitializeArrangers(); isSelling = false; isSwapped = false; isMoveFromBattleArea = false; swappedCharacter = null; originalSize = 0.0f; }
private void AddCharacters(List <UICharacter> characters, PlayerPartyData playerPartyData) { // will need to add empty slots if there are empty characters for (int i = 0; i < characters.Count; i++) { UICharacter character = characters[i]; GameObject newCharacter = GameObject.Find("CharacterObjectPool").GetComponent <SimpleObjectPool>().GetObject(); newCharacter.transform.SetParent(contentPanel); SampleCharacter sampleCharacter = newCharacter.GetComponent <SampleCharacter>(); sampleCharacter.Setup(character, this, playerPartyData); } }
private void AddCharacters(List <UICharacter> characters, MenuPartyData menuPartyData) { // will need to add empty slots if there are empty characters for (int i = 0; i < characters.Count; i++) { UICharacter character = characters[i]; GameObject newCharacter = characterObjectPool.GetObject(); newCharacter.transform.SetParent(contentPanel); SampleCharacter sampleCharacter = newCharacter.GetComponent <SampleCharacter>(); Debug.Log(party.name); sampleCharacter.Setup(character, this, menuPartyData); } }
public void Setup(UICharacter currentCharacter, ScrollParty currentScrollParty, MenuPartyData currentParty) { // todo handle ID character = currentCharacter; name.text = character.name; level.text = character.level; weapon.text = character.weapon; armor.text = character.armor; quality = character.quality; weapon.color = quality; armor.color = quality; partyId = character.partyId; party = currentParty; scrollParty = currentScrollParty; }
// 파라미터로 받은 캐릭터의 (드래그한)위치가 캐릭터리스트에 있는 캐릭터들 중 하나의 위치에 오면 그 위치에 있는 캐릭터를 반환 public UICharacter GetCharacterByPosition(UICharacter draggedUICharacter) { UICharacter targetCharacter = null; for (int i = 0; i < uiCharacters.Count; ++i) { if (TransformService.ContainPos(uiCharacters[i].transform as RectTransform, draggedUICharacter.transform.position)) { targetCharacter = uiCharacters[i]; break; } } return(targetCharacter); }
protected override void OnClickDelete() { UICharacter selectedUI = CacheCharacterSelectionManager.SelectedUI; if (selectedUI == null) { UISceneGlobal.Singleton.ShowMessageDialog("Cannot delete character", "Please choose character to delete"); Debug.LogWarning("Cannot delete character, No chosen character"); return; } IPlayerCharacterData playerCharacter = selectedUI.Data as IPlayerCharacterData; MMOClientInstance.Singleton.RequestDeleteCharacter(playerCharacter.Id, OnRequestedDeleteCharacter); }
public override void OnClickDelete() { UICharacter selectedUI = CacheCharacterSelectionManager.SelectedUI; if (selectedUI == null) { UISceneGlobal.Singleton.ShowMessageDialog(LanguageManager.GetText(UITextKeys.UI_LABEL_ERROR.ToString()), LanguageManager.GetText(UITextKeys.UI_ERROR_NO_CHOSEN_CHARACTER_TO_DELETE.ToString())); Debug.LogWarning("Cannot delete character, No chosen character"); return; } IPlayerCharacterData playerCharacter = selectedUI.Data as IPlayerCharacterData; MMOClientInstance.Singleton.RequestDeleteCharacter(playerCharacter.Id, OnRequestedDeleteCharacter); }
public override void OnClickStart() { UICharacter selectedUI = CacheCharacterSelectionManager.SelectedUI; if (selectedUI == null) { UISceneGlobal.Singleton.ShowMessageDialog(LanguageManager.GetText(UITextKeys.UI_LABEL_ERROR.ToString()), LanguageManager.GetText(UITextKeys.UI_ERROR_NO_CHOSEN_CHARACTER_TO_START.ToString())); Debug.LogWarning("Cannot start game, No chosen character"); return; } // Load gameplay scene, we're going to manage maps in gameplay scene later // So we can add gameplay UI just once in gameplay scene IPlayerCharacterData playerCharacter = selectedUI.Data as IPlayerCharacterData; MMOClientInstance.Singleton.RequestSelectCharacter(playerCharacter.Id, OnRequestedSelectCharacter); }
protected override void OnClickStart() { UICharacter selectedUI = CacheCharacterSelectionManager.SelectedUI; if (selectedUI == null) { UISceneGlobal.Singleton.ShowMessageDialog("Cannot start game", "Please choose character to start game"); Debug.LogWarning("Cannot start game, No chosen character"); return; } // Load gameplay scene, we're going to manage maps in gameplay scene later // So we can add gameplay UI just once in gameplay scene IPlayerCharacterData playerCharacter = selectedUI.Data as IPlayerCharacterData; MMOClientInstance.Singleton.RequestSelectCharacter(playerCharacter.Id, OnRequestedSelectCharacter); }
private void AddCharacters(PlayerCharacterData[] characters) { // will need to add empty slots if there are empty characters for (int i = 0; i < characters.Length; i++) { int charId = characters[i].id; UICharacter character = dataFormat.CreateUICharacter(characters[i], data); GameObject newCharacter = GameObject.Find("CharacterObjectPool").GetComponent <SimpleObjectPool>().GetObject(); newCharacter.transform.SetParent(GameObject.Find("CharacterContainer").transform); newCharacter.GetComponent <Button>().interactable = true; newCharacter.GetComponent <Button>().onClick.RemoveAllListeners(); newCharacter.GetComponent <Button>().onClick.AddListener(delegate { SelectPartyCharacter(charId); }); SampleCharacter sampleCharacter = newCharacter.GetComponent <SampleCharacter>(); sampleCharacter.Setup(character, this); } }
public void Setup(UICharacter currentCharacter, ScrollParty currentScrollParty, PlayerPartyData currentParty) { character = currentCharacter; name.text = character.name; level.text = character.level; weapon.text = character.weapon; armor.text = character.armor; quality = character.quality; weapon.color = quality; armor.color = quality; partyId = character.partyId; party = currentParty; characterId = character.id; scrollParty = currentScrollParty; gameObject.GetComponent <Button>().onClick.RemoveAllListeners(); gameObject.GetComponent <Button>().onClick.AddListener(SwapPartyCharacter); }
private void BeginDrag(UICharacter uiCharacter) { if (TransformService.ContainPos(uiCharacterArea.transform as RectTransform, uiCharacter.transform.position)) { isMoveFromBattleArea = true; } else if (TransformService.ContainPos(uiPrepareArea.transform as RectTransform, uiCharacter.transform.position)) { isMoveFromBattleArea = false; } parentWhenBeginDrag = uiCharacter.GetComponentInParent <UISlot>(); SwapCharacters(invisibleCharacter, uiCharacter); uiCharacter.SetDefaultImage(); originalSize = uiCharacter.character.GetSize(); uiSellArea.UpdatePrice(uiCharacter.characterInfo); uiSellArea.OnShow(); }
// 배치된 공간에 따라서 이미지를 바꿔줌 private void SetCharacterImage(UICharacter uiCharacter) { if (uiCharacter.characterInfo == null) { return; } if (uiCharacter.GetArea <UICharacterArea>() != null) { uiCharacter.SetAnimationImage(); // 일반 이미지로 변경; } else if (uiCharacter.GetArea <UIPrepareArea>() != null) { uiCharacter.SetDefaultImage(); // 애니메이션 이미지로 변경; } }
private UICharacter CreateUICharacter(MenuCharacterData character, DataController data) { UICharacter member = new UICharacter(); member.id = character.id; member.name = character.name; member.level = FormatCharacterLevel(character.level); if (character.offHand > -1) { member.weapon = GetWeaponName(character.weapon, data) + " / " + GetWeaponName(character.offHand, data); } else { member.weapon = GetWeaponName(character.weapon, data); } member.armor = GetArmorName(character.armor); member.quality = ColorConvertQuality(character.quality); return(member); }
/// <summary> /// 현재 배치된 캐릭터들의 시너지 적용 /// </summary> /// <param name="uiCharacter"></param> public void UpdateSynergyService(UICharacter uiCharacter) { var synergySystem = InGameManager.instance.synergySystem; if (isSelling && isMoveFromBattleArea) { synergySystem.SubCharacter(selledCharacterInfo); return; } if (IsNotChanged(uiCharacter) || isSelling) { return; } if (IsMoveFromBattleAreaToPrepareArea()) { uiCharacter.character.ResetAbility(); if (IsReplaceWithEmptySpace()) { synergySystem.SubCharacter(uiCharacter.characterInfo); } else { synergySystem.SubCharacter(uiCharacter.characterInfo); synergySystem.AddCharacter(swappedCharacter.characterInfo); } } else if (IsMoveFromPrepareAreaToBattleArea()) { if (IsReplaceWithEmptySpace()) { synergySystem.AddCharacter(uiCharacter.characterInfo); } else { synergySystem.AddCharacter(uiCharacter.characterInfo); synergySystem.SubCharacter(swappedCharacter.characterInfo); } } }
private void AddCharacters(PlayerCharacterData[] characters) { // will need to add empty slots if there are empty characters for (int i = 0; i < characters.Length; i++) { int charId = characters[i].id; int slot1 = -1; int slot2 = -1; int slot3 = -1; int slot4 = -1; if (data.GetPreviousPage() == 3) { PlayerPartyData party = data.GetPartyToEdit(); slot1 = party.slotOneCharacterId; slot2 = party.slotTwoCharacterId; slot3 = party.slotThreeCharacterId; slot4 = party.slotFourCharacterId; GameObject.Find("Backbutton").GetComponent <Button>().onClick.RemoveAllListeners(); GameObject.Find("Backbutton").GetComponent <Button>().onClick.AddListener(delegate { new SceneLoader().PartiesMenu(); }); } if (charId != slot1 && charId != slot2 && charId != slot3 && charId != slot4) { UICharacter character = dataFormat.CreateUICharacter(characters[i], data); GameObject newCharacter = GameObject.Find("CharacterObjectPool").GetComponent <SimpleObjectPool>().GetObject(); newCharacter.transform.SetParent(GameObject.Find("CharacterContainer").transform); newCharacter.GetComponent <Button>().interactable = true; newCharacter.GetComponent <Button>().onClick.RemoveAllListeners(); if (data.GetPreviousPage() == 3) { newCharacter.GetComponent <Button>().onClick.AddListener(delegate { SelectPartyCharacter(charId); }); } else { newCharacter.GetComponent <Button>().onClick.AddListener(delegate { EditPartyCharacter(charId); }); } SampleCharacter sampleCharacter = newCharacter.GetComponent <SampleCharacter>(); sampleCharacter.Setup(character, this); } } }
/// <summary> /// 필드에 배치된 캐릭터 수 업데이트. /// </summary> public void UpdateCurrentPlacedCharacters(UICharacter uiCharacter) { if (isSelling && isMoveFromBattleArea) { uiCharacterArea.SubCurrentPlacedCharacter(); return; } if (IsNotChanged(uiCharacter)) { return; } if (IsMoveFromBattleAreaToEmptyPrepareArea()) { uiCharacterArea.SubCurrentPlacedCharacter(); } else if (IsMoveFromPrepareAreaToEmptyBattleArea()) { uiCharacterArea.AddCurrentPlacedCharacter(); } }
private void ShiftTextOver(On.Terraria.GameContent.UI.Elements.UICharacterListItem.orig_ctor orig, UICharacterListItem self, PlayerFileData data, int snapPointIndex) { orig(self, data, snapPointIndex); FieldInfo info = typeof(UICharacterListItem).GetField("_buttonLabel", BindingFlags.Instance | BindingFlags.NonPublic); UIText text = info.GetValue(self) as UIText; text.Left.Set(280, 0); UICharacter character = (UICharacter)_playerPanel.GetValue(self); Player player = (Player)_player.GetValue(character); MedalPlayer mp3 = player.GetModPlayer <MedalPlayer>(); if (mp3.player == player && mp3.medals.Count > 0) //expand only if medals are earned { self.Height.Set(152, 0); var elements = (List <UIElement>)Elements.GetValue(self); foreach (UIElement e in elements.Where(n => n.VAlign == 1)) { e.Top.Set(-56, 0); } } }
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); } }); }