| 304 | |
| 305 | |
| 306 | eDimension StringToDimension(const AString & a_DimensionString) |
| 307 | { |
| 308 | // First try decoding as a number |
| 309 | int res = atoi(a_DimensionString.c_str()); |
| 310 | if ((res != 0) || (a_DimensionString == "0")) |
| 311 | { |
| 312 | // It was a valid number |
| 313 | return (eDimension)res; |
| 314 | } |
| 315 | |
| 316 | // Decode using a built-in map: |
| 317 | static struct |
| 318 | { |
| 319 | eDimension m_Dimension; |
| 320 | const char * m_String; |
| 321 | } DimensionMap [] = |
| 322 | { |
| 323 | { dimOverworld, "Overworld"}, |
| 324 | { dimOverworld, "Normal"}, |
| 325 | { dimOverworld, "World"}, |
| 326 | { dimNether, "Nether"}, |
| 327 | { dimNether, "Hell"}, // Alternate name for End |
| 328 | { dimEnd, "End"}, |
| 329 | { dimEnd, "Sky"}, // Old name for End |
| 330 | } ; |
| 331 | for (size_t i = 0; i < ARRAYCOUNT(DimensionMap); i++) |
| 332 | { |
| 333 | if (NoCaseCompare(DimensionMap[i].m_String, a_DimensionString) == 0) |
| 334 | { |
| 335 | return DimensionMap[i].m_Dimension; |
| 336 | } |
| 337 | } // for i - DimensionMap[] |
| 338 | |
| 339 | // Not found |
| 340 | return (eDimension)-1000; |
| 341 | } |
| 342 | |
| 343 | |
| 344 |
no test coverage detected