summaryrefslogtreecommitdiff
path: root/src/mmo/extract_enums.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mmo/extract_enums.cpp')
-rw-r--r--src/mmo/extract_enums.cpp33
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