private void ShowWithUserAction(ActionString withUserString) { ActionCard.ActionType insideType = (ActionCard.ActionType)Enum.Parse(typeof(ActionCard.ActionType), withUserString.variables[0]); withUserString.variables[0] = EditorGUILayout.EnumPopup("InsideType", insideType).ToString(); ActionString moneyString = ActionString.FromString(withUserString.variables[1]); ActionString waitString = ActionString.FromString(withUserString.variables[2]); ActionString moveString = ActionString.FromString(withUserString.variables[3]); //Pomijamy indeks 4, bo jest to ActionType.WithUser switch (insideType) { case ActionCard.ActionType.Money: ShowMoneyAction(moneyString); break; case ActionCard.ActionType.Wait: ShowWaitAction(waitString); break; case ActionCard.ActionType.Move: ShowMoveAction(moveString); break; } withUserString.variables[1] = moneyString.ToString(); withUserString.variables[2] = waitString.ToString(); withUserString.variables[3] = moveString.ToString(); }
public static ActionString GenerateDefault(ActionCard.ActionType actionType) { switch (actionType) { case ActionCard.ActionType.Money: return(new ActionString(ActionCard.ActionType.Money, new List <string>() { "Bank", "Player", "0" })); case ActionCard.ActionType.Wait: return(new ActionString(ActionCard.ActionType.Wait, new List <string>() { "Player", "0" })); case ActionCard.ActionType.Move: return(new ActionString(ActionCard.ActionType.Move, new List <string>() { "By", "0", "PlaceId", "0", "Prison", "Regular" })); case ActionCard.ActionType.WithUser: { List <string> variables = new List <string>(); variables.Add(ActionCard.ActionType.Money.ToString()); //Ustawianie domyślnych wartości dla wszystkich możliwych ActionType foreach (ActionCard.ActionType type in Enum.GetValues(typeof(ActionCard.ActionType))) { if (type == ActionCard.ActionType.WithUser) { variables.Add(new ActionString(ActionCard.ActionType.WithUser, new List <string>()).ToString()); } else { variables.Add(GenerateDefault(type).ToString()); } } return(new ActionString(ActionCard.ActionType.WithUser, variables)); } case ActionCard.ActionType.Imprison: return(new ActionString(ActionCard.ActionType.Imprison, new List <string>() { })); } return(null); }
/// <summary> /// Otwiera menu do dodawania poszczególnych akcji /// </summary> /// <param name="card">Obiekt, na którym działa edytor</param> private void AddMenu(ChanceCard card) { EditorGUILayout.BeginHorizontal(); currentType = (ActionCard.ActionType)EditorGUILayout.EnumPopup("New Action Card", currentType); if (GUILayout.Button("Add")) { ActionString actionString = ActionString.GenerateDefault(currentType); actionIsOpen.Add(true); card.actionStrings.Add(actionString); EditorUtility.SetDirty(target); } EditorGUILayout.EndHorizontal(); }
public static ActionString FromString(string values) { ActionCard.ActionType actionType = ActionCard.ActionType.Money; List <string> unpackedValues = new List <string>(); List <string> list = SplitString(values, '{', '}'); for (int i = 0; i < list.Count; i++) { string unpacked = list[i].Substring(1, list[i].Length - 2); if (i == 0) { actionType = (ActionCard.ActionType)Enum.Parse(typeof(ActionCard.ActionType), unpacked); } else { unpackedValues.Add(unpacked); } } return(new ActionString(actionType, unpackedValues)); }
public ActionString(ActionCard.ActionType actionType, List <string> variables) { this.actionType = actionType; this.variables = variables; }
public ActionString() { actionType = ActionCard.ActionType.Money; variables = new List <string>(); }