ActionParams.h

Go to the documentation of this file.
00001 ////////////////////////////////////////////////////////////////////////////////
00002 //    Scorched3D (c) 2000-2009
00003 //
00004 //    This file is part of Scorched3D.
00005 //
00006 //    Scorched3D is free software; you can redistribute it and/or modify
00007 //    it under the terms of the GNU General Public License as published by
00008 //    the Free Software Foundation; either version 2 of the License, or
00009 //    (at your option) any later version.
00010 //
00011 //    Scorched3D is distributed in the hope that it will be useful,
00012 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 //    GNU General Public License for more details.
00015 //
00016 //    You should have received a copy of the GNU General Public License
00017 //    along with Scorched3D; if not, write to the Free Software
00018 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 ////////////////////////////////////////////////////////////////////////////////
00020 
00021 #if !defined(__INCLUDE_ActionParamsh_INCLUDE__)
00022 #define __INCLUDE_ActionParamsh_INCLUDE__
00023 
00024 #include <lang/LangString.h>
00025 #include <common/NumberParser.h>
00026 #include <vector>
00027 
00028 #define FIXED_ACTION_PARAM_DECL(x) \
00029         private: \
00030         FixedActionParam x_; \
00031         public: \
00032         fixed get##x() { return x_.getValue(); }
00033 #define FIXED_ACTION_PARAM_DEFN(x, y, z) \
00034         x_.setValue(z); \
00035         x_.setName(y); \
00036         params_.push_back(&x_);
00037 
00038 struct lua_State;
00039 class XMLNode;
00040 class ActionParam
00041 {
00042 public:
00043         const std::string &getName() { return name_; }
00044         void setName(const std::string &name) { name_ = name; }
00045 
00046         virtual void copy(ActionParam *other) = 0;
00047         virtual bool parseXML(XMLNode *accessoryNode) = 0;
00048         virtual void initLUA(lua_State *L, int position) = 0;
00049         virtual void initXML(ScorchedContext &context) = 0;
00050                 
00051 protected:
00052         std::string name_;
00053 };
00054 
00055 class FixedActionParam : public ActionParam
00056 {
00057 public:
00058         fixed getValue() { return value_; }
00059         void setValue(fixed value) { value_ = value; }
00060 
00061         virtual void copy(ActionParam *other);
00062         virtual bool parseXML(XMLNode *accessoryNode);
00063         virtual void initLUA(lua_State *L, int position);
00064         virtual void initXML(ScorchedContext &context);
00065 
00066 protected:
00067         NumberParser parser_;
00068         fixed value_;
00069 };
00070 
00071 class ActionParams 
00072 {
00073 public:
00074         ActionParams();
00075 
00076         bool parseXML(XMLNode *accessoryNode);
00077         void initLUA(lua_State *L, int position);
00078         void initXML(ScorchedContext &context);
00079 
00080         void copy(ActionParams &other);
00081 
00082 protected:
00083         std::vector<ActionParam *> params_;
00084 
00085 private:
00086         ActionParams(const ActionParams &other);
00087         ActionParams &operator=(const ActionParams &other);
00088 };
00089 
00090 class TestActionParams : public ActionParams
00091 {
00092         TestActionParams();
00093 
00094         FIXED_ACTION_PARAM_DECL(testName);
00095 };
00096 
00097 #endif

Generated on Mon Feb 16 15:14:48 2009 for Scorched3D by  doxygen 1.5.3