#pragma once #ifndef AI_MOODS_HPP #define AI_MOODS_HPP #include "AI.hpp" #pragma warning (push) #include #include #pragma warning (pop) namespace MW4AI { namespace Moods { enum ID // NOTE: the keywords and constants here must exactly match those in MWCONST.ABI { DESPERATE_START = 1, // change MOODMIN in Adept\AI.hpp if you change this DESPERATE_END = 2, DEFENSIVE_START = 3, DEFENSIVE_END = 4, NEUTRAL_START = 5, NEUTRAL_END = 6, AGRESSIVE_START = 7, AGRESSIVE_END = 8, BRUTAL_START = 9, BRUTAL_END = 10 // change MOODMAX in Adept\AI.hpp if you change this }; class Mood { public: virtual std::string GetName() const = 0; virtual ~Mood() {}; }; Stuff::Auto_Ptr CreateMood(ID mood); void VerifyMood(ID mood); #define BEGINDEF_MOOD(classname,stringname) \ class classname \ : public Mood \ { \ public: \ std::string GetName() const { return (stringname); } \ #define ENDDEF_MOOD }; BEGINDEF_MOOD(Desperate,"DESPERATE") ENDDEF_MOOD BEGINDEF_MOOD(Defensive,"DEFENSIVE") ENDDEF_MOOD BEGINDEF_MOOD(Neutral,"NEUTRAL") ENDDEF_MOOD BEGINDEF_MOOD(Aggressive,"AGGRESSIVE") ENDDEF_MOOD BEGINDEF_MOOD(Brutal,"BRUTAL") ENDDEF_MOOD #undef BEGINDEF_MOOD #undef ENDDEF_MOOD }; }; #endif // AI_MOODS_HPP