void ReputationMgr::UpdateReputationFlags() { _visibleFactionCount = 0; for (FactionStateList::iterator itr = _factions.begin(); itr != _factions.end(); itr++) { FactionState* faction = &itr->second; if (!faction) continue; FactionEntry const* factionEntry = sFactionStore.LookupEntry(faction->ID); if (!factionEntry) continue; if (faction->Flags != GetDefaultStateFlags(factionEntry)) { faction->Flags |= GetDefaultStateFlags(factionEntry); // Bitwise OR in case of some DB flags faction->needSave = true; faction->needSend = true; } if (faction->Flags & FACTION_FLAG_VISIBLE) _visibleFactionCount++; } }
void ReputationMgr::Initialize() { _factions.clear(); _visibleFactionCount = 0; _honoredFactionCount = 0; _reveredFactionCount = 0; _exaltedFactionCount = 0; _sendFactionIncreased = false; for (unsigned int i = 1; i < sFactionStore.GetNumRows(); i++) { FactionEntry const* factionEntry = sFactionStore.LookupEntry(i); if (factionEntry && (factionEntry->reputationListID >= 0)) { FactionState newFaction; newFaction.ID = factionEntry->ID; newFaction.ReputationListID = factionEntry->reputationListID; newFaction.Standing = 0; newFaction.Flags = GetDefaultStateFlags(factionEntry); newFaction.needSend = true; newFaction.needSave = true; if (newFaction.Flags & FACTION_FLAG_VISIBLE) ++_visibleFactionCount; UpdateRankCounters(REP_HOSTILE, GetBaseRank(factionEntry)); _factions[newFaction.ReputationListID] = newFaction; } } }
/** * This method is called to set the defaults for the originally visible, at peace, * at war, or invisible for the current race. * */ void ReputationMgr::SetBaseDefaults() { for(unsigned int i = 1; i < sFactionStore.GetNumRows(); i++) { FactionEntry const *factionEntry = sFactionStore.LookupEntry(i); if( factionEntry && (factionEntry->reputationListID >= 0)) { FactionState* faction = &m_factions[factionEntry->reputationListID]; uint32 defaultFlags = GetDefaultStateFlags(factionEntry); // if faction matches any flags then update // this resets the default standings to 0, should be better way for this if( (defaultFlags & FACTION_FLAG_VISIBLE) || (defaultFlags & FACTION_FLAG_INVISIBLE_FORCED) || (defaultFlags & FACTION_FLAG_AT_WAR) || (defaultFlags & FACTION_FLAG_PEACE_FORCED) ) { if (faction->Standing != 0) { faction->Standing = 0; faction->needSend = true; } if (faction->Flags != defaultFlags) { faction->Flags = defaultFlags; faction->needSend = true; } } } } }
void ReputationMgr::Initialize() { m_factions.clear(); for(unsigned int i = 1; i < sFactionStore.GetNumRows(); i++) { FactionEntry const *factionEntry = sFactionStore.LookupEntry(i); if( factionEntry && (factionEntry->reputationListID >= 0)) { FactionState newFaction; newFaction.ID = factionEntry->ID; newFaction.ReputationListID = factionEntry->reputationListID; newFaction.Standing = 0; newFaction.Flags = GetDefaultStateFlags(factionEntry); newFaction.Changed = true; m_factions[newFaction.ReputationListID] = newFaction; } } }