Commit graph

309 commits

Author SHA1 Message Date
Al Riddoch
70bda04c90 2004-10-03 Al Riddoch <alriddoch@zepler.org>
* Require varconf 0.6.2 for its superior command line handling.

	* client/client.cpp, common/globals.cpp, server/server.cpp,
	  server/slave.cpp, tools/cycmd.cpp, tools/cyloadrules.cpp,
	  tools/cypasswd.cpp: loadConfig() now returns the index of
	  the first non-option commandline arg.

	* client/client.cpp: Use new config feature to allow user to
	  specify the client function to use on the command line far
	  more easily.
2004-10-03 13:55:54 +00:00
Al Riddoch
adc1d1b7c0 2004-10-03 Al Riddoch <alriddoch@zepler.org>
* client/client.cpp, common/globals.cpp, common/globals.h,
	  common/inheritance.cpp, common/inheritance.h, server/server.cpp,
	  server/slave.cpp, tools/cycmd.cpp, tools/cyloadrules.cpp,
	  tools/cypasswd.cpp:
	  Use int for returning error status.
2004-10-03 02:06:45 +00:00
Al Riddoch
3dc25b698f 2004-10-03 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp, common/Database.h, common/accountbase.cpp,
	  common/accountbase.h, server/Persistance.cpp, server/Persistance.h,
	  server/server.cpp, tools/cyloadrules.cpp, tools/cypasswd.cpp:
	  Use int for returning error status.
2004-10-03 01:50:49 +00:00
Al Riddoch
e49f8942d9 2004-10-02 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h,,
	  client/CharacterClient.cpp, client/CharacterClient.h,
	  client/ClientConnection.cpp, client/ClientConnection.h,
	  client/CreatorClient.cpp, client/CreatorClient.h,
	  client/ObserverClient.cpp, client/ObserverClient.h,
	  client/Py_CreatorClient.cpp, client/Py_CreatorClient.h,
	  client/client.cpp, server/CommListener.cpp,
	  server/CommListener.h, server/CommMetaClient.cpp,
	  server/CommMetaClient.h, server/CommUnixListener.cpp,
	  server/CommUnixListener.h, server/server.cpp, tools/cycmd.cpp:
	  Use int for returning error status.
2004-10-03 00:38:55 +00:00
Al Riddoch
392a44ea9e 2004-09-14 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp, common/Database.h: Fix queries on ID relation
	  tables. Add methods to result functions for decoding the contents
	  of fields more directly. Implement selecting from array tables.

	* common/terrain_utils.cpp, common/terrain_utils.h: New functions
	  for handling terrain in array database tables.

	* rulesets/World.cpp, rulesets/World.h: Add functionality to track
	  changes to the terrain for persistence purposes.

	* server/EntityFactory.cpp, server/EntityFactory.h, server/server.cpp:
	  Modify the way world entity persistence is bootstrapped to be
	  more consistent.

	* server/Persistor.cpp: Provide specialisations to handle world so
	  that terrain is persisted. Implement storing terrain at entity
	  creation.

	* server/Restoration.cpp, server/Restoration.h: Remove obsolete
	  restoration code. Return a status more accuratly representing
	  when restoration fails because of error, or if there is nothing
	  to restore.

	* server/Restorer.cpp, server/Restorer.h, server/Restorer_impl.h:
	  Convert to using methods for restoring data in the Database class.
	  Implement restoring terrain from the database.
2004-09-14 16:39:30 +00:00
Al Riddoch
80acfd9bad 2004-06-01 Al Riddoch <alriddoch@zepler.org>
* server/CommUnixListener.cpp, server/CommUnixListener.h:
	  Clean up member variable names in CommUnixListener, store
	  the socket path to avoid regenerating it, and provide
	  an accessor for the path.

	* server/server.cpp: Report the pathname of failed listen socket
	  if we can't open it.
2004-06-01 17:06:27 +00:00
Al Riddoch
0517a8501b 2004-05-28 Al Riddoch <alriddoch@zepler.org>
* server/WorldRouter.cpp, rulesets/MemMap.cpp, server/server.cpp:
	  Relegate some diagnostic output on shutdown to debug output.
2004-05-28 14:34:33 +00:00
Al Riddoch
28568df78c 2004-05-15 Al Riddoch <alriddoch@zepler.org>
* server/server.cpp, server/WorldRouter.cpp, rulesets/MemMap.cpp:
	  Add logging of various shutdown faces, to try and track the
	  excessive memory usage.
2004-05-15 17:43:14 +00:00
Al Riddoch
71618d7b00 2004-05-07 Al Riddoch <alriddoch@zepler.org>
* server/server.cpp, common/globals.cpp, client/client.cpp:
	  Workaround C++s nasty implicit conversion behavoir.

	* common/system.cpp: Be smarted about POSIX signal handling for
	  segfaults and aborts.

	* Update TODO.
2004-05-08 18:44:34 +00:00
Al Riddoch
bcec471ea1 2004-01-10 Al Riddoch <alriddoch@zepler.org>
* common/nls.h, server/server.cpp: Try out gettext based
	  internationalisation.
2004-01-10 02:19:23 +00:00
Al Riddoch
ba566381af 2003-10-27 Al Riddoch <alriddoch@zepler.org>
* server/server.cpp: Add database socket to the idle set, so it
	  gets called for regular database maintainance.

	* server/CommPSQLSocket.cpp, common/Database.cpp: Clean up and
	  disable the debugging output.
2003-10-27 12:04:53 +00:00
Al Riddoch
94a62bc477 2003-10-27 Al Riddoch <alriddoch@zepler.org>
* server/server.cpp: Add communications object to handle getting
	  the response to database queries without blocking.

	* server/Persistance.h: Make database connection exposed so
	  that CommPSQLSocket can access it.

	* server/CommPSQLSocket.cpp: Add debugging output, and implement
	  dispatching new queries once we have response to previous.

	* common/Database.h, common/Database.cpp: Switch code to submit
	  all command queries via the async que, so we don't block
	  waiting for them to complete. Currently very noisy.
2003-10-27 01:59:53 +00:00
Al Riddoch
e3fdb2c7df 2003-08-23 Al Riddoch <alriddoch@zepler.org>
* server/server.cpp: Handle the case correctly if the metaserver
	  socket setup does not work.

	* server/CommMetaClient.h, server/CommMetaClient.cpp: Re-write
	  CommMetaClient to use skstreams udp_socket_stream.
2003-08-23 20:40:39 +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
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
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
23f1040e22 2002-12-23 Al Riddoch <alriddoch@zepler.org>
* common/BaseEntity.cpp, common/BaseEntity.h, common/OOGThing.h:
	  Add a protected constructor for initialising id at construction
	  time.

	* common/Database.cpp, common/Database.h, server/Restorer_impl.h:
	  Switch argument order so default row can be first row.

	* server/Persistor.cpp: Don't persist Creator objects.

	* server/Restoration.cpp: Clean up debugging output, and report
	  serious errors.

	* server/Restorer.cpp, server/Restorer.h: Add restorers for Character.

	* server/server.cpp: Add log calls for restoring from database.
2002-12-23 00:01:59 +00:00
Al Riddoch
238a4c8c16 2002-12-19 Al Riddoch <alriddoch@zepler.org>
* server/EntityFactory.h, server/ExternalMind.h,
	  server/PersistantThingFactory.h: Fix header guard names.

	* server/server.cpp, server/Restoration.h, server/Restoration.cpp:
	  Add beginning of class to handle restoring world state from database.
2002-12-19 21:49:58 +00:00
Al Riddoch
8f90b120b0 2002-12-19 Al Riddoch <alriddoch@zepler.org>
* server/CommClient.cpp, server/CommServer.cpp, server/CommServer.h,
	  server/ServerRouting.cpp, server/ServerRouting.h,
	  server/server.cpp: Change the way main server object are created
	  to be more logical.
2002-12-19 20:04:37 +00:00
Al Riddoch
1db722f079 2002-12-15 Al Riddoch <alriddoch@zepler.org>
* server/server.cpp, server/WorldRouter.cpp,
	  server/EntityFactory.h, server/EntityFactory.cpp:
	  Change the way the EnitityFactory is created so it has a
	  reference to the world.

	* rulesets/Entity.h, rulesets/Entity.cpp: getLocation returns
	  whether an error occured setting location data.

	* common/Database.h, common/Database.cpp: Add stub functions
	  for generating queries to new format entity tables.

	* server/Persistor_impl.h, server/Persistor.h,
	  server/Persistor.cpp: Add hooks for syncing update to
	  database using new database functions.
2002-12-15 02:52:54 +00:00
Al Riddoch
3a95e9cfcb 2002-11-23 Al Riddoch <alriddoch@zepler.org>
* Increment to devel version 0.3, and start breaking things.

	* server/CommClient.cpp, server/CommClient.h, server/CommServer.cpp,
	  server/CommServer.h, server/server.cpp, server/CommListener.cpp,
	  server/CommListener.h, server/CommMetaClient.cpp,
	  server/CommMetaClient.h, server/CommSocket.cpp, server/CommSocket.h:
	  Refactor network code so metaserver and listen socket are no longer
	  special cases, opening up the way for a database connection handler.
2002-11-23 17:13:39 +00:00
Al Riddoch
4de89d749b 2002-10-03 Al Riddoch <alriddoch@zepler.org>
* common/system.h, common/system.cpp, server/server.cpp: Moved all
	  the system dependant signal handling and background handling
	  code into system module, and implemented propper handling of
	  going into the background, including reporting error status
	  back to the waiting parent using exit status and user signals.
2002-10-03 10:51:59 +00:00
Al Riddoch
b89504d49c 2002-08-30 Al Riddoch <alriddoch@zepler.org>
* common/globals.cpp: Only persist this sessions command line
	  options if the user is overriding the installation directory.

	* cyphesis.vconf, client/Py_CreatorClient.cpp,
	  client/Py_CreatorClient.h, client/client.cpp:
	  Add client functionality to allow diferent scripts to be run to
	  perform different functions on the server.

	* client/CharacterClient.cpp: Add debug option.

	* rulesets/Character.h: Make mind operation functions virtual,
	  so they can be overridden.

	* common/BaseWorld.h, server/WorldRouter.cpp,
	  server/WorldRouter.h: Add server functions to search for
	  entities by name or type.

	* rulesets/Creator.h, rulesets/Creator.cpp: Allow creator to
	  specify a look without an id to search for entities with
	  a given name or type.

	* client/CreatorClient.cpp, client/CreatorClient.h,
	  client/ObserverClient.cpp, client/ObserverClient.h,
	  client/Py_CreatorClient.cpp, rulesets/basic/editor.py,
	  rulesets/mason/define_world.py:
	  Add support for looking for entities in the world by name or
	  type from client script, so client scripts can modify existing
	  world.

	* rulesets/Entity.cpp, rulesets/Movement.cpp,
	  rulesets/Py_Object.cpp, rulesets/Py_Operation.cpp,
	  rulesets/Py_Oplist.cpp, rulesets/Python_API.cpp,
	  rulesets/Stackable.cpp, rulesets/Thing.cpp,
	  rulesets/World.cpp, server/Account.cpp,
	  server/CommServer.cpp, server/Connection.cpp,
	  server/Player.cpp, server/ServerRouting.cpp,
	  server/server.cpp, tools/cycmd.cpp,
	  tools/cywatchdog.cpp: Code formatting cleanups.

	* rulesets/basic/world/objects/tools/Bow.py: Fix up bow so it now
	  fires correctly.
2002-08-30 13:48:39 +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
4c39bc2ecd 2002-07-25 Al Riddoch <alriddoch@zepler.org>
* tools/cycmd.cpp, client/CommClient.h, client/CommClient.cpp: Fixed
	  up client code so it does not rely on username being the same as
	  account id.

	* tools/cycmd.cpp: Added look and logout commands to administrate
	  users logged in.

	* server/server.cpp: Fixed metaserver code so it only sends
	  termination packet if metaserver functionality is enabled.

	* server/Connection.h, server/Connection.cpp, server/CommServer.cpp,
	  server/CommClient.h, server/Account.cpp: Fix logouts so they
	  do cause the client connection to be closed.

	* Finished switch from Fire operation to Burn.
2002-07-26 16:47:39 +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
e4b05c4b8f 2002-06-08 Al Riddoch <alriddoch@zepler.org>
* common/const.h: Increase the sight range.

	* server/WorldRouter.cpp: Put in some warnings, as I want to
	  know when ops are getting broadcast.

	* server/server.cpp: Ensure stdout is not used when in daemon mode.

	* tools/cydbload.cpp: Rename the daftly named class WorldBase
	  to WorldAccessor.

	* mason.xml, cyphesis.vconf: Stop using the Acorn ruleset in Mason,
	  as it contains strange stuff, and remove the playable farmer
	  class from basic. Now games themselves define the only
	  playable types, and mason contains its own copies of classes
	  it has in common with acorn.
2002-06-08 00:56:25 +00:00
Al Riddoch
aa47340d59 2002-05-18 Al Riddoch <alriddoch@zepler.org>
* client/ObserverClient.cpp, server/Account.cpp, server/Connection.h,
	  server/Routing.h: Formatting cleanup

	* client/Py_CreatorClient.cpp, rulesets/Area.cpp, rulesets/Area.h,
	  rulesets/Character.cpp, rulesets/Character.h, rulesets/Entity.cpp,
	  rulesets/Entity.h, rulesets/Line.cpp, rulesets/Line.h,
	  rulesets/Plant.cpp, rulesets/Plant.h, rulesets/Py_Mind.cpp,
	  rulesets/Py_Thing.cpp, rulesets/Stackable.cpp, rulesets/Stackable.h:
	  Replace operator[] with get() method for querying attributes.
	  Make this get() method const, and re-write the internals so
	  that it more cleanly handles attributes.

	* common/BaseWorld.h: Re-write world.getObject() so that it
	  no longer uses std::map::operator[], as the old method was
	  inserting NULLs into the world dictionary when non-existant
	  entities were queried.

	* rulesets/Character.cpp: Clean up outstanding issues when movement
	  position is supplied, and is very close to being correct, and
	  clarify comments about movement when neither destination nor
	  source are provided.

	* rulesets/Character.cpp: Modify mind2body interface so that setting
	  the TO of ops is done in the individual handlers, and copying
	  the operation globally is avoided.

	* rulesets/MemMap_methods.h: Remove dodgy debug code.

	* rulesets/Pedestrian.cpp: Clarify movement fixme.

	* rulesets/Py_Operation.cpp: Clarify operation time handler fixme.

	* rulesets/Stackable.cpp: Clarify fixme's in combine and divide
	  handlers.

	* server/CommServer.cpp: Remove redundant fixme.

	* server/Connection.cpp, server/ServerRouting.cpp,
	  server/ServerRouting.h, server/ServerRouting_methods.h,
	  server/server.cpp:
	  Move inline ServerRouting::getObject into class header.

	* server/WorldRouter.cpp, server/WorldRouter.h:
	  Clean up  includes, and move updateTime into the main body of the
	  file. Clean up code formatting when handling maps and dictionaries.
	  Clarify error output and comments about NULL objects in the world
	  dictionary.
2002-05-18 18:09:14 +00:00
Al Riddoch
e491d6995a 2002-03-12 Al Riddoch <alriddoch@zepler.org>
* server/server.cpp, rulesets/Python_API.cpp, rulesets/Line.cpp,
	  modules/Location.cpp, client/CreatorClient.cpp:
	  Removed some obsolete comments.

	* server/WorldRouter.h, server/WorldRouter.cpp: Add member to
	  deliver operation to known entity. Make use if it to avoid
	  having to recurse in operation() when broadcasting. Ensure
	  that the container of new entities is managed from here.

	* rulesets/Thing.cpp: Tell world to create new entities at the
	  same position as the creator if no other info is provided.
	  Do not attempt to handle setting up the default containership
	  of entity once created, as this is always handled by the
	  WorldRouter from now on.

	* rulesets/Py_World.cpp: Implement getting time info from world.

	* rulesets/Py_Location.cpp: Implement handling of the orientation
	  attribute from python.

	* rulesets/MemMap.cpp: Update comments about unimplemented code.

	* rulesets/Creator.cpp: Check for string.empty() instead of "".

	* rulesets/BaseMind.cpp: Remove reference python code.
	  Cleanly handle and delete operations returned when savinf mind state.

	* client/CharacterClient.cpp: Move delete to the right place.
2002-03-12 18:08:56 +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
32b79d1d05 2002-03-05 Al Riddoch <alriddoch@zepler.org>
* tools/cycmd.cpp, client/ClientConnection.cpp:
	  Removed c_str() where not required.

	* server/CommServer.cpp: Cleaned up removal of dead connections.

	* server/server.cpp, server/Persistance.cpp: Get rid of leaks
	  of factory and database connection objects.

	* common/inheritance.h: Detect and flag errors introduced into
	  type tree.

	* rulesets/MindFactory.h: Add method to shutdown factory.
2002-03-05 17:03:13 +00:00
Al Riddoch
336164884e 2002-01-28 Al Riddoch <alriddoch@zepler.org>
* client/ClientConnection.cpp, client/CommClient.h,
	  common/globals.cpp, common/globals.h, server/server.cpp,
	  tools/cycmd.cpp:
	  Make the TCP port number a global config setting, and
	  ensure it is used everwhere, so it can be overriden, and all
	  clients and tools will use it. Modify behavoir so that any
	  settings overridden on the command line are made semi-permanent
	  in the users home directory, making it easier for users to run
	  two versions on one machine at the same time.

	* common/Database.cpp, common/Database.h: Remove obsolete iterator
	  code. Add a method to clear a given database table.

	* server/Persistance.h, tools/cyloadrules.cpp:
	  Automate loading of the ruleset given in the config file, and
	  the rulesets it depends on, ensuring that the rules table
	  is cleared first.
2002-01-28 11:40:10 +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
c741fda28a 2002-01-27 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp, common/Database.h,
	  server/Persistance.cpp, server/Persistance.h:
	  Add a new table to store rulesets, so they can be persisted, and
	  edited online.  The new ruleset format integrates information
	  about the class hierarchy, scripting and default attributes.
	  Added low level method to fetch an entire database table as an
	  Atlas map.

	* tools/cyloadrules.cpp: New tool to load rulesets in new xml
	  format into database table.

	* server/EntityFactory.cpp, server/EntityFactory.h:
	  New re-written Entity Factory, to support new rules database
	  table, and better class definition capabilities.

	* rulesets/EntityFactory.cpp, rulesets/EntityFactory.h:
	  Removed from build.

	* client/CommClient.cpp: Redundant include removed.

	* rulesets/ThingFactory.h: Add storage to factory for script
	  info and default attributes.

	* server/WorldRouter.cpp: Switch to using new EntityFactory.

	* server/server.cpp: Removed old ruleset loading code, and now
	  simply load the ruleset names from the config file.

	* tools/cycmd.cpp: Exit correctly if connection fails.
2002-01-27 00:38:27 +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
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
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
2bccfe6707 * Release cyphesis 0.1.
Al Riddoch  <alriddoch@zepler.org>
2001-11-11 16:27:47 +00:00
Al Riddoch
4de50bb822 * Cleaned up auto* build files. Added more updated info to README.
* modules/Location.cpp: Removed redundant includes.

	* rulesets/mason/define_world.py: Drop in copy of Acorn world.

	* server/WorldRouter.cpp: Removed double delete of gameWorld.

	* server/server.cpp: Modified comments about segfault in Python
	  shutdown, as this has now been eliminated.

Al Riddoch  <alriddoch@zepler.org>
2001-11-10 15:20:58 +00:00
Al Riddoch
e1669c7947 * client/ClientConnection.cpp, client/ClientConnection.h,
tools/cycmd.cpp: Switched to using skstream to completely handle
	   client socket connections.

	* client/ClientConnection.cpp, client/ClientConnection.h,
	  common/log.cpp, rulesets/EntityFactory.h, rulesets/MemMap.h,
	  server/server.cpp, tools/cycmd.cpp: Removed unused includes.

	* client/Py_CreatorClient.cpp, client/client.cpp,
	  client/define_world.cpp, 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_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/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
	  rulesets/PythonThingScript.h, rulesets/Python_API.cpp,
	  rulesets/Python_API.h, server/server.cpp:
	  Reorganised python header files so that each header includes
	  all the code relevant for a particular type. Tidied up
	  the type implementations. Added prototypes to init_python_api()
	  to the Python_API.h header, and removed other dependencies from
	  it.

Al Riddoch  <alriddoch@zepler.org>
2001-10-19 11:35:07 +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
1aa2021f6c * rulesets/Python_API.cpp: Made variable names clearer.
* server/Connection.cpp: Fixed adding accounts to lobby on login.

	* server/server.cpp: Limited the scope of the CommServer object
	  so that it is destructed before the rest of shutdown can
	  take place.

Al Riddoch  <alriddoch@zepler.org>
2001-10-10 09:40:24 +00:00
Al Riddoch
fe4f38265e * server/server.cpp, rulesets/Python_API.cpp: Added function
to shutdown python. Ensure that all references that should be
	  decrefed during initialisation are.

	* tools/cywatchdog.cpp: Moved watchdog pidfile, so it is in
	  cyphesis specific dir.

	* tools/cyctrl.cpp: Moved in watchdog control program, which
	  makes controlling the watchdog easier.

Al Riddoch  <alriddoch@zepler.org>
2001-10-08 23:21:18 +00:00
Al Riddoch
c92c420e0c * watchdog/watchdog.c: Deprecated non-working watchdog program.
* tools/cypasswd.cpp, tools/cycmd.cpp, client/ObserverClient.cpp,
	  common/accountbase.h Added database delete method, which closes
	  the database, and make sure it is used.

	* server/server.cpp: Moved the point where the server drops to
	  a daemon, as doing this after the db was open seems to corrupt
	  the db.

	* common/database.cpp: If a db is opened but not created, then it
	  is read only.

Al Riddoch  <alriddoch@zepler.org>
2001-10-07 01:08:25 +00:00
Al Riddoch
c4baa6914e * configure.in: Switch to using improved checks for Atlas-C++ and
python.

	* common/const.h, common/const.cpp, rulesets/Python_API.cpp:
	  Removed unused consts.

	* common/globals.h, common/globals.cpp, server/server.cpp:
	  Enable running as a daemon in the background by default.
	  This improves usability by removing dependance on users
	  session. Install signal handlers so signals cause clean
	  shutdown.

	* tools/cycmd.cpp: If adminning server on localhost, get admin
	  password directly from database, instead of asking user.
	  Allows cycmd to be used in scripts. Ensure that exit
	  status accuratly reveals whether the command was sent.

	* tools/cypasswd.cpp: Switch to using common/accountbase.h.

Al Riddoch  <alriddoch@zepler.org>
2001-10-06 16:52:02 +00:00
Al Riddoch
15cd627b27 * server/server.cpp: Moved CommServer and CommClient into their own
files. Cleaned up debugging output.

	* rulesets/EntityFactory.h, server/CommServer.h: Fixed headers so
	  the required ones are included.

	* server/Persistance.cpp: Re-wrote shutdown method so it deletes
	  the class instance.

Al Riddoch  <alriddoch@zepler.org>
2001-09-13 18:21:56 +00:00