Commit graph

41 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
e15970c11a Prevent copying of movement objects 2013-01-22 17:52:28 +00:00
Alistair Riddoch
4a9c7078f7 Refactor to use LocatedEntity as base class
All IG code should use the interface of LocatedEntity when dealing
with any entity, rather than sometimes requiring Entity. Add virtual
functions to the interface where required, and modify all other interfaces
to stop them using Entity. This makes the code way cleaner, and much better
de-coupled.
2013-01-17 10:17:07 +00:00
Alistair Riddoch
0907822401 Remove obsolete includes. 2009-08-22 03:46:48 +01:00
Al Riddoch
522f3828ef 2009-02-10 Al Riddoch <alriddoch@googlemail.com>
* rulesets/Movement.h: Remove commented out obsolete code. Add
	  documentation comments.
2009-02-10 17:23:28 +00:00
Al Riddoch
3f96b21a6a 2009-01-11 Al Riddoch <alriddoch@googlemail.com>
* physics/Vector3D.h, physics/Vector3D.cpp: Move a bunch of inline
	  functions in the header to be non-inline in the body. Use
	  the forward declaraions in wfmath/const.h instead of having to
	  include the full headers.

	* rulesets/Motion.cpp, rulesets/Motion.h, rulesets/Movement.h,
	  rulesets/Py_Point3D.h, rulesets/Py_Vector3D.h: Include wfmath
	  headers as required.
2009-01-11 17:43:10 +00:00
Al Riddoch
e418f9a1ef 2008-01-13 Al Riddoch <alriddoch@googlemail.com>
* client/BaseClient.cpp, client/ClientConnection.cpp,
	  common/BaseWorld.h, common/OperationRouter.h, common/TypeNode.h,
	  common/inheritance.cpp, common/inheritance.h, common/types.h,
	  rulesets/ActivePropertyFactory.h, rulesets/AtlasProperties.h,
	  rulesets/EntityPropertyFactory.h, rulesets/LocatedEntity.h,
	  rulesets/MemMap.h, rulesets/Motion.h, rulesets/Movement.h,
	  rulesets/Pedestrian.h, rulesets/PythonThingScript.cpp,
	  rulesets/Statistics.h, rulesets/Task.h, server/Account.h,
	  server/Connection.h, server/Player.h, server/ServerRouting.h,
	  server/WorldRouter.h, tests/OperationExerciser.h, tools/cycmd.cpp:
	  A major clean up and re-work in internal headers.
2008-01-13 01:32:54 +00:00
Al Riddoch
74a717a4cb 2007-09-22 Al Riddoch <alriddoch@zepler.org>
* rulesets/Movement.h, rulesets/Pedestrian.cpp, rulesets/Pedestrian.h:
	  Change the movement API so update Location is const when passed to
	  generateMove.
2007-09-22 15:40:17 +00:00
Al Riddoch
813de7bcca 2007-09-22 Al Riddoch <alriddoch@zepler.org>
* common/PropertyManager.h, rulesets/Movement.h,
	  rulesets/Pedestrian.cpp, server/EntityFactory.h, server/Peer.cpp,
	  server/Peer.h, server/PersistantThingFactory.h, server/Player.cpp:
	  Fill out some more doc comments, and add some more FIXME notes.
2007-09-22 15:34:04 +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
e757778db6 2006-06-05 Al Riddoch <alriddoch@zepler.org>
* rulesets/Movement.h: Add method to check if a target position has
	  been specified.

	* rulesets/Character.cpp: Don't return a tick for movement if no
	  target is specified, as the old movement object has no further
	  role to play.
2006-06-05 13:10:08 +00:00
Al Riddoch
d23440ec4d 2006-06-03 Al Riddoch <alriddoch@zepler.org>
* rulesets/Movement.h, rulesets/Movement.cpp, rulesets/Pedestrian.cpp:
	  Remove old obsolete collision code.
2006-06-03 11:09:04 +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
3bf65be8da 2005-12-15 Al Riddoch <alriddoch@zepler.org>
* rulesets/Movement.h, rulesets/Movement.cpp,
	  rulesets/Pedestrian.h, rulesets/Pedestrian.cpp: When processing
	  a move operation, if its going to cause an immediate collision,
	  set the velocity to 0.
2005-12-15 16:48:31 +00:00
Al Riddoch
9af6ffd37c 2005-12-15 Al Riddoch <alriddoch@zepler.org>
* configure.ac: Increment version.

	* rulesets/Movement.h, rulesets/Movement.cpp: Add a flag to indicate
	  if movement has been diverted by a collision.

	* rulesets/Pedestrian.cpp: Use flag to ensure that entities moving
	  towards a target position that are diverted by a collision
	  don't just snap to their original destination. When collision errors
	  are detected, don't mess the entities position up by changing it.

	* tests/Makefile.am: Fix broken tests.
2005-12-15 15:15:19 +00:00
Al Riddoch
10320989c5 2005-10-21 Al Riddoch <alriddoch@zepler.org>
* rulesets/Pedestrian.cpp, rulesets/Movement.h, rulesets/Movement.cpp:
	  Store the time of the last collision, and if the next one occurs
	  almost immediatly, stop the movement. This eliminates the judder
	  which used to occur in some nasty collision scenarios.
2005-10-21 12:04:28 +00:00
Al Riddoch
4a344efba4 2005-10-19 Al Riddoch <alriddoch@zepler.org>
* rulesets/Task.h: Make irrelevant() virtual so that each task
	  class is responsible for doing most of its cleanup.

	* rulesets/Movement.h: Make updateNeeded() public so other code
	  can determine if a character is moving.

	* rulesets/Character.h, rulesets/Character.cpp: Add a stamina property.
	  Add clearTask() used to clear the current running task. Check
	  if tasks are irrelevant immediatly after setup, or after each
	  tick, and remove if they are.

	* rulesets/Combat.h: Add irrelevant() implementation, and a static
	  variable defining stamina level below which combat cannot occur.

	* rulesets/Combat.cpp: Switch to stamina as the base stat for
	  combat. Implement checking stamina at setup to ensure
	  both combatants are fit to fight, and each tick to determine if
	  someone has lost.
2005-10-19 16:41:27 +00:00
Al Riddoch
fdd316b628 2005-08-27 Al Riddoch <alriddoch@zepler.org>
* Port whole code base to Atlas-C++ 0.6 series. Main server binary
	  now links.
2005-08-27 14:52:12 +00:00
Al Riddoch
7a4c1a67ed 2005-06-08 Al Riddoch <alriddoch@zepler.org>
* rulesets/Movement.cpp, rulesets/Movement.h,
	  rulesets/Pedestrian.cpp, rulesets/Pedestrian.h,
	  rulesets/Character.cpp: Remove the obsoleted movement code.
	  Eliminate friend relationship with Character, adding necessary
	  accessors. Remove unused member variables.
2005-06-08 17:37:55 +00:00
Al Riddoch
71e477ae4f 2005-06-08 Al Riddoch <alriddoch@zepler.org>
* rulesets/Movement.h, rulesets/Pedestrian.h, rulesets/Movement.cpp,
	  rulesets/Pedestrian.cpp: Get rid of m_collAxis as it was unused.
	  Add velocity to the interface of getTickAddition to avoid using
	  the redundant m_velocity member of Movement. Fix calculation
	  of velocity magnitude in new movement code. Correctly set
	  velocity to zero when movement reaches its target.

	* rulesets/Character.cpp: Add alternative movement processing
	  code based on the new mathods in Pedestrian.
2005-06-08 01:05:01 +00:00
Al Riddoch
33c9bff356 2005-06-07 Al Riddoch <alriddoch@zepler.org>
* rulesets/Movement.h, rulesets/Pedestrian.h, rulesets/Pedestrian.cpp:
	  Add a return value to getUpdatedLocation to indicate whether an
	  update was necessary or not.

	* rulesets/Character.cpp: Add some notes on how this code could be
	  adapted to Use the new Movement code.
2005-06-07 23:16:42 +00:00
Al Riddoch
2c4ce7f339 2005-06-06 Al Riddoch <alriddoch@zepler.org>
* rulesets/Movement.h, rulesets/Pedestrian.h, rulesets/Pedestrian.cpp:
	  Add a new method to the movement interface which determines the
	  updated location of an entity when movement needs to be handled.
2005-06-07 00:30:47 +00:00
Al Riddoch
4ccd2b8bd1 2005-06-06 Al Riddoch <alriddoch@zepler.org>
* rulesets/Character.cpp, rulesets/Movement.cpp, rulesets/Movement.h,
	  rulesets/Pedestrian.cpp: Rename some variables to make the code
	  more comprehensible.
2005-06-06 21:53:57 +00:00
Al Riddoch
85932901ea 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
Al Riddoch
8a11b05290 2004-10-03 Al Riddoch <alriddoch@zepler.org>
* modules/Location.cpp, physics/Collision.cpp, rulesets/Character.cpp,
	  rulesets/Entity.cpp, rulesets/Movement.cpp, rulesets/Movement.h,
	  rulesets/Pedestrian.cpp: Make sure orientation is not used if it
	  is not valid.
2004-10-03 03:32:16 +00:00
Al Riddoch
68ab5f7fc8 2004-09-20 Al Riddoch <alriddoch@zepler.org>
* physics/Vector3D.h, physics/Vector3D.cpp, modules/Location.h,
	  modules/Location.cpp: Convert to using WFMath::Point instead of
	  WFMath::Vector for position.

	* physics/Collision.h, physics/Collision.cpp: Update collision code
	  to use new pos type.

	* rulesets/Py_Point3D.h, rulesets/Py_Point3D.cpp: New python
	  wrappers for WFMath::Point.

	* rulesets/Py_Location.cpp, rulesets/Py_Vector3D.cpp,
	  rulesets/Python_API.cpp:
	  Update python wrappers to take into account new pos type.
	  Ensure that only apropriate functionality is available for
	  point and vector.

	* rulesets/Character.cpp, rulesets/Entity.cpp, rulesets/Entity.h,
	  rulesets/Line.cpp, rulesets/Movement.cpp, rulesets/Movement.h,
	  rulesets/Pedestrian.cpp, rulesets/Pedestrian.h,
	  rulesets/Plant.cpp, rulesets/Thing.cpp, rulesets/World.cpp,
	  server/EntityFactory.cpp, server/WorldRouter.cpp,
	  server/WorldRouter.h: Update the rest of the code for new pos
	  type, converting all places where entity parenting is changed
	  to use WFMath toParentCoords() and toLocalCoords() methods,
	  so that orientation is handled correctly.

	* tests/transformtest.cpp: New test to ensure that toParentCoords()
	  and toLocalCoords() perform as expected.

	* tests/Creatortest.cpp, tests/Locationtest.cpp, tests/Worldtest.cpp,
	  tests/collisiontest.cpp, tests/emergencetest.cpp:
	  Update the rest of the tests.
2004-09-20 10:16:04 +00:00
Al Riddoch
53a19dcef4 2003-10-23 Al Riddoch <alriddoch@zepler.org>
* rulesets/Movement.h, rulesets/Pedestrian.h: Update movement
	  interface to reflect the different jobs done by genMoveOperation().

	* rulesets/Movement.cpp: Fix badly named argument.

	* rulesets/Pedestrian.cpp: Shift code around a little to ensure
	  it is clear that genMoveUpdate() only produces an op if one
	  is necessary, but genMoveOperation() should always return
	  one.

	* rulesets/Character.cpp: Get rid of confusing logic now
	  That we know genMoveOperation() never returns NULL.
2003-10-23 19:18:04 +00:00
Al Riddoch
8c9cb0362e 2003-10-20 Al Riddoch <alriddoch@zepler.org>
* physics/Collision.cpp: Modify collision behavoir so we only
	  detect collisions in the future, while still detecting
	  collisions that are in progress. Add debugging and some
	  FIXMEs.

	* rulesets/Movement.h, rulesets/Movement.cpp,
	  rulesets/Pedestrian.cpp: Switch to using new collision
	  code.
2003-10-20 18:06:56 +00:00
Al Riddoch
fcce13b976 2003-05-09 Al Riddoch <alriddoch@zepler.org>
* rulesets/Movement.cpp, rulesets/Movement.h,
	  rulesets/Pedestrian.cpp, rulesets/Pedestrian.h: Make movement
	  classes a little more generic by removing references
	  to character.
2003-05-09 17:09:42 +00:00
Al Riddoch
693a2109a5 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
Al Riddoch
00199f8aa6 2002-07-27 Al Riddoch <alriddoch@zepler.org>
* tools/cyloadrules.cpp, server/server.cpp,
	  aiclient/ClientConnection.cpp, client/ClientConnection.cpp,
	  common/inheritance.h: Use const iterators and references
	  whenever possible.

	* client/CommClient.cpp, client/CreatorClient.cpp,
	  client/ObserverClient.cpp, client/Py_CreatorClient.cpp,
	  common/BaseEntity.cpp, common/BaseEntity.h,
	  common/types.h, rulesets/Area.cpp, rulesets/BaseMind.cpp,
	  rulesets/Character.cpp, rulesets/Entity.cpp,
	  rulesets/Food.cpp, rulesets/Line.cpp,
	  rulesets/MemMap.cpp, rulesets/Pedestrian.cpp,
	  rulesets/Plant.cpp, rulesets/Py_Mind.cpp,
	  rulesets/Py_Object.cpp, rulesets/Py_Thing.cpp,
	  rulesets/Python_API.cpp, rulesets/Stackable.cpp,
	  rulesets/Thing.cpp, rulesets/World.cpp,
	  server/Account.cpp, server/Admin.cpp, server/CommClient.cpp,
	  server/CommServer.cpp, server/Connection.cpp,
	  server/EntityFactory.cpp, server/Lobby.cpp,
	  server/Persistance.cpp, server/Player.cpp,
	  server/ServerRouting.cpp, server/WorldRouter.cpp:
	  Switch to using Fragment as name for Atlas::Message::Object,
	  to avoid name clashes on Object.

	* common/BaseEntity.h: Make BaseEntity inherit from SigC::Object,
	  so signals and callbacks can be used, and add destroyed
	  signal.

	* common/accountbase.h, physics/BBox.h, physics/Quaternion.h,
	  physics/Vector3D.h, rulesets/MemMap_methods.h,
	  rulesets/Movement.cpp, rulesets/Plant.h,
	  rulesets/Py_Operation.cpp, rulesets/PythonMindScript.cpp,
	  rulesets/PythonThingScript.cpp, rulesets/Script.cpp,
	  common/inheritance.cpp: Cleaned up Atlas::Message::Object
	  use, and excessive use of "using ...".

	* rulesets/Movement.h, rulesets/Pedestrian.h:
	  Use forward declarations rather than including Move.h

	* server/Account.cpp, server/Account.h, server/Connection.cpp,
	  server/Connection.h: Use destroyed signal to ensure references
	  to in game entities are removed when those entities are
	  destroyed. Ensure Connection is only destroyed once.
2002-07-28 13:34:58 +00:00
Al Riddoch
07a7543461 2002-07-14 Al Riddoch <alriddoch@zepler.org>
* ALL: Cleaned up headers into correct order.

	* common/log.h, common/log.cpp: Write some logging code which
	  handles message of different types using syslog or standard
	  error, depending on whether we are running as a daemon.

	* ALL: Switched to using log() for all output.
2002-07-14 21:04:50 +00:00
Al Riddoch
ead5e8d94c 2002-05-11 Al Riddoch <alriddoch@zepler.org>
* rulesets/Character.cpp, rulesets/Movement.cpp, rulesets/Movement.h:
	  Tweaked movement code to cut down on redundant ticks when movement
	  has reached destination. Fixed bug where character jumped if it
	  walked into a building.

	* rulesets/Pedestrian.cpp: Modified collision resolution so that
	  movement does not slow down if it is deflected.
2002-05-11 15:36:46 +00:00
Al Riddoch
ebf8fac14c 2002-05-10 Al Riddoch <alriddoch@zepler.org>
* physics/Quaternion.h: Added required comparison operators, and
	  get rid of operator bool, to ensure that no implicit conversion
	  happens where it shouldn't. Add operator required for debugging
	  Quaternion.

	* modules/Location.cpp: Use new isValid() method instead of
	  relying on operator bool.

	* rulesets/Movement.h, rulesets/Pedestrian.cpp, rulesets/Pedestrian.h:
	  Fix up interface for genFaceOperation() so it works the right
	  way round, and orientation is not actually set until the Move
	  op is genuinly dispatched.

	* rulesets/Character.cpp: Add clearer debugging output.
	  Fix up handling orientation in move ops from mind, and generate
	  the move ops for simple change in orientation correctly.
2002-05-10 18:52:08 +00:00
Al Riddoch
30bd136e35 * common/database.h: Add function to query database path for
error reporting.

	* server/server.cpp: Added check to database initialisation so
	  that an error opening the databases is reported with explanation,
	  or logged as apropriate, and startup is aborted.

	* phyics/Quaternion.h: Added quaternion class for represening rotation.

	* modules/Location.cpp, modules/Location.h: Removed face attribute and
	  replaced with orientation which is a quaternion.

	* rulesets/Character.cpp: Modified code which handles the direction
	  of movement, and how this affects the character rotation so it
	  now uses orientation.

	* rulesets/Entity.cpp: Switch attribute checks from face to
	  orientation.

	* rulesets/Movement.h, rulesets/Pedestrian.cpp: Modify movement
	  code so that orientation used instead of face.

	* rulesets/Py_Location.cpp: Removed support for obsolete and
	  unused rotation attriute from python code.

	* rulesets/Thing.cpp: Modified attriute handling to use orientation
	  instead of face.

Al Riddoch  <alriddoch@zepler.org>
2001-12-14 16:40:38 +00:00
Al Riddoch
0246eb22c3 * server/WorldRouter.h, server/Connection.h, rulesets/Pedestrian.h,
rulesets/Movement.h, rulesets/MemMap.h, physics/Vector3D.h,
	  modules/WorldTime.h, modules/Location.h, modules/DateTime.h,
	  common/Generic.h, common/BaseWorld.h: Ensure that single argument
	  constructors are explicit, so we don't get any naughty implicit
	  type conversion going on.

	* server/CommClient.h: Added an operation dump feature for debugging.

Al Riddoch  <alriddoch@zepler.org>
2001-10-28 20:21:28 +00:00
Al Riddoch
3969bffbfe * common/inheritance.cpp, common/inheritance.h: Added code to store
atlas object inheritance tree.

	* server/Connection.cpp: Added code to allow client to query
	  atlas object inheritance using get ops.

	* example/client/InheritanceClient.*: Added example client which
	  queries the inheritance tree of the server.

	* rulesets/MemMap.h, rulesets/Py_Map.cpp: Made hooks lists private,
	  and added methods to access them.

	* server/Account.cpp, server/Lobby.h: Added correct handling of OOG
	  look ops when looking at own characters, other accounts, or the
	  lobby.

	* server/ServerRouting.h: Added function to generate serial numbers
	  for operations.

	* server/WorldRouter.cpp: Assign genuine serial number to all
	  in game operations as they are pulled off the queue.

	* Cleaned up header file multiple inclusion checks for uniqueness,
	  and made sure of ISO compliant use of std::string.

Al Riddoch  <alriddoch@zepler.org>
2001-08-02 14:27:06 +00:00
Al Riddoch
8bea85cdfc * Fixed up build files to install in a conformant way.
* acorn.vconf: Added in new building classes which set up
	  wall objects for collision purposes. Building now seem to
	  work.

	* common/database.cpp, common/database.h, common/globals.cpp,
	  common/globals.h, rulesets/Python_API.cpp, server/server.cpp,
	  watchdog/control.c, watchdog/watchdog.c: Implemented
	  correct way of getting installation directories from
	  autoconf.

	* rulesets/Movement.h, rulesets/Movement.cpp, rulesets/Pedestrian.h,
	  rulesets/Pedestrian.cpp: Fixed collisions with the solid
	  wall of a structure.

	* rulesets/Thing.cpp: Modified setup operation so that a sight
	  of create operation is always generated even if setup is
	  overloaded.

	* Many fixes from Anders Petersson to get the build working under
	  debian.

Al Riddoch  <alriddoch@zepler.org>
2001-06-16 14:19:00 +00:00
Al Riddoch
0572ab631b * Renamed Operataion method names throughout so they no longer
all have the name Operation but are now called MoveOperation,
	  according to the type of operation they handle.

	* modules/DateTime.cpp, modules/DataTime.h: Filled in functionality,
	  allowing initialisation and updating from a time values in seconds.

	* modules/Location.h: Modified collision detection code so no
	  checking is done between two moving objects.

	* rulesets/BaseMind.h, rulesets/BaseMind.cpp, rulesets/Entity.h,
	  rulesets/Entity.cpp: Removed virtual getMap() method and replaced
	  with a fixed method in BaseMind only. Added time member veriable
	  to BaseMind so each mind keeps track of time by itself.

	* rulesets/Python_API.h, rulesets/Py_Mind.cpp, rulesets/Py_Mind.h:
	  Added specific python interface for mind objects, because if
	  increasing differences in the way this must be handled.

	* rulesets/Character.h, rulesets/Character.cpp: Added isAlive flag
	  which is cleared if the character is dead. If this flag is cleared,
	  operations are no longer sent to the mind.

	* rulesets/Movement.h, rulesets/Movement.cpp, rulesets/Pedestrian.h,
	  rulesets/Pedestrian.cpp: Cleaned up the code, made members more
	  distinctive, and make interface more general.

	* rulesets/Py_Thing.cpp: Removed features used to support mind.

	* rulesets/Py_WorldTime.cpp: Added support for comparison of
	  time with strings, to establish whether it matches descriptions
	  of time.

	* rulesets/Python_API.cpp: Modified creating of scripts so mind
	  scripts use a slightly different interface from entity scripts,
	  to support the fact that a mind handles its own timekeeping,
	  has a memory map, and has no access to the world.

	* server/WorldTime.cpp, server/WorldTime.h: Brought WorldTime into
	  the build. Used to track details of the time. Added support for
	  checking time descriptions such as "midday", "summer" against
	  DateTime.

Al Riddoch  <alriddoch@zepler.org>
2001-05-28 14:58:24 +00:00
Al Riddoch
2ccfaadef3 2001-04-14 Al Riddoch <alriddoch@zepler.org>
* Substantial re-work of object model. Moved many attributes out
	  of BaseEntity class. Changed WoldRouter so it now handles
	  objects in terms of Entity, rather than BaseEntity.

	* Code cleanups, including removing reduntant includes, and
	  getting rid of C style comments.

	* Fixed the way attributes are handled in Set operations and
	  when merging from an Atlas::Message::Object. This fixed
	  problem with setting gender of characters.

	* rulesets/Pedestrian.*, rulesets/Movement.*: Re-named
	  Movement variables to make them clearer. Added in
	  separate handling for collisions from moving to
	  target position. Modified collision handling so
	  objects can slide next to each other.

	* rulesets/Thing.cpp, rulesets/Character.cpp: Cleaned up and
	  rationalised movement code. Much shorter, faster and
	  more compact than before.

	* Made better use of iterators throughout, eliminating unnecessary
	  lookups, and copying of data.

	* Moved all virtual functions out of header files, making
	  less work for the linker.

	* Made more use of const references to avoid the need to copy
	  data before being able to inspect it.

Al Riddoch <alriddoch@zepler.org>
2001-04-16 16:26:44 +00:00
Al Riddoch
41a395efeb Added missing files 2001-04-12 11:00:10 +00:00