* rulesets/ActivePropertyFactory.h,
rulesets/ActivePropertyFactory_impl.h: Add a new type of property
builder than can install multiple operation handlers.
* server/CorePropertyManager.cpp: Add a new active dynamic property
"biomass" for things which can be eaten, which handles the Eat
operation.
* rulesets/Food.cpp, rulesets/Food.h: Remove the old Eat operation
handler.
* data/basic.xml, data/mason.xml: Give all the food entity rules
some biomass.
* rulesets/ActivePropertyFactory_impl.h: Correct the header guard
comments.
* rulesets/SolidProperty.cpp, rulesets/SolidProperty.h: New property
to handler whether an entities bbox is solid or not.
* rulesets/EntityPropertyFactory.cpp, rulesets/EntityPropertyFactory.h,
rulesets/EntityPropertyFactory_impl.h: New property factory
for properties the contructor of which takes an entity pointer of
the owning entity.
* server/CorePropertyManager.cpp: Install the SOLID property on demand.
* data/basic.xml: Make area entities non-solid by default, so you don't
collide with them.
* server/CorePropertyManager.cpp: Fix the creation of entities
as a result of the decays property so they don't get velocity
and bbox from the entity that spawned them.
* common/Property.cpp: Add some specialisations that are useful
to cover in the tests, even though we are not using them in
the server yet.
* common/inheritance.h: Provide an accessor for the dictionary of
class objects for testing purposes.
* rulesets/AreaProperty.cpp: Use Map() rather than isMap() once we
have already tested it.
* rulesets/Entity.cpp: Remove some debug output.
* server/CorePropertyManager.cpp: Remove some debug output.
* tests/PropertyExerciser.h, tests/PropertyExerciser.cpp: Fill out
the functionality of the property tester. Add functions to get
random values. Use vector for value storage to make it easier
to generate the random values.
* tests/AllPropertytest.cpp: Cover all the property classes we can
test.
* tests/Makefile.am: Add mercator libraries to the property test,
as we are now testing the terrain property.
* server/CorePropertyManager.cpp: Modify DECAYS Delete handler so
that the parent entity handles the creation of entities that
have resulted from the decay.
* rulesets/Character.cpp: Call Entity::operation() from operation()
to ensure operation handlers are called, and all future
modifications get picked up too.
* data/basic.xml, data/mason.xml: Add a DECAYS property leaving a
skull to all humanoid classes.
* common/types.h: Add an entity pointer to the handler function
pointer arguments.
* rulesets/ActivePropertyFactory_impl.h: Fix the guard comment.
* rulesets/Character.cpp: Remove debugging output.
* rulesets/Entity.cpp: Fix new property code so it now sets the
value. Improve the debug reporting when dealing with op handlers.
* rulesets/mason/define_world.py: Test the decays property.
* server/CorePropertyManager.cpp: Add a DECAYS property and a
test handler for it.
* server/CorePropertyManager.cpp: Get rid of a warning about a missing
return value.
* tests/AtlasFileLoadertest.cpp: Fix a warning about comparing signed
and unsigned integers.
* rulesets/OutfitProperty.cpp, rulesets/OutfitProperty.h:
Remove the flags constructor argument, as this type of property
doesn't work that way.
* server/CorePropertyManager.cpp: Add OUTFIT property to the
dynamic properties handled by the property manager.
* common/types.h: Add a function pointer type, and related
typedefs for functions which handle an operation.
* rulesets/Entity.cpp, rulesets/Entity.h: Add a map of operation
handlers so that any operation type can be handled by data
defined handlers.
* rulesets/ActivePropertyFactory.cpp, rulesets/ActivePropertyFactory.h,
rulesets/ActivePropertyFactory_impl.h: Add a new type of property
factory, which installs a handler when the property is added to
an entity.
* server/CorePropertyManager.cpp: Test out the new property factory
and handler mechanism with a new property called "attachment".
* man/Makefile.am: Add rules to create man pages for every command,
which refer to the combined pages for all commands.
* man/cyaddrules.1, man/cyconvertrules.1, man/cydumprules.1,
man/cyloadrules.1, man/cypasswd.1: Generate new pages as described
above.
* man/cycmd.sgml: Fix argument name in cycmd man page.
* man/cyclient.1, man/cycmd.1, man/cycmd.sgml, man/cyphesis-tools.1,
man/cyphesis.1: Re-generate existing man pages.
* common/PropertyFactory.h, common/PropertyFactory_impl.h: Pass in
pointer to the entity when creating a new property using the
factory.
* server/CorePropertyManager.cpp: Make sure the entity pointer is
passed to the property factory as required.
* client/ClientPropertyManager.cpp, client/ClientPropertyManager.h:
A new class as a dummy property manager for the client side.
Never creates property objects.
* client/client.cpp: Instantiate the client property manager
during client initialisation.
* server/EntityFactory.cpp: Instatiate the server property manager
during server intialisation.
* common/PropertyManager.h: Add the singletons accessor, and
make the addProperty member return a pointer to the property.
* server/CorePropertyManager.h, server/CorePropertyManager.cpp:
Implement creating properties for server side entity objects.
* rulesets/Entity.cpp: Use the property manager singleton to
create properties if a new attribute is set which is not already
a property, and its also not already a soft attribute.
* common/DynamicProperty.h, common/DynamicProperty_impl.h:
Add a second dynamic property template which can wrap any
property class, not just instances of Property<>.
* server/CorePropertyManager.cpp: Install a property factory for
COORDS, to handle the coordinates in a line.
* common/DynamicProperty.cpp, common/PropertyFactory.cpp: Remove
unnecessary template instanciations.
* common/DynamicProperty.cpp, common/DynamicProperty.h,
common/DynamicProperty_impl.h: New property class for handling
properties or attributes added on the fly which need to store the
value.
* common/PropertyFactory.cpp, common/PropertyFactory_impl.h,
server/CorePropertyManager.cpp: Use DynamicProperty in the
property factories for properties created on the fly.
* configure.ac: Add check for recent gcc versions, and turn of
strict aliasing on versions which have trouble with python
pointer casting.
* common/PropertyFactory_impl.h, server/CorePropertyManager.cpp:
Return safe values from function stubs to get rid of compiler
warnings.
* common/PropertyFactory.cpp, common/PropertyFactory.h,
common/PropertyFactory_impl.h, common/PropertyManager.cpp,
common/PropertyManager.h: Add new classes to automate the
creation of property objects for known property types.
* server/CorePropertyManager.cpp, server/CorePropertyManager.h:
Manager object that will coordinate creating properties
when they are added to entities.