public void SetValue(string value) { switch (ValueType) { case ValueTypes.ConstInt: { SideEffectValue_ConstInt s = (SideEffectValue_ConstInt)this; if (s.EnumType == typeof(CardDeck)) { if (!AllCards.CardDict.ContainsKey(int.Parse(value))) { s.Value = (int)AllCards.EmptyCardTypes.NoCard; return; } ((SideEffectValue_ConstInt)this).Value = int.Parse(value); } else if (s.EnumType != null) { s.Value = (int)Enum.Parse(s.EnumType, value); } else { ((SideEffectValue_ConstInt)this).Value = int.Parse(value); } break; } case ValueTypes.MultipliedInt: { ((SideEffectValue_MultipliedInt)this).Value = int.Parse(value); break; } case ValueTypes.Bool: { ((SideEffectValue_Bool)this).Value = value == "True"; break; } case ValueTypes.String: { ((SideEffectValue_String)this).Value = value; break; } } }
public static SideEffectValue BaseDeserialize(DataStream reader) { string name = reader.ReadString8(); ValueTypes valueType = (ValueTypes)reader.ReadSInt32(); SideEffectValue sev = null; switch (valueType) { case ValueTypes.ConstInt: { int value = reader.ReadSInt32(); string enumType_str = reader.ReadString8(); Type enumType = null; if (!enumType_str.Equals("null")) { enumType = Type.GetType(enumType_str); } sev = new SideEffectValue_ConstInt(name, value, enumType); break; } case ValueTypes.MultipliedInt: { int value = reader.ReadSInt32(); sev = new SideEffectValue_MultipliedInt(name, value); break; } case ValueTypes.Bool: { bool value = reader.ReadByte() == 0x01; sev = new SideEffectValue_Bool(name, value); break; } case ValueTypes.String: { string value = reader.ReadString8(); sev = new SideEffectValue_String(name, value); break; } } return(sev); }
public static void GenerateParamRows(SideEffectBase se, SideEffectParam sep, UnityAction onRefreshText, UnityAction reInitialize, Transform parentContainer, List <PropertyFormRow> pfr_List, List <CardPropertyForm_SideEffectExecute> pfr_List_SEE, UnityAction refreshContainer) { foreach (SideEffectValue sev in sep.SideEffectValues) { string sev_Prefix = "SideEffectValueNames_"; switch (sev.ValueType) { case SideEffectValue.ValueTypes.ConstInt: { SideEffectValue_ConstInt s = (SideEffectValue_ConstInt)sev; if (s.EnumType == null) { bool showInputField = true; if (s.Name == "ChoiceCount") { if (se is TargetSideEffect t_se) { if (t_se.TargetSelect != TargetSelect.Multiple && t_se.TargetSelect != TargetSelect.MultipleRandom) { showInputField = false; } } } if (showInputField) { PropertyFormRow row = PropertyFormRow.BaseInitialize( type : PropertyFormRow.CardPropertyFormRowType.InputField, parent : parentContainer, labelStrKey : sev_Prefix + sev.Name, onValueChangeAction : delegate(string value_str) { if (int.TryParse(value_str, out int res)) { s.Value = res; } onRefreshText?.Invoke(); }, setValue: out UnityAction <string, bool> setValue); setValue(s.Value.ToString(), false); pfr_List.Add(row); } } else { if (s.EnumType == typeof(CardDeck)) { PropertyFormRow row = PropertyFormRow.BaseInitialize( type : PropertyFormRow.CardPropertyFormRowType.InputField, parent : parentContainer, labelStrKey : sev_Prefix + sev.Name, onValueChangeAction : delegate(string value_str) { if (int.TryParse(value_str, out int res)) { bool hasCard = AllCards.CardDict.ContainsKey(res); if (hasCard) { s.Value = res; onRefreshText?.Invoke(); } } }, setValue: out UnityAction <string, bool> setValue, dropdownOptionList: null, onButtonClick: delegate { UIManager.Instance.GetBaseUIForm <CardEditorPanel>().ChangeCard(s.Value); } ); setValue(s.Value.ToString(), false); pfr_List.Add(row); } else { List <string> enumList = new List <string>(); if (se is TargetSideEffect t_se1 && s.EnumType == typeof(TargetSelect)) { foreach (TargetSelect targetRange in t_se1.ValidTargetSelects) { enumList.Add(targetRange.ToString()); } PropertyFormRow row = PropertyFormRow.BaseInitialize( type : PropertyFormRow.CardPropertyFormRowType.Dropdown, parent : parentContainer, labelStrKey : sev_Prefix + sev.Name, onValueChangeAction : delegate(string value_str) { s.Value = (int)Enum.Parse(s.EnumType, value_str); PropertyFormRow targetRangeRow = null; foreach (PropertyFormRow cardPropertyFormRow in pfr_List) { if (cardPropertyFormRow.LabelStrKey.Equals(sev_Prefix + "TargetRange")) { targetRangeRow = cardPropertyFormRow; break; } } if (targetRangeRow) { int siblingIndex = targetRangeRow.transform.GetSiblingIndex(); targetRangeRow.PoolRecycle(); pfr_List.Remove(targetRangeRow); Dictionary <TargetSelect, List <TargetRange> > dict = TargetSelector.TargetSelectorPresets[t_se1.TargetSelectorType]; List <string> enumList_TargetRange = new List <string>(); List <TargetRange> nlist = dict[t_se1.TargetSelect]; foreach (TargetRange targetRange in nlist) { enumList_TargetRange.Add(targetRange.ToString()); } SideEffectValue_ConstInt targetRangeSEV = (SideEffectValue_ConstInt)se.M_SideEffectParam.GetParam("TargetRange"); if (targetRangeSEV != null) { PropertyFormRow new_TargetRangeRow = PropertyFormRow.BaseInitialize( PropertyFormRow.CardPropertyFormRowType.Dropdown, parentContainer, sev_Prefix + targetRangeSEV.Name, delegate(string v_str) { targetRangeSEV.Value = (int)Enum.Parse(targetRangeSEV.EnumType, v_str); onRefreshText?.Invoke(); }, out UnityAction <string, bool> _setValue, enumList_TargetRange); targetRangeSEV.SetValue(enumList_TargetRange[0]); _setValue(Enum.GetName(targetRangeSEV.EnumType, targetRangeSEV.Value), false); onRefreshText?.Invoke(); pfr_List.Add(new_TargetRangeRow); new_TargetRangeRow.transform.SetSiblingIndex(siblingIndex); } } if (s.Value == (int)TargetSelect.Multiple || s.Value == (int)TargetSelect.MultipleRandom) { PropertyFormRow choiceCountRow = null; foreach (PropertyFormRow cardPropertyFormRow in pfr_List) { if (cardPropertyFormRow.LabelStrKey.Equals(sev_Prefix + "ChoiceCount")) { choiceCountRow = cardPropertyFormRow; break; } } if (!choiceCountRow) { SideEffectValue_ConstInt choiceCountSEV = (SideEffectValue_ConstInt)se.M_SideEffectParam.GetParam("ChoiceCount"); if (choiceCountSEV != null) { PropertyFormRow new_ChoiceCountRow = PropertyFormRow.BaseInitialize( PropertyFormRow.CardPropertyFormRowType.InputField, parentContainer, sev_Prefix + choiceCountSEV.Name, delegate(string v_str) { if (int.TryParse(v_str, out int res)) { choiceCountSEV.Value = res; } onRefreshText?.Invoke(); }, out UnityAction <string, bool> _setValue); _setValue(choiceCountSEV.Value.ToString(), false); onRefreshText?.Invoke(); pfr_List.Add(new_ChoiceCountRow); refreshContainer(); } } } else { PropertyFormRow choiceCountRow = null; foreach (PropertyFormRow cardPropertyFormRow in pfr_List) { if (cardPropertyFormRow.LabelStrKey.Equals(sev_Prefix + "ChoiceCount")) { choiceCountRow = cardPropertyFormRow; break; } } if (choiceCountRow) { choiceCountRow.PoolRecycle(); pfr_List.Remove(choiceCountRow); refreshContainer(); } } onRefreshText?.Invoke(); }, setValue: out UnityAction <string, bool> setValue, dropdownOptionList: enumList); setValue(Enum.GetName(s.EnumType, s.Value), false); onRefreshText?.Invoke(); pfr_List.Add(row); }