コード例 #1
0
ファイル: Cli2Srv.cs プロジェクト: branan/PlasmaDotNet
 public void Read(hsStream s)
 {
     fType = (ENetProtocol)s.ReadByte();
     if (s.ReadUShort() != kHeaderSize)
         throw new NotSupportedException();
     fBuildID = s.ReadUInt();
     fBuildType = (EBuildType)s.ReadUInt();
     fBranchID = s.ReadUInt();
     fProductUuid = pnHelpers.ReadUuid(s);
 }
コード例 #2
0
ファイル: NsBase.cs プロジェクト: branan/PlasmaDotNet
 public void Read(hsStream s)
 {
     fType = (ENetProtocol)s.ReadByte();
     if (s.ReadUShort() != kHeaderSize)
         throw new NotSupportedException();
     fBuildID = s.ReadUInt();
     fProtocolVer = s.ReadUInt();
     if (fProtocolVer < 50)
         fProtocolVer = 50; // <= 50 are the old "Build Type" values...
     fBranchID = s.ReadUInt();
     fProductUuid = pnHelpers.ReadUuid(s);
 }
コード例 #3
0
ファイル: InputMsg.cs プロジェクト: branan/PlasmaDotNet
 public override void Read(hsStream s, hsResMgr mgr)
 {
     base.Read(s, mgr);
     fState = s.ReadUShort();
 }
コード例 #4
0
ファイル: NotifyMsg.cs プロジェクト: branan/PlasmaDotNet
 protected override void IRead(hsStream s, hsResMgr mgr)
 {
     fID = s.ReadUInt();
     fSerial = s.ReadUShort();
 }
コード例 #5
0
ファイル: ManagedType.cs プロジェクト: branan/PlasmaDotNet
        /// <summary>
        /// Reads in a Version-specific type and returns an internal type identifier
        /// </summary>
        /// <param name="s">The stream to read from</param>
        /// <returns>Internal unique type identifier</returns>
        public static plCreatableID Read(hsStream s)
        {
            if (fTypeMaps == null)
                IBuildTypeMaps();

            ushort data = s.ReadUShort();
            plCreatableID type = plCreatableID.NULL;

            //Note: We must adjust < PotS IDs...
            if (s.Version < plVersion.PathOfTheShell)
                if (data > (ushort)UruTypes.plAvatarSpawnNotifyMsg)
                    data++;
            //End type adjustment

            foreach (KeyValuePair<plTypeBounds, Type> kvp in fTypeMaps) {
                if (kvp.Key.UpperBoundary >= s.Version && s.Version >= kvp.Key.LowerBoundary) {
                    string value = Enum.GetName(kvp.Value, data);
                    type = (plCreatableID)Enum.Parse(typeof(plCreatableID), value);
                }
            }

            return type;
        }
コード例 #6
0
ファイル: PageInfo.cs プロジェクト: branan/PlasmaDotNet
        public void Read(hsStream s)
        {
            // Magically figure out what version we have...
            uint prpVer = s.ReadUInt();
            switch (prpVer) {
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                    s.Version = new plVersion(2, 0, 0, 0);
                    break;
                case 6:
                    s.Version = plVersion.MystOnline;
                    break;
                default:
                    // Must be some sort of Myst 5 variant...
                    s.Rewind();
                    prpVer = (uint)s.ReadUShort();
                    switch (prpVer) {
                        case 6:
                            s.Version = plVersion.EndOfAges;
                            break;
                        case 9:
                            s.Version = plVersion.HexIsle;
                            break;
                        default:
                            throw new plVersionException(prpVer);
                    }
                    break;
            }

            if (s.Version.IsPlasma21)
                IReadClassVersions(s);

            fLocation.Read(s);
            fAge = s.ReadSafeString();
            if (s.Version.IsPreMystOnline) fChapter = s.ReadSafeString();
            else if (s.Version.IsMystOnline) fChapter = "District";
            fPage = s.ReadSafeString();

            // Some more versioning stuff for Uru...
            if (s.Version.IsMystOnline)
                s.Version = new plVersion(2, 0, s.ReadUShort(), 0);
            else if (s.Version.IsPreMystOnline)
                s.Version = new plVersion(2, 0, s.ReadUShort(), s.ReadUShort());

            if (prpVer < 6) {
                if (prpVer < 5) // IndexChecksum -- deprecated...
                    s.ReadUInt();
                if (prpVer >= 2)
                    fReleaseVersion = s.ReadInt();
                if (prpVer >= 3)
                    fFlags = (Flags)s.ReadInt();
            }

            if (prpVer >= 4)
                fChecksum = s.ReadUInt();
            if (prpVer >= 5) {
                fDataStart = s.ReadUInt();
                fIndexStart = s.ReadUInt();
            } else {
                //prm/prx???
                fDataStart = 0;
                fIndexStart = s.ReadByte();
            }

            // Garbage
            if (s.Version.IsMystOnline)
                IReadClassVersions(s);
        }
コード例 #7
0
ファイル: PageInfo.cs プロジェクト: branan/PlasmaDotNet
        private void IReadClassVersions(hsStream s)
        {
            // TODO: Save this data? For now, throw it away.
            ushort nTypes = s.ReadUShort();
            for (ushort i = 0; i < nTypes; i++) {
                plCreatableID type = plManagedType.Read(s);
                ushort vers = s.ReadUShort();

                if (vers != 0)
                    plDebugLog.GetLog("ResManager").Warn(
                        String.Format("\t* ClassVersion: {0}, {1}",
                        plManagedType.ClassName(type), vers));
            }
        }
コード例 #8
0
ファイル: ClientGuid.cs プロジェクト: branan/PlasmaDotNet
        public override void Read(hsStream s, hsResMgr mgr)
        {
            fFlags = (Flags)s.ReadShort();

            if (HasAccount)
                fAcctUUID = new Guid(s.ReadBytes(16));
            if (HasPlayerID)
                fPlayerID = s.ReadUInt();
            if (HasPlayerName)
                fPlayerName = s.ReadStdString();
            if (HasCCRLevel)
                fCCRLevel = s.ReadByte();
            if (HasProtectedLogin)
                fProtectedLogin = s.ReadBool();
            if (HasBuildType)
                fBuildType = s.ReadByte();
            if (HasSrcAddr)
                fSrcAddr = s.ReadUInt();
            if (HasSrcPort)
                fSrcPort = s.ReadUShort();
            if (HasReserved)
                fReserved = s.ReadUShort();
            if (HasClientKey)
                fClientKey = s.ReadStdString();
        }