Ejemplo n.º 1
0
        public void Save(VMAvatar avatar)
        {
            SkinTone     = (byte)avatar.SkinTone;
            DefaultSuits = avatar.DefaultSuits; //todo: clone?
            //if naked or using clothes rack, save in daywear.
            //TODO: store and check simantics outfit category, and restore using that instead.
            var dyn         = avatar.DynamicSuits;
            var bID         = avatar.BodyOutfit.ID;
            var saveDaywear = dyn.Daywear == bID || dyn.Sleepwear == bID || dyn.Swimwear == bID;

            saveDaywear = saveDaywear || (bID == 0x24E0000000D || bID == 0x10000000D);
            BodyOutfit  = (saveDaywear)?avatar.DefaultSuits.Daywear.ID : bID;

            HeadOutfit  = avatar.HeadOutfit.ID;
            Name        = avatar.Name;
            Permissions = avatar.AvatarState.Permissions;
            AvatarFlags = ((VMTSOAvatarState)avatar.TSOState).Flags;
            Budget      = avatar.TSOState.Budget.Value;

            for (int i = 0; i < MotiveData.Length; i++)
            {
                MotiveData[i] = avatar.GetMotiveData((VMMotive)i);
            }
            MotiveData[(int)(VMMotive.SleepState)] = 0;
            for (int i = 0; i < PersonDataMap.Length; i++)
            {
                PersonData[i] = avatar.GetPersonData((VMPersonDataVariable)PersonDataMap[i]);
            }
            SkillLock      = avatar.SkillLocks;
            OnlineJobInfo  = ((VMTSOAvatarState)avatar.TSOState).JobInfo;
            IgnoredAvatars = ((VMTSOAvatarState)avatar.TSOState).IgnoredAvatars;
        }
Ejemplo n.º 2
0
        public void Save(VMAvatar avatar)
        {
            SkinTone     = (byte)avatar.SkinTone;
            DefaultSuits = avatar.DefaultSuits; //todo: clone?
            //if naked, save in daywear.
            BodyOutfit = (avatar.BodyOutfit.ID == 0x24E0000000D || avatar.BodyOutfit.ID == 0x10000000D)?avatar.DefaultSuits.Daywear.ID : avatar.BodyOutfit.ID;

            HeadOutfit  = avatar.HeadOutfit.ID;
            Name        = avatar.Name;
            Permissions = ((VMTSOAvatarState)avatar.TSOState).Permissions;
            AvatarFlags = ((VMTSOAvatarState)avatar.TSOState).Flags;
            Budget      = avatar.TSOState.Budget.Value;

            for (int i = 0; i < MotiveData.Length; i++)
            {
                MotiveData[i] = avatar.GetMotiveData((VMMotive)i);
            }
            MotiveData[(int)(VMMotive.SleepState)] = 0;
            for (int i = 0; i < PersonDataMap.Length; i++)
            {
                PersonData[i] = avatar.GetPersonData((VMPersonDataVariable)PersonDataMap[i]);
            }
            SkillLock      = avatar.SkillLocks;
            OnlineJobInfo  = ((VMTSOAvatarState)avatar.TSOState).JobInfo;
            IgnoredAvatars = ((VMTSOAvatarState)avatar.TSOState).IgnoredAvatars;
        }
Ejemplo n.º 3
0
        public void Deserialize(BinaryReader reader)
        {
            Version      = reader.ReadInt32();
            Name         = reader.ReadString();
            PersistID    = reader.ReadUInt32();
            DefaultSuits = new VMAvatarDefaultSuits(reader);
            Permissions  = (VMTSOAvatarPermissions)reader.ReadByte();
            if (Version > 1)
            {
                AvatarFlags = (VMTSOAvatarFlags)reader.ReadUInt32();
            }
            Budget = reader.ReadUInt32();

            BodyOutfit = reader.ReadUInt64();
            HeadOutfit = reader.ReadUInt64();
            SkinTone   = reader.ReadByte();
            if (Version > 2)
            {
                IsWorker = reader.ReadBoolean();
            }

            for (int i = 0; i < MotiveData.Length; i++)
            {
                MotiveData[i] = reader.ReadInt16();
            }
            for (int i = 0; i < PersonData.Length; i++)
            {
                PersonData[i] = reader.ReadInt16();
            }

            var count = reader.ReadInt32();

            Relationships = new VMEntityPersistRelationshipMarshal[count];
            for (int i = 0; i < Relationships.Length; i++)
            {
                Relationships[i] = new VMEntityPersistRelationshipMarshal();
                Relationships[i].Deserialize(reader);
            }

            var jobs = reader.ReadInt32();

            for (int i = 0; i < jobs; i++)
            {
                var id  = reader.ReadInt16();
                var job = new VMTSOJobInfo();
                job.Deserialize(reader);
                OnlineJobInfo[id] = job;
            }

            if (Version > 3)
            {
                var ignored = reader.ReadInt32();
                for (int i = 0; i < ignored; i++)
                {
                    IgnoredAvatars.Add(reader.ReadUInt32());
                }
            }
        }
Ejemplo n.º 4
0
        public override void Deserialize(BinaryReader reader)
        {
            base.Deserialize(reader);

            var anims = reader.ReadInt32();
            Animations = new VMAnimationStateMarshal[anims];
            for (int i = 0; i < anims; i++) Animations[i] = new VMAnimationStateMarshal(reader);

            var carry = reader.ReadBoolean();
            if (carry) CarryAnimationState = new VMAnimationStateMarshal(reader);

            Name = reader.ReadString();
            Message = reader.ReadString();
            MessageTimeout = reader.ReadInt32();

            var motCs = reader.ReadInt32();
            MotiveChanges = new VMMotiveChange[motCs];
            for (int i = 0; i < motCs; i++)
            {
                MotiveChanges[i] = new VMMotiveChange();
                MotiveChanges[i].Deserialize(reader);
            }

            var pdats = reader.ReadInt32();
            PersonData = new short[pdats];
            for (int i = 0; i < pdats; i++) PersonData[i] = reader.ReadInt16();

            var mdats = reader.ReadInt32();
            MotiveData = new short[mdats];
            for (int i = 0; i < mdats; i++) MotiveData[i] = reader.ReadInt16();

            HandObject = reader.ReadInt16();
            RadianDirection = reader.ReadSingle();

            DefaultSuits = new VMAvatarDefaultSuits(reader);

            var aprs = reader.ReadInt32();
            BoundAppearances = new string[aprs];
            for (int i = 0; i < aprs; i++) BoundAppearances[i] = reader.ReadString();

            BodyOutfit = reader.ReadUInt64();
            HeadOutfit = reader.ReadUInt64();
            SkinTone = (AppearanceType)reader.ReadByte();
        }
Ejemplo n.º 5
0
        public override void Deserialize(BinaryReader reader)
        {
            base.Deserialize(reader);

            var anims = reader.ReadInt32();

            Animations = new VMAnimationStateMarshal[anims];
            for (int i = 0; i < anims; i++)
            {
                Animations[i] = new VMAnimationStateMarshal(reader);
            }

            var carry = reader.ReadBoolean();

            if (carry)
            {
                CarryAnimationState = new VMAnimationStateMarshal(reader);
            }

            Message        = reader.ReadString();
            MessageTimeout = reader.ReadInt32();

            var motCs = reader.ReadInt32();

            MotiveChanges = new VMMotiveChange[motCs];
            for (int i = 0; i < motCs; i++)
            {
                MotiveChanges[i] = new VMMotiveChange();
                MotiveChanges[i].Deserialize(reader);
            }
            MotiveDecay = new VMAvatarMotiveDecay();
            MotiveDecay.Deserialize(reader);

            var pdats = reader.ReadInt32();

            PersonData = new short[Math.Max(101, pdats)];
            for (int i = 0; i < pdats; i++)
            {
                PersonData[i] = reader.ReadInt16();
            }

            var mdats = reader.ReadInt32();

            MotiveData = new short[mdats];
            for (int i = 0; i < mdats; i++)
            {
                MotiveData[i] = reader.ReadInt16();
            }

            HandObject      = reader.ReadInt16();
            RadianDirection = reader.ReadSingle();

            if (Version > 1)
            {
                KillTimeout = reader.ReadInt32();
            }

            DefaultSuits = new VMAvatarDefaultSuits(reader);

            if (Version >= 15)
            {
                DynamicSuits = new VMAvatarDynamicSuits(reader);
                Decoration   = new VMAvatarDecoration(reader);
            }
            else
            {
                DynamicSuits = new VMAvatarDynamicSuits(false);
                Decoration   = new VMAvatarDecoration();
            }

            var aprs = reader.ReadInt32();

            BoundAppearances = new string[aprs];
            for (int i = 0; i < aprs; i++)
            {
                BoundAppearances[i] = reader.ReadString();
            }

            BodyOutfit = new VMOutfitReference(reader);
            HeadOutfit = new VMOutfitReference(reader);
            SkinTone   = (AppearanceType)reader.ReadByte();
        }
Ejemplo n.º 6
0
        public override void Deserialize(BinaryReader reader)
        {
            base.Deserialize(reader);

            var anims = reader.ReadInt32();

            Animations = new VMAnimationStateMarshal[anims];
            for (int i = 0; i < anims; i++)
            {
                Animations[i] = new VMAnimationStateMarshal(reader);
            }

            var carry = reader.ReadBoolean();

            if (carry)
            {
                CarryAnimationState = new VMAnimationStateMarshal(reader);
            }

            Name           = reader.ReadString();
            Message        = reader.ReadString();
            MessageTimeout = reader.ReadInt32();

            var motCs = reader.ReadInt32();

            MotiveChanges = new VMMotiveChange[motCs];
            for (int i = 0; i < motCs; i++)
            {
                MotiveChanges[i] = new VMMotiveChange();
                MotiveChanges[i].Deserialize(reader);
            }

            var pdats = reader.ReadInt32();

            PersonData = new short[pdats];
            for (int i = 0; i < pdats; i++)
            {
                PersonData[i] = reader.ReadInt16();
            }

            var mdats = reader.ReadInt32();

            MotiveData = new short[mdats];
            for (int i = 0; i < mdats; i++)
            {
                MotiveData[i] = reader.ReadInt16();
            }

            HandObject      = reader.ReadInt16();
            RadianDirection = reader.ReadSingle();

            DefaultSuits = new VMAvatarDefaultSuits(reader);

            var aprs = reader.ReadInt32();

            BoundAppearances = new string[aprs];
            for (int i = 0; i < aprs; i++)
            {
                BoundAppearances[i] = reader.ReadString();
            }

            BodyOutfit = reader.ReadUInt64();
            HeadOutfit = reader.ReadUInt64();
            SkinTone   = (AppearanceType)reader.ReadByte();
        }