Added DamageType translation to API
git-svn-id: http://mc-server.googlecode.com/svn/trunk@1639 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
@@ -323,6 +323,7 @@ EMCSBiome StringToBiome(const AString & a_BiomeString)
|
||||
|
||||
eDimension StringToDimension(const AString & a_DimensionString)
|
||||
{
|
||||
// First try decoding as a number
|
||||
int res = atoi(a_DimensionString.c_str());
|
||||
if ((res != 0) || (a_DimensionString == "0"))
|
||||
{
|
||||
@@ -330,7 +331,7 @@ eDimension StringToDimension(const AString & a_DimensionString)
|
||||
return (eDimension)res;
|
||||
}
|
||||
|
||||
// Convert using a built-in map:
|
||||
// Decode using a built-in map:
|
||||
static struct
|
||||
{
|
||||
eDimension m_Dimension;
|
||||
@@ -361,6 +362,105 @@ eDimension StringToDimension(const AString & a_DimensionString)
|
||||
|
||||
|
||||
|
||||
/// Translates damage type constant to a string representation (built-in).
|
||||
AString DamageTypeToString(eDamageType a_DamageType)
|
||||
{
|
||||
switch (a_DamageType)
|
||||
{
|
||||
case dtAttack: return "dtAttack";
|
||||
case dtLightning: return "dtLightning";
|
||||
case dtFalling: return "dtFalling";
|
||||
case dtDrowning: return "dtDrowning";
|
||||
case dtSuffocating: return "dtSuffocation";
|
||||
case dtStarving: return "dtStarving";
|
||||
case dtCactusContact: return "dtCactusContact";
|
||||
case dtLavaContact: return "dtLavaContact";
|
||||
case dtPoisoning: return "dtPoisoning";
|
||||
case dtOnFire: return "dtOnFire";
|
||||
case dtFireContact: return "dtFireContact";
|
||||
case dtInVoid: return "dtInVoid";
|
||||
case dtPotionOfHarming: return "dtPotionOfHarming";
|
||||
case dtAdmin: return "dtAdmin";
|
||||
}
|
||||
|
||||
// Unknown damage type:
|
||||
ASSERT(!"Unknown DamageType");
|
||||
return Printf("dtUnknown_%d", (int)a_DamageType);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// Translates a damage type string to damage type. Takes either a number or a damage type alias (built-in). Returns -1 on failure
|
||||
eDamageType StringToDamageType(const AString & a_DamageTypeString)
|
||||
{
|
||||
// First try decoding as a number:
|
||||
int res = atoi(a_DamageTypeString.c_str());
|
||||
if ((res != 0) || (a_DamageTypeString == "0"))
|
||||
{
|
||||
// It was a valid number
|
||||
return (eDamageType)res;
|
||||
}
|
||||
|
||||
// Decode using a built-in map:
|
||||
static struct
|
||||
{
|
||||
eDamageType m_DamageType;
|
||||
const char * m_String;
|
||||
} DamageTypeMap [] =
|
||||
{
|
||||
// Cannonical names:
|
||||
{ dtAttack, "dtAttack"},
|
||||
{ dtLightning, "dtLightning"},
|
||||
{ dtFalling, "dtFalling"},
|
||||
{ dtDrowning, "dtDrowning"},
|
||||
{ dtSuffocating, "dtSuffocation"},
|
||||
{ dtStarving, "dtStarving"},
|
||||
{ dtCactusContact, "dtCactusContact"},
|
||||
{ dtLavaContact, "dtLavaContact"},
|
||||
{ dtPoisoning, "dtPoisoning"},
|
||||
{ dtOnFire, "dtOnFire"},
|
||||
{ dtFireContact, "dtFireContact"},
|
||||
{ dtInVoid, "dtInVoid"},
|
||||
{ dtPotionOfHarming, "dtPotionOfHarming"},
|
||||
{ dtAdmin, "dtAdmin"},
|
||||
|
||||
// Common synonyms:
|
||||
{ dtPawnAttack, "dtAttack"},
|
||||
{ dtEntityAttack, "dtAttack"},
|
||||
{ dtMob, "dtAttack"},
|
||||
{ dtMobAttack, "dtAttack"},
|
||||
{ dtFall, "dtFalling"},
|
||||
{ dtDrown, "dtDrowning"},
|
||||
{ dtSuffocation, "dtSuffocating"},
|
||||
{ dtStarvation, "dtStarving"},
|
||||
{ dtHunger, "dtStarving"},
|
||||
{ dtCactus, "dtCactusContact"},
|
||||
{ dtCactuses, "dtCactusContact"},
|
||||
{ dtCacti, "dtCactusContact"},
|
||||
{ dtLava, "dtLavaContact"},
|
||||
{ dtPoison, "dtPoisoning"},
|
||||
{ dtBurning, "dtOnFire"},
|
||||
{ dtInFire, "dtFireContact"},
|
||||
{ dtPlugin, "dtAdmin"},
|
||||
} ;
|
||||
for (int i = 0; i < ARRAYCOUNT(DamageTypeMap); i++)
|
||||
{
|
||||
if (NoCaseCompare(DamageTypeMap[i].m_String, a_DamageTypeString) == 0)
|
||||
{
|
||||
return DamageTypeMap[i].m_DamageType;
|
||||
}
|
||||
} // for i - DamageTypeMap[]
|
||||
|
||||
// Not found:
|
||||
return (eDamageType)-1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// This is actually just some code that needs to run at program startup, so it is wrapped into a global var's constructor:
|
||||
class cBlockPropertiesInitializer
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user