* server/Routing.h: Map dictionary function more robust.
* rulesets/Pedestrian.cpp: Increased debugging output.
* rulesets/Character.cpp: Ensure it is handled if no move
op is created.
* physics/Vector3D.h: Ensure operator!= is implemented as
compiler cannot be relied upon to use operator== instead.
* common/inheritance.h, common/Database.cpp: ISO C++ fixes.
* 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.
* 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.
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>
Added direct support for new format bounding boxes.
* modules/Location.cpp, modules/Location.h, physics/Vector3D.h,
rulesets/Character.cpp, rulesets/Creator.cpp, rulesets/Entity.cpp,
rulesets/Movement.cpp, rulesets/Plant.cpp, rulesets/Py_Location.cpp:
Switched over to using new format bounding boxes, and re-wrote
collision code for this format, making it clearer and more
efficient at the same time.
Al Riddoch <alriddoch@zepler.org>
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>
* 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>
tools/cycmd.cpp: Switched to using skstream library for socket
comms instead of hand rolled fstream based version.
* ALL FILES: Fixed use of std namespace throughout all code.
This server is now ISO C++ compliand and builds with gcc 3.0.
Al Riddoch <alriddoch@zepler.org>
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>
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>
server/CommServer.h: Added support for server "name" which
defaults to the hostname of the server machine, but is
customisable in the config. This can be used in preference to
IP address when doing lookups with the metaserver.
* server/Lobby.h, server/ServerRouting.h, server/Account.h,
server/Account.cpp, rulesets/Stackable.h, rulesets/Stackable.cpp,
rulesets/Python_API.cpp, rulesets/Py_Object.cpp, rulesets/Plant.cpp,
rulesets/Pedestrian.cpp, rulesets/Entity.h, rulesets/Entity.cpp,
rulesets/Character.h, rulesets/Character.cpp, common/BaseEntity.h,
common/BaseEntity.cpp: Modied asObect() and addToObject()
methods to make them more efficient.
* modules/Location.h, modules/Location.cpp: Removed old obsolete
Message::Object based addToObject() method.
* rulesets/Thing.cpp: Optimised apperance/disappearance code.
Al Riddoch <alriddoch@zepler.org>
an invalid installation is reported more clearly, and more
usefully.
* rulesets/acorn/world/objects/animals/Pig.py: Fixed creating ham in
the right place.
* rulesets/Movement.cpp: Fixed leaving containers so that if the initial collision with parnet bounding box is missed, character
does not get stuck.
* rulesets/EntityFactory.h: Cleanup code is now cleaner.
* rulesets/EntityFactory.cpp: Removed unecessary varconf dependancy
in rulesets code.
* rulesets/Character.cpp: Allow move ops from mind with no loc set.
* physics/Vector3D.h: Included check for inTime so that if entering
time is in the future, this is detected.
* modules/Location.cpp, modules/Location.h: Provided method
to add location to a map.
Al Riddoch <alriddoch@zepler.org>
* client/define_world.py: Add in market traders to run all the
stalls in the market.
* common/persistance.cpp: Set default admin password to something
a bit more difficult to guess.
* rulesets/basic/mind/goals/common/misc_goal.py:
Fixed run_shop() goal, so NPCs now open and close their market
stall.
* agrilan*.xml: These really are the final versions for Acorn 0.4
Al Riddoch <alriddoch@zepler.org>
for querying lobby, then disabled it as it seems to hang uclient.
* rulesets/basic/mind/panlingua/interlinguish.py,
rulesets/basic/mind/goals/common/misc_goal.py,
client/mind/panlingua/interlinguish.py: Added goal to
maintain opening and closing market stalls, and goal for having
a meal.
* rulesets/basic/mind/goals/common/move.py: Fixed assemble goal
meaning lych now works again.
* rulesets/basic/mind/Memory.py: Adapted query for location of
entity so that it accepts lists of possible types.
* rulesets/Character.cpp: Enabled creating items by NPCs.
* client/define_world.py: Updated NPC behavoir.
Al Riddoch <alriddoch@zepler.org>
* 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>
be loaded into the database.
* tools/cycmd.cpp: Cleaned up usage and help functions.
* tools/cyisoload.cpp: Cleaned up usage(), and made sure build
completes okay if libraries are missing, and missing
functionality is reported to the user.
* server/server.cpp: Added config options that specifies that
the contents of the db should loaded on server startup. Cleaned
up some debug code.
* server/WorldTime.cpp, server/WorldRouter.cpp,
server/Connection.cpp, rulesets/Structure.h,
rulesets/Python_API.cpp, rulesets/Py_WorldTime.cpp,
rulesets/Movement.cpp, rulesets/Entity.cpp,
physics/Vector3D.h, common/persistance.cpp,
common/database.h, common/database.cpp: Removed output either
to debug mode, or removed altogether.
* common/BaseEntity.h, common/BaseEntity.cpp: Removed redundant header
includes.
* server/ServerRouting.cpp, common/persistance.h,
common/persistance.cpp: Modified admin account function names it
fit convention.
* module/Location.h: Fixed collision detection so that entities
with velocity set to 0 still get checked.
* rulesets/Entity.cpp, rulesets/Thing.cpp, rulesets/Character.cpp,
rulesets/BaseMind.cpp, rulesets/Creator.cpp,
rulesets/ExternalMind.cpp, rulesets/Food.cpp, rulesets/MemMap.cpp,
rulesets/Movement.cpp, rulesets/Pedestrian.cpp, rulesets/Plant.cpp,
rulesets/Py_Location.cpp, rulesets/Py_*.cpp, rulesets/World.cpp:
Removed unnecessary #includes.
Al Riddoch <alriddoch@zepler.org>
server/Account.cpp, rulesets/Entity.h, rulesets/Entity.cpp,
rulesets/Character.h, rulesets/Character.cpp, rulesets/BaseMind.h,
rulesets/BaseMind.cpp, common/types.h, common/operations.h,
common/op_switch.h, common/BaseEntity.h, common/BaseEntity.cpp:
Added support for imaginary operations used in a similar way
to emoting.
* server/WorldTime.h: Added update method so underlying DataTime
can be updated.
* server/ServerRouting.h, server/Lobby.h, server/Lobby.cpp
server/ServerRouting.cpp, server/Connection.h,
server/Connection.cpp, server/Account.h, server/Account.cpp: Added
a lobby object which handles lobby chat. Essentially it stores
a list of accounts and allows operations to be sent or broadcast
to other accounts.
* rulesets/Py_WorldTime.cpp: Added python is_now() method because
using comparison does not appear to work.
* rulesets/BaseMind.cpp: Added updating of minds WorldTime each
time an operation is received.
* modules/DateTime.h: Added operator << so DateTime can be sent
to cout.
* common/types.h: Added types for storing accounts in Lobby.
Al Riddoch <alriddoch@zepler.org>
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>
* rulesets/BaseMind.cpp, rulesets/MemMap.h, rulesets/MemMap.cpp:
Add code to flush a characters memory as its mind is
deleted.
* rulsets/Character.cpp: Delete movement class associated with
character when character is deleted.
* rulesets/EntityFactory.h, rulesets/EntityFactory.cpp: Delete
all the entity factories when the server shuts down.
* rulesets/PythonScript.cpp: Decrease reference of and thereby
delete the python script at delete time.
* server/ServerRouting.cpp: Delete all the objects in idDict,
which should include all in game objects, and all explicitly
out of game objects, like accounts.
* server/WorldRouter.cpp: Delete all pending operations, gameWorld
object. Ensure that an object is deleted from ServerRouting's
idDict when it is deleted from the world.
* server/CommServer.h, server/server.cpp: Added CommServer destructor
which deletes all client objects and the server object.
* server/server.cpp: Delete the database persistant object and the
entity factory at shutdown.
Al Riddoch <alriddoch@zepler.org>
* client/define_world.py: Added archers who can hunt deer.
* rulesets/basic/mind/goals/common/misc_goal.py:
Added the hunting goal.
* rulesets/basic/mind/goals/common/move.py: Modified hunt_for()
goal so it has variable attack proximity.
* common/op_switch.h, common/operations.h, common/Generic.h,
rulesets/Character.cpp, rulesets/Entity.h, rulesets/Entity.cpp,
rulesets/Python_API.cpp: Added handling of operation types not
directly supported by C++ classes in the scripting engine. In
order for these to be used they must be created in a script, and
received in a script.
* rulesets/Character.cpp: Avoid using RootOperation pointers unless
that is really what we mean.
* rulesets/Character.cpp: Added code to delete operations from
internal mind when external mind is active.
* rulesets/Entity.cpp: Handled leaking of null script objects,
and python script objects.
* rulesets/Connection.cpp: Delete characters external mind when
connection goes down.
Al Riddoch <alriddoch@zepler.org>
disappearance operations to mind and client.
* rulesets/BaseMind.cpp, rulesets/MemMap.cpp: Removed redundant debug
output.
Al Riddoch <alriddoch@zepler.org>
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.
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>
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>
* rulesets/Thing.cpp: Tweaked ranges code in movement to cut
down CPU time used.
* common/BaseEntity.cpp: Re-ordered opEnumerate so that most
frequently used ops are detected soonest.
* modules/WorldTime.h/.cpp: Moved WorldTime to modules directory.
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>
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>
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>
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>
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>
when part of entity leaves box to when the whole entity leaves the
box.
* basic.vconf: Make tent use the structure base class.
* client/define_world.py: Add bounding box to tent.
* tools/cycmd.cpp: Added password entry.
* server/Admin.cpp: Added "stat" admin command, to get server
details.
* server/CommClient.h: Fixed include dependencies.
* common/persistance.cpp: Added findAccount() method for systems
without db3.
* rulesets/Thing.cpp: Added sending Apperance and Disappearance
operations to static entities when another entity moves out
of sight.
* rulesets/Character.cpp: Added check to make sure an entity does
not collide with itself.
* rulesets/Thing.cpp: Added check to make sure entity does not move
inside itself.
* rulesets/Py_Location.cpp: Modified python location.copy() method
so that only the position and velocity is copied. This should
bounding boxes getting set on things which should not have them.
* rulesets/Character.cpp: Added return statement to movement
handling, so move ops without arguments are not handled.
Al Riddoch (alriddoch@zepler.org)
inTime() function.
* rulesets/Character.cpp: Detect what if entity has already left
refs bounding box.
* basic.vconf: Made sty use the Structure base class.
Al Riddoch (alriddoch@zepler.org)
functions to work out when an entity inside a box will hit the
outside.
* rulesets/Character.cpp: Added check in collision code to see when
entity will leave the bouding box of its current parent.
Al Riddoch (alriddoch@zepler.org)
and end encodings, which is <atlas>..</atlas> in the case of
XML-like codec.
* modules/Location.h: Added a flag which indicates whether the
bounding box of an entity is solid. If it is not solid, then
the entities contents much be checked for collisions rather
than the entity itself.
* rulesets/Character.h: Added target_ref attribute to MovementInfo
as a means to track character movement between entities.
* rulsets/Character.cpp: Modified collision code to handle
detecting of collisions with non-solid objects, and handling
movement when characters moves into a non-solid object but
does not collide with it.
* rulesets/Structure.h, StructFactory.*: Added base class for
buildings and other structure, which are not solid, and the
character can move in and out of freely.
* server/server.cpp: Made metaserver functionality optional, and
added a config option to the config file.
Al Riddoch (alriddoch@zepler.org)
* */*: Fixed mistake in copyright statement.
* tools/cypasswd.cpp: Fixed usage message.
* tools/cycmd.cpp: Added tools for sending administrative commands
to server.
* server/server.cpp: Send terminate instruction to metaserver on
server shutdown.
Al Riddoch (alriddoch@zepler.org)
* modules/Location.h: Fixed error in inRange() and finally got rid
of the Compiler warning.
* rulesets/Food.cpp: Fleshed out the cooking code, including how
food burns when it is overcooked.
* rulesets/Stackable.cpp: Implemented divide.
* common/persistance.*: Added the beginnings of a database backend
using the Berkeley db library.
* server/Account.cpp: Modified addObject, because the attrivutes
added by BaseEntity::addObject are not important to accounts.
Al
location object to python wrappers.
* rulesets/Character.cpp: Added initialisation of bounding box
median for characters.
* modules/DateTime.*: Added configurability to date so that
each period of time has definable number of divisions. Default
is as per real world calendar restricted to 30 day months.
* Added Fire operation handling to Thing class, so that any entity
with a burn_speed attribute will burn.
* Added Food C++ base class, which implements cooking.
* Altered the semantics of the Eat/Fire/Nourish operations so
multiple arguments are no longer required. from is used to
determine the other entity involved.
* Added the beginnings of an astronomy system, but not yet used
anywhere.
* Added appearance handling to BaseMind and Memory.
* Added sequence no to all entities, which is incremented each time
a move or set operation is received. sequence no "seq" is included
in args of Appearance operations.
* Moved functionality from Animal python base class into Character
C++ base class. This much improves the performance of modelling
animals, and means that player characters, and NPCs get hungry and
need to eat. Reduced the speed at which animals consume energy
so they don't starve quite as quickly.
* Added collision prediction functions that handle both entities
having velocity.
* Added combine functionality to Stackable. Divide comes next.
Once functional, this will become the base class for any items
which will commonly be used as stacks.
Al
of oplist to take advantage of vector's best performance.
* Modified OP_SWITCH macros to improve speed, and made it inlinable.
* Cleaned up python interface code to improve compile and link time.
* Moved custom operation definitions in one header file per class
to improve modularity and compile time.
* Modified boundingbox handling so it now uses size and median.
* Added collision check and inbox member function to Vector3D class.
* Added collision prediction and checking to Location and Vector3D
classes.
* Added collision prediction into MovementInfo class.
* Modified Thing::operator[] so that static attributes can be handled
and added Thing::set() which must be used to modify attributes.
* Added collision resolution so characters can no longer walk through
each other.
* Moved weight attribute to being static attribute of Thing, so it
can be much more easily handled in movement code.
Al
* modules/Location.h: Added inRange() method which can be used
to check whether location, including bounding box, is within
given range of a given location. Changed parent member
variable to ref to fit with Atlas spec. Changed all code
related to using the term ref instead of parent so
that there is no confusion between ref for coordinates
and parent in the Atlas hierarchy.
* rulesets/Thing.cpp: Added code to move operation to check
what entities come into and out of range when entity moves.
Appearance and Disappearance operations are sent to the
moving entity with a list of the relevant entities as their
argument.
* server/WorldRouter.h/cpp: Added overloaded Look operation
handler which applies range constraints to the contains
attribute before returning.
* common/BaseEntity.h, rulesets/Thing.h, rulesets/Character.h:
Added handling of Appearance and Disappearance operations.
* server/WorldRouter.cpp: Added primitive check to broadcast
operations to avoid delivering broadcast operation to
entities out of range.
* Removed world.get_object() use from server python code, as
its use is not required.
* server/WorldRouter.h: Implemented fetching of floating point time
from the OS so movement is much smoother.
Al
* Throughout entire code base:
Removed all obsolete code and commented out code relating to porting
from python. Removed interim data types bad_type and None. Added
const throughout where apropriate. Change various flags to bool
type. Removed unused members.
* Added TODO list.
Al
to object if they have not been set.
* Added code to example client so it now reads characters list
when it logs in.
* Removed support for obsolete old-atlas locations.
* Changed behavoir on unexpected error from client socket, so
it no longer causes an abort.
* Removed map from Thing, and put it into basmind. Re-wrote
script_Operation for thing so it now looks things up in world
dictionary rather than in local map. This removes a memory leak.
This is Acorn 0.3 server release candidate 1. There is one known issue
which must be solved before Acorn 0.3, but everything else should work.
Al