public void RestoreSaveData(TaskSaveData_v1 data) { // Restore base task data symbol = data.symbol; targetSymbol = data.targetSymbol; IsTriggered = data.triggered; prevTriggered = data.prevTriggered; type = data.type; dropped = data.dropped; globalVarName = data.globalVarName; globalVarLink = data.globalVarLink; hasTriggerConditions = data.hasTriggerConditions; // Restore actions actions.Clear(); foreach (ActionTemplate.ActionSaveData_v1 actionData in data.actions) { // Construct deserialized QuestAction based on type System.Reflection.ConstructorInfo ctor = actionData.type.GetConstructor(new Type[] { typeof(Quest) }); ActionTemplate action = (ActionTemplate)ctor.Invoke(new object[] { ParentQuest }); // Restore state action.RestoreActionSaveData(actionData); actions.Add(action); } }
public TaskSaveData_v1 GetSaveData() { // Save base task data TaskSaveData_v1 data = new TaskSaveData_v1(); data.symbol = symbol; data.targetSymbol = targetSymbol; data.triggered = IsTriggered; data.prevTriggered = prevTriggered; data.type = type; data.dropped = dropped; data.globalVarName = globalVarName; data.globalVarLink = globalVarLink; data.hasTriggerConditions = hasTriggerConditions; // Save actions List <ActionTemplate.ActionSaveData_v1> actionSaveDataList = new List <ActionTemplate.ActionSaveData_v1>(); foreach (ActionTemplate action in actions) { actionSaveDataList.Add(action.GetActionSaveData()); } data.actions = actionSaveDataList.ToArray(); return(data); }