cyphesis/server/ScriptFactory.h
Al Riddoch 294c781dc7 2006-08-02 Al Riddoch <alriddoch@zepler.org>
* common/Use.h, common/Wield.h, common/Generic.h: Mark unused files
	  as removed from the build.

	* common/Attack.h, common/Burn.h, common/Chop.h, common/Connect.h,
	  common/Cut.h, common/Delve.h, common/Dig.h, common/Drop.h,
	  common/Eat.h, common/Monitor.h, common/Mow.h, common/Nourish.h,
	  common/Pickup.h, common/Setup.h, common/Tick.h, common/Unseen.h,
	  common/Update.h: Add class documentation to all the custom
	  properties.

	* common/DynamicProperty.h, client/ClientPropertyManager.h,
	  server/CorePropertyManager.h, server/PersistantThingFactory.h,
	  server/ScriptFactory.h, server/WorldRouter.cpp: Add documentation
	  to some places where it is missing.
2006-08-02 11:27:15 +00:00

61 lines
1.8 KiB
C++

// Cyphesis Online RPG Server and AI Engine
// Copyright (C) 2005 Alistair Riddoch
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software Foundation,
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#ifndef SERVER_SCRIPT_FACTORY_H
#define SERVER_SCRIPT_FACTORY_H
#include <Python.h>
#include <string>
class Entity;
/// \brief Factory interface for creating scripts to attach to in game
/// entity objects.
class ScriptFactory {
protected:
std::string m_package;
std::string m_type;
ScriptFactory(const std::string & package, const std::string & type);
public:
virtual ~ScriptFactory();
const std::string & package() { return m_package; }
virtual int addScript(Entity * entity) = 0;
virtual int refreshClass() = 0;
};
/// \brief Factory implementation for creating python script objects to attach
/// to in game entity objects.
class PythonScriptFactory : public ScriptFactory {
protected:
PyObject * m_module;
PyObject * m_class;
int getClass();
public:
PythonScriptFactory(const std::string & package, const std::string & type);
~PythonScriptFactory();
int addScript(Entity * entity);
int refreshClass();
};
#endif // SERVER_SCRIPT_FACTORY_H