private void ReadTurfDeltasSection(PacketStream stream) { UInt32 turfDeltasCount = stream.ReadUInt32(); for (int i = 0; i < turfDeltasCount; i++) { UInt16 x = stream.ReadUInt16(); UInt16 y = stream.ReadUInt16(); UInt32 turfAtomID = stream.ReadUInt32(); DeltaState.TurfDeltas[(x, y)] = turfAtomID;
private void ReadAtomDeltasSection(PacketStream stream) { UInt16 atomDeltasCount = stream.ReadUInt16(); for (int i = 0; i < atomDeltasCount; i++) { UInt32 atomID = stream.ReadUInt32(); DreamDeltaState.AtomDelta atomDelta = new DreamDeltaState.AtomDelta(); AtomDeltaValueID valueID; do { valueID = (AtomDeltaValueID)stream.ReadByte(); if (valueID == AtomDeltaValueID.ScreenLocation) { atomDelta.ScreenLocation = stream.ReadScreenLocation(); } else if (valueID == AtomDeltaValueID.IconAppearance) { atomDelta.NewIconAppearanceID = (int)stream.ReadUInt32(); } else if (valueID != AtomDeltaValueID.End) { throw new Exception("Invalid atom delta value ID in delta game state packet (" + valueID.ToString() + ")"); } } while (valueID != AtomDeltaValueID.End); DeltaState.AtomDeltas.Add(atomID, atomDelta); } }
public void ReadFromStream(PacketStream stream) { PromptId = stream.ReadUInt16(); Type = (DMValueType)stream.ReadUInt16(); switch (Type) { case DMValueType.Null: Value = null; break; case DMValueType.Text: Value = stream.ReadString(); break; case DMValueType.Num: Value = stream.ReadInt32(); break; case DMValueType.Message: Value = stream.ReadString(); break; default: throw new Exception("Invalid prompt response type '" + Type + "'"); } }
private void ReadAtomDeletionsSection(PacketStream stream) { UInt16 atomDeletionsCount = stream.ReadUInt16(); for (int i = 0; i < atomDeletionsCount; i++) { DeltaState.AtomDeletions.Add(stream.ReadUInt32()); } }
public void ReadFromStream(PacketStream stream) { File = stream.ReadString(); if (File == String.Empty) { File = null; } Channel = stream.ReadUInt16(); Volume = (File != null) ? stream.ReadByte() : 100; }
private void ReadMapSection(PacketStream stream) { UInt16 mapWidth = stream.ReadUInt16(); UInt16 mapHeight = stream.ReadUInt16(); UInt16 levels = stream.ReadUInt16(); FullState.Levels = new List <DreamFullState.Level>(levels); for (int z = 0; z < levels; z++) { FullState.Levels.Add(new DreamFullState.Level(mapWidth, mapHeight)); for (int x = 0; x < mapWidth; x++) { for (int y = 0; y < mapHeight; y++) { FullState.Levels[z].Turfs[x, y] = stream.ReadUInt32(); } } } }
public void ReadFromStream(PacketStream stream) { Window = stream.ReadString(); if (Window == String.Empty) { Window = null; } bool hasHtmlSource = stream.ReadBool(); if (hasHtmlSource) { HtmlSource = stream.ReadString(); } else { HtmlSource = null; } Size = new Size(stream.ReadUInt16(), stream.ReadUInt16()); }
private void ReadAtomCreationsSection(PacketStream stream) { UInt16 atomCreationsCount = stream.ReadUInt16(); for (int i = 0; i < atomCreationsCount; i++) { UInt32 atomID = stream.ReadUInt32(); DreamDeltaState.AtomCreation atomCreation = new DreamDeltaState.AtomCreation((AtomType)stream.ReadByte(), (int)stream.ReadUInt32()); atomCreation.LocationID = stream.ReadUInt32(); if (atomCreation.Type == AtomType.Movable) { atomCreation.ScreenLocation = stream.ReadScreenLocation(); } DeltaState.AtomCreations.Add(atomID, atomCreation); } }
public void ReadFromStream(PacketStream stream) { PromptId = stream.ReadUInt16(); Types = (DMValueType)stream.ReadUInt16(); Message = stream.ReadString(); }
public void ReadFromStream(PacketStream stream) { List <WindowDescriptor> windowDescriptors = new List <WindowDescriptor>(); int windowCount = stream.ReadByte(); for (int i = 0; i < windowCount; i++) { string windowName = stream.ReadString(); List <ElementDescriptor> elementDescriptors = new List <ElementDescriptor>(); int elementCount = stream.ReadByte(); for (int j = 0; j < elementCount; j++) { string elementName = stream.ReadString(); DescriptorType elementType = (DescriptorType)stream.ReadByte(); ElementDescriptor elementDescriptor; switch (elementType) { case DescriptorType.Main: elementDescriptor = new ElementDescriptorMain(elementName); break; case DescriptorType.Input: elementDescriptor = new ElementDescriptorInput(elementName); break; case DescriptorType.Button: elementDescriptor = new ElementDescriptorButton(elementName); break; case DescriptorType.Child: elementDescriptor = new ElementDescriptorChild(elementName); break; case DescriptorType.Output: elementDescriptor = new ElementDescriptorOutput(elementName); break; case DescriptorType.Info: elementDescriptor = new ElementDescriptorInfo(elementName); break; case DescriptorType.Map: elementDescriptor = new ElementDescriptorMap(elementName); break; case DescriptorType.Browser: elementDescriptor = new ElementDescriptorBrowser(elementName); break; default: throw new Exception("Invalid descriptor type '" + elementType + "'"); } elementDescriptors.Add(elementDescriptor); AttributeType valueType; do { valueType = (AttributeType)stream.ReadByte(); switch (valueType) { case AttributeType.Pos: elementDescriptor.Pos = new Point(stream.ReadUInt16(), stream.ReadUInt16()); break; case AttributeType.Size: elementDescriptor.Size = new Size(stream.ReadUInt16(), stream.ReadUInt16()); break; case AttributeType.Anchor1: elementDescriptor.Anchor1 = new Point(stream.ReadUInt16(), stream.ReadUInt16()); break; case AttributeType.Anchor2: elementDescriptor.Anchor2 = new Point(stream.ReadUInt16(), stream.ReadUInt16()); break; case AttributeType.BackgroundColor: elementDescriptor.BackgroundColor = Color.FromArgb(stream.ReadByte(), stream.ReadByte(), stream.ReadByte()); break; case AttributeType.IsVisible: elementDescriptor.IsVisible = stream.ReadBool(); break; case AttributeType.IsDefault: elementDescriptor.IsDefault = stream.ReadBool(); break; case AttributeType.IsPane: ((ElementDescriptorMain)elementDescriptor).IsPane = stream.ReadBool(); break; case AttributeType.Left: ((ElementDescriptorChild)elementDescriptor).Left = stream.ReadString(); break; case AttributeType.Right: ((ElementDescriptorChild)elementDescriptor).Right = stream.ReadString(); break; case AttributeType.IsVert: ((ElementDescriptorChild)elementDescriptor).IsVert = stream.ReadBool(); break; case AttributeType.Text: if (elementDescriptor is ElementDescriptorButton) { ((ElementDescriptorButton)elementDescriptor).Text = stream.ReadString(); } break; case AttributeType.End: break; default: throw new Exception("Invalid attribute type '" + valueType + "'"); } } while (valueType != AttributeType.End); } WindowDescriptor windowDescriptor = new WindowDescriptor(windowName, elementDescriptors); windowDescriptors.Add(windowDescriptor); } InterfaceDescriptor = new InterfaceDescriptor(windowDescriptors); }