Commit graph

21 commits

Author SHA1 Message Date
Erik Ogenvik
e85f0831b2 Restructure rule classes.
Classes under "rulesets" have been moved to "rules", and split up into
futher subdirectories matching their library. As a result we can now
better separate the python bindings, so that things that belongs to the
simulation are separeted from things that belongs to the ai.
2018-10-31 21:38:35 +01:00
Erik Ogenvik
d1ebd44e01 Handle Python results better. 2018-07-29 19:54:50 +02:00
Erik Ogenvik
7edaae44d2 Store all entities as Refs in base world. 2018-07-25 13:01:33 +02:00
Erik Ogenvik
653d5a38ba Handle Py::Callable better. 2018-07-24 21:18:26 +02:00
Erik Ogenvik
ba539df70e Use PyCXX throughout. 2018-07-23 16:43:39 +02:00
Erik Ogenvik
701d1a7208 Initial work on porting to Python 3. 2018-05-07 11:15:26 +02:00
Erik Ogenvik
e7fa53214b Use nullptr instead of NULL. 2018-02-06 13:45:11 +01:00
Olek Wojnar
7f9ff2246d Remove CVS $Id tags
The legacy tags are causing build issues in Debian.
2013-07-15 20:31:59 +02:00
Alistair Riddoch
e79fcc11d5 Add checking the stats scripts get decreffed 2011-10-20 01:09:33 +01:00
Alistair Riddoch
2d3bb5b30e Clear error status after calling PyObject_Generic?etAttr methods. 2009-07-02 01:51:08 +01:00
Al Riddoch
2b80bf675e 2009-02-25 Al Riddoch <alriddoch@googlemail.com>
* rulesets/ArithmeticScript.h, rulesets/PythonArithmeticScript.cpp,
	  rulesets/PythonArithmeticScript.h: Change set() method to return
	  void as there is nothing to report.
2009-02-25 20:15:11 +00:00
Al Riddoch
e708041664 2008-11-30 Al Riddoch <alriddoch@googlemail.com>
* rulesets/PythonArithmeticScript.cpp,
	  rulesets/StatisticsProperty.cpp: Remove the debug output.

	* rulesets/mason/world/statistics/Statistics.py: Get rid of the
	  useless del property, and clean up debug output.
2008-11-30 04:04:57 +00:00
Al Riddoch
93df97a92b 2008-11-30 Al Riddoch <alriddoch@googlemail.com>
* rulesets/mason/world/statistics/Statistics.py: Make this a new
	  style class so properties work right, and implement it all
	  as properties.


	* rulesets/StatisticsProperty.cpp: Move the setup of the script
	  instance into apply rather than install, otherwise it doesn't get
	  called in the right place.

	* rulesets/ArithmeticScript.h: Add a set method to the interface.

	* rulesets/PythonArithmeticScript.cpp,
	  rulesets/PythonArithmeticScript.h: Implement getting using
	  PyObject_GenericGetAttr() as it works. Add a completely new set
	  function.

	* rulesets/Entity.cpp: When a new property is installed it needs
	  to be applied.
2008-11-30 03:53:11 +00:00
Al Riddoch
7b4988dee1 2008-08-24 Al Riddoch <alriddoch@googlemail.com>
* rulesets/PythonArithmeticScript.cpp, rulesets/PythonThingScript.cpp:
	  Add casts when passing string constants to Python calls which take
	  char *. I am confident this is safe, and the functions have no
	  need to modify the strings, so could take const char *, but somehow
	  don't.
2008-08-24 21:59:53 +00:00
Al Riddoch
013f5c4089 2006-12-24 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.h, client/Py_CreatorClient.h,
	  common/BaseEntity.cpp, common/PropertyFactory.h,
	  common/PropertyManager.cpp, common/PropertyManager.h,
	  rulesets/ArithmeticScript.h, rulesets/Py_BBox.h,
	  rulesets/Py_EntityWrapper.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_Point3D.h,
	  rulesets/Py_Property.h, rulesets/Py_Quaternion.h,
	  rulesets/Py_RootEntity.h, rulesets/Py_Task.h, rulesets/Py_Thing.h,
	  rulesets/PythonArithmeticScript.cpp,
	  rulesets/PythonArithmeticScript.h, rulesets/PythonThingScript.cpp,
	  rulesets/PythonThingScript.h, server/Account.h,
	  server/ArithmeticFactory.cpp, server/ArithmeticFactory.h,
	  server/Player.h, server/ServerRouting.cpp, server/ServerRouting.h,
	  server/TaskFactory.h: Add more inline documentation. Harmonise
	  argument names, and move documentation comments into base classes
	  as necessary.

	* FIXME: More notes on a factory related fixme.

	* TODO: Add more stuff to do.
2006-12-24 17:18:54 +00:00
Al Riddoch
9a56dac06c 2006-10-26 Al Riddoch <alriddoch@zepler.org>
* Add RCS Id keywords to every file, for better version tracking.
2006-10-26 00:48:00 +00:00
Al Riddoch
fac57eee73 2006-01-19 Al Riddoch <alriddoch@zepler.org>
* aiclient/ClientAccount.cpp, aiclient/ClientAccount.h,
	  aiclient/ClientConnection.cpp, aiclient/ClientConnection.h,
	  aiclient/client.cpp, aiclient/client.h, 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/ObserverClient.cpp,
	  client/ObserverClient.h, client/Py_CreatorClient.cpp,
	  client/Py_CreatorClient.h, client/client.cpp,
	  client/define_world.cpp, client/define_world.h, common/Add.h,
	  common/Affect.h, common/AtlasFileLoader.cpp,
	  common/AtlasFileLoader.h, common/Attack.h, common/BaseEntity.cpp,
	  common/BaseEntity.h, common/BaseWorld.cpp, common/BaseWorld.h,
	  common/Burn.h, common/Chop.h, common/Connect.h, common/CustomOp.cpp,
	  common/CustomOp.h, common/CustomOp_impl.h, common/Cut.h,
	  common/Database.cpp, common/Database.h, common/Delve.h, common/Dig.h,
	  common/Eat.h, common/FormattedXMLWriter.cpp,
	  common/FormattedXMLWriter.h, common/Generic.h, common/Load.h,
	  common/Monitor.h, common/Mow.h, common/Nourish.h,
	  common/OOGThing.cpp, common/OOGThing.h, common/Property.cpp,
	  common/Property.h, common/Property_impl.h, common/Save.h,
	  common/Setup.h, common/Tick.h, common/Unseen.h, common/Update.h,
	  common/Use.h, common/Wield.h, common/accountbase.cpp,
	  common/accountbase.h, common/const.cpp, common/const.h,
	  common/custom.cpp, common/debug.h, common/globals.cpp,
	  common/globals.h, common/id.cpp, common/id.h, common/inheritance.cpp,
	  common/inheritance.h, common/inheritance_impl.h, common/log.cpp,
	  common/log.h, common/newid.cpp, common/nls.h, common/op_switch.h,
	  common/operations.cpp, common/operations.h, common/random.h,
	  common/refno.h, common/serialno.cpp, common/serialno.h,
	  common/system.cpp, common/system.h, common/terrain_utils.cpp,
	  common/terrain_utils.h, common/type_utils.h, common/types.h,
	  common/utility.cpp, common/utility.h, modules/DateTime.cpp,
	  modules/DateTime.h, modules/Location.cpp, modules/Location.h,
	  modules/WorldTime.cpp, modules/WorldTime.h, physics/BBox.cpp,
	  physics/BBox.h, physics/Collision.cpp, physics/Collision.h,
	  physics/Quaternion.cpp, physics/Quaternion.h, physics/Vector3D.cpp,
	  physics/Vector3D.h, physics/VectorPol.h, rulesets/Area.cpp,
	  rulesets/Area.h, rulesets/AreaProperty.cpp, rulesets/AreaProperty.h,
	  rulesets/ArithmeticScript.cpp, rulesets/ArithmeticScript.h,
	  rulesets/BaseMind.cpp, rulesets/BaseMind.h,
	  rulesets/CalendarProperty.cpp, rulesets/CalendarProperty.h,
	  rulesets/Character.cpp, rulesets/Character.h, rulesets/Combat.cpp,
	  rulesets/Combat.h, rulesets/Container.cpp, rulesets/Container.h,
	  rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
	  rulesets/Entity.h, rulesets/EntityProperties.cpp,
	  rulesets/Entity_getLocation.h, rulesets/Fell.cpp, rulesets/Fell.h,
	  rulesets/Food.cpp, rulesets/Food.h, rulesets/Line.cpp,
	  rulesets/Line.h, rulesets/LineProperty.cpp, rulesets/LineProperty.h,
	  rulesets/MemEntity.cpp, rulesets/MemEntity.h, rulesets/MemMap.cpp,
	  rulesets/MemMap.h, rulesets/MemMap_methods.h,
	  rulesets/MindFactory.cpp, rulesets/MindFactory.h, rulesets/Missile.h,
	  rulesets/Motion.cpp, rulesets/Motion.h, rulesets/Movement.cpp,
	  rulesets/Movement.h, rulesets/Pedestrian.cpp, rulesets/Pedestrian.h,
	  rulesets/Plant.cpp, rulesets/Plant.h, rulesets/Py_BBox.cpp,
	  rulesets/Py_BBox.h, rulesets/Py_EntityWrapper.h,
	  rulesets/Py_Location.cpp, rulesets/Py_Location.h,
	  rulesets/Py_Map.cpp, rulesets/Py_Map.h, rulesets/Py_Mind.cpp,
	  rulesets/Py_Mind.h, rulesets/Py_Object.cpp, rulesets/Py_Object.h,
	  rulesets/Py_Operation.cpp, rulesets/Py_Operation.h,
	  rulesets/Py_Oplist.cpp, rulesets/Py_Oplist.h, rulesets/Py_Optime.cpp,
	  rulesets/Py_Optime.h, rulesets/Py_Point3D.cpp, rulesets/Py_Point3D.h,
	  rulesets/Py_Property.cpp, rulesets/Py_Property.h,
	  rulesets/Py_Quaternion.cpp, rulesets/Py_Quaternion.h,
	  rulesets/Py_RootEntity.cpp, rulesets/Py_RootEntity.h,
	  rulesets/Py_Statistics.cpp, rulesets/Py_Statistics.h,
	  rulesets/Py_Task.cpp, rulesets/Py_Task.h, rulesets/Py_Thing.cpp,
	  rulesets/Py_Thing.h, rulesets/Py_Vector3D.cpp,
	  rulesets/Py_Vector3D.h, rulesets/Py_World.cpp, rulesets/Py_World.h,
	  rulesets/Py_WorldTime.cpp, rulesets/Py_WorldTime.h,
	  rulesets/PythonArithmeticScript.cpp,
	  rulesets/PythonArithmeticScript.h, rulesets/PythonMindScript.cpp,
	  rulesets/PythonMindScript.h, rulesets/PythonScript.cpp,
	  rulesets/PythonScript.h, rulesets/PythonThingScript.cpp,
	  rulesets/PythonThingScript.h, rulesets/PythonWrapper.cpp,
	  rulesets/PythonWrapper.h, rulesets/Python_API.cpp,
	  rulesets/Python_API.h, rulesets/Python_Script_Utils.h,
	  rulesets/Script.cpp, rulesets/Script.h, rulesets/Stackable.cpp,
	  rulesets/Stackable.h, rulesets/Statistics.cpp, rulesets/Statistics.h,
	  rulesets/StatisticsProperty.cpp, rulesets/StatisticsProperty.h,
	  rulesets/Structure.cpp, rulesets/Structure.h, rulesets/Task.cpp,
	  rulesets/Task.h, rulesets/TaskScript.cpp, rulesets/TaskScript.h,
	  rulesets/TerrainProperty.cpp, rulesets/TerrainProperty.h,
	  rulesets/Thing.cpp, rulesets/Thing.h, rulesets/ThingFactory.cpp,
	  rulesets/ThingFactory.h, rulesets/World.cpp, rulesets/World.h,
	  rulesets/attributes.h, server/Account.cpp, server/Account.h,
	  server/Admin.cpp, server/Admin.h, server/ArithmeticFactory.cpp,
	  server/ArithmeticFactory.h, server/CommClient.cpp,
	  server/CommClient.h, server/CommIdleSocket.cpp,
	  server/CommIdleSocket.h, server/CommListener.cpp,
	  server/CommListener.h, server/CommLocalClient.cpp,
	  server/CommLocalClient.h, server/CommMDNSPublisher.cpp,
	  server/CommMDNSPublisher.h, server/CommMaster.cpp,
	  server/CommMaster.h, server/CommMetaClient.cpp,
	  server/CommMetaClient.h, server/CommPSQLSocket.cpp,
	  server/CommPSQLSocket.h, server/CommPeer.cpp,
	  server/CommPeer.h, server/CommPeerListener.cpp,
	  server/CommPeerListener.h, server/CommRemoteClient.cpp,
	  server/CommRemoteClient.h, server/CommServer.cpp,
	  server/CommServer.h, server/CommSlaveClient.cpp,
	  server/CommSlaveClient.h, server/CommSlaveListener.cpp,
	  server/CommSlaveListener.h, server/CommSocket.cpp,
	  server/CommSocket.h, server/CommUnixListener.cpp,
	  server/CommUnixListener.h, server/Connection.cpp,
	  server/Connection.h, server/Connection_methods.h,
	  server/EntityFactory.cpp, server/EntityFactory.h,
	  server/ExternalMind.cpp, server/ExternalMind.h,
	  server/Idle.cpp, server/Idle.h, server/Lobby.cpp, server/Lobby.h,
	  server/Master.cpp, server/Master.h, server/Peer.cpp, server/Peer.h,
	  server/Persistance.cpp, server/Persistance.h,
	  server/PersistantThingFactory.cpp, server/PersistantThingFactory.h,
	  server/PersistantThingFactory_impl.h, server/Persistor.cpp,
	  server/Persistor.h, server/Persistor_impl.h,
	  server/Player.cpp, server/Player.h, server/Restoration.cpp,
	  server/Restoration.h, server/Restorer.cpp, server/Restorer.h,
	  server/Restorer_impl.h, server/ScriptFactory.cpp,
	  server/ScriptFactory.h, server/ServerRouting.cpp,
	  server/ServerRouting.h, server/ServerRouting_methods.h,
	  server/SlaveClientConnection.cpp, server/SlaveClientConnection.h,
	  server/TaskFactory.cpp, server/TaskFactory.h,
	  server/TrustedConnection.cpp, server/TrustedConnection.h,
	  server/WorldRouter.cpp, server/WorldRouter.h,
	  server/server.cpp, server/server.h, server/slave.cpp,
	  tests/Areatest.cpp, tests/BaseEntitytest.cpp,
	  tests/Charactertest.cpp, tests/Containertest.cpp,
	  tests/Creatortest.cpp, tests/EntityExerciser.h,
	  tests/EntityFactorytest.cpp, tests/Entitytest.cpp,
	  tests/Foodtest.cpp, tests/IGEntityExerciser.h,
	  tests/Linetest.cpp, tests/Locationtest.cpp, tests/OOGThingtest.cpp,
	  tests/Planttest.cpp, tests/Propertytest.cpp, tests/Stackabletest.cpp,
	  tests/Structuretest.cpp, tests/Tasktest.cpp, tests/TestWorld.h,
	  tests/Thingtest.cpp, tests/WorldTimetest.cpp, tests/Worldtest.cpp,
	  tests/allOperations.h, tests/collisiontest.cpp, tests/consttest.cpp,
	  tests/distancetest.cpp, tests/emergencetest.cpp,
	  tests/inheritancetest.cpp, tests/logtest.cpp, tests/randomtest.cpp,
	  tests/systemtest.cpp, tests/transformtest.cpp,
	  tests/type_utilstest.cpp, tests/utilitytest.cpp,
	  tools/AdminClient.cpp, tools/AdminClient.h, tools/cyaddrules.cpp,
	  tools/cycmd.cpp, tools/cyconfig.cpp, tools/cyconvertrules.cpp,
	  tools/cyctrl.cpp, tools/cydbload.cpp, tools/cydumprules.cpp,
	  tools/cyisoload.cpp, tools/cyloadrules.cpp, tools/cypasswd.cpp,
	  tools/cywatchdog.cpp: Replace the copyright and license statements
	  with new versions that include disclaimer of warranty, and
	  permit distribution under later versions of the GPL.
2006-01-19 02:17:06 +00:00
Al Riddoch
692aeda5af * client/Py_CreatorClient.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_Point3D.h, rulesets/Py_Quaternion.h,
	  rulesets/Py_RootEntity.h, rulesets/Py_Task.h, rulesets/Py_Thing.h,
	  rulesets/Py_Vector3D.h, rulesets/Py_World.h, rulesets/Py_WorldTime.h:
	  Re-wrote PyFoo_Check macros to comply with recent conventions
	  and be a little more efficient.

	* rulesets/Py_Statistics.cpp, rulesets/PythonArithmeticScript.cpp,
	  rulesets/mason/world/statistics/Statistics.py: Remove lots of
	  debug output.

	* rulesets/PythonArithmeticScript.h: Add an accessor to get to the
	  python object.

	* rulesets/StatisticsProperty.h: Add an accessor to get to the
	  Statistics reference handled by this class.

	* rulesets/Py_Property.cpp: Return the script for a statistics
	  object rather than creating a wrapper for it.
2006-01-14 04:46:17 +00:00
Al Riddoch
c51eb98c01 2006-01-11 Al Riddoch <alriddoch@zepler.org>
* rulesets/PythonArithmeticScript.cpp: Implement getting attribute
	  values from statistics script.

	* rulesets/Statistics.cpp, rulesets/Statistics.h,
	  rulesets/Py_Statistics.cpp, rulesets/Character.cpp,
	  rulesets/Combat.cpp: Remove hard coded stats for combat
	  and strength.

	* rulesets/mason/world/statistics/Statistics.py: Add test support
	  for combat and strength stats.

	* server/PersistantThingFactory.cpp: Remove debug output.
2006-01-11 16:55:55 +00:00
Al Riddoch
a36b7f5db5 2006-01-10 Al Riddoch <alriddoch@zepler.org>
* rulesets/ArithmeticScript.h: Remove redundant constructor.

	* rulesets/ArithmeticScript.cpp: Provide empty virtual destructor
	  implementation.

	* rulesets/Py_Statistics.cpp: Add debugging output, and remove
	  rubbish from __init__.

	* rulesets/PythonArithmeticScript.cpp: Test implementation of
	  attribute.

	* server/ArithmeticFactory.cpp, server/ArithmeticFactory.h: New
	  factory class to create instances of scripts to handle
	  statistics.

	* server/EntityFactory.cpp, server/EntityFactory.h: Add new method
	  and supporting data structures to provide a way to create
	  statistics objects for newly created Character entities.

	* server/PersistantThingFactory.cpp: Add a call to
	  EntityFactory::addStatisticsScript to the Character
	  specialisation of PersistantThingFactory::populate, giving
	  all characters a statistics script now.

	* rulesets/mason/world/statistics/Statistics.py: Test implementation
	  of a class for all character statistics.
2006-01-10 17:51:32 +00:00
Al Riddoch
e6dfe4b54c 2006-01-08 Al Riddoch <alriddoch@zepler.org>
* rulesets/ArithmeticScript.h, rulesets/PythonArithmeticScript.h,
	  rulesets/PythonArithmeticScript.cpp: Stub classes for handling
	  adding a script to handle Statistics.
2006-01-08 05:26:58 +00:00