// Ryzom - MMORPG Framework // Copyright (C) 2010 Winch Gate Property Limited // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . #ifndef RY_PVP_CLAN_H #define RY_PVP_CLAN_H #include #include "nel/misc/sheet_id.h" #include "people_pd.h" namespace PVP_CLAN { // If you change this enum do not forget to update database.xml and local_database.xml enum TPVPClan { None, Neutral, BeginClans, // begin of "real" clans (None and Neutral are excluded) BeginCults = BeginClans, // begin the cults section Kami = BeginClans, Karavan, EndCults = Karavan, // end of cults BeginCivs, // begin of civilizations Fyros = BeginCivs, Matis, Tryker, Zorai, EndCivs = Zorai, // end of civs EndClans = Zorai, // end of clans Unknown, NbClans = Unknown, NbBits = 4 // number of bits needed to store all valid values (all but Unknown) }; TPVPClan fromString(const std::string & str); const std::string & toString(TPVPClan clan); std::string toLowerString(TPVPClan clan); uint32 getFactionIndex(TPVPClan clan); TPVPClan getClanFromIndex(uint32 theIndex); NLMISC::CSheetId getFactionSheetId(TPVPClan clan); TPVPClan getClanFromPeople( EGSPD::CPeople::TPeople people ); /// For Client Interface, return the define name of the type (eg: "pvp_faction_icon_Kami") std::string toIconDefineString( TPVPClan c ); /** * CFactionWar */ struct CFactionWar { TPVPClan Clan1; TPVPClan Clan2; CFactionWar() { Clan1 = None; Clan2 = None; } void setFactionWar( TPVPClan clan1, TPVPClan clan2 ) { if( clan1 != clan2 ) { if( clan1 < BeginClans || clan1 > EndClans ) { nlwarning(" clan1 is invalid : %d", clan1 ); return; } if( clan2 < BeginClans || clan2 > EndClans ) { nlwarning(" clan2 is invalid : %d", clan2 ); return; } Clan1 = clan1; Clan2 = clan2; } else { nlwarning(" A clan can't be in war with him"); return; } } bool inPvPFaction( TPVPClan clan1, TPVPClan clan2 ) const { return ( (clan1 == Clan1 && clan2 == Clan2) || (clan2 == Clan1 && clan1 == Clan2) ); } void serial( NLMISC::IStream & f ) { f.serialEnum( Clan1 ); f.serialEnum( Clan2 ); } }; } // namespace PVP_CLAN #endif // RY_PVP_CLAN_H