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 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(Version) : new VMStackFrameMarshal(Version); Stack[i].Deserialize(reader); } var queueN = reader.ReadInt32(); Queue = new VMQueuedActionMarshal[queueN]; for (int i = 0; i < queueN; i++) { Queue[i] = new VMQueuedActionMarshal(Version); Queue[i].Deserialize(reader); } if (Version > 4) { ActiveQueueBlock = reader.ReadSByte(); } 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()) { BlockingState = VMAsyncState.DeserializeGeneric(reader, Version); } if (Version > 2 && reader.ReadBoolean()) { EODConnection = new VMEODPluginThreadState(); EODConnection.Version = Version; EODConnection.Deserialize(reader); } else { BlockingState = null; } Interrupt = reader.ReadBoolean(); ActionUID = reader.ReadUInt16(); DialogCooldown = reader.ReadInt32(); if (Version > 15) { ScheduleIdleStart = reader.ReadUInt32(); } }
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 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(Version):new VMStackFrameMarshal(Version); 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); } if (Version > 4) ActiveQueueBlock = reader.ReadByte(); 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()) BlockingState = VMAsyncState.DeserializeGeneric(reader, Version); if (Version > 2 && reader.ReadBoolean()) { EODConnection = new VMEODPluginThreadState(); EODConnection.Version = Version; EODConnection.Deserialize(reader); } else BlockingState = null; Interrupt = reader.ReadBoolean(); ActionUID = reader.ReadUInt16(); DialogCooldown = reader.ReadInt32(); }
public virtual VMThreadMarshal Save() { var stack = new VMStackFrameMarshal[Stack.Count]; int i = 0; foreach (var item in Stack) stack[i++] = item.Save(); var queue = new VMQueuedActionMarshal[Queue.Count]; i = 0; foreach (var item in Queue) queue[i++] = item.Save(); return new VMThreadMarshal { Stack = stack, Queue = queue, TempRegisters = TempRegisters, TempXL = TempXL, LastStackExitCode = LastStackExitCode, BlockingDialog = BlockingDialog, Interrupt = Interrupt, ActionUID = ActionUID, DialogCooldown = DialogCooldown }; }
public void Load(VMQueuedActionMarshal input, VMContext context) { CodeOwner = FSO.Content.Content.Get().WorldObjects.Get(input.CodeOwnerGUID); BHAV bhav = null; if (input.RoutineID >= 8192) bhav = CodeOwner.Resource.SemiGlobal.Get<BHAV>(input.RoutineID); else if (input.RoutineID >= 4096) bhav = CodeOwner.Resource.Get<BHAV>(input.RoutineID); else bhav = context.Globals.Resource.Get<BHAV>(input.RoutineID); ActionRoutine = context.VM.Assemble(bhav); if (input.CheckRoutineID != 0) { if (input.CheckRoutineID >= 8192) bhav = CodeOwner.Resource.SemiGlobal.Get<BHAV>(input.CheckRoutineID); else if (input.CheckRoutineID >= 4096) bhav = CodeOwner.Resource.Get<BHAV>(input.CheckRoutineID); else bhav = context.Globals.Resource.Get<BHAV>(input.CheckRoutineID); CheckRoutine = context.VM.Assemble(bhav); } Callee = context.VM.GetObjectById(input.Callee); StackObject = context.VM.GetObjectById(input.StackObject); IconOwner = context.VM.GetObjectById(input.IconOwner); Name = input.Name; Args = input.Args; InteractionNumber = input.InteractionNumber; Cancelled = input.Cancelled; Priority = input.Priority; Mode = input.Mode; Flags = input.Flags; Flags2 = input.Flags2; UID = input.UID; Callback = (input.Callback == null)?null:new VMActionCallback(input.Callback, context); }
public VMQueuedAction(VMQueuedActionMarshal input, VMContext context) { Load(input, context); }