diff options
Diffstat (limited to 'src/mmo/extract_enums.cpp')
-rw-r--r-- | src/mmo/extract_enums.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/mmo/extract_enums.cpp b/src/mmo/extract_enums.cpp index f906179..efafa39 100644 --- a/src/mmo/extract_enums.cpp +++ b/src/mmo/extract_enums.cpp @@ -23,4 +23,37 @@ namespace tmwa { +bool impl_extract(XString str, DIR *d) +{ + unsigned di; + if (extract(str, &di) && di < 8) + { + *d = static_cast<DIR>(di); + return true; + } + const struct + { + LString str; + DIR d; + } dirs[] = + { + {"S"_s, DIR::S}, + {"SW"_s, DIR::SW}, + {"W"_s, DIR::W}, + {"NW"_s, DIR::NW}, + {"N"_s, DIR::N}, + {"NE"_s, DIR::NE}, + {"E"_s, DIR::E}, + {"SE"_s, DIR::SE}, + }; + for (auto& pair : dirs) + { + if (str == pair.str) + { + *d = pair.d; + return true; + } + } + return false; +} } // namespace tmwa |