Commit graph

161 commits

Author SHA1 Message Date
Al Riddoch
6c46fee3a1 2004-04-23 Al Riddoch <alriddoch@zepler.org>
* tools/cycmd.cpp: Add new command to enable and disable server
	  monitoring.

	* server/WorldRouter.cpp, common/BaseWorld.h: Add facility to
	  notify using a SigC signal each type an op is dispatched.

	* server/CommClient.h, server/CommClient.cpp: Fix typo in
	  overridden method which meant it didn't work.

	* server/Admin.h, server/Admin.cpp: Add handler for Monitor operation
	  which turns on and off sending all IG ops to the admin client.

	* rulesets/Python_API.cpp, common/types.h, common/Generic.h,
	  common/BaseEntity.h: Fix Generic op so it can be used, and
	  clean up its use. Add an enumeration for monitor ops.
2004-04-23 17:50:38 +00:00
Al Riddoch
5739384978 2004-03-02 Al Riddoch <alriddoch@zepler.org>
* modules/WorldTime.cpp: Remove an old #warning.

	* server/Admin.cpp: Comment out a currently unused
	  variable.
2004-03-02 13:33:29 +00:00
Al Riddoch
9a7a07007f 2004-01-22 Al Riddoch <alriddoch@zepler.org>
* common/custom.cpp, common/inheritance.cpp, common/operations.cpp,
2004-01-22 03:03:07 +00:00
Al Riddoch
362d2525f1 2004-01-12 Al Riddoch <alriddoch@zepler.org>
* server/Connection.cpp, server/Admin.cpp: Improve some important
	  error messages to include more context.

	* rulesets/World.cpp: Tweak default landscape so it has some
	  water for testing boats.

	* Add boat type to ruleset, and an instance to the define_world
	  script.
2004-01-12 17:45:14 +00:00
Al Riddoch
0fbfc771ad 2003-08-07 Al Riddoch <alriddoch@zepler.org>
* server/Lobby.cpp: Add some debugging messages.

	* server/CommServer.cpp: Tweak select loop so that closed connections
	  are cleaned up as soon as they are detected.

	* rulesets/World.cpp: Make demo terrain a bit more mountainous.

	* Convert entire codebase over to using Atlas-C++ 0.4.90, as
	  start of transition to 0.6 API.
2003-08-07 23:03:26 +00:00
Al Riddoch
88bb8c6a42 2003-05-04 Al Riddoch <alriddoch@zepler.org>
* Clean up member variable names.
2003-05-04 18:31:38 +00:00
Al Riddoch
34ee42318d 2003-04-22 Al Riddoch <alriddoch@zepler.org>
* rulesets/Thing.cpp, server/Account.cpp, server/Admin.cpp,
	  server/Connection.cpp, server/Lobby.cpp: Make setting
	  op args more efficient.
2003-04-22 22:19:25 +00:00
Al Riddoch
b24ad0c18a 2003-03-22 Al Riddoch <alriddoch@zepler.org>
* 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 Element as name for Atlas::Message::Object,
	  to avoid name clashes on Object, and bring into line with
	  the way Atlas-C++ will be.
2003-03-23 00:55:09 +00:00
Al Riddoch
26633cf574 2003-03-21 Al Riddoch <alriddoch@zepler.org>
* client/Py_CreatorClient.cpp, common/BaseEntity.cpp,
	  common/BaseEntity.h, rulesets/MemMap.cpp, rulesets/Py_Mind.cpp,
	  rulesets/Py_Thing.cpp, rulesets/Thing.cpp, rulesets/Thing.h,
	  server/Account.cpp, server/Admin.cpp, server/Connection.cpp,
	  server/Lobby.cpp, server/ServerRouting.cpp:
	  Use a more efficient technique to set the attributes on
	  operation arguments without a copy.

	* common/BaseEntity.cpp, rulesets/Entity.cpp, rulesets/Thing.h,
	  rulesets/World.cpp, server/WorldRouter.cpp:
	  Move handling IG Look ops into the IG code in rulesets.
2003-03-21 00:04:53 +00:00
Al Riddoch
4f3148695d 2003-03-16 Al Riddoch <alriddoch@zepler.org>
* common/globals.cpp, common/globals.h: Add global variable for
	  the local state directory.

	* server/Account.cpp, server/Admin.cpp, server/Admin.h,
	  server/Player.cpp: Tighten up some operation checking and add Create
	  handler to Admin in preparation for handling creation of new OOG
	  things.

	* server/CommLocalClient.cpp, server/CommLocalClient.h,
	  server/CommRemoteClient.cpp, server/CommRemoteClient.h,
	  server/CommUnixListener.cpp, server/CommUnixListener.h,
	  server/CommClient.cpp, server/CommClient.h,
	  server/CommListener.cpp, server/Connection.cpp,
	  server/Connection.h, server/server.cpp:
	  Create new listener and connection classes using unix sockets
	  to allow local trusted connections.

	* client/ClientConnection.cpp, client/ClientConnection.h,
	  client/CommClient.h, client/CreatorClient.cpp,
	  client/ObserverClient.cpp: Add capability to connect over
	  unix socket.
2003-03-16 21:26:06 +00:00
Al Riddoch
15ef748518 2003-03-07 Al Riddoch <alriddoch@zepler.org>
* Use " instead of < when including application headers.

	* Re-work the interface between server and worldrouter objects
	  so that the are less tied together, and more flexible.
2003-03-07 00:22:12 +00:00
Al Riddoch
2c3b017dd4 2003-03-05 Al Riddoch <alriddoch@zepler.org>
* server/Admin.cpp, server/CommClient.h, server/ServerRouting.h:
	  Small cleanups.
2003-03-05 04:51:39 +00:00
Al Riddoch
5ef716948f 2003-01-05 Al Riddoch <alriddoch@zepler.org>
* common/globals.cpp, common/globals.h, server/Connection.cpp,
	  server/Persistance.cpp, server/Persistance.h, server/ServerRouting.cpp,
	  server/server.cpp: Move restricted flag out of persistance into
	  globals.

	* server/Account.h, server/Admin.cpp, server/Connection_methods.h,
	  server/WorldRouter.cpp: Remove unnecessary includes.

	* server/ServerRouting.cpp: No longer necessary to load the admin
	  account at startup. Can be loaded on demand.
2003-01-05 01:28:49 +00:00
Al Riddoch
0c78cf0b43 2003-01-03 Al Riddoch <alriddoch@zepler.org>
* common/BaseEntity.h, server/Persistor.h: Make inheritance of
	  SigC::Object virtual, although multiple inheritance is not planned.

	* common/Database.cpp, common/Database.h: Remove legacy account
	  table, and add support for generic non-inherited tables for OOG
	  data.

	* common/Database.cpp, common/Database.h: Add general methods for
	  running queries and reporting errors, and cut down duplicated
	  code elsewhere by using them.

	* common/accountbase.cpp, common/accountbase.h: Remove code
	  that used old account table, and replace with stubs. New
	  account yet to be written.

	* server/Account.cpp, server/Account.h, server/Admin.cpp,
	  server/Admin.h, server/Player.cpp, server/Player.h:
	  Allow an id to be specified when creating an account.

	* server/Persistance.cpp: Re-write account persistance methods
	  to use new table.

	* server/Restoration.cpp: Clarify debug output.
2003-01-03 17:14:28 +00:00
Al Riddoch
ec6d52e45d 2002-01-02 Al Riddoch <alriddoch@zepler.org>
* common/Database.h: Declaration for register relations.

	* server/Account.cpp, server/Account.h, server/Admin.cpp,
	  server/Admin.h, server/Connection.cpp, server/Player.cpp,
	  server/Player.h, server/ServerRouting.cpp,
	  server/ServerRouting.h: Properlly separate username and id from
	  account, and use the database code to assign numerical ids to
	  account objects.  Eliminate extraneous member variables in account.

	* server/CommClient.cpp, server/CommServer.cpp,
	  server/CommServer.h, server/server.cpp:
	  Eliminate storing server name string twice.
2003-01-02 08:52:56 +00:00
Al Riddoch
8d7eb1b6e1 2002-12-28 Al Riddoch <alriddoch@zepler.org>
* common/BaseEntity.cpp, common/BaseEntity.h, rulesets/Character.cpp,
	  rulesets/Food.cpp, rulesets/Thing.cpp, rulesets/World.cpp:
	  Add arg to error method specifying where the error should go. Use
	  this arg to ensure that errors don't get broadcast.

	* common/Database.cpp, common/Database.h, common/const.cpp,
	  server/Persistor.cpp, server/Restoration.cpp,
	  server/WorldRouter.cpp
	  Change id and loc column in entity tables to integer for
	  performance. Add id generator sequence to database

	* common/Database.cpp, common/Database.h, server/Persistance.cpp,
	  server/Persistance.h: Remove old legacy world, mind and server
	  tables as they are no longer used.

	* common/BaseEntity.cpp, common/Load.h, common/Save.h,
	  common/custom.cpp, common/op_switch.h, common/operations.cpp,
	  common/operations.h, common/types.h, rulesets/BaseMind.cpp,
	  rulesets/BaseMind.h, rulesets/Character.cpp, rulesets/Character.h,
	  server/Admin.cpp, server/Admin.h, server/server.cpp,
	  tools/cycmd.cpp: Remove Load and Save ops.

	* rulesets/Area.cpp, rulesets/Character.cpp, rulesets/Line.cpp,
	  rulesets/Plant.cpp: Fix != to |= when setting update flags.

	* server/CommMetaClient.cpp, server/CommMetaClient.h,
	  server/CommServer.cpp, server/CommServer.h, server/server.cpp:
	  Add mechanism for sockets to be called whenever the server
	  is idle, so that they do period things. Use this mechanis,
	  to handle sending periodic packets to the metaserver, removing
	  special case code from CommServer.
2002-12-28 21:52:32 +00:00
Al Riddoch
201c6d683a 2002-12-21 Al Riddoch <alriddoch@zepler.org>
* server/WorldRouter.cpp, server/Admin.cpp:
	  Use consts::rootWorldId correctly.

	* server/Persistor.cpp, server/PersistantThingFactory.cpp,
	  server/PersistantThingFactory.h, server/EntityFactory.h,
	  server/EntityFactory.cpp: Add World specialisation of Persistor
	  so that row in entity database is maintained, but not created.

	* common/Database.h: Ensure iterator has != as well as ==.

	* common/Database.cpp: Check that tuples have been returned
	  in response to a select.

	* server/Restoration.cpp, server/Restoration.h,
	  server/Restorer.cpp: Restoration code now iterates over the
	  contents of the database, but does not attempt to actually
	  restore it yet.
2002-12-21 21:28:20 +00:00
Al Riddoch
94fc4b418e 2002-11-01 Al Riddoch <alriddoch@zepler.org>
* tools/cycmd.cpp, server/Admin.cpp: Clean up admin interface so its
	  a bit more Atlas compliant.

	* server/Connection.cpp, server/Player.cpp: Improve some checking.

	* server/EntityFactory.cpp: Remove dead commented out code.
2002-11-01 12:12:01 +00:00
Al Riddoch
7de9d40633 2002-09-14 Al Riddoch <alriddoch@zepler.org>
* server/Admin.cpp: Cleaned up an unimplemented feature, and added it
	  to the TODO.

	* server/Account.h, server/Account.cpp: Removed unused obsolete code for
	  checking character types.

	* rulesets/Python_API.cpp: Add new globals module to python API which exposes
	  core settings to the python scripts.

	* rulesets/basic/hooks/ruleset_import_hooks.py: Abolish autogeneration of
	  this file using new globals module in the python API.

	* configure.in, cyphesis-config.in: Expose conf and data dirs.

	* tools/cyphesis-setup: New script to set the server up.

	* tools/cyconfig.cpp: New tool to make persistant changes to the server config.
2002-09-14 18:46:34 +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
ad6ad55815 2002-04-12 Al Riddoch <alriddoch@zepler.org>
* common/BaseEntity.cpp, common/BaseEntity.h, common/BaseWorld.cpp,
	  common/Database.cpp, common/accountbase.h, modules/WorldTime.h,
	  rulesets/Py_World.cpp, server/Admin.cpp, server/Persistance.cpp,
	  server/Persistance.h:
	  Clean up includes.

	* rulesets/Entity.cpp, rulesets/Entity.h: Write improved way of
	  handling immutable object attributes.

	* server/EntityFactory.cpp, server/Player.cpp, server/Player.h:
	  Implement a character_types attribute on the player account,
	  by adding "playable" tag to rules database, and setting
	  up a set of character types when rules are read from database.
2002-04-12 21:54:44 +00:00
Al Riddoch
5cf4f0491b 2002-03-19 Al Riddoch <alriddoch@zepler.org>
* server/WorldRouter.cpp, server/ServerRouting_methods.h,
	  server/ServerRouting.h, server/ServerRouting.cpp,
	  server/Routing.h, server/Routing.cpp, server/Connection.h,
	  server/Admin.cpp:
	  Removed inheritance from Routing by Connection and ServerRouting,
	  as there is almost no functionality in common. Get rid of global
	  idDict in ServerRouting is it serves little or no useful purpose.
	  IG objects are now managed in WorldRouter, and OOG objects in
	  ServerRouting.

	* common/BaseWorld.h: Made accessor method const, as it should be.
2002-03-19 09:26:40 +00:00
Al Riddoch
83c53f06c6 2002-03-11 Al Riddoch <alriddoch@zepler.org>
* server/WorldRouter.cpp: Eliminate unnecessary call to opEnumerate()
	  and enhance debugging output.

	* server/Player.cpp: Correct the use of string.compare() in older
	  versions of libstdc++.

	* common/types.h: Added enumeration for other operations, not
	  handled by the core, but considered valid. Added new type
	  for storing mapping between operation parents and their
	  enumerated type.

	* common/op_switch.h: Separate handling of operations known to
	  be invalid from operations which are valid, but not explicitly
	  added to the core.

	* common/inheritance.h, common/inheritance.cpp, common/custom.cpp:
	  Provide global operation mapping where enumeration of operations
	  can be looked up. Install all types handled by the core, and
	  types known to be used in scripts.

	* common/BaseEntity.h, common/BaseEntity.cpp: Add object specific
	  operation mapping where operation types each object is subscribed
	  to can be enumerated, and others are rejected. Add mechanism
	  so that objects can add to the mapping, this subscribing to
	  operations. This makes enumerating operations much cheaper, and
	  eliminates the overhead of handling ops an object has no interest
	  in.

	* rulesets/Thing.h, rulesets/Thing.cpp: Add mechanism so scripts
	  can subscribe to operations.

	* rulesets/Character.h, rulesets/Character.cpp:
	  Add subscription mechanism for ops going to and from
	  the mind.

	* rulesets/BaseMind.h, rulesets/BaseMind.cpp:
	  Add subscription mechanism for sight and sound perception
	  operations sub operations, and provide an interface to it
	  for scripts.

	* server/Connection.cpp, server/Admin.cpp, server/Account.cpp,
	  rulesets/World.cpp, rulesets/World.h, rulesets/Thing.cpp,
	  rulesets/Stackable.cpp, rulesets/Plant.cpp, rulesets/Food.cpp,
	  rulesets/Character.cpp, rulesets/BaseMind.cpp:
	  Add subscriptions to operations for all core base classes.

	* rulesets/Python_API.cpp: When script is created, go through
	  methods, and subscribe to the operations which are handled by
	  them.

	* rulesets/Character.cpp: When calculating orientation of a walking
	  character, assume it is standing upright.

	* physics/Vector3D.h: Add versions of mag() and distance() which
	  omit the square root calculations, so that when their values
	  are only used for comparison, the expensive square root
	  calculations can be ommited. Add new version of collision
	  and range checking functions which provide the optimal
	  interface to the application. Add versions of methods which
	  modify this rather than creating a new operation to eliminate
	  wasted copies.

	* physics/Quaternion.cpp: Make use of faster interface provided
	  by Vector3D.

	* physics/BBox.h: Add new version of collision checking function
	  which provides optimal interface to the application.

	* modules/Location.h, modules/Location.cpp: Add new functions
	  to optimally calculate the distance between any two entities.

	* modules/Location.h: Re-write collision and range functions to
	  make much more optimal use of Vector3D, BBox and distance
	  functionality.

	* rulesets/Py_Vector3D.cpp, rulesets/Pedestrian.cpp,
	  rulesets/Movement.cpp, rulesets/Entity.cpp, rulesets/Character.cpp:
	  Eliminate implicit copies from vector arithmetic.

	* rulesets/Pedestrian.cpp, rulesets/MemMap.cpp, common/const.h:
	  Re-write code which uses magnitude of vectors to use the square
	  of the magnitude instead, as it is much cheaper to calculate.
2002-03-11 18:24:19 +00:00
Al Riddoch
7d2e36d685 2002-03-08 Al Riddoch <alriddoch@zepler.org>
* server/Persistance.cpp, server/Connection.cpp, server/Admin.cpp,
	  server/Account.cpp, rulesets/Thing.h, rulesets/Thing.cpp,
	  rulesets/Stackable.cpp, rulesets/Py_Location.cpp,
	  rulesets/Entity.h, rulesets/Entity.cpp, rulesets/Creator.cpp,
	  rulesets/Character.cpp, common/BaseEntity.h, common/BaseEntity.cpp:
	  Get rid of flags used to determine object type, and get rid
	  of use of C style casts to cast between object pointers.
	  Replace both with dynamic casts. Clean up some stray casts
	  left behind from older versions of object structure.

	* physics/Vector3D.cpp: Added note explaining when to use
	  Vector3D::relMag() instead of mag().
2002-03-08 21:48:07 +00:00
Al Riddoch
49691213c9 2002-03-08 Al Riddoch <alriddoch@zepler.org>
* Changed typedef names to ones which make more sense, and are
	  clearer. There is no change in functionality in this commit.
2002-03-08 14:58:40 +00:00
Al Riddoch
ec3e9fe029 2002-03-06 Al Riddoch <alriddoch@zepler.org>
* tools/cycmd.cpp, server/WorldRouter.cpp, server/EntityFactory.cpp,
	  server/Connection.cpp, server/Admin.cpp, server/Account.cpp,
	  rulesets/World.cpp, rulesets/Thing.cpp, rulesets/Py_Operation.cpp,
	  rulesets/MemMap_methods.h, rulesets/MemMap.cpp, rulesets/Entity.cpp,
	  rulesets/Character.cpp, rulesets/BaseMind.cpp:
	  Use empty() instead of size() == 0 for STL sequence types.

	* rulesets/ThingFactory.h, server/EntityFactory.cpp: Modified the
	  way adding classes to the inheritance tree is handled, so types
	  no longer have to inherit directly from a C++ class.

	* server/WorldRouter.cpp: Modified the way broadcast operations are
	  handled to make them more efficient, and catch NULL pointers in
	  the world dictionary.
2002-03-06 00:23:28 +00:00
Al Riddoch
3b99836e6b 2002-01-27 Al Riddoch <alriddoch@zepler.org>
* server/server.cpp, client/client.cpp, common/globals.cpp:
	  Move loading of ruleset list from config file into the
	  generic loadConfig function.

	* server/EntityFactory.cpp, server/EntityFactory.h:
	  Add support for reading mind data from rules database. Remove
	  old code for installing classes from varconf. Clean up debugging
	  output.

	* server/Admin.cpp: Remove setting of varconf class when new
	  type is installed from client.

	* rulesets/MindFactory.h, rulesets/MindFactory.h: Get MindFactory
	  working, and set it up so EntityFactory installs info here
	  as it reads the rules from the database.

	* rulesets/Character.cpp: Use MindFactory to create minds.

	* common/Database.cpp: Clean up some obsolete comments.

	* aiclient/client.cpp: Get rid of invalid setup of varconf.
2002-01-27 13:22:33 +00:00
Al Riddoch
f7b9471b2c 2002-01-14 Al Riddoch <alriddoch@zepler.org>
* C++ compliance fixes for gcc 3.
2002-01-14 19:10:16 +00:00
Al Riddoch
e70aed6400 2002-01-13 Al Riddoch <alriddoch@zepler.org>
* client/client.cpp, server/server.cpp, common/globals.cpp,
	  common/globals.h, tools/cycmd.cpp, tools/cydbload.cpp,
	  tools/cypasswd.cpp: Move code for handling loading of config
	  from the command line, user config and global config, into
	  globals.cpp, and make use of it in all tools.

	* tools/cycmd.cpp: Fix objtype on server set commands.

	* common/Database.cpp, common/Database.h: Implemented new database
	  interface to PostgreSQL to replace inadequate db3 code.

	* common/database.cpp, common/database.h: Old code removed from the
	  build.

	* common/accountbase.h, server/Admin.cpp, server/Persistance.cpp,
	  server/server.cpp, tools/cydbload.cpp: Fixed for minor changes
	  in the low level database API.

	* common/globals.h, common/globals.cpp, rulesets/EntityFactory.cpp,
	  server/Admin.cpp, server/CommServer.cpp,
	  Remove varconf header from globals.h, and put in .cpp files
	  where it belongs.
2002-01-13 17:24:53 +00:00
Al Riddoch
01cf70fb94 * common/persistance.cpp, rulesets/BaseMind.cpp, rulesets/Character.cpp,
rulesets/Entity.cpp, rulesets/EntityFactory.cpp, rulesets/Food.cpp,
	  rulesets/MemMap.cpp, rulesets/Thing.cpp, server/Admin.cpp:
	  Improved robustness and readability of code handling Atlas
	  attributes.

Al Riddoch  <alriddoch@zepler.org>
2001-11-26 17:10:13 +00:00
Al Riddoch
c104a0a1ce * server/Connection.cpp: Toughened up Logout handling, and made
type info Get handling more robust.

	* server/Admin.cpp, server/Admin.h: Added capability for admin to
	  forcefully logout users.

	* server/Account.cpp: Made handling of OOG Look ops more inline with
	  Atlas conventions, made args handling more robust.

Al Riddoch  <alriddoch@zepler.org>
2001-11-26 12:12:55 +00:00
Al Riddoch
e4af39ae14 * server/server.cpp, server/Admin.cpp, rulesets/EntityFactory.h,
rulesets/EntityFactory.cpp, common/inheritance.h, common/custom.cpp:
	  Modified EntityFactory so entity classes are automatically installed
	  in the inheritance tree as they are loaded.

	* server/CommClient.cpp, server/Connection.cpp: Removed some debugging
	  output.

Al Riddoch  <alriddoch@zepler.org>
2001-11-24 13:23:17 +00:00
Al Riddoch
0bf7bab6e4 * common/inheritance.h, server/Connection.cpp: Simplify behavoir when
type is unknown, and return an error to the client.

	* server/Admin.cpp, server/Account.cpp, server/Connection.cpp: Ensure
	  serial number is set on all OOG operations.

Al Riddoch  <alriddoch@zepler.org>
2001-11-08 10:26:56 +00:00
Al Riddoch
aa3f4f0db4 * common/BaseWorld.cpp, common/OOGThing.cpp, rulesets/Entity.cpp,
rulesets/EntityFactory.cpp, rulesets/MindFactory.cpp,
	  rulesets/Stackable.cpp, server/Account.cpp, server/Admin.cpp,
	  server/CommClient.h, server/CommServer.cpp, server/CommServer.h,
	  server/Connection.cpp, server/ExternalMind.cpp,
	  server/Persistance.cpp, server/Persistance.h,
	  server/ServerRouting.cpp, server/WorldRouter.cpp,
	  server/server.cpp: Removed unused includes and code. Added some
	  FIXMEs.

	* rulesets/Thing.cpp: Added TO and FROM to faked Sight(Create()) ops.

	* server/OOG_Thing.cpp, server/OOG_Thing.h: Marked files as removed.

Al Riddoch  <alriddoch@zepler.org>
2001-10-18 16:06:06 +00:00
Al Riddoch
c0af3c3c63 * aiclient/ClientConnection.cpp, aiclient/client.cpp,
client/ClientConnection.cpp, common/database.h, common/globals.cpp,
	  common/persistance.cpp, common/stringstream.h, server/CommClient.cpp,
	  server/CommServer.cpp, server/Persistance.cpp, tools/cyctrl.cpp,
	  tools/cyctrl.cpp, tools/cydbload.cpp, tools/cyisoload.cpp,
	  tools/cypasswd.cpp: Removed unused config.h.

	* client/ObserverClient.cpp, common/const.h, tools/cycmd.cpp:
	  Use default password if the admin account cannot be fetched from
	  the database.

	* client/Py_CreatorClient.cpp, common/BaseEntity.cpp,
	  common/BaseEntity.h, rulesets/Character.cpp, rulesets/Creator.cpp,
	  rulesets/Entity.cpp, rulesets/Entity.h, rulesets/EntityFactory.cpp,
	  rulesets/MemMap.cpp, rulesets/Py_Mind.cpp, rulesets/Py_Thing.cpp,
	  rulesets/Py_World.cpp, rulesets/Thing.cpp, server/Account.cpp,
	  server/Admin.cpp, server/Connection.cpp, tools/cywatchdog.cpp:
	  Make many of the member variables of Entity protected, and add
	  the required accessors. Changed the name of the id attribute
	  to m_id.

	* common/BaseWorld.h, common/database.cpp, common/persistance.cpp:
	  Removed unused includes.

	* common/Chop.h, common/Cut.h, common/Eat.h, common/Fire.h,
	  common/Generic.h, common/Load.h, common/Nourish.h, common/Save.h,
	  common/Setup.h, common/Tick.h: Moved definition of virtual
	  functions into cpp file, to reduce wasted code.

	* common/Makefile.am: Create cyphesis library, which can be used by
	  other applications to access cyphesis databases.

	* common/config.h, common/database.h, server/Persistance.cpp,
	  tools/cydbload.cpp, tools/cyisoload.cpp, tools/cypasswd.cpp:
	  Remove conditional compilation of db code. db3 is now required.

	* server/WorldRouter.h: Fixed getNewId() so it take const string.

	* server/server.cpp: Removed python shutdown, so it does not
	  mess up the db if it causes a segfault.

Al Riddoch  <alriddoch@zepler.org>
2001-10-17 14:09:42 +00:00
Al Riddoch
a44ee6f86d * BUGS: Note that C++ version of client currently does not work.
* TODO: Update on important issues which allow easy DOS attacks.

	* client/ClientConnection.cpp, client/ClientConnection.h:
	  Cleaned up unused code from ClientConnection class.

	* client/client.cpp: Removed monitoring section of client
	  so it simply exits once the world is initialised.

	* rulesets/basic/mind/goals/humanoid/werewolf.py:
	  Started work on dynamic goals for playing werewolf.

	* rulesets/werewolf/define_world.py: Added in the mayor, who runs
	  werewolf games.

	* common/BaseEntity.h: Made id of entity private, and implemented
	  accessors.

Al Riddoch  <alriddoch@zepler.org>
2001-09-13 15:21:16 +00:00
Al Riddoch
73b210279c * client/client.cpp,
client/ObserverClient.cpp, client/ObserverClient.h,
	  client/ClientConnection.cpp, client/ClientConnection.h,
	  client/define_world.cpp, client define_world.h:
	  Started re-coding of python client code in C++.

	* common/accountbase.h:
	  Database class used for simply accessing accounts.

	* common/OOGThing.cpp, common/OOGThing.h, server/Account.h,
	  server/Routing.h:
	  Moved OOGThing class into common as it is not server specific.

	* common/BaseWorld.cpp, common/BaseWorld.h,
	  server/WorldRouter.cpp, server/WorldRouter.h,
	  rulesets/Entity.h, rulesets/Py_World.cpp,
	  rulesets/PythonThingScript.cpp, rulesets/Python_API.h,
	  rulesets/Thing.cpp, rulesets/Thing.h:
	  Added base class for WorldRouter so that code that previously
	  used WorldRouter now used the interface defined by this
	  new class. This means that the code in rulesets no longer
	  has dependencies on code in server, so can be used in the client.

	* server/ExternalMind.cpp, server/ExternalMind.h,
	  rulesets/Character.h, rulesets/Creator.cpp,
	  server/Account.cpp:
	  Moved ExternalMind class into server as it is server specific,
	  so that there is no dependancy on server in rulesets.

	* server/Persistance.cpp. server/Persistance.h,
	  server/Admin.cpp, server/ServerRouting.cpp, server/server.cpp:
	  Moved high level server specific persistance class into
	  server, so there is no dependency on server in common.

	* common/database.cpp, common/database.h, server/Admin.cpp,
	  tools/cydbload.cpp, tools/cyisoload.cpp, tools/cypasswd.cpp:
	  Increases efficiency of some interfaces by passing Object::MapType
	  instead of MapType, when the value must be a map.

	* modules/WorldTime.cpp, modules/WorldTime.h,
	  rulesets/Py_WorldTime.cpp, rulesets/Python_API.cpp:
	  Brought the version of WorldTime in modules up to date, as this is
	  the version now used.

	* rulesets/Character.cpp, server/WorldRouter.cpp, rulesets/Thing.cpp,
	  server/Admin.cpp:
	  Made world objects dictionary private.

	* rulesets/EntityFactory.cpp, rulesets/EntityFactory.h:
	  Change newThing parameters so entity factory does not need to
	  know about WorldRouter.

	* server/Lobby.cpp: Added support for people and rooms attributes
	  of OOG room class.

Al Riddoch  <alriddoch@zepler.org>
2001-08-13 17:22:27 +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
db78379824 * server/WorldRouter.h, server/WorldRouter.cpp, rulesets/Thing.cpp,
server/Account.cpp: Modified server to use Entity * instead
	  of Thing *.

	* Removed unnecessary includes from many files.

	* common/config.h, configure.in, common/persistance.cpp:
	  More config changes to try and get it working on Debian.

Al Riddoch  <alriddoch@zepler.org>
2001-06-04 15:24:13 +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
1d0f77d4b5 * server/server.cpp: Added several options to the config file to
make server operation customisable. Added comments.

	* server/server.cpp, server/CommServer.h: Changed methods which
	  return int to returning bool if they are success/faul results.

	* server/WorldRouter.cpp: Removed some unused debugging code.
	  Optimised heavily used code. Changed error message on
	  sending to a non-existant entity so that it is no longer
	  reported as a critical error.

	* server/ServerRouting.h, server/Connection.h,
	  server/Connection_methods.h: inlined simple methods.

	* server/Connection.cpp: Optimised frequently used code.

	* server/CommClient.h: Simplified read method so it no
	  longer checks status redundantly.

	* common/BaseEntity.h, rulesets/Thing.h, rulesets/Entity.h: Added
	  comments explaing purpose of classes.

	* rulesets/Thing.cpp: Added detailed comments, and removed unnecessary
	  initialisation of some attributes.

	* rulesets/PythonMindScript.cpp: Removed redundant NULL check.

	* rulesets/MemMap.h: Added inlines for inlined methods.

	* rulesets/Entity.h, common/BaseEntity.h: Moved seq from BaseEntity
	  to Entity as it does not apply to Out Of Game objects.

	* rulesets/Entity.cpp: Added in stamp/seq attribute. Nade name
	  attribute optional.

	* rulesets/Character.cpp: Simplified some op handling code
	  to make it more readable and hopefully faster. Added comments
	  explaining movement, removed unused commented out code, and
	  removed some unnecessary debugging code.

	* common/operations.h: Explanatory comments.

	* common/*.h: Re-wrote extended operations to fit in
	  with Atlas-C++ 0.4.2 conventions.

	* common/log.*: Commented out unused logging code.

Al Riddoch  <alriddoch@zepler.org>

This code will no longer build against the last release of Atlas-C++ 0.4
Please use cvs Atlas-C++ stable branch.
2001-05-14 17:25:32 +00:00
Al Riddoch
e091bfd8f8 * server/Admin.cpp: Modified database loading code so it picks up
the object parent correctly instead of looking for a type attribute.

	* server/server.cpp: Made metaserver address a config file option.

	* common/database.h: Put in compiler error if code is built without
	  database support.

	* common/BaseEntity.cpp: Switched over to using stamp instead of seq
	  as the attribute used to check whether entity needs to be
	  updated.

	* Used action operation throughout python code to denote performing
	  an action, as differentiated from setting mode.

	* rulesets/skills: Added the beginnings of a skill system.

	* example/client: Fixed Atlas-C++ 0.5 example client so it
	  compiles again.

	* README: Wrote a README file

Al Riddoch  <alriddoch@zepler.org>
2001-05-06 23:51:37 +00:00
Al Riddoch
617252bb7d * common/database.*, common/persistance.*: Added new database tables
for mind data, and server data.

	* common/persistance.*, server/Admin.cpp: Implemented saving and
	  loading of mind state to mind table. Initially only saving the
	  contents of the memory map is supported.

	* rulesets/MemMap.h: Added asObject() method to convert contents
	  into Atlas representation.

	* rulesets/BaseMind.*: Added handling of load and save operations
	  which in conjunction with the Python mind component build an
	  Atlas representation of the mind state.

Al Riddoch  <alriddoch@zepler.org>
2001-04-20 16:23:34 +00:00
Al Riddoch
3ac20e3443 * common/persistance.cpp, server/Admin.cpp: Modified database loading
of world entities so that it is done hierarchically starting
	  with the top level container.

	* rulesets/Entity.cpp, rulesets/Character.cpp: Added some needed
	  attributes to those added to Atlas Objects when converting in
	  game entities.

Al Riddoch  <alriddoch@zepler.org>
2001-04-19 11:36:11 +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
77a6d063dd * common/BaseEntity.*: Changed addToObject to take reference
instead of pointer.

	* physics/Vector3D.h: Re-ordered functions to allow correct inlining.
	  Changed member names to correct convention.

	* rulesets/MemMap.cpp,rulesets/MemMap_methods.h: Re-ordered function
	  to allow inlining, and moved non-inlinable functions into .cpp file.

	* Changed new operation initialisation to be done at construction
	  time instead of imediatly after construction for performance
	  reasons.

	* server/WorldTime.*: Modified member names for convention, and
	  moved non-inlineable function to .cpp file.

Al Riddoch  <alriddoch@zepler.org>
2001-04-12 11:13:06 +00:00
Al Riddoch
43211cf9d1 * Re-wrote class headers files so that all class members now
begin with a lower case letter and do not contain _.

	* Fixed retrieval of Account from database so that the Account
	  is now correctly referenced in the server object.

	* common/types.h: Changed type name to make them clearer.

	* rulesets/Character.h: Moved MovementInfo into its own class
	  file, and made it a base class, with a Pedestrian super class.
	  This allows different types of movement handling classes
	  to be used to handle things that move differently.

Al Riddoch  <alriddoch@zepler.org>
2001-04-11 14:34:15 +00:00
Al Riddoch
488f35b52f * Complete re-write of python script interface to allow other
script types to be cleanly dropped in.

	* Re-work on server and communication related classes to use
	  references where they are apropriate. Code is now much more
	  robust.

	* Huge cleanup of header files removing redundant includes.

	* server/WorldRouter.h: Removed is_object_deleted because it
	  is broken and not used.

	* server/Connection.h: Removed unused disconnect() methods.

	* rulesets/Entity.*: Added new in game base class from which
	  all mind and object classes are derived. This removes
	  clutter of Thing class from mind classes.

	* aiclient/*: Progress with creating AI client for mind handling.

	* common/globals.*: Moved some globals out of server specific files.

	* rulesets/Makefile.am: Separated rulesets code into 3 almost stand
	  alone packages; entities, mind and python interface code.


Acorn may well not work now, but I would apreciate it if people could
test the code on their setups. Lots of code has changed, and almost
everything is now cleaner.

Al Riddoch  <alriddoch@zepler.org>
2001-04-10 19:05:14 +00:00
Al Riddoch
81199e0049 * common/BaseEntity.h: Moved many of the extra parts of this file
into individual files for each bit.

	* aiclient/*: Added client mode cyphesis for handling AI in another
	  server. Not yet operational.

	* */*: Moved large and virtual functions out of headers to reduce
	  multiple instance problems, keep the binary size down, and speed
	  up compilation.

	* server/Admin.h/cpp: Added Get operation handling, thus dividing
	  admin commands into two classes, one which does not alter
	  the state of the server, the other which does. Added query
	  command which allows admin client to retrive arbitrary objects
	  from server id dictionary.

Al Riddoch  <alriddoch@zepler.org>
2001-04-05 18:01:12 +00:00