From c0b9424bcf1c7d2fb4d7489398dd4fc0d556e29b Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Wed, 15 Sep 2010 13:31:26 +0200 Subject: [PATCH] added framework for character creation --- apps/openmw/mwmechanics/mechanicsmanager.cpp | 38 +++++++++++++++++++- apps/openmw/mwmechanics/mechanicsmanager.hpp | 4 +++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwmechanics/mechanicsmanager.cpp b/apps/openmw/mwmechanics/mechanicsmanager.cpp index 836a340ad5..73457e2f2f 100644 --- a/apps/openmw/mwmechanics/mechanicsmanager.cpp +++ b/apps/openmw/mwmechanics/mechanicsmanager.cpp @@ -11,10 +11,40 @@ namespace MWMechanics { + void MechanicsManager::buildPlayer() + { + MWWorld::Ptr ptr = mEnvironment.mWorld->getPlayerPos().getPlayer(); + + MWMechanics::CreatureStats& creatureStats = MWWorld::Class::get (ptr).getCreatureStats (ptr); +// MWMechanics::NpcStats& npcStats = MWWorld::Class::get (ptr).getNpcStats (ptr); + + const ESM::NPC *player = ptr.get()->base; + + // reset + creatureStats.mAttributes[0].setBase (player->npdt52.strength); + creatureStats.mAttributes[1].setBase (player->npdt52.intelligence); + creatureStats.mAttributes[2].setBase (player->npdt52.willpower); + creatureStats.mAttributes[3].setBase (player->npdt52.agility); + creatureStats.mAttributes[4].setBase (player->npdt52.speed); + creatureStats.mAttributes[5].setBase (player->npdt52.endurance); + creatureStats.mAttributes[6].setBase (player->npdt52.personality); + creatureStats.mAttributes[7].setBase (player->npdt52.luck); + + + // race + + // birthsign + + // class + + // calculate dynamic stats + + } + MechanicsManager::MechanicsManager (MWWorld::Environment& environment) : mEnvironment (environment), mSetName (true) { - + buildPlayer(); } void MechanicsManager::addActor (const MWWorld::Ptr& ptr) @@ -100,20 +130,26 @@ namespace MWMechanics void MechanicsManager::setPlayerRace (const std::string& race, bool male) { + + buildPlayer(); } void MechanicsManager::setPlayerBirthsign (const std::string& id) { + + buildPlayer(); } void MechanicsManager::setPlayerClass (const std::string& id) { + buildPlayer(); } void MechanicsManager::setPlayerClass (const ESM::Class& class_) { + buildPlayer(); } } diff --git a/apps/openmw/mwmechanics/mechanicsmanager.hpp b/apps/openmw/mwmechanics/mechanicsmanager.hpp index fffc0611f8..94592dcc80 100644 --- a/apps/openmw/mwmechanics/mechanicsmanager.hpp +++ b/apps/openmw/mwmechanics/mechanicsmanager.hpp @@ -22,6 +22,10 @@ namespace MWMechanics CreatureStats mWatchedCreature; bool mSetName; + void buildPlayer(); + ///< build player according to stored class/race/birthsign information. Will + /// default to the values of the ESM::NPC object, if no explicit information is given. + public: MechanicsManager (MWWorld::Environment& environment);