public void Deserialize(BinaryReader reader) { var stackN = reader.ReadInt32(); Stack = new VMStackFrameMarshal[stackN]; for (int i = 0; i < stackN; i++) { var type = reader.ReadByte(); Stack[i] = (type == 1)?new VMRoutingFrameMarshal():new VMStackFrameMarshal(); Stack[i].Deserialize(reader); } var queueN = reader.ReadInt32(); Queue = new VMQueuedActionMarshal[queueN]; for (int i = 0; i < queueN; i++) { Queue[i] = new VMQueuedActionMarshal(); Queue[i].Deserialize(reader); } TempRegisters = new short[20]; for (int i = 0; i < 20; i++) { TempRegisters[i] = reader.ReadInt16(); } TempXL = new int[2]; for (int i = 0; i < 2; i++) { TempXL[i] = reader.ReadInt32(); } LastStackExitCode = (VMPrimitiveExitCode)reader.ReadByte(); if (reader.ReadBoolean()) { BlockingDialog = new VMDialogResult(); BlockingDialog.Deserialize(reader); } else { BlockingDialog = null; } Interrupt = reader.ReadBoolean(); ActionUID = reader.ReadUInt16(); DialogCooldown = reader.ReadInt32(); }
public virtual void Load(VMThreadMarshal input, VMContext context) { Stack = new List <VMStackFrame>(); foreach (var item in input.Stack) { Stack.Add((item is VMRoutingFrameMarshal)? new VMRoutingFrame(item, context, this) : new VMStackFrame(item, context, this)); } Queue = new List <VMQueuedAction>(); foreach (var item in input.Queue) { Queue.Add(new VMQueuedAction(item, context)); } TempRegisters = input.TempRegisters; TempXL = input.TempXL; LastStackExitCode = input.LastStackExitCode; BlockingDialog = input.BlockingDialog; Interrupt = input.Interrupt; ActionUID = input.ActionUID; DialogCooldown = input.DialogCooldown; }