Пример #1
0
        private static void LoadGuilds(BinaryFileReader reader,
                                       GuildEntry[] entries)
        {
            for (int i = 0; i < entries.Length; ++i)
            {
                GuildEntry entry = entries[i];
                BaseGuild  guild = (BaseGuild)entry.Object;
                if (guild == null)
                {
                    continue;
                }

                reader.Seek(entry.Position, SeekOrigin.Begin);

                try {
                    guild.Deserialize(reader);
                } catch (Exception e) {
                    log.Error(String.Format("failed to load guild", guild),
                              e);
                    BaseGuild.List.Remove(guild.Id);
                    entries[i].Clear();
                    ++m_LoadErrors;
                    continue;
                }

                if (reader.Position != entry.Position + entry.Length)
                {
                    log.ErrorFormat("Bad deserialize on guild {0}, type {1}: position={2}, should be {3}",
                                    guild.Id, guild.GetType(),
                                    reader.Position, entry.Position + entry.Length);
                    BaseGuild.List.Remove(guild.Id);
                    entries[i].Clear();
                    ++m_LoadErrors;
                }
            }
        }