private static void ExtractSideEffectBundle(CardTypes cardType, XmlNode node_CardInfo, SideEffectBundle seb) { SideEffectExecute.SideEffectFrom sideEffectFrom = SideEffectExecute.SideEffectFrom.Unknown; switch (cardType) { case CardTypes.Mech: sideEffectFrom = SideEffectExecute.SideEffectFrom.MechSideEffect; break; case CardTypes.Equip: sideEffectFrom = SideEffectExecute.SideEffectFrom.EquipSideEffect; break; case CardTypes.Spell: sideEffectFrom = SideEffectExecute.SideEffectFrom.SpellCard; break; case CardTypes.Energy: sideEffectFrom = SideEffectExecute.SideEffectFrom.EnergyCard; break; } for (int k = 0; k < node_CardInfo.ChildNodes.Count; k++) { XmlNode node_SideEffectExecute = node_CardInfo.ChildNodes.Item(k); SideEffectExecute.ExecuteSetting es = SideEffectExecute.ExecuteSetting.GenerateFromXMLNode(node_SideEffectExecute); List <SideEffectBase> ses = new List <SideEffectBase>(); for (int m = 0; m < node_SideEffectExecute.ChildNodes.Count; m++) { XmlNode node_SideEffect = node_SideEffectExecute.ChildNodes.Item(m); SideEffectBase sideEffect = AllSideEffects.SideEffectsNameDict[node_SideEffect.Attributes["name"].Value].Clone(); GetInfoForSideEffect(node_SideEffect, sideEffect); ses.Add(sideEffect); } SideEffectExecute see = new SideEffectExecute(sideEffectFrom, ses, es); seb.AddSideEffectExecute(see); } }
public void Initialize(SideEffectExecute.SideEffectFrom sideEffectFrom, SideEffectExecute see, UnityAction onRefreshText, UnityAction onDeleteButtonClick) { bool isExecuteSettingReadOnly = (see.ExecuteSettingType != SideEffectExecute.ExecuteSettingTypes.Others) && see.ExecuteSettingType != SideEffectExecute.ExecuteSettingTypes.Scripts; ExecuteSettingTypeDropdown.onValueChanged.RemoveAllListeners(); ExecuteSettingTypeDropdown.options.Clear(); foreach (SideEffectExecute.ExecuteSettingTypes est in SideEffectExecute.ValidExecuteSettingTypesForSideEffectFrom[sideEffectFrom]) { ExecuteSettingTypeDropdown.options.Add(new Dropdown.OptionData(est.ToString())); } SetValue(see.ExecuteSettingType.ToString()); ExecuteSettingTypeDropdown.onValueChanged.AddListener( delegate(int value) { string optionStr = ExecuteSettingTypeDropdown.options[value].text; SideEffectExecute.ExecuteSettingTypes est = (SideEffectExecute.ExecuteSettingTypes)Enum.Parse(typeof(SideEffectExecute.ExecuteSettingTypes), optionStr); if (est != SideEffectExecute.ExecuteSettingTypes.Scripts) { see.M_ExecuteSetting = SideEffectExecute.ExecuteSetting_Presets[est]; } else { see.M_ExecuteSetting = AllScriptExecuteSettings.GetScriptExecuteSetting("OnPlaySpecifiedCardByID").Clone(); } CardPropertyForm_ExecuteSettingRow.Initialize(see, onRefreshText, isExecuteSettingReadOnly, true); Initialize(sideEffectFrom, see, onRefreshText, onDeleteButtonClick); StartCoroutine(ClientUtils.UpdateLayout((RectTransform)UIManager.Instance.GetBaseUIForm <CardEditorPanel>().CardPropertiesContainer)); }); DeleteButton.onClick.RemoveAllListeners(); DeleteButton.onClick.AddListener( delegate { onDeleteButtonClick(); StartCoroutine(ClientUtils.UpdateLayout((RectTransform)UIManager.Instance.GetBaseUIForm <CardEditorPanel>().CardPropertiesContainer)); } ); CardPropertyForm_ExecuteSettingRow?.PoolRecycle(); foreach (CardPropertyForm_SideEffect cpfse in CardPropertyFormSideEffects) { cpfse.PoolRecycle(); } CardPropertyFormSideEffects.Clear(); AddSideEffectButton.onClick.RemoveAllListeners(); AddSideEffectButton.onClick.AddListener(delegate { see.SideEffectBases.Add(AllSideEffects.GetSideEffect("Damage").Clone()); Initialize(sideEffectFrom, see, onRefreshText, onDeleteButtonClick); onRefreshText(); StartCoroutine(ClientUtils.UpdateLayout((RectTransform)UIManager.Instance.GetBaseUIForm <CardEditorPanel>().CardPropertiesContainer)); }); CardPropertyForm_ExecuteSettingRow = GameObjectPoolManager.Instance.PoolDict[GameObjectPoolManager.PrefabNames.CardPropertyForm_ExecuteSetting].AllocateGameObject <CardPropertyForm_ExecuteSetting>(SideEffectRowContainer); CardPropertyForm_ExecuteSettingRow.Initialize(see, onRefreshText, isExecuteSettingReadOnly, false); ExecuteSettingTypeDropdown.interactable = sideEffectFrom != SideEffectExecute.SideEffectFrom.Buff; AddSideEffectButton.gameObject.SetActive(sideEffectFrom != SideEffectExecute.SideEffectFrom.Buff); DeleteButton.gameObject.SetActive(sideEffectFrom != SideEffectExecute.SideEffectFrom.Buff); foreach (SideEffectBase se in see.SideEffectBases) { CardPropertyForm_SideEffect cpfse = GameObjectPoolManager.Instance.PoolDict[GameObjectPoolManager.PrefabNames.CardPropertyForm_SideEffect].AllocateGameObject <CardPropertyForm_SideEffect>(SideEffectRowContainer); cpfse.Initialize(see, null, se, onRefreshText, delegate { see.SideEffectBases.Remove(se); Initialize(sideEffectFrom, see, onRefreshText, onDeleteButtonClick); onRefreshText(); StartCoroutine(ClientUtils.UpdateLayout((RectTransform)UIManager.Instance.GetBaseUIForm <CardEditorPanel>().CardPropertiesContainer)); }); CardPropertyFormSideEffects.Add(cpfse); } }
public void Initialize(CardInfo_Base cardInfo, SideEffectBundle seb, UnityAction onRefreshText) { foreach (CardPropertyForm_SideEffectExecute cpfsee in CardPropertyForm_SideEffectExecuteRows) { cpfsee.PoolRecycle(); } CardPropertyForm_SideEffectExecuteRows.Clear(); if (cardInfo != null) { if (seb == cardInfo.SideEffectBundle) { LanguageManager.Instance.RegisterTextKey(SideEffectBundleText, "CardEditorPanel_SideEffectBundleText"); } else { LanguageManager.Instance.RegisterTextKey(SideEffectBundleText, "CardEditorPanel_SideEffectBundleAuraText"); } AddSideEffectExecuteButton.onClick.RemoveAllListeners(); AddSideEffectExecuteButton.onClick.AddListener(delegate { SideEffectExecute.SideEffectFrom sef = SideEffectExecute.SideEffectFrom.Unknown; SideEffectExecute.ExecuteSetting executeSetting = SideEffectExecute.ExecuteSetting_Presets[SideEffectExecute.ExecuteSettingTypes.PlayOutEffect].Clone(); switch (cardInfo.BaseInfo.CardType) { case CardTypes.Mech: sef = SideEffectExecute.SideEffectFrom.MechSideEffect; executeSetting = SideEffectExecute.ExecuteSetting_Presets[SideEffectExecute.ExecuteSettingTypes.BattleCry]; break; case CardTypes.Equip: sef = SideEffectExecute.SideEffectFrom.EquipSideEffect; executeSetting = SideEffectExecute.ExecuteSetting_Presets[SideEffectExecute.ExecuteSettingTypes.EquipBattleCry]; break; case CardTypes.Spell: sef = SideEffectExecute.SideEffectFrom.SpellCard; executeSetting = SideEffectExecute.ExecuteSetting_Presets[SideEffectExecute.ExecuteSettingTypes.PlayOutEffect]; break; case CardTypes.Energy: sef = SideEffectExecute.SideEffectFrom.EnergyCard; executeSetting = SideEffectExecute.ExecuteSetting_Presets[SideEffectExecute.ExecuteSettingTypes.PlayOutEffect]; break; //todo from buff } SideEffectExecute newSEE = new SideEffectExecute(sef, new List <SideEffectBase> { AllSideEffects.GetSideEffect("Damage").Clone() }, executeSetting); seb.AddSideEffectExecute(newSEE); seb.RefreshSideEffectExecutesDict(); Initialize(cardInfo, seb, onRefreshText); onRefreshText(); StartCoroutine(ClientUtils.UpdateLayout((RectTransform)UIManager.Instance.GetBaseUIForm <CardEditorPanel>().CardPropertiesContainer)); }); RefreshSideEffectBundleTransformButton.onClick.RemoveAllListeners(); RefreshSideEffectBundleTransformButton.onClick.AddListener(delegate { StartCoroutine(ClientUtils.UpdateLayout((RectTransform)UIManager.Instance.GetBaseUIForm <CardEditorPanel>().CardPropertiesContainer)); } ); foreach (SideEffectExecute see in seb.SideEffectExecutes) { CardPropertyForm_SideEffectExecute cpfsee = GameObjectPoolManager.Instance.PoolDict[GameObjectPoolManager.PrefabNames.CardPropertyForm_SideEffectExecute].AllocateGameObject <CardPropertyForm_SideEffectExecute>(SideEffectExecuteRowContainer); cpfsee.Initialize(SideEffectExecute.GetSideEffectFromByCardType(cardInfo.BaseInfo.CardType), see, onRefreshText, delegate { seb.RemoveSideEffectExecute(see); Initialize(cardInfo, seb, onRefreshText); onRefreshText(); StartCoroutine(ClientUtils.UpdateLayout((RectTransform)SideEffectExecuteRowContainer)); }); CardPropertyForm_SideEffectExecuteRows.Add(cpfsee); } } }