public static T ReadBlock <T>(this GenericReader reader, Func <GenericReader, T> onDeserialize) { using (var ms = new MemoryStream()) { var length = reader.ReadLong() - 8; var chunkSize = (int)Math.Min(0xFFFF, length); var chunk = new byte[chunkSize]; while (length > 0) { chunkSize = (int)Math.Min(chunkSize, length); for (var i = 0; i < chunkSize; i++) { chunk[i] = reader.ReadByte(); } ms.Write(chunk, 0, chunkSize); length -= chunkSize; } ms.Seek(0, SeekOrigin.Begin); return(VitaNexCore.TryCatchGet(onDeserialize, ms.GetBinaryReader())); } }
public static byte[] ReadLongBytes(this GenericReader reader) { long length = reader.ReadLong(); var block = new byte[length]; for (int i = 0; i < length; i++) { block[i] = reader.ReadByte(); } return(block); }
public static byte[] ReadLongBytes(this GenericReader reader) { var length = reader.ReadLong(); var block = new byte[length]; for (long i = 0; i < length && !reader.End(); i++) { block[i] = reader.ReadByte(); } return(block); }
/// <summary> /// DO NOT USE IN ITEM, MOBILE OR GUILD SERIALIZATION /// </summary> public static void ReadBlock(this GenericReader reader, Action <GenericReader> onDeserialize) { VitaNexCore.TryCatch( () => { long pos = reader.Seek(0, SeekOrigin.Current); long length = reader.ReadLong(); VitaNexCore.TryCatch(() => onDeserialize(reader), VitaNexCore.ToConsole); reader.Seek(pos + length, SeekOrigin.Begin); }, VitaNexCore.ToConsole); }
public static TEnum ReadFlag <TEnum>(this GenericReader reader) where TEnum : struct, IComparable, IFormattable, IConvertible { var type = typeof(TEnum); var flag = default(TEnum); if (!type.IsEnum) { return(flag); } switch (reader.ReadByte()) { case 0x01: flag = ToEnum <TEnum>(reader.ReadByte()); break; case 0x02: flag = ToEnum <TEnum>(reader.ReadShort()); break; case 0x03: flag = ToEnum <TEnum>(reader.ReadUShort()); break; case 0x04: flag = ToEnum <TEnum>(reader.ReadInt()); break; case 0x05: flag = ToEnum <TEnum>(reader.ReadUInt()); break; case 0x06: flag = ToEnum <TEnum>(reader.ReadLong()); break; case 0x07: flag = ToEnum <TEnum>(reader.ReadULong()); break; } return(flag); }
public static TEnum ReadFlag <TEnum>(this GenericReader reader) where TEnum : struct { TEnum flag = default(TEnum); if (!typeof(TEnum).IsEnum) { return(flag); } switch (reader.ReadByte()) { case 0x01: flag = ToEnum <TEnum>(reader.ReadByte()); break; case 0x02: flag = ToEnum <TEnum>(reader.ReadShort()); break; case 0x03: flag = ToEnum <TEnum>(reader.ReadUShort()); break; case 0x04: flag = ToEnum <TEnum>(reader.ReadInt()); break; case 0x05: flag = ToEnum <TEnum>(reader.ReadUInt()); break; case 0x06: flag = ToEnum <TEnum>(reader.ReadLong()); break; case 0x07: flag = ToEnum <TEnum>(reader.ReadULong()); break; } return(flag); }
public static void ReadBlock(this GenericReader reader, Action <GenericReader> onDeserialize) { /*var block = ReadLongBytes(reader); * * using (var ms = new MemoryStream(block.Length)) * { * ms.Write(block, 0, block.Length); * ms.Seek(0, SeekOrigin.Begin); * * VitaNexCore.TryCatch(onDeserialize, ms.GetBinaryReader()); * * ms.Close(); * }*/ long pos = reader.Seek(0, SeekOrigin.Current); long length = reader.ReadLong(); VitaNexCore.TryCatch(onDeserialize, reader); reader.Seek(pos + length, SeekOrigin.Begin); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); m_Points = reader.ReadLong(); m_StartTier = reader.ReadLong(); m_NextTier = reader.ReadLong(); m_DailyDecay = reader.ReadLong(); m_Tier = reader.ReadInt(); m_DonationTitle = QuestReader.Object( reader ); Init(); for ( int i = reader.ReadInt(); i > 0; i -- ) { List<object> list = new List<object>(); for ( int j = reader.ReadInt(); j > 0; j -- ) list.Add( QuestReader.Object( reader ) ); m_Tiers.Add( list ); } if ( CantWalk ) Frozen = true; }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 0: Gold = reader.ReadLong(); Tokens = reader.ReadLong(); break; case 1: DateLastPaid = reader.ReadDateTime(); goto case 0; } }
private static void ReadIndex( GenericReader idx, out Type type, out Serial serial, out Serial parent, out long index, out long length) { type = idx.ReadType(); serial = idx.ReadInt(); parent = idx.ReadInt(); index = idx.ReadLong(); length = idx.ReadLong(); }
private static void ReadLength(GenericReader idx, bool reset, out long length, out int count) { var index = idx.Seek(0, SeekOrigin.Current); idx.Seek(4, SeekOrigin.Begin); length = idx.ReadLong(); count = idx.ReadInt(); if (reset) { idx.Seek(index, SeekOrigin.Begin); } }
public BestWave(GenericReader reader) { int version = reader.ReadInt(); Waves = reader.ReadInt(); TotalScore = reader.ReadLong(); Date = reader.ReadString(); Score = new Dictionary<Mobile, long>(); int cnt = reader.ReadInt(); for (int i = 0; i < cnt; i++) { Mobile m = reader.ReadMobile(); long score = reader.ReadLong(); if (m != null) Score[m] = score; } }
public void Deserialize(GenericReader reader) { int version = reader.ReadInt(); switch (version) { case 0: { m_TransactionID = reader.ReadLong(); m_Date = reader.ReadDateTime(); m_TransType = (TransactionType)reader.ReadInt(); ResName = reader.ReadString(); Amount = reader.ReadInt(); Price = reader.ReadDouble(); NewAmount = reader.ReadInt(); VendorID = (Serial)reader.ReadInt(); break; } default: { Console.WriteLine("Error: Invalid save version for Resource Transaction."); break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 1: { m_Cost = reader.ReadInt(); m_AmountCollected = reader.ReadLong(); goto case 0; } case 0: { m_Active = reader.ReadBool(); m_Decays = reader.ReadBool(); m_DecayTime = reader.ReadTimeSpan(); if (reader.ReadBool()) m_RuneBooks = reader.ReadItemList(); if (m_Decays) m_TimeLeft = reader.ReadTimeSpan(); LootType = LootType.Blessed; break; } } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 33: #region SA { m_SSNextSeed = reader.ReadDateTime(); m_SSSeedExpire = reader.ReadDateTime(); m_SSSeedLocation = reader.ReadPoint3D(); m_SSSeedMap = reader.ReadMap(); goto case 32; } #endregion #region NeoLevelSystem // Neo's Level System case 32: { m_LevelExp = reader.ReadLong(); m_Exp = reader.ReadLong(); m_Level = reader.ReadInt(); m_ExpTitle = reader.ReadString(); goto case 31; } #endregion case 31: { m_AutoStabled = reader.ReadStrongMobileList(); goto case 30; } case 30: { m_FortuneType1 = reader.ReadEncodedInt(); if (m_FortuneType1 > 0) { m_FortunePower1 = reader.ReadEncodedInt(); m_FortuneType2 = reader.ReadEncodedInt(); m_FortunePower2 = reader.ReadEncodedInt(); FortuneExpire = reader.ReadDateTime(); if (FortuneExpire > DateTime.Now) { ApplyFortune(m_FortuneType1, m_FortunePower1); ApplyFortune(m_FortuneType2, m_FortunePower2); FortuneGump.Told.Add(this); } else m_FortuneType1 = m_FortuneType2 = m_FortunePower1 = m_FortunePower2 = 0; } goto case 29; } #region Mondain's Legacy case 29: { m_AnkhNextUse = reader.ReadDateTime(); goto case 28; } #endregion case 28: { m_TamingBOBFilter = new Engines.BulkOrders.TamingBOBFilter( reader ); goto case 27; } case 27: { m_Bioenginer = reader.ReadBool(); NextTamingBulkOrder = reader.ReadTimeSpan(); goto case 26; } case 26: { #region Mondain's Legacy m_Quests = QuestReader.Quests( reader, this ); m_Chains = QuestReader.Chains( reader ); m_Collections = new Dictionary<Collection,int>(); m_CollectionTitles = new List<object>(); for ( int i = reader.ReadInt(); i > 0; i -- ) m_Collections.Add( (Collection) reader.ReadInt(), reader.ReadInt() ); for ( int i = reader.ReadInt(); i > 0; i -- ) m_CollectionTitles.Add( QuestReader.Object( reader ) ); m_SelectedTitle = reader.ReadInt(); m_Peaced = reader.ReadDateTime(); goto case 25; } #endregion case 25: { int recipeCount = reader.ReadInt(); if( recipeCount > 0 ) { m_AcquiredRecipes = new Dictionary<int, bool>(); for( int i = 0; i < recipeCount; i++ ) { int r = reader.ReadInt(); if( reader.ReadBool() ) //Don't add in recipies which we haven't gotten or have been removed m_AcquiredRecipes.Add( r, true ); } } goto case 24; } case 24: { m_LastHonorLoss = reader.ReadDeltaTime(); goto case 23; } case 23: { m_ChampionTitles = new ChampionTitleInfo( reader ); goto case 22; } case 22: { m_LastValorLoss = reader.ReadDateTime(); goto case 21; } case 21: { m_ToTItemsTurnedIn = reader.ReadEncodedInt(); m_ToTTotalMonsterFame = reader.ReadInt(); goto case 20; } case 20: { m_AllianceMessageHue = reader.ReadEncodedInt(); m_GuildMessageHue = reader.ReadEncodedInt(); goto case 19; } case 19: { int rank = reader.ReadEncodedInt(); int maxRank = Guilds.RankDefinition.Ranks.Length -1; if( rank > maxRank ) rank = maxRank; m_GuildRank = Guilds.RankDefinition.Ranks[rank]; m_LastOnline = reader.ReadDateTime(); goto case 18; } case 18: { m_SolenFriendship = (SolenFriendship) reader.ReadEncodedInt(); goto case 17; } case 17: // changed how DoneQuests is serialized case 16: { m_Quest = QuestSerializer.DeserializeQuest( reader ); if ( m_Quest != null ) m_Quest.From = this; int count = reader.ReadEncodedInt(); if ( count > 0 ) { m_DoneQuests = new List<QuestRestartInfo>(); for ( int i = 0; i < count; ++i ) { Type questType = QuestSerializer.ReadType( QuestSystem.QuestTypes, reader ); DateTime restartTime; if ( version < 17 ) restartTime = DateTime.MaxValue; else restartTime = reader.ReadDateTime(); m_DoneQuests.Add( new QuestRestartInfo( questType, restartTime ) ); } } m_Profession = reader.ReadEncodedInt(); goto case 15; } case 15: { m_LastCompassionLoss = reader.ReadDeltaTime(); goto case 14; } case 14: { m_CompassionGains = reader.ReadEncodedInt(); if ( m_CompassionGains > 0 ) m_NextCompassionDay = reader.ReadDeltaTime(); goto case 13; } case 13: // just removed m_PayedInsurance list case 12: { m_BOBFilter = new Engines.BulkOrders.BOBFilter( reader ); goto case 11; } case 11: { if ( version < 13 ) { List<Item> payed = reader.ReadStrongItemList(); for ( int i = 0; i < payed.Count; ++i ) payed[i].PayedInsurance = true; } goto case 10; } case 10: { if ( reader.ReadBool() ) { m_HairModID = reader.ReadInt(); m_HairModHue = reader.ReadInt(); m_BeardModID = reader.ReadInt(); m_BeardModHue = reader.ReadInt(); // We cannot call SetHairMods( -1, -1 ) here because the items have not yet loaded Timer.DelayCall( TimeSpan.Zero, new TimerCallback( RevertHair ) ); } goto case 9; } case 9: { SavagePaintExpiration = reader.ReadTimeSpan(); if ( SavagePaintExpiration > TimeSpan.Zero ) { BodyMod = ( Female ? 184 : 183 ); HueMod = 0; } goto case 8; } case 8: { m_NpcGuild = (NpcGuild)reader.ReadInt(); m_NpcGuildJoinTime = reader.ReadDateTime(); m_NpcGuildGameTime = reader.ReadTimeSpan(); goto case 7; } case 7: { m_PermaFlags = reader.ReadStrongMobileList(); goto case 6; } case 6: { NextTailorBulkOrder = reader.ReadTimeSpan(); goto case 5; } case 5: { NextSmithBulkOrder = reader.ReadTimeSpan(); goto case 4; } case 4: { m_LastJusticeLoss = reader.ReadDeltaTime(); m_JusticeProtectors = reader.ReadStrongMobileList(); goto case 3; } case 3: { m_LastSacrificeGain = reader.ReadDeltaTime(); m_LastSacrificeLoss = reader.ReadDeltaTime(); m_AvailableResurrects = reader.ReadInt(); goto case 2; } case 2: { m_Flags = (PlayerFlag)reader.ReadInt(); goto case 1; } case 1: { m_LongTermElapse = reader.ReadTimeSpan(); m_ShortTermElapse = reader.ReadTimeSpan(); m_GameTime = reader.ReadTimeSpan(); goto case 0; } case 0: { if( version < 32 ) m_AutoStabled = new List<Mobile>(); #region SA if (version < 33) { m_SSNextSeed = m_SSSeedExpire = DateTime.Now; m_SSSeedLocation = Point3D.Zero; } #endregion break; } } if (m_RecentlyReported == null) m_RecentlyReported = new List<Mobile>(); #region NeoLevelSystem // Neo's Level System if (version < 32) { m_LevelExp = 1000; m_Exp = -1000; m_Level = 0; m_ExpTitle = "TerMur-guest"; } #endregion // End of Neo's Level System #region Mondain's Legacy if ( m_Quests == null ) m_Quests = new List<BaseQuest>(); if ( m_Chains == null ) m_Chains = new Dictionary<QuestChain,BaseChain>(); if ( m_DoneQuests == null ) m_DoneQuests = new List<QuestRestartInfo>(); if ( m_Collections == null ) m_Collections = new Dictionary<Collection,int>(); if ( m_CollectionTitles == null ) m_CollectionTitles = new List<object>(); #endregion // Professions weren't verified on 1.0 RC0 if ( !CharacterCreation.VerifyProfession( m_Profession ) ) m_Profession = 0; if ( m_PermaFlags == null ) m_PermaFlags = new List<Mobile>(); if ( m_JusticeProtectors == null ) m_JusticeProtectors = new List<Mobile>(); if ( m_BOBFilter == null ) m_BOBFilter = new Engines.BulkOrders.BOBFilter(); if ( m_TamingBOBFilter == null ) m_TamingBOBFilter = new Engines.BulkOrders.TamingBOBFilter(); if( m_GuildRank == null ) m_GuildRank = Guilds.RankDefinition.Member; //Default to member if going from older verstion to new version (only time it should be null) if( m_LastOnline == DateTime.MinValue && Account != null ) m_LastOnline = ((Account)Account).LastLogin; if( m_ChampionTitles == null ) m_ChampionTitles = new ChampionTitleInfo(); if (AccessLevel > AccessLevel.Player) m_IgnoreMobiles = true; List<Mobile> list = this.Stabled; for ( int i = 0; i < list.Count; ++i ) { BaseCreature bc = list[i] as BaseCreature; if ( bc != null ) bc.IsStabled = true; } CheckAtrophies( this ); if( Hidden ) //Hiding is the only buff where it has an effect that's serialized. AddBuff( new BuffInfo( BuffIcon.HidingAndOrStealth, 1075655 ) ); }
public override void Deserialize(GenericReader reader) { City = (City)reader.ReadInt(); base.Deserialize(reader); int version = reader.ReadInt(); CompletedTrades = reader.ReadInt(); Governor = reader.ReadMobile(); GovernorElect = reader.ReadMobile(); PendingGovernor = reader.ReadBool(); Treasury = reader.ReadLong(); ActiveTradeDeal = (TradeDeal)reader.ReadInt(); TradeDealStart = reader.ReadDateTime(); NextTradeDealCheck = reader.ReadDateTime(); CanUtilize = reader.ReadBool(); Headline = reader.ReadString(); Body = reader.ReadString(); PostedOn = reader.ReadDateTime(); if (reader.ReadInt() == 0) Election = new CityElection(this, reader); else Election = new CityElection(this); if (this.City == City.Britain) { _CitizenWait = new Dictionary<Mobile, DateTime>(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { Mobile m = reader.ReadMobile(); DateTime dt = reader.ReadDateTime(); if (m != null && dt > DateTime.UtcNow) _CitizenWait[m] = dt; } Timer.DelayCall(TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(10), OnTick); } }
public void Deserialize(GenericReader reader) { int version = reader.GetVersion(); switch (version) { case 0: { ID = reader.ReadString(); _State = reader.ReadFlag<DonationTransactionState>(); Account = reader.ReadAccount(); Email = reader.ReadString(); Total = reader.ReadDecimal(); _Credit = reader.ReadLong(); _Time = reader.ReadDouble(); Version = reader.ReadInt(); _InternalVersion = reader.ReadInt(); _Notes = reader.ReadString(); _Extra = reader.ReadString(); DeliverFrom = reader.ReadMobile(); DeliverTo = reader.ReadMobile(); DeliveryTime = reader.ReadDouble(); } break; } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 1: m_Instance = reader.ReadItem() as PrimevalLichPuzzle; m_Altar = reader.ReadItem() as ChampionSpawn; m_Key = reader.ReadLong(); m_Successful = reader.ReadMobile(); m_Levers = reader.ReadStrongItemList<PrimevalLichPuzzleLever>(); break; } if ( null == m_Levers ) m_Levers = new List<PrimevalLichPuzzleLever>(); // if ( null != m_Instance && m_Instance.Deleted && this == m_Instance ) // { // m_Instance = null; // return; // } // // remove if no altar exists // if ( null == m_Altar ) // Timer.DelayCall( TimeSpan.FromSeconds( 0.0 ), new TimerCallback( Delete ) ); // ResetLevers(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 1: { m_Cost = reader.ReadInt(); m_AmountCollected = reader.ReadLong(); goto case 0; } case 0: { m_Active = reader.ReadBool(); m_Owner = reader.ReadMobile(); m_Decays = reader.ReadBool(); m_DecayTime = reader.ReadTimeSpan(); m_AccessLevel = (AccessLevel)reader.ReadInt(); if (reader.ReadBool()) m_RuneBooks = reader.ReadItemList(); m_DecayRunning = reader.ReadBool(); if (m_DecayRunning) this.DoDecayTimer(reader.ReadTimeSpan()); break; } } UpdateDate(); }
private bool FindPosition(GenericReader rcreader) { ((BinaryFileReader)rcreader).Seek(0, SeekOrigin.Begin); if (rcreader.End()) return false; int rcversion = rcreader.ReadInt(); switch (rcversion) { case 0: { long tableposition = rcreader.ReadLong(); Console.WriteLine("Tableposition: {0}", tableposition); ((BinaryFileReader)rcreader).Seek(tableposition, SeekOrigin.Begin); while (!rcreader.End()) { string typename = rcreader.ReadString(); long location = rcreader.ReadLong(); Console.WriteLine("{0}, {1}", typename, location); if (typename == m_Type.FullName) { ((BinaryFileReader)rcreader).Seek(location, SeekOrigin.Begin); return true; } } break; } default: { throw new Exception("ResourcePool error: Invalid consignments.dat save version"); } } return false; }