diff options
| author | Sovak <Sovak007@gmail.com> | 2012-09-09 14:39:34 +0200 |
|---|---|---|
| committer | Nay <dnpd.dd@gmail.com> | 2012-09-09 22:43:44 +0100 |
| commit | 2440a2875567905df48ce9073041a960e9ebd0bd (patch) | |
| tree | e7dcaeb9d405c77b2de9d11f8c380a720dae1f98 /src/server/game/Guilds/GuildMgr.cpp | |
| parent | 271e9cb9e628177d37d45effbd39e7a31f8c9910 (diff) | |
Core/Guilds: Implemented guild news & guild rewards tab
Signed-off-by: Sovak <Sovak007@gmail.com>
Signed-off-by: Nay <dnpd.dd@gmail.com>
Diffstat (limited to 'src/server/game/Guilds/GuildMgr.cpp')
| -rw-r--r-- | src/server/game/Guilds/GuildMgr.cpp | 59 |
1 files changed, 57 insertions, 2 deletions
diff --git a/src/server/game/Guilds/GuildMgr.cpp b/src/server/game/Guilds/GuildMgr.cpp index 726add2cf44..c611732ab48 100644 --- a/src/server/game/Guilds/GuildMgr.cpp +++ b/src/server/game/Guilds/GuildMgr.cpp @@ -433,8 +433,18 @@ void GuildMgr::LoadGuilds() itr->second->GetAchievementMgr().LoadFromDB(achievementResult, criteriaResult); } } + // 10. Loading Guild news + sLog->outInfo(LOG_FILTER_GENERAL, "Loading Guild News"); + { + for (GuildContainer::const_iterator itr = GuildStore.begin(); itr != GuildStore.end(); itr++) + { + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_LOAD_GUILD_NEWS); + stmt->setInt32(0, itr->first); + itr->second->GetNewsLog().LoadFromDB(CharacterDatabase.Query(stmt)); + } + } - // 10. Validate loaded guild data + // 11. Validate loaded guild data sLog->outInfo(LOG_FILTER_GENERAL, "Validating data of loaded guilds..."); { uint32 oldMSTime = getMSTime(); @@ -507,5 +517,50 @@ void GuildMgr::LoadGuildXpForLevel() void GuildMgr::LoadGuildRewards() { - /// @TODO: Implement + uint32 oldMSTime = getMSTime(); + + // 0 1 2 3 4 + QueryResult result = WorldDatabase.Query("SELECT entry, standing, racemask, price, achievement FROM guild_rewards"); + + if (!result) + { + sLog->outError(LOG_FILTER_SERVER_LOADING, ">> Loaded 0 guild reward definitions. DB table `guild_rewards` is empty."); + return; + } + + uint32 count = 0; + + do + { + GuildReward reward; + Field* fields = result->Fetch(); + reward.Entry = fields[0].GetUInt32(); + reward.Standing = fields[1].GetUInt8(); + reward.Racemask = fields[2].GetInt32(); + reward.Price = fields[3].GetUInt64(); + reward.AchievementId = fields[4].GetUInt32(); + + if (!sObjectMgr->GetItemTemplate(reward.Entry)) + { + sLog->outError(LOG_FILTER_SERVER_LOADING, "Guild rewards constains not existing item entry %u", reward.Entry); + continue; + } + + if (reward.AchievementId != 0 && (!sAchievementStore.LookupEntry(reward.AchievementId))) + { + sLog->outError(LOG_FILTER_SERVER_LOADING, "Guild rewards constains not existing achievement entry %u", reward.AchievementId); + continue; + } + + if (reward.Standing >= MAX_REPUTATION_RANK) + { + sLog->outError(LOG_FILTER_SERVER_LOADING, "Guild rewards contains wrong reputation standing %u, max is %u", uint32(reward.Standing), MAX_REPUTATION_RANK - 1); + continue; + } + + GuildRewards.push_back(reward); + ++count; + } while (result->NextRow()); + + sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded %u guild reward definitions in %u ms", count, GetMSTimeDiffToNow(oldMSTime)); } |
