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>(); QueueDirty = true; foreach (var item in input.Queue) { Queue.Add(new VMQueuedAction(item, context)); } ActiveQueueBlock = input.ActiveQueueBlock; TempRegisters = input.TempRegisters; TempXL = input.TempXL; LastStackExitCode = input.LastStackExitCode; BlockingState = input.BlockingState; EODConnection = input.EODConnection; Interrupt = input.Interrupt; ActionUID = input.ActionUID; DialogCooldown = input.DialogCooldown; ScheduleIdleStart = input.ScheduleIdleStart; }
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 SerializeInto(BinaryWriter writer) { writer.Write(Stack.Length); foreach (var item in Stack) { writer.Write((byte)((item is VMRoutingFrameMarshal) ? 1 : 0)); //mode, 1 for routing frame item.SerializeInto(writer); } writer.Write(Queue.Length); foreach (var item in Queue) { item.SerializeInto(writer); } writer.Write(ActiveQueueBlock); writer.Write(VMSerializableUtils.ToByteArray(TempRegisters)); foreach (var item in TempXL) { writer.Write(item); } writer.Write((byte)LastStackExitCode); writer.Write(BlockingState != null); if (BlockingState != null) { VMAsyncState.SerializeGeneric(writer, BlockingState); } writer.Write(EODConnection != null); if (EODConnection != null) { EODConnection.SerializeInto(writer); } writer.Write(Interrupt); writer.Write(ActionUID); writer.Write(DialogCooldown); writer.Write(ScheduleIdleStart); }
public override void SerializeInto(BinaryWriter writer) { base.SerializeInto(writer); writer.Write(ID); VMAsyncState.SerializeGeneric(writer, State); }
public VMNetAsyncResponseCmd(short id, VMAsyncState state) { ID = id; State = state; }
public override void Deserialize(BinaryReader reader) { base.Deserialize(reader); ID = reader.ReadInt16(); State = VMAsyncState.DeserializeGeneric(reader, VMMarshal.LATEST_VERSION); }