* rulesets/Makefile.am: Add ArithmeticFactory to the build in this
directory.
* data/characters.xml: Add test statistics to the class.
* rulesets/StatisticsProperty.cpp, rulesets/StatisticsProperty.h:
Add an install method which creates a script instance.
* rulesets/mason/world/statistics/Statistics.py: Make the reference
to the owner optional.
* server/CorePropertyManager.cpp: Add "statistics" to the factory.
* server/Makefile.am, server/ArithmeticFactory.cpp,
server/ArithmeticFactory.h: Remove unused ArithmeticFactory code
from the build.
* Doxyfile, Makefile.am, configure.ac, index.dox,
data/architecture.dox, dox/Makefile.am, dox/architecture.dox,
dox/index.dox: Move the non-embedded documentation into its
own directory to keep the root a bit cleaner.
* data/basic.xml, data/characters.xml, data/mason.xml: Add tick
properties to a bunch of entity classes so they no longer need
a setup operation to get them going.
* rulesets/mason/world/objects/Weather.py,
rulesets/mason/world/objects/elements/Fire.py,
rulesets/mason/world/objects/plants/seeds/Apple.py: Remove setup
handlers from a bunch of scripts as it is now handled by
properties.
* data/buildings.xml: Add setup property to entity classes which
really need a setup op at startup.
* client/BaseClient.cpp: Send a look when creating the avatar, so
that notifications get back without the need for a special case.
* common/op_switch.h, rulesets/Creator.cpp, rulesets/Entity.cpp,
rulesets/Entity.h, server/WorldRouter.cpp:
Remove the setup operation sent to all entities on startup by
default. Get rid of some special cases that depended on it.
* rulesets/InternalProperties.cpp, rulesets/InternalProperties.h:
Make the tick property schedule the operation on apply(), and
use the property value as the time to schedule it.
* data/animals.xml, data/characters.xml: Make "mobile" the base class
for everything that has mind. Add a default mind class property,
and a tick class property.
* rulesets/Plant.cpp, rulesets/Plant.h, data/plants.xml:
Add a tick class property to the base class for trees, and
remove the setup handler from the core base class as it is no
longer needed.
* data/characters.xml, data/mason.xml, data/terrain.xml,
rulesets/mason/define_world.py: Remove instance attribute values
in favor of class defaults for stake.
* data/plants.xml, rulesets/Plant.cpp, rulesets/Plant.h: Remove the
last of the hard coded properties from Plant. Replace with soft
class properties in the data.
* server/ScriptFactory.cpp: Simplify way the name of a class
is determined by removing the hack to upercase the type name.
* server/EntityFactory.cpp: Break python type name on the last
. making the name of the class independant of the Atlas type.
* data/basic.xml, data/buildings.xml, data/characters.xml,
data/clothing.xml, data/mason.xml, data/plants.xml,
data/tools.xml, data/weapons.xml, data/werewolf.xml: Modify all
python type names in the classes to include the name of the class
explicitly.
* data/devices.xml: Add a second type of operation to the example
device.
* rulesets/Character.cpp: Sort out the fixme so non-default actions
can be specified when actuating devices.
* rulesets/basic/mind/goals/common/misc_goal.py: Clean up the
actuation testing goal.
* data/operations.xml: Add an op definition for "actuate" to be used
for interacting with devices and machines.
* rulesets/Character.cpp, rulesets/Character.h: Mock up the code for
processing actuate operations from the client or mind.
* data/animals.xml: Give all the animals BIOMASS.
* data/characters.xml: Add mass to some character classes that were
missing it.
* rulesets/Character.cpp, rulesets/Character.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/Plant.cpp, rulesets/Statistics.cpp,
rulesets/World.cpp, server/CorePropertyManager.cpp,
server/Persistor.cpp, server/Persistor_impl.h,
server/Restorer_impl.h: Remove the hard coded mass property from
Entity.
* rulesets/mason/world/statistics/Statistics.py: Fix scripts which
assume entities will have mass.
* rulesets/mason/world/tasks/Trailblaze.py: Add a new task script
for character defined roads. Work in progress.
* data/tasks.xml, data/tools.xml: Add tool and task classes for
trailblazing.
* data/food.xml, data/basic.xml, data/mason.xml: Move some food types
from basic and mason into their own file.
* data/construction.xml, data/basic.xml: Move a construction type from
basic into the right file.
* data/animals.xml, data/mason.xml: Move all the animal types from
mason into their own rules file.
* data/clothing.xml: Add a couple more overlooked clothing types.
* common/log.cpp, common/log.h: Switch to taking a C++ string reference
rather than a char *, as it is not really an optimisation, and it
makes the code simpler to read and write.
* client/BaseClient.cpp, client/ClientConnection.cpp,
common/AtlasFileLoader.cpp, common/BaseEntity.cpp,
common/Database.cpp, common/globals.cpp, common/id.cpp,
common/inheritance.cpp, common/log.cpp, common/log.h,
rulesets/Character.cpp, rulesets/Creator.cpp, rulesets/Entity.cpp,
rulesets/MemMap.cpp, rulesets/Motion.cpp, rulesets/Pedestrian.cpp,
rulesets/Py_Object.cpp, rulesets/Py_RootEntity.cpp,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Python_API.cpp, rulesets/Thing.cpp, server/Account.cpp,
server/Admin.cpp, server/ArithmeticFactory.cpp,
server/CommClient.cpp, server/CommListener.cpp,
server/CommMDNSPublisher.cpp, server/CommServer.cpp,
server/Connection.cpp, server/EntityFactory.cpp,
server/Persistance.cpp, server/Restoration.cpp,
server/ScriptFactory.cpp, server/TaskFactory.cpp,
server/WorldRouter.cpp, server/server.cpp: Convert over to using
new API correctly.
* data/mason.xml: Add biomass and transient to fircone, making its
script obsolete:
* server/CorePropertyManager.cpp: Add a new active property handler,
that schedules the destruction of an entity after a timeout.
* data/mason.xml: Add biomass and transient properties to Acorn,
making most of the script obsolete.
* rulesets/mason/world/objects/plants/seeds/Acorn.py: Remove handlers
for eating and handling decay from the script, now that this
functionality is taken by properties.
* server/EntityFactory.cpp: Complete the code that populates
operations on a tool based on the task activations in the
ruleset, removing the need for world builders to synchronise
this data manually.
* data/basic.xml, data/mason.xml: Remove operations from all tools
that only use them for activating tasks, now that this is handled
automatically.
* rulesets/mason/world/tasks/Cultivate.py: Add new task script for
cultivating plants from seed.
* data/mason.xml: Add task class for cultivate. Add GERMINATES
property to all seed classes. Remove germinate operation definition
and trowel script.
* data/basic.xml: Provide entirely data driven definitions for Cut
and Chop ops.
* common/Chop.h, common/Cut.h, common/Makefile.am, common/custom.cpp,
common/operations.cpp, common/types.h, tests/Makefile.am,
tests/Tasktest.cpp, tests/allOperations.h,
tests/inheritancetest.cpp: Remove the hard coded Cut and Chop op
definitions completely from the build.
* data/basic.xml: Strip entity scripts off pickaxe and shovel.
* rulesets/World.h, rulesets/World.cpp: Remove handlers used to
to implement pickaxe and shovel, which are now handled as tasks.
* common/Delve.h, common/Dig.h, common/Mow.h, common/custom.cpp,
common/operations.cpp: Remove a bunch of operations from the build
which were only used to do things in an over simple hard coded way.
* data/mason.xml: New task class for shovel.
* rulesets/mason/world/tasks/Dig.py: Add new task script for using
a shovel to get piles of material like sand and mud from the ground.
* data/mason.xml: New task class for pickaxe. Remove useless script
from rope.
* rulesets/mason/world/tasks/Delve.py: Add new task for using a
pickaxe to get rock from the terrain.
* data/basic.xml: Remove the script for scythe as it is no longer
used.
* rulesets/World.cpp: Remove mow operation from World, as this is now
handled by a task.