* rulesets/Character.cpp, rulesets/Character.h, rulesets/attributes.h,
server/Persistor.cpp, server/Persistor_impl.h, server/Restorer.cpp;
Make right_hand_wield a real Atlas property, and add it to the
database code.
* rulesets/Character.cpp: When wielding a tool, set right_hand_wield
correctly to notify clients.
* common/Property.cpp, rulesets/EntityProperties.cpp,
server/Persistor.cpp, server/Restorer.cpp, tools/cycmd.cpp:
Tweak template code to work with stricter standard compliance
of gcc 4.
* rulesets/Character.h, rulesets/Character.cpp: static const
members need to be defined in the .cpp to satisfy all compilers.
* 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.
* server/Restoration.cpp: Send restored entities a setup op, so the
AI gets initialised as if the entity had just been created.
* Clean up member variable names.
* rulesets/mason/mind/SkelMind.py: Get skeleton to recognise
settlers.
* 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.
* common/Database.cpp, common/Database.h: Add functions for removing
relation rows. Modify entity select method to handle an empty loc
correctly.
* rulesets/Thing.cpp: Correct indenting.
* rulesets/World.cpp: Trigger update in SetOperation() correctly.
* server/Account.cpp, server/Persistance.cpp, server/Persistance.h:
Inform Persistance modules when the account loses a character, so
this change is reflected in the database.
* server/Persistor.cpp: Move comments into the correct place.
* server/Restoration.cpp, server/Restorer.cpp, server/Restorer.h,
server/Restorer_impl.h: Persist and restore the world entity
attributes. Remove redundant argument from Restorer::populate().
* server/Persistor.cpp, server/Persistor.h, server/Persistor_impl.h:
Separate the insertion of a new row from connecting and entities
signals to the persistor, and put them into different methods.
Modify constructor to allow subsidiary persistor objects to
be constructed, which don't try to register with the database.
* server/Restorer.cpp, server/Restorer.h, server/Restorer_impl.h:
Each Restorer template instance has a static Persistor
which it connects up to entities as it restores them, ensuring
that changes to restored entities are persisted.
* common/Database.cpp: Don't make update requests if no columns
are given to be updated.
* common/Database.cpp, common/Database.h: Add new method to select
all rows in a given class table with a given location.
* rulesets/Entity.cpp, rulesets/Entity.h: Make update_flags
public.
* rulesets/Entity.cpp, rulesets/Thing.cpp, rulesets/attributes.h,
server/Persistor.cpp, server/Persistor_impl.h,
server/WorldRouter.cpp: Add new cont column to entity tables which
is zero if the entity has no contained entities.
* server/Restoration.cpp, server/Restoration.h, server/Restorer.cpp,
server/Restorer.h, server/Restorer_impl.h:
Modify restorers so they now use a database result iterator to
indicate the row they should restore from.
* server/Restoration.cpp: Implement new way of restoring world from
database using new function to fetch multiple complete entities
from database at the same time. Massive speedup.
* 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.
* server/WorldRouter.cpp, server/Admin.cpp:
Use consts::rootWorldId correctly.
* server/Persistor.cpp, server/PersistantThingFactory.cpp,
server/PersistantThingFactory.h, server/EntityFactory.h,
server/EntityFactory.cpp: Add World specialisation of Persistor
so that row in entity database is maintained, but not created.
* common/Database.h: Ensure iterator has != as well as ==.
* common/Database.cpp: Check that tuples have been returned
in response to a select.
* server/Restoration.cpp, server/Restoration.h,
server/Restorer.cpp: Restoration code now iterates over the
contents of the database, but does not attempt to actually
restore it yet.