// 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 .
#include "stdpch.h"
#include "nel/misc/string_conversion.h"
#include "nel/misc/sstring.h"
#include "pvp_clan.h"
#include "fame.h"
using namespace std;
using namespace NLMISC;
namespace PVP_CLAN
{
NL_BEGIN_STRING_CONVERSION_TABLE (TPVPClan)
NL_STRING_CONVERSION_TABLE_ENTRY(None)
NL_STRING_CONVERSION_TABLE_ENTRY(Neutral)
NL_STRING_CONVERSION_TABLE_ENTRY(Kami)
NL_STRING_CONVERSION_TABLE_ENTRY(Karavan)
NL_STRING_CONVERSION_TABLE_ENTRY(Fyros)
NL_STRING_CONVERSION_TABLE_ENTRY(Matis)
NL_STRING_CONVERSION_TABLE_ENTRY(Tryker)
NL_STRING_CONVERSION_TABLE_ENTRY(Zorai)
NL_END_STRING_CONVERSION_TABLE(TPVPClan, PVPClanConversion, Unknown)
TPVPClan fromString(const std::string & str)
{
return PVPClanConversion.fromString(str);
}
const std::string & toString(TPVPClan clan)
{
return PVPClanConversion.toString(clan);
}
std::string toLowerString(TPVPClan clan)
{
CSString s = PVPClanConversion.toString(clan);
CSString sl = s.toLower();
return sl;
}
uint32 getFactionIndex(TPVPClan clan)
{
static vector factionIndexes;
if ( factionIndexes.empty() )
{
factionIndexes.resize(NbClans, CStaticFames::INVALID_FACTION_INDEX);
factionIndexes[Kami] = CStaticFames::getInstance().getFactionIndex("kami");
factionIndexes[Karavan] = CStaticFames::getInstance().getFactionIndex("karavan");
factionIndexes[Fyros] = CStaticFames::getInstance().getFactionIndex("fyros");
factionIndexes[Matis] = CStaticFames::getInstance().getFactionIndex("matis");
factionIndexes[Tryker] = CStaticFames::getInstance().getFactionIndex("tryker");
factionIndexes[Zorai] = CStaticFames::getInstance().getFactionIndex("zorai");
for (uint i = BeginClans; i <= EndClans; i++)
nlassert( factionIndexes[i] != CStaticFames::INVALID_FACTION_INDEX );
}
if (clan >= NbClans)
return CStaticFames::INVALID_FACTION_INDEX;
return factionIndexes[clan];
}
TPVPClan getClanFromIndex(uint32 theIndex)
{
// These names are in order of the enum TPVPClan
// The first two clans, "None" and "Neutral", don't count. Subtract 2 from the lookup.
std::string FactionNames[] = { "kami","karavan","fyros","matis","tryker","zorai" };
for (int looper = BeginClans; looper <= EndClans; looper += 1)
{
if (CStaticFames::getInstance().getFactionIndex(FactionNames[looper-BeginClans]) == theIndex)
{
return (TPVPClan)looper;
}
}
// It wasn't found, return unknown to indicate error.
return Unknown;
}
NLMISC::CSheetId getFactionSheetId(TPVPClan clan)
{
static vector factionSheetIds;
if ( factionSheetIds.empty() )
{
factionSheetIds.resize(NbClans, NLMISC::CSheetId::Unknown);
factionSheetIds[Kami] = "kami.faction";
factionSheetIds[Karavan] = "karavan.faction";
factionSheetIds[Fyros] = "fyros.faction";
factionSheetIds[Matis] = "matis.faction";
factionSheetIds[Tryker] = "tryker.faction";
factionSheetIds[Zorai] = "zorai.faction";
for (uint i = BeginClans; i <= EndClans; i++)
nlassert( factionSheetIds[i] != NLMISC::CSheetId::Unknown );
}
if (clan >= NbClans)
return NLMISC::CSheetId::Unknown;
return factionSheetIds[clan];
}
std::string toIconDefineString( TPVPClan clan )
{
return string("pvp_faction_icon_") + PVP_CLAN::toString(clan);
}
TPVPClan getClanFromPeople( EGSPD::CPeople::TPeople people )
{
static vector peopleToClan;
if( peopleToClan.empty() )
{
peopleToClan.resize( EGSPD::CPeople::EndPlayable );
peopleToClan[ EGSPD::CPeople::Fyros ] = Fyros;
peopleToClan[ EGSPD::CPeople::Matis ] = Matis;
peopleToClan[ EGSPD::CPeople::Tryker ] = Tryker;
peopleToClan[ EGSPD::CPeople::Zorai ] = Zorai;
}
if( people < EGSPD::CPeople::EndPlayable && people >= EGSPD::CPeople::Playable )
return peopleToClan[ people ];
return Unknown;
}
} // namespace PVP_CLAN