Пример #1
0
        public void Write(BinaryWriter writer, ModSaveInfo info)
        {
            long start = writer.BaseStream.Position;

            writer.Write(0L);
            IsCustomModel = info.BelongsToMe(data);
            DataIdentifier.Write(writer, dataID);
            writer.Write(IsCustomModel);
            switch (dataID.Type)
            {
            case IdentifierType.ACTOR:
                WriteData <CustomActorData>(writer, info);
                break;

            case IdentifierType.GADGET:
                WriteData <CustomGadgetData>(writer, info);
                break;

            default:
                throw new NotImplementedException();
            }

            long current = writer.BaseStream.Position;

            writer.BaseStream.Seek(start, SeekOrigin.Begin);
            dataLength = current - start;
            writer.Write(dataLength);
            writer.BaseStream.Seek(current, SeekOrigin.Begin);
        }
Пример #2
0
        public void Read(BinaryReader reader, ModSaveInfo info)
        {
            dataLength    = reader.ReadInt64();
            dataID        = DataIdentifier.Read(reader);
            IsCustomModel = reader.ReadBoolean();
            switch (dataID.Type)
            {
            case IdentifierType.ACTOR:
                ReadData <CustomActorData, VanillaActorData>(reader, info);
                break;

            case IdentifierType.GADGET:
                ReadData <CustomGadgetData, VanillaGadgetData>(reader, info);
                break;

            case IdentifierType.LANDPLOT:
                ReadData <CustomLandPlotData, VanillaPlotData>(reader, info);
                break;

            case IdentifierType.GORDO:
                ReadData <GordoV01>(reader);
                break;

            case IdentifierType.TREASUREPOD:
                ReadData <TreasurePodV01>(reader);
                break;

            case IdentifierType.EXCHANGEOFFER:
                ReadData <ExchangeOfferV04>(reader);
                break;

            default:
                throw new NotImplementedException();
            }
        }
Пример #3
0
        void WriteData <T>(BinaryWriter writer, ModSaveInfo info) where T : PersistedDataSet, IDataRegistryMember
        {
            if (!IsCustomModel)
            {
                data.Write(writer.BaseStream);
            }
            else
            {
                writer.Write(info.GetRegistryFor <T>().GetIDForModel((data as IDataRegistryMember).GetModelType()));

                data.Write(writer.BaseStream);
            }
        }
Пример #4
0
        void ReadData <T, V>(BinaryReader reader, ModSaveInfo info) where T : V, IDataRegistryMember where V : PersistedDataSet, new()
        {
            if (!IsCustomModel)
            {
                data = new V();
                data.Load(reader.BaseStream);
            }
            else
            {
                var actorId = reader.ReadInt32();
                data = info.GetRegistryFor <T>().GetDataForID(actorId);

                data.Load(reader.BaseStream);
            }
        }
Пример #5
0
        public void Read(BinaryReader reader, ModSaveInfo info)
        {
            dataLength    = reader.ReadInt64();
            dataID        = DataIdentifier.Read(reader);
            IsCustomModel = reader.ReadBoolean();
            switch (dataID.Type)
            {
            case IdentifierType.ACTOR:
                ReadData <CustomActorData, VanillaActorData>(reader, info);
                break;

            case IdentifierType.GADGET:
                ReadData <CustomGadgetData, VanillaGadgetData>(reader, info);
                break;

            default:
                throw new NotImplementedException();
            }
        }