diff --git a/apps/openmw/mwdialogue/filter.cpp b/apps/openmw/mwdialogue/filter.cpp index 5161ea5ed6..bded2aaec6 100644 --- a/apps/openmw/mwdialogue/filter.cpp +++ b/apps/openmw/mwdialogue/filter.cpp @@ -128,6 +128,7 @@ bool MWDialogue::Filter::testSelectStruct (const SelectWrapper& select) const case SelectWrapper::Type_None: return true; case SelectWrapper::Type_Integer: return select.selectCompare (getSelectStructInteger (select)); case SelectWrapper::Type_Numeric: return testSelectStructNumeric (select); + case SelectWrapper::Type_Boolean: return select.selectCompare (getSelectStructBoolean (select)); } return true; @@ -153,6 +154,16 @@ int MWDialogue::Filter::getSelectStructInteger (const SelectWrapper& select) con } } +bool MWDialogue::Filter::getSelectStructBoolean (const SelectWrapper& select) const +{ + switch (select.getFunction()) + { + default: + + throw std::runtime_error ("unknown boolean select function"); + } +} + MWDialogue::Filter::Filter (const MWWorld::Ptr& actor) : mActor (actor) {} bool MWDialogue::Filter::operator() (const ESM::DialInfo& info) const diff --git a/apps/openmw/mwdialogue/filter.hpp b/apps/openmw/mwdialogue/filter.hpp index 2b8410941e..4263920cb2 100644 --- a/apps/openmw/mwdialogue/filter.hpp +++ b/apps/openmw/mwdialogue/filter.hpp @@ -30,6 +30,8 @@ namespace MWDialogue bool testSelectStructNumeric (const SelectWrapper& select) const; int getSelectStructInteger (const SelectWrapper& select) const; + + bool getSelectStructBoolean (const SelectWrapper& select) const; public: diff --git a/apps/openmw/mwdialogue/selectwrapper.cpp b/apps/openmw/mwdialogue/selectwrapper.cpp index 704c4c7ef2..4e740c62f5 100644 --- a/apps/openmw/mwdialogue/selectwrapper.cpp +++ b/apps/openmw/mwdialogue/selectwrapper.cpp @@ -65,3 +65,8 @@ bool MWDialogue::SelectWrapper::selectCompare (float value) const { return selectCompareImp (mSelect, value)!=IsInverted(); // logic XOR } + +bool MWDialogue::SelectWrapper::selectCompare (bool value) const +{ + return selectCompareImp (mSelect, static_cast (value))!=IsInverted(); // logic XOR +} diff --git a/apps/openmw/mwdialogue/selectwrapper.hpp b/apps/openmw/mwdialogue/selectwrapper.hpp index c4d954d533..f1ac252097 100644 --- a/apps/openmw/mwdialogue/selectwrapper.hpp +++ b/apps/openmw/mwdialogue/selectwrapper.hpp @@ -20,7 +20,8 @@ namespace MWDialogue { Type_None, Type_Integer, - Type_Numeric + Type_Numeric, + Type_Boolean }; public: @@ -36,6 +37,8 @@ namespace MWDialogue bool selectCompare (int value) const; bool selectCompare (float value) const; + + bool selectCompare (bool value) const; }; }