protected override void ParseMessage(IncomingMessage inMessage)
 {
     version = inMessage.ReadInt32();
     challenge = inMessage.ReadBytes();
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     uiModules = new List<string>();
     int numModules = inMessage.ReadInt32();
     for (int i = 0; i < numModules; ++i)
         uiModules.Add(inMessage.ReadString());
     try {
         // introduced in 1.0
         keyBindingsFile = inMessage.ReadString();
     } catch (Exception) {
     }
 }
        protected override void ParseMessage(IncomingMessage inMessage)
        {
            version = inMessage.ReadString();
            worldToken = inMessage.ReadBytes();
            error = inMessage.ReadString();

            int entryCount = inMessage.ReadInt32();
            entries = new List<PropertyMap>();
            for (int i = 0; i < entryCount; ++i) {
                PropertyMap entry = new PropertyMap();
                entry.OldParseMessage(inMessage);
                entries.Add(entry);
            }
        }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     base.ParseMessage(inMessage);
     particleOid = inMessage.ReadInt64();
     timeToImpact = inMessage.ReadInt32();
     timestamp = inMessage.ReadTimestamp();
     targetSocket = inMessage.ReadString();
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     base.ParseMessage(inMessage);
     accepted = inMessage.ReadBool();
     cancelled = inMessage.ReadBool();
     int numItems = inMessage.ReadInt32();
     for (int i = 0; i < numItems; ++i) {
         offer.Add(inMessage.ReadInt64());
     }
 }
        protected override void ParseMessage(IncomingMessage inMessage)
        {
            int numEntries = inMessage.ReadInt32();
            for (int i = 0; i < numEntries; ++i) {
                string type = inMessage.ReadString();
                switch (type) {
                    case "add":
                        SoundEntry entry = new SoundEntry();
                        entry.soundName = inMessage.ReadString();
                        if (entry.soundName == "idle") {
                            sounds.Clear();
                            clear = true;
                            break;
                        } else if (entry.soundName == "strike") {
                            entry.soundName = "swing.wav";
                        } else if (entry.soundName == "run") {
                            entry.soundName = "gravelwalk.wav";
                        } else if (entry.soundName == "death") {
                            entry.soundName = "ugh.wav";
                        }

                        entry.soundSpeed = 1.0f;
                        entry.soundGain = 1.0f;
                        entry.loop = inMessage.ReadBool();
                        log.InfoFormat("Playing Sound {0}, looping = {1}",
                                       entry.soundName, entry.loop);
                        if (sounds.Count > 0) {
                            SoundEntry last = sounds[sounds.Count - 1];
                            if (last.loop)
                                sounds.RemoveAt(sounds.Count - 1);
                        }
                        sounds.Add(entry);
                        break;
                    case "clear":
                        sounds.Clear();
                        clear = true;
                        break;
                    default:
                        log.ErrorFormat("Invalid sound message type: {0}", type);
                        break;
                }
            }
        }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     statValues.Clear();
     int numElements = inMessage.ReadInt32();
     for (int i = 0; i < numElements; ++i) {
         string statName = inMessage.ReadString();
         int statValue = inMessage.ReadInt32();
         statValues[statName] = statValue;
     }
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     int numEntries = inMessage.ReadInt32();
     for (int i = 0; i < numEntries; ++i) {
         AbilityEntry entry = new AbilityEntry();
         entry.name = inMessage.ReadString();
         entry.icon = inMessage.ReadString();
         entry.category = inMessage.ReadString();
         entries.Add(entry);
     }
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     base.ParseMessage(inMessage);
     name = inMessage.ReadString();
     location = inMessage.ReadIntVector();
     orientation = inMessage.ReadQuaternion();
     scale = inMessage.ReadVector();
     objectType = (ObjectNodeType)inMessage.ReadInt32();
     followTerrain = inMessage.ReadBool();
     try {
         direction = inMessage.ReadVector();
         lastInterp = inMessage.ReadTimestamp();
     } catch (System.IO.EndOfStreamException) {
         // ignore this - it means we got an old style response
     }
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     imageName = inMessage.ReadString();
     positionX = inMessage.ReadInt32();
     positionZ = inMessage.ReadInt32();
     sizeX = inMessage.ReadSingle();
     sizeZ = inMessage.ReadSingle();
     rotation = inMessage.ReadSingle();
     priority = inMessage.ReadInt32();
     expireTime = inMessage.ReadInt64();
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     base.ParseMessage(inMessage);
     lightType = (LightNodeType)inMessage.ReadInt32();
     name = inMessage.ReadString();
     diffuse = inMessage.ReadColor();
     specular = inMessage.ReadColor();
     attenuationRange = inMessage.ReadSingle();
     attenuationConstant = inMessage.ReadSingle();
     attenuationLinear = inMessage.ReadSingle();
     attenuationQuadratic = inMessage.ReadSingle();
     switch (lightType) {
         case LightNodeType.Point:
             location = inMessage.ReadIntVector();
             break;
         case LightNodeType.Directional:
             orientation = inMessage.ReadQuaternion();
             break;
         case LightNodeType.Spotlight:
             location = inMessage.ReadIntVector();
             orientation = inMessage.ReadQuaternion();
             spotlightInnerAngle = inMessage.ReadSingle();
             spotlightOuterAngle = inMessage.ReadSingle();
             spotlightFalloff = inMessage.ReadSingle();
             break;
         default:
             throw new Exception("Invalid light node type: " + lightType);
     }
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     startTime = inMessage.ReadTimestamp();
     interpKind = inMessage.ReadString();
     speed = inMessage.ReadSingle();
     terrainString = inMessage.ReadString();
     int count = inMessage.ReadInt32();
     pathPoints = new List<Vector3>();
     for (int i=0; i<count; i++)
         pathPoints.Add(inMessage.ReadIntVector().ToVector3());
 }
        protected override void ParseMessage(IncomingMessage inMessage)
        {
            name = inMessage.ReadString();
            icon = inMessage.ReadString();
            description = inMessage.ReadString();

            int numCooldowns = inMessage.ReadInt32();
            for (int i = 0; i < numCooldowns; i++)
                cooldowns.Add(inMessage.ReadString());

            int numProperties = inMessage.ReadInt32();
            for (int i = 0; i < numProperties; i++) {
                string key = inMessage.ReadString();
                string value = inMessage.ReadString();
                properties[key] = value;
            }
        }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     loginStatus = (LoginStatus)inMessage.ReadInt32();
     masterToken = inMessage.ReadBytes();
     oldToken = inMessage.ReadBytes();
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     name = inMessage.ReadString();
     points = new List<Vector3>();
     int numPoints = inMessage.ReadInt32();
     for (int i = 0; i < numPoints; ++i) {
         IntVector3 point = inMessage.ReadIntVector();
         points.Add(point.ToVector3());
     }
     try {
         halfWidth = inMessage.ReadInt32();
     } catch (System.IO.EndOfStreamException) {
         log.Warn("Got old style road message");
         // ignore this - it means we got an old style message
         halfWidth = -1; // Use default
     }
 }
 public override void ParseMessage(IncomingMessage inMessage)
 {
     meshFile = inMessage.ReadString();
     int submeshCount = inMessage.ReadInt32();
     // submesh count of zero means we leave the submesh list null
     if (submeshCount != 0)
         submeshList = new List<SubmeshInfo>();
     for (int i = 0; i < submeshCount; ++i) {
         SubmeshInfo submeshInfo = new SubmeshInfo();
         submeshInfo.submeshName = inMessage.ReadString();
         submeshInfo.materialName = inMessage.ReadString();
         submeshInfo.castShadows = true;
         submeshInfo.receiveShadows = true;
         submeshList.Add(submeshInfo);
         log.InfoFormat("submesh name: {0}; material: {1}", submeshInfo.SubmeshName, submeshInfo.MaterialName);
     }
 }
        protected override void ParseMessage(IncomingMessage inMessage)
        {
            newSoundEntries = new Dictionary<string, PropertyMap>();
            freeSoundEntries = new List<string>();
            clearSounds = false;

            int numEntries = inMessage.ReadInt32();
            for (int i = 0; i < numEntries; ++i) {
                string msgType = inMessage.ReadString();
                switch (msgType) {
                    case "on": {
                            string soundName = inMessage.ReadString();
                            PropertyMap propertyMap = new PropertyMap();
                            propertyMap.ParseMessage(inMessage);
                            newSoundEntries[soundName] = propertyMap;
                        }
                        break;
                    case "off":
                        freeSoundEntries.Add(inMessage.ReadString());
                        break;
                    case "clear":
                        clearSounds = true;
                        break;
                }
            }
        }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     int meshCount = inMessage.ReadInt32();
     for (int i = 0; i < meshCount; ++i) {
         OldMeshInfo meshInfo = new OldMeshInfo();
         meshInfo.ParseMessage(inMessage);
         modelInfo.Add(meshInfo);
     }
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     int stateCount = inMessage.ReadInt32();
     while (stateCount > 0) {
         string key = inMessage.ReadString();
         int val = inMessage.ReadInt32();
         states[key] = val;
         stateCount--;
     }
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     int numProperties = inMessage.ReadInt32();
     for (int i = 0; i < numProperties; i++) {
         string key = inMessage.ReadString();
         string value = inMessage.ReadString();
         properties[key] = value;
     }
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     base.ParseMessage(inMessage);
     particleOid = inMessage.ReadInt64();
     timeToImpact = inMessage.ReadInt32();
     timestamp = inMessage.ReadTimestamp();
     location = inMessage.ReadIntVector();
 }
 // This is used to read CharacterResponse,
 // CharacterDeleteResponse, and CharacterCreateResponse
 // messages, but nothing else
 public void OldParseMessage(IncomingMessage inMessage)
 {
     int numProperties = inMessage.ReadInt32();
     for (int i = 0; i < numProperties; i++) {
         string key = inMessage.ReadString();
         string type = inMessage.ReadString();
         string value = inMessage.ReadString();
         switch (type) {
         case "S":
             properties[key] = value;
             break;
         case "B":
             properties[key] = bool.Parse(value);
             break;
         case "I":
             properties[key] = int.Parse(value);
             break;
         case "L":
             properties[key] = long.Parse(value);
             break;
         case "F":
             properties[key] = float.Parse(value);
             break;
         case "V":
             properties[key] = Vector3.Parse(value);
             break;
         case "Q":
             properties[key] = Quaternion.Parse(value);
             break;
         default:
             throw new System.IO.InvalidDataException("unknown property type");
         }
     }
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     base.ParseMessage(inMessage);
     status = inMessage.ReadInt32();
 }
        protected override void ParseMessage(IncomingMessage inMessage)
        {
            questId = inMessage.ReadInt64();
            title = inMessage.ReadString();
            description = inMessage.ReadString();
            objective = inMessage.ReadString();
            int rewardCount = inMessage.ReadInt32();
            for (int i = 0; i < rewardCount; ++i) {
                ItemEntry entry = new ItemEntry();
                entry.name = inMessage.ReadString();
                entry.icon = inMessage.ReadString();
                entry.count = inMessage.ReadInt32();

                rewardItems.Add(entry);
            }
        }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     base.ParseMessage(inMessage);
     int numItems = inMessage.ReadInt32();
     for (int i = 0; i < numItems; ++i) {
         InvItemInfo info = new InvItemInfo();
         info.itemId = inMessage.ReadInt64();
         info.name = inMessage.ReadString();
         info.icon = inMessage.ReadString();
         offer1.Add(info);
     }
     accepted1 = inMessage.ReadBool();
     numItems = inMessage.ReadInt32();
     for (int i = 0; i < numItems; ++i) {
         InvItemInfo info = new InvItemInfo();
         info.itemId = inMessage.ReadInt64();
         info.name = inMessage.ReadString();
         info.icon = inMessage.ReadString();
         offer2.Add(info);
     }
     accepted2 = inMessage.ReadBool();
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     questId = inMessage.ReadInt64();
     int numEntries = inMessage.ReadInt32();
     for (int i = 0; i < numEntries; ++i)
         objectives.Add(inMessage.ReadString());
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     int subMessageCount = inMessage.ReadInt32();
     for (int i = 0; i < subMessageCount; i++) {
         byte[] subMessageBytes = inMessage.ReadBytes();
         IncomingMessage subMessage = new IncomingMessage(subMessageBytes, inMessage);
         BaseWorldMessage msg = WorldMessageFactory.ReadMessage(subMessage);
         if (msg != null)
             subMessages.Add(msg);
         else
             log.WarnFormat("AggregatedRDP.ParseMessage got null when reading message from {0} bytes", subMessageBytes.Length);
     }
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     worldName = inMessage.ReadString();
     status = inMessage.ReadBool();
     hostname = inMessage.ReadString();
     port = inMessage.ReadInt32();
     try {
         patcherUrl = inMessage.ReadString();
         updateUrl = inMessage.ReadString();
     } catch (System.IO.EndOfStreamException) {
         log.Warn("Got old style world resolve response");
         // ignore this - it means we got an old style response
     }
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     int numEntries = inMessage.ReadInt32();
     for (int i = 0; i < numEntries; ++i) {
         string type = inMessage.ReadString();
         switch (type) {
             case "add":
                 AnimationEntry entry = new AnimationEntry();
                 entry.animationName = inMessage.ReadString();
                 entry.animationSpeed = 1.0f;
                 entry.loop = inMessage.ReadBool();
                 if (animations.Count > 0) {
                     AnimationEntry last = animations[animations.Count - 1];
                     if (last.loop)
                         animations.RemoveAt(animations.Count - 1);
                 }
                 animations.Add(entry);
                 break;
             case "clear":
                 animations.Clear();
                 clear = true;
                 break;
             default:
                 log.WarnFormat("Invalid animation message type: {0}", type);
                 break;
         }
     }
 }
 protected override void ParseMessage(IncomingMessage inMessage)
 {
     int numEntries = inMessage.ReadInt32();
     for (int i = 0; i < numEntries; ++i) {
         InventoryUpdateEntry entry = new InventoryUpdateEntry();
         entry.itemId = inMessage.ReadInt64();
         entry.containerId = inMessage.ReadInt32();
         entry.slotId = inMessage.ReadInt32();
         entry.name = inMessage.ReadString();
         entry.icon = inMessage.ReadString();
         entries.Add(entry);
     }
 }