2001-04-10 19:05:14 +00:00
|
|
|
// This file may be redistributed and modified only under the terms of
|
|
|
|
|
// the GNU General Public License (See COPYING for details).
|
2001-04-16 16:26:44 +00:00
|
|
|
// Copyright (C) 2001 Alistair Riddoch
|
2001-04-10 19:05:14 +00:00
|
|
|
|
2001-08-02 14:27:06 +00:00
|
|
|
#ifndef RULESETS_PYTHON_THING_SCRIPT_H
|
|
|
|
|
#define RULESETS_PYTHON_THING_SCRIPT_H
|
2001-04-10 19:05:14 +00:00
|
|
|
|
|
|
|
|
#include "PythonScript.h"
|
|
|
|
|
|
2002-11-25 Al Riddoch <alriddoch@zepler.org>
* common/Database.h, common/Database.cpp, server/Persistance.cpp:
Finish entity table creation code, and test it.
* rulesets/Entity.cpp, rulesets/Entity.h, rulesets/EntityFactory.h,
rulesets/PythonThingScript.cpp, rulesets/PythonThingScript.h,
rulesets/Python_API.cpp, rulesets/Python_API.h,
rulesets/Thing.cpp, rulesets/Thing.h, server/EntityFactory.cpp,
server/EntityFactory.h, server/WorldRouter.cpp: Sort out
some incorrect use of Thing instead of Entity. Move some code
from Thing into Entity.
2002-11-25 22:48:13 +00:00
|
|
|
class Entity;
|
2001-04-10 19:05:14 +00:00
|
|
|
|
2004-12-27 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.h, client/CharacterClient.h,
client/ClientConnection.h, client/CreatorClient.h,
client/ObserverClient.h, client/Py_CreatorClient.h,
common/Burn.h, common/Chop.h, common/Cut.h, common/Database.h,
common/Eat.h, common/Generic.h, common/Nourish.h, common/Setup.h,
common/Tick.h, common/Unseen.h, common/Use.h, common/Wield.h,
common/accountbase.h, common/inheritance.h, rulesets/Container.h,
rulesets/Creator.h, rulesets/LineProperty.h, rulesets/MemMap.h,
rulesets/MindFactory.h, rulesets/Movement.h, rulesets/Pedestrian.h,
rulesets/Py_BBox.h, rulesets/Py_Location.h, rulesets/Py_Map.h,
rulesets/Py_Mind.h, rulesets/Py_Object.h, rulesets/Py_Operation.h,
rulesets/Py_Oplist.h, rulesets/Py_Optime.h, rulesets/Py_Point3D.h,
rulesets/Py_Quaternion.h, rulesets/Py_Thing.h,
rulesets/Py_Vector3D.h, rulesets/Py_World.h, rulesets/Py_WorldTime.h,
rulesets/PythonMindScript.h, rulesets/PythonScript.h,
rulesets/PythonThingScript.h, rulesets/Python_API.cpp,
rulesets/TerrainProperty.h, rulesets/ThingFactory.h, server/Admin.h,
server/EntityFactory.h, server/Master.h, server/Peer.h,
server/Persistance.h, server/PersistantThingFactory.h,
server/Persistor.h, server/Player.h, server/Restoration.h,
server/Restorer.h, server/TrustedConnection.h: Make sure all
classes have up updated description in the comments.
2004-12-27 03:06:54 +00:00
|
|
|
/// \brief Script class for Python scripts attached to an Entity
|
2003-05-05 Al Riddoch <alriddoch@zepler.org>
* server/EntityFactory.cpp, rulesets/Python_API.h,
rulesets/Python_API.cpp, rulesets/PythonThingScript.h,
rulesets/PythonThingScript.cpp, rulesets/PythonMindScript.cpp,
rulesets/Py_World.cpp, rulesets/Py_Thing.h, rulesets/Py_Thing.cpp,
rulesets/Py_Operation.cpp, rulesets/Py_Map.cpp,
rulesets/Py_Location.cpp, rulesets/Movement.h,
rulesets/MemMap_methods.h, rulesets/MemMap.h, rulesets/MemMap.cpp,
rulesets/Entity.cpp, rulesets/BaseMind.cpp,
client/Py_CreatorClient.cpp:
Rename all references from thing to entity, as thing is
no longer the base class for IG entities.
* rulesets/World.h, rulesets/World.cpp, rulesets/Thing.h,
rulesets/Structure.h, rulesets/Stackable.h, rulesets/Stackable.cpp,
rulesets/Plant.h, rulesets/Plant.cpp, rulesets/Missile.h,
rulesets/Line.h, rulesets/Line.cpp, rulesets/Food.h,
rulesets/Food.cpp, rulesets/Creator.h, rulesets/Character.h,
rulesets/Character.cpp, rulesets/Area.h, rulesets/Area.cpp:
Add a typedef for the parent class of all entity classes.
* rulesets/Plant.h, rulesets/Plant.cpp:
Add in code to fully integrate hardcoded attributes.
2003-05-05 21:57:50 +00:00
|
|
|
class PythonEntityScript : public PythonScript {
|
2005-12-11 03:28:18 +00:00
|
|
|
protected:
|
|
|
|
|
PyObject * const m_wrapper;
|
2001-04-10 19:05:14 +00:00
|
|
|
public:
|
2005-12-11 03:28:18 +00:00
|
|
|
explicit PythonEntityScript(PyObject *, PyObject *);
|
2003-05-05 Al Riddoch <alriddoch@zepler.org>
* server/EntityFactory.cpp, rulesets/Python_API.h,
rulesets/Python_API.cpp, rulesets/PythonThingScript.h,
rulesets/PythonThingScript.cpp, rulesets/PythonMindScript.cpp,
rulesets/Py_World.cpp, rulesets/Py_Thing.h, rulesets/Py_Thing.cpp,
rulesets/Py_Operation.cpp, rulesets/Py_Map.cpp,
rulesets/Py_Location.cpp, rulesets/Movement.h,
rulesets/MemMap_methods.h, rulesets/MemMap.h, rulesets/MemMap.cpp,
rulesets/Entity.cpp, rulesets/BaseMind.cpp,
client/Py_CreatorClient.cpp:
Rename all references from thing to entity, as thing is
no longer the base class for IG entities.
* rulesets/World.h, rulesets/World.cpp, rulesets/Thing.h,
rulesets/Structure.h, rulesets/Stackable.h, rulesets/Stackable.cpp,
rulesets/Plant.h, rulesets/Plant.cpp, rulesets/Missile.h,
rulesets/Line.h, rulesets/Line.cpp, rulesets/Food.h,
rulesets/Food.cpp, rulesets/Creator.h, rulesets/Character.h,
rulesets/Character.cpp, rulesets/Area.h, rulesets/Area.cpp:
Add a typedef for the parent class of all entity classes.
* rulesets/Plant.h, rulesets/Plant.cpp:
Add in code to fully integrate hardcoded attributes.
2003-05-05 21:57:50 +00:00
|
|
|
virtual ~PythonEntityScript();
|
2005-12-11 13:54:09 +00:00
|
|
|
|
|
|
|
|
PyObject * wrapper() const { return m_wrapper; }
|
|
|
|
|
|
2005-09-18 Al Riddoch <alriddoch@zepler.org>
* rulesets/PythonMindScript.cpp, rulesets/PythonMindScript.h,
rulesets/PythonThingScript.cpp, rulesets/PythonThingScript.h
rulesets/PythonScript.h, rulesets/Script.cpp, rulesets/Script.h:
Clean up script API.
* rulesets/BaseMind.cpp, rulesets/Character.cpp, rulesets/Entity.cpp,
rulesets/Food.cpp, rulesets/Plant.cpp, rulesets/Stackable.cpp,
rulesets/Thing.cpp: Modify script calls to new API.
* rulesets/BaseMind.cpp, rulesets/BaseMind.h: All sub_op calls now
take const ref for sub_op argument.
2005-09-18 00:55:58 +00:00
|
|
|
virtual bool operation(const std::string &,
|
2004-12-03 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h,
client/CharacterClient.cpp, client/CharacterClient.h,
client/ClientConnection.cpp, client/ClientConnection.h,
client/CreatorClient.cpp, client/CreatorClient.h,
client/Py_CreatorClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/BaseWorld.h, common/custom.cpp,
common/inheritance.cpp, common/inheritance.h,
common/inheritance_impl.h, common/op_switch.h, common/type_utils.h,
common/types.h, common/utility.cpp, common/utility.h,
modules/Location.cpp, rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h, rulesets/Creator.cpp,
rulesets/Creator.h, rulesets/Entity.cpp, rulesets/Entity.h,
rulesets/EntityProperties.cpp, rulesets/Entity_getLocation.h,
rulesets/Food.cpp, rulesets/Food.h, rulesets/MemMap.cpp,
rulesets/MemMap.h, rulesets/Missile.h, rulesets/Pedestrian.cpp,
rulesets/Plant.cpp, rulesets/Plant.h, rulesets/Py_Mind.cpp,
rulesets/Py_Object.cpp, rulesets/Py_Operation.cpp,
rulesets/Py_Operation.h, rulesets/Py_Thing.cpp,
rulesets/PythonMindScript.h, rulesets/PythonScript.h,
rulesets/PythonThingScript.h, rulesets/Python_API.cpp,
rulesets/Script.cpp, rulesets/Script.h, rulesets/Stackable.cpp,
rulesets/Stackable.h, rulesets/Thing.cpp, rulesets/Thing.h,
rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h server/Admin.cpp, server/Admin.h,
server/CommClient.cpp, server/Connection.cpp, server/Connection.h,
server/EntityFactory.cpp, server/EntityFactory.h, server/Lobby.cpp,
server/Lobby.h, server/Persistance.cpp, server/Persistance.h,
server/Persistor.cpp, server/Player.cpp, server/Player.h,
server/ServerRouting.cpp, server/ServerRouting.h,
server/TrustedConnection.cpp, server/TrustedConnection.h,
server/WorldRouter.cpp, server/WorldRouter.h, tests/Areatest.cpp,
tests/Charactertest.cpp, tests/Creatortest.cpp,
tests/EntityExerciser.h, tests/Entitytest.cpp, tests/Foodtest.cpp,
tests/IGEntityExerciser.h, tests/Linetest.cpp, tests/Planttest.cpp,
tests/Stackabletest.cpp, tests/Structuretest.cpp, tests/Thingtest.cpp,
tests/Worldtest.cpp, tests/allOperations.h, tests/inheritancetest.cpp,
tests/utilitytest.cpp, tools/cycmd.cpp:
Modify the entity interface so that all Operation methods
take references to RootOperation, as its cleaner, and requires
less nasty casts. Clean up operations in headers generally.
2004-12-03 14:49:13 +00:00
|
|
|
const Atlas::Objects::Operation::RootOperation &,
|
|
|
|
|
OpVector &,
|
2005-09-18 Al Riddoch <alriddoch@zepler.org>
* rulesets/PythonMindScript.cpp, rulesets/PythonMindScript.h,
rulesets/PythonThingScript.cpp, rulesets/PythonThingScript.h
rulesets/PythonScript.h, rulesets/Script.cpp, rulesets/Script.h:
Clean up script API.
* rulesets/BaseMind.cpp, rulesets/Character.cpp, rulesets/Entity.cpp,
rulesets/Food.cpp, rulesets/Plant.cpp, rulesets/Stackable.cpp,
rulesets/Thing.cpp: Modify script calls to new API.
* rulesets/BaseMind.cpp, rulesets/BaseMind.h: All sub_op calls now
take const ref for sub_op argument.
2005-09-18 00:55:58 +00:00
|
|
|
const Atlas::Objects::Operation::RootOperation * = 0);
|
2001-08-14 17:52:50 +00:00
|
|
|
virtual void hook(const std::string &, Entity *);
|
2001-04-10 19:05:14 +00:00
|
|
|
};
|
|
|
|
|
|
2001-08-02 14:27:06 +00:00
|
|
|
#endif // RULESETS_PYTHON_THING_SCRIPT_H
|