public override void Deserialize(GenericReader reader) { TimeSpan ts = TimeSpan.Zero; base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 3: { m_LevelScale = reader.ReadDouble(); goto case 2; } case 2: { m_LevelError = (LevelErrors)reader.ReadInt(); goto case 1; } case 1: { ts = reader.ReadDeltaTime() - DateTime.Now; goto case 0; } case 0: { // read it all back in m_Type = ((ChampLevelData.SpawnTypes)reader.ReadInt()); int a = reader.ReadInt(); SpawnLevels = new ArrayList(); // create new level array through deserialise constructors for (int i = 0; i < a; ++i) { SpawnLevels.Add(new ChampLevelData(reader)); } m_Monsters = reader.ReadMobileList(); m_FreeMonsters = reader.ReadMobileList(); m_LevelCounter = reader.ReadInt(); m_Kills = reader.ReadInt(); m_ExpireTime = reader.ReadDateTime(); m_NavDest = (NavDestinations)reader.ReadInt(); // the bools m_bActive = reader.ReadBool(); m_bGraphics = reader.ReadBool(); // if graphics were on remake them thru deserialise constructor if (m_bGraphics) { m_Graphics = new ChampGraphics(this, reader); } // and the restart... m_bRestart = reader.ReadBool(); m_RestartDelay = reader.ReadTimeSpan(); if (reader.ReadBool() && !m_bActive && m_bRestart) { // in this case the champ is activley in restart mode, so create new timer //pla: 13/01/07 //changed so we don't lose time on restart if (ts == TimeSpan.Zero) { DoTimer(m_RestartDelay); } else { DoTimer(ts); } } else if (m_bActive) { // if spawn was active then start the wheels turning... StartSlice(); } break; } } }
public override void Deserialize( GenericReader reader ) { TimeSpan ts = TimeSpan.Zero; base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 3: { m_LevelScale = reader.ReadDouble(); goto case 2; } case 2: { m_LevelError = (LevelErrors)reader.ReadInt(); goto case 1; } case 1: { ts = reader.ReadDeltaTime() - DateTime.Now; goto case 0; } case 0: { // read it all back in m_Type = ((ChampLevelData.SpawnTypes)reader.ReadInt()); int a = reader.ReadInt(); SpawnLevels = new ArrayList(); // create new level array through deserialise constructors for( int i = 0 ; i < a; ++i ) SpawnLevels.Add( new ChampLevelData( reader ) ); m_Monsters = reader.ReadMobileList(); m_FreeMonsters = reader.ReadMobileList(); m_LevelCounter = reader.ReadInt(); m_Kills = reader.ReadInt(); m_ExpireTime = reader.ReadDateTime(); m_NavDest = (NavDestinations)reader.ReadInt(); // the bools m_bActive = reader.ReadBool(); m_bGraphics = reader.ReadBool(); // if graphics were on remake them thru deserialise constructor if( m_bGraphics ) m_Graphics = new ChampGraphics(this, reader); // and the restart... m_bRestart = reader.ReadBool(); m_RestartDelay = reader.ReadTimeSpan(); if( reader.ReadBool() && !m_bActive && m_bRestart ) { // in this case the champ is activley in restart mode, so create new timer //pla: 13/01/07 //changed so we don't lose time on restart if (ts == TimeSpan.Zero) DoTimer(m_RestartDelay); else DoTimer(ts); } else if( m_bActive ) { // if spawn was active then start the wheels turning... StartSlice(); } break; } } }