public static void SelectAddOp(string var, ITestable testable, Action updateAction, bool test = true) { if (var == null) { updateAction.Invoke(); return; } VarTests tests = testable.Tests; List <VarOperation> operations = testable.Operations; VarOperation op = new VarOperation(); op.var = var; op.operation = "="; if (test) { op.operation = ">"; } op.value = "0"; if (op.var.Equals("{NEW}")) { // Var name doesn localize var textEdit = new QuestEditorTextEdit(CommonStringKeys.VAR_NAME, "", s => NewVar(s, op, test, testable, updateAction)); textEdit.EditText(); } else { if (test) { if (tests.VarTestsComponents.Count == 0) { tests.Add(op); } else { tests.Add(new VarTestsLogicalOperator()); tests.Add(op); } } else { operations.Add(op); } updateAction.Invoke(); } }
public static QuestButtonData FromData(Dictionary <string, string> data, int position, string sectionName) { var buttonLabel = ReadButtonLabel(data, position, sectionName); QuestButtonData questButtonData = null; if (data.TryGetValue("event" + position, out var nextEventString)) { questButtonData = FromSingleString(buttonLabel, nextEventString); } else { questButtonData = new QuestButtonData(buttonLabel, new List <string>()); } if (data.TryGetValue($"event{position}Condition", out var conditionString) && !string.IsNullOrWhiteSpace(conditionString)) { var tests = new VarTests(); string[] array = conditionString.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string s in array) { tests.Add(s); } questButtonData.Condition = tests; if (data.TryGetValue($"event{position}ConditionAction", out var conditionActionString) && !string.IsNullOrWhiteSpace(conditionActionString) && Enum.TryParse(conditionActionString, true, out QuestButtonAction action)) { questButtonData.RawConditionFailedAction = action; } } if (data.ContainsKey("buttoncolor" + position)) { questButtonData.Color = data["buttoncolor" + position]; } return(questButtonData); }
public static QuestButtonData FromSingleString(StringKey labelKey, string eventDataString) { if (string.IsNullOrWhiteSpace(eventDataString)) { return(new QuestButtonData(labelKey)); } // Extract event names var strings = eventDataString.Split(EVENT_PARAMETER_SEPARATOR); if (strings.Length <= 0) { return(new QuestButtonData(labelKey)); } var questNames = strings[0].Split(EVENT_NAME_SEPARATOR, StringSplitOptions.RemoveEmptyEntries); // Backward compatibility with unreleased 2.4.11a // Skip conditional event parameters if not all parameters are present if (strings.Length < 4) { return(new QuestButtonData(labelKey, questNames.ToList())); } var conditionString = string.Join(",", strings[1], strings[2], strings[3]); VarOperation condition = new VarOperation(conditionString); var varTests = new VarTests(); varTests.Add(condition); // Optional ButtonAction parameter (defaults to DISABLE, but can be HIDE or NONE as well) if (strings.Length > 4 && Enum.TryParse(strings[4], true, out QuestButtonAction action)) { return(new QuestButtonData(labelKey, questNames.ToList(), varTests, action)); } return(new QuestButtonData(labelKey, questNames.ToList(), varTests)); }