Commit graph

33 commits

Author SHA1 Message Date
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
8cbe82b65e Move the abstract Task factory into common
This makes it easier to make code re-usable and get rid of cross
dependencies inside server
2011-12-20 15:10:06 +00:00
Alistair Riddoch
b606ccba0e Add matching for property as well as type 2011-12-19 23:26:48 +00:00
Alistair Riddoch
8d5d75dc41 Remove unused include
This was probably included to suppress the delete warning, but as the
base is abstract, only the base is required for a clean call to delete.
2011-12-15 01:06:58 +00:00
Alistair Riddoch
c1d260d141 Check task activation target more cheaply 2011-12-09 15:54:16 +00:00
Alistair Riddoch
4cdf922e14 Move TaskFactory to do type checks on TypeNode directly 2011-12-09 13:07:24 +00:00
Alistair Riddoch
68bd0c6e25 Refactor TaskFactory for more flexible activation matching
We can now match the target based on different critea by configuring the
factory to do different checks
2011-12-06 10:07:25 +00:00
Alistair Riddoch
eb9c58c153 Refactor the task setup interface to use LocatedEntity 2011-12-02 23:42:24 +00:00
Alistair Riddoch
d13e48d49d Task can now be attached to any Entity 2011-12-02 23:10:41 +00:00
Alistair Riddoch
a516f55197 Remove TaskScript subclass
This class really wasn't used. Task had pure virtual methods, and TaskScript
was the only subclass
2011-11-03 22:57:46 +00:00
Alistair Riddoch
700233e1e5 Ensure associated stcript factory gets cleaned up 2011-09-30 22:24:38 +01:00
Alistair Riddoch
5c4d02395e Remove Python code TaskFactory, and use task script factory instead. 2009-08-20 22:58:11 +01:00
Alistair Riddoch
9fad4de0ad Update factory names to use "kit" to mean abstract factory. 2009-08-18 11:03:31 +01:00
Alistair Riddoch
96e3f70a8c Fix a crash which occurs when a task class won't load. 2009-07-03 01:57:58 +01:00
Alistair Riddoch
bb5805d441 Use the new function to import modules. 2009-07-02 18:23:23 +01:00
Alistair Riddoch
289d4026b0 Use Get_PyClass when setting up Task script factories. 2009-07-02 17:29:34 +01:00
Alistair Riddoch
820c9a5930 Modify Task script to work more like entity script and remove case conversion. 2009-07-02 16:57:00 +01:00
Alistair Riddoch
ebd0860d86 Remove the separate pointer for obsolete non-wrapping scripts and change
where references are decremented.
2009-07-01 20:26:17 +01:00
Alistair Riddoch
a71159873a No longer store a separate wrapper script object for scripted entities. 2009-07-01 20:14:45 +01:00
Alistair Riddoch
dfb89354c7 Move the type check to the right place, and make it a real error check. 2009-07-01 03:04:12 +01:00
Alistair Riddoch
dbdec38dfa Move a Py_DECREF call into a more balanced place. 2009-06-30 20:33:48 +01:00
Alistair Riddoch
1286df81a7 Rename PythonThingScript to PythonEntityScript 2009-03-22 15:58:06 +00:00
Al Riddoch
2069f3dd4c 2007-07-29 Al Riddoch <alriddoch@zepler.org>
* common/log.cpp, common/log.h: Switch to taking a C++ string reference
	  rather than a char *, as it is not really an optimisation, and it
	  makes the code simpler to read and write.

	* client/BaseClient.cpp, client/ClientConnection.cpp,
	  common/AtlasFileLoader.cpp, common/BaseEntity.cpp,
	  common/Database.cpp, common/globals.cpp, common/id.cpp,
	  common/inheritance.cpp, common/log.cpp, common/log.h,
	  rulesets/Character.cpp, rulesets/Creator.cpp, rulesets/Entity.cpp,
	  rulesets/MemMap.cpp, rulesets/Motion.cpp, rulesets/Pedestrian.cpp,
	  rulesets/Py_Object.cpp, rulesets/Py_RootEntity.cpp,
	  rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
	  rulesets/Python_API.cpp, rulesets/Thing.cpp, server/Account.cpp,
	  server/Admin.cpp, server/ArithmeticFactory.cpp,
	  server/CommClient.cpp, server/CommListener.cpp,
	  server/CommMDNSPublisher.cpp, server/CommServer.cpp,
	  server/Connection.cpp, server/EntityFactory.cpp,
	  server/Persistance.cpp, server/Restoration.cpp,
	  server/ScriptFactory.cpp, server/TaskFactory.cpp,
	  server/WorldRouter.cpp, server/server.cpp: Convert over to using
	  new API correctly.

	* data/mason.xml: Add biomass and transient to fircone, making its
	  script obsolete:
2007-07-29 03:33:33 +00:00
Al Riddoch
65bd6125d5 2006-12-24 Al Riddoch <alriddoch@zepler.org>
* index.dox, common/BaseWorld.cpp, common/BaseWorld.h,
	  common/PropertyFactory.h, common/PropertyManager.h, common/const.h,
	  rulesets/ActivePropertyFactory.h, rulesets/Entity.h,
	  rulesets/Py_Vector3D.h, rulesets/Py_World.h, rulesets/Py_WorldTime.h,
	  rulesets/PythonMindScript.cpp, rulesets/PythonMindScript.h,
	  rulesets/PythonScript.h,
	  rulesets/PythonThingScript.h, rulesets/PythonWrapper.cpp,
	  rulesets/PythonWrapper.h, rulesets/Script.cpp, rulesets/Script.h,
	  server/ArithmeticFactory.h, server/CommServer.h, server/CommSocket.h,
	  server/ScriptFactory.cpp, server/TaskFactory.cpp,
	  server/TaskFactory.h, server/WorldRouter.cpp, tools/AdminClient.h,
	  tools/cyaddrules.cpp, tools/cycmd.cpp, tools/cyconfig.cpp,
	  tools/cydumprules.cpp, tools/cyloadrules.cpp:
	  Add a truck load of inline docs.

	* tools/cywatchdog.cpp: Mark obsolete file as removed from the build.

	* tools/cyloadrules.cpp, tools/cyconfig.cpp, tools/cyaddrules.cpp:
	  Rename some overly generic types so they have more indicative
	  and unique names.

	* FIXME, server/ScriptFactory.cpp, server/TaskFactory.h: Add a couple
	  of formal FIXMEs to sort out the code for loading modules and
	  classes.

	* rulesets/PythonThingScript.h: Remove some commented out code.
2006-12-24 14:42:05 +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
cda06e34bf 2006-04-29 Al Riddoch <alriddoch@zepler.org>
* rulesets/Task.cpp, rulesets/Task.h: Add two members to task,
	  progress and rate which handle the progress towards completion,
	  and the rate at which it is changing. Add a member function which
	  adds an atlas representation of the task as an attribute to an
	  Atlas entity.

	* rulesets/Py_Task.cpp: Expose progress and rate attributes allowing
	  them to be set.

	* server/TaskFactory.cpp: Set the name of a task when it is created
	  by its factory.

	* rulesets/mason/world/tasks/Logging.py: Set the progress and rate
	  of the logging task as it progresses.

	* rulesets/Character.h, rulesets/Character.cpp: Add updateTask()
	  method to be called when task ticks. Make initTask, updateTask
	  and clearTask emit Set operations which set the TASK attribute
	  on the character to reflect the current status of the task.
2006-04-29 20:41:50 +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
d3f2f1a351 2005-12-30 Al Riddoch <alriddoch@zepler.org>
* rulesets/Character.cpp, rulesets/StatisticsProperty.h,
	  rulesets/StatisticsProperty.cpp: Add a property handler for
	  statistics.

	* rulesets/Character.cpp: When setting task, check if an existing
	  task needs to be cleared first. When clearing a task, check
	  whether a task exists or not.

	* rulesets/Character.cpp: When initiating combat task from task
	  factory, check to see if the task is successfully created before
	  using it.

	* rulesets/Py_Property.cpp, rulesets/Py_Property.h: New python wrapper
	  class for entity properties.

	* rulesets/Py_Mind.cpp: Re-work getattr logic to make it clearer.

	* rulesets/Py_Object.cpp: Return Py_None when an Atlas Element cannot
	  be converted to python. This ensures that this function never returns
	  null.

	* rulesets/Py_Statistics.cpp: Add temporary handlers for hardcoded
	  statistics for "attack", "defence", and "strength".

	* rulesets/Py_Task.cpp: Add wrappers for methods Task.irrelevant and
	  Task.obsolete, as these are now required in combat scripts.

	* rulesets/Py_Task.h: Fix the PyTask_Check macro, which was miscoded.

	* rulesets/Py_Thing.cpp: Add wrapper for Entity.send_world so that
	  scripts can channel ops through entities.

	* rulesets/Py_Thing.h, rulesets/Py_Thing.cpp: Add an addition structure
	  for directlty wrapping Character in a type safe way. Add method
	  structure pointer to Entity and Character wrappers so that
	  the same getattr method is used for both. Add new method table for
	  Character including wrappers for set_task and clear_task, allowing
	  task scripts to add themselves and remove themselves from
	  characters. Modify wrapEntity() to ensure that Character entities
	  get the right wrapper.

	* rulesets/Py_Thing.cpp: Re-work getattr code so that properties and
	  soft attributes are checked individually, rather than in a single
	  call to Entity.get. Use new python property wrappers to wrap
	  properties explicitly if required rather than converting to Atlas
	  then to generic Python data.

	* rulesets/TerrainProperty.h: Fix incorrect class description in
	  documentation.

	* rulesets/mason/world/tasks/Combat.py: Complete implementation of
	  simple example combat.

	* server/TaskFactory.cpp: Remove debug output.
2005-12-30 18:02:40 +00:00
Al Riddoch
1ed6e05234 2005-12-11 Al Riddoch <alriddoch@zepler.org>
* rulesets/PythonThingScript.h, rulesets/PythonThingScript.cpp:
	  Store a pointer to the core object's python wrapper, and modify
	  constructor to initialise it.

	* rulesets/Python_API.cpp, server/ScriptFactory.cpp,
	  server/TaskFactory.cpp: Modify variable name to make it clearer
	  what the wrapper object is. Pass wrapper to script management
	  object constructor, so it can store the pointer.

	* rulesets/PythonMindScript.h: Make constructor explicit for
	  safety.
2005-12-11 03:28:18 +00:00
Al Riddoch
815fd28c78 2005-12-08 Al Riddoch <alriddoch@zepler.org>
* rulesets/TaskScript.cpp, server/TaskFactory.cpp: Add some assert
	  checks.

	* server/EntityFactory.cpp: Remove some debug output.

	* rulesets/mason/world/tasks/Combat.py: Add a simple example
	  of the interface required in a task script.
2005-12-08 03:37:59 +00:00
Al Riddoch
d0713d4183 2005-12-08 Al Riddoch <alriddoch@zepler.org>
* server/TaskFactory.h, server/TaskFactory.cpp,
	  server/EntityFactory.h, server/EntityFactory.cpp,
	  rulesets/TaskScript.h, rulesets/TaskScript.cpp:
	  Implement task script interface.
2005-12-08 03:04:04 +00:00
Al Riddoch
563b6c4714 2005-12-05 Al Riddoch <alriddoch@zepler.org>
* server/TaskFactory.cpp, server/TaskFactory.h: Re-write the
	  script task to handle creating the script directly, rather than
	  use ScriptFactory which is not suitable.

	* rulesets/PythonMindScript.cpp, rulesets/PythonScript.cpp,
	  rulesets/PythonScript.h, PythonThingScript.cpp,
	  rulesets/PythonThingScript.h, rulesets/Python_API.cpp,
	  server/ScriptFactory.cpp: Remove obsolete pointer to entity
	  from script class, removing its link to Entity, making it more
	  generally useful.
2005-12-05 23:47:17 +00:00
Al Riddoch
bd153b9f87 2005-12-05 Al Riddoch <alriddoch@zepler.org>
* server/EntityFactory.h, server/EntityFactory.cpp: Add a handler for
	  objects in rules files.

	* rulesets/TaskScript.h, rulesets/TaskScript.cpp: Task class which
	  delegates functionality to a script object. Basically just a
	  stub at this point.

	* server/TaskFactory.h server/TaskFactory.cpp: Factory class for
	  creating instances of Task classes.
2005-12-05 21:23:50 +00:00