From 162523d3ca5381c4d53ae9719dca84e15c6da108 Mon Sep 17 00:00:00 2001 From: sippeangelo Date: Tue, 19 Jan 2016 11:55:27 +0100 Subject: [PATCH] Made EntityFileWriter store enums as strings instead of integer values to be resistant to enum value changes! --- src/Engine/Core/EntityFileWriter.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Engine/Core/EntityFileWriter.cpp b/src/Engine/Core/EntityFileWriter.cpp index 4d46be06..3efc9253 100644 --- a/src/Engine/Core/EntityFileWriter.cpp +++ b/src/Engine/Core/EntityFileWriter.cpp @@ -114,9 +114,18 @@ void EntityFileWriter::appentEntityComponents(xercesc::DOMElement* parentElement fieldElement->setAttribute(X("Y"), X(boost::lexical_cast(q.y))); fieldElement->setAttribute(X("Z"), X(boost::lexical_cast(q.z))); fieldElement->setAttribute(X("W"), X(boost::lexical_cast(q.w))); - } else if (field.Type == "int" || field.Type == "enum") { + } else if (field.Type == "int") { const int& value = c[fieldName]; fieldElement->appendChild(doc->createTextNode(X(boost::lexical_cast(value)))); + } else if (field.Type == "enum") { + const int& value = c[fieldName]; + auto& enumDef = c.Info.Meta->FieldEnumDefinitions.at(fieldName); + for (auto& kv : enumDef) { + if (kv.second == value) { + fieldElement->appendChild(doc->createElement(X(kv.first))); + break; + } + } } else if (field.Type == "float") { const float& value = c[fieldName]; fieldElement->appendChild(doc->createTextNode(X(boost::lexical_cast(value))));