* 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.
* common/const.cpp, common/const.h: Make consts modifiable in
the debug build.
* common/op_switch.h, rulesets/Character.cpp, rulesets/Character.h:
Fix missing logout op in op switchers.
* server/Account.cpp, server/Connection.cpp: Handle logouts
a bit differently, and return the info response process
expects.
* server/CommClient.cpp: Set connection id to client ip and port.
* server/CommServer.cpp: Tighten up the way eof is handled.
* server/ServerRouting.cpp: Set lobby id.
* 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.
* 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.
* client/CommClient.cpp, client/ClientConnection.cpp, tools/cycmd.cpp:
Ensure clients use username in login ops.
* common/BaseEntity.cpp, common/op_switch.h, rulesets/BaseMind.cpp:
Modify the way op switchers work so they can be used for functions
that return any type.
* rulesets/Character.cpp, rulesets/Character.h: Re-write world2mind
layer so that rather than copying ops that are to be sent to
the mind, the w2m functions returning a flag indicating whether
the op should be passed to the mind. Made w2m and mind op handlers
final, as they are never overridden.
* rulesets/Creator.cpp: Correct comments.
* rulesets/MemMap.cpp: Add comments clarifying behavoir, and remove
old pseudo-code.
* server/Account.cpp, server/Account.h: Ensure that an accounts
character dictionary only ever contains characters. Other entities
that the account chooses to create will no be stored here. Add
function to be called at login time to make sure that characters
stored here are still around.
* server/Connection.cpp, server/Connection.h, server/ExternalMind.cpp,
server/ExternalMind.h: When external mind of a character is
destroyed, ensure that the character is removed from the
connection's object reference store.
* server/Account.cpp, server/Connection.cpp: Switched to using
USERNAME of accounts rather that ID for login and account creation.
Toughened up the connection code, so invalid login/create ops
are handled.
* server/Connection.h: Removed unused getObject method.
* rulesets/Character.cpp, rulesets/Character.h: Get rid of
inefficiency handling ops from internal and external mind. Fix
leak of some ops.
* common/BaseWorld.h, server/WorldRouter.cpp, server/WorldRouter.h:
Add method for getting a new serialno.
* rulesets/Thing.cpp, rulesets/Thing.h, server/WorldRouter.cpp:
Set refno on ops as they come back from entities. Set serialnos
on same ops at the same time, but do not set serialnos
on ops that come in from elsewhere, as those are now handled at
source.
* rulesets/Creator.cpp, rulesets/Character.cpp:
Ensure that ops from external client preserve their serialno,
and assign new serialnos to other ops created at the same time.
* modules/Location.cpp, modules/Location.h, physics/BBox.h,
physics/Vector3D.h, rulesets/Character.cpp, rulesets/Entity.cpp,
rulesets/MemMap.cpp, rulesets/Movement.cpp, rulesets/Pedestrian.cpp,
rulesets/Py_BBox.cpp, rulesets/Py_Location.cpp,
server/Account.cpp, server/WorldRouter.cpp:
Get rid of operator bool() in vector and related classes,
so that errors are less likely to emerge in code. Make use
of Vector3D::isZero() where apropriate.
* 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.
* 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().
* rulesets/Line.h, rulesets/Line.cpp, rulesets/Area.h,
rulesets/Area.cpp, server/EntityFactory.cpp: Added stub
base classes for new geometric entities.
* server/ServerRouting.cpp, server/Lobby.h, server/Lobby.cpp,
server/Connection.cpp: Fleshed out lobby functionality,
so that accounts/connections are no longer responsible
for managing their own appearance and disappearance.
* server/Account.cpp: Send info of logout.
* 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/WorldRouter.h, server/WorldRouter.cpp, server/EntityFactory.h,
server/Account.h, server/Account.cpp, common/BaseWorld.h:
Clean up interface so that entities are passed around more simply.
* server/EntityFactory.cpp:
Get rid of redundant code, and ensure that all classes, even
undefined ones, have a type info node.
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>
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>
* server/Account.cpp: Added handling of private chat.
* physics/Vector3D.h: Added more operators for efficient arithmetic
with vectors.
* Added basis for mason ruleset.
Al Riddoch <alriddoch@zepler.org>
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>
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>
have a loc attribute indicating what room they take place in.
* server/Connection.cpp: Added support for OOG appearance and
disappearance ops.
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>
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>
objects.
* modules/Location.cpp: Added bounding median to attributes sent
using Atlas.
* common/BaseEntity.cpp: Always set the id on an entity.
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>
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>
* rulesets/acorn/world/objects/buildings/Inn2.py: Fix walk bounding
box.
* acorn.vconf: Added normal square brown tent.
Al Riddoch <alriddoch@zepler.org>
arguments now make more sense, the usage info is correct,
and works, and the code should be more portable.
* server/server.cpp, rulesets/Pedestrian.cpp: Shifted output over
to debug only.
* server/Account.cpp: Added in a hack which gives characters
some money on startup.
* modules/DateTime.cpp: Hardcoded Acorn 1:3 time.
* common/const.h: Increased sight range to be closer to the client
view size.
* client/world/objects/Thing.py: Tweak so that server side money
creation does not crash client.
* client/define_world.py: Move warriors to be spead around the
inn courtyard.
* cyphesis.vconf: Enable metaserver by default, and automatic
loading of world state from db at startup.
Al Riddoch <alriddoch@zepler.org>
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>
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>
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.
* 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>
* */*: 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
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
* 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
and shifting code around to optimise it.
* Heavy use of inlining to improve code performance.
* Added global exception handler to catch exceptions while processing
operations.
Al
off using debug flags.
* Added halt_time, which is number of seconds server should run before
it exits.
* Cleaned a bunch if the remaining memory leaks.
* Cleaned up the way time is handled.
* More tweaks to Python code and API to get Acorn working.
* Inlined some methods into the class definitions, for performance.
* Updated movement code to sort out setting mode properlly, and
deal with stuttering NPC movement.
This is quite a big commit, and most of Acorn now works. Performance seems
to be good too.