moved CellRefList into a separate file

This commit is contained in:
Marc Zinnschlag 2014-02-23 20:11:05 +01:00
parent f220867144
commit 367919200f
67 changed files with 295 additions and 111 deletions

View file

@ -57,7 +57,7 @@ add_openmw_dir (mwworld
cells localscripts customdata weather inventorystore ptr actionopen actionread cells localscripts customdata weather inventorystore ptr actionopen actionread
actionequip timestamp actionalchemy cellstore actionapply actioneat actionequip timestamp actionalchemy cellstore actionapply actioneat
esmstore store recordcmp fallback actionrepair actionsoulgem livecellref actiondoor esmstore store recordcmp fallback actionrepair actionsoulgem livecellref actiondoor
contentloader esmloader omwloader actiontrap contentloader esmloader omwloader actiontrap cellreflist
) )
add_openmw_dir (mwclass add_openmw_dir (mwclass

View file

@ -39,6 +39,12 @@ namespace ESM
struct Spell; struct Spell;
struct NPC; struct NPC;
struct CellId; struct CellId;
struct Armor;
struct Weapon;
struct Clothing;
struct Enchantment;
struct Book;
struct EffectList;
} }
namespace MWRender namespace MWRender

View file

@ -22,6 +22,7 @@
#include "../mwworld/customdata.hpp" #include "../mwworld/customdata.hpp"
#include "../mwworld/containerstore.hpp" #include "../mwworld/containerstore.hpp"
#include "../mwworld/physicssystem.hpp" #include "../mwworld/physicssystem.hpp"
#include "../mwworld/cellstore.hpp"
#include "../mwrender/renderinginterface.hpp" #include "../mwrender/renderinginterface.hpp"
#include "../mwrender/actors.hpp" #include "../mwrender/actors.hpp"

View file

@ -3,6 +3,11 @@
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
namespace ESM
{
struct GameSetting;
}
namespace MWClass namespace MWClass
{ {
class Creature : public MWWorld::Class class Creature : public MWWorld::Class

View file

@ -1,6 +1,8 @@
#ifndef GAME_MWCLASS_DOOR_H #ifndef GAME_MWCLASS_DOOR_H
#define GAME_MWCLASS_DOOR_H #define GAME_MWCLASS_DOOR_H
#include <components/esm/loaddoor.hpp>
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
namespace MWClass namespace MWClass

View file

@ -30,6 +30,7 @@
#include "../mwworld/inventorystore.hpp" #include "../mwworld/inventorystore.hpp"
#include "../mwworld/customdata.hpp" #include "../mwworld/customdata.hpp"
#include "../mwworld/physicssystem.hpp" #include "../mwworld/physicssystem.hpp"
#include "../mwworld/cellstore.hpp"
#include "../mwrender/actors.hpp" #include "../mwrender/actors.hpp"
#include "../mwrender/renderinginterface.hpp" #include "../mwrender/renderinginterface.hpp"

View file

@ -5,6 +5,7 @@
#include "../mwworld/ptr.hpp" #include "../mwworld/ptr.hpp"
#include "../mwworld/physicssystem.hpp" #include "../mwworld/physicssystem.hpp"
#include "../mwworld/cellstore.hpp"
#include "../mwrender/objects.hpp" #include "../mwrender/objects.hpp"
#include "../mwrender/renderinginterface.hpp" #include "../mwrender/renderinginterface.hpp"
@ -25,7 +26,7 @@ namespace MWClass
if(!model.empty()) if(!model.empty())
physics.addObject(ptr); physics.addObject(ptr);
} }
std::string Static::getModel(const MWWorld::Ptr &ptr) const std::string Static::getModel(const MWWorld::Ptr &ptr) const
{ {
MWWorld::LiveCellRef<ESM::Static> *ref = MWWorld::LiveCellRef<ESM::Static> *ref =

View file

@ -13,6 +13,11 @@
#include "../mwscript/compilercontext.hpp" #include "../mwscript/compilercontext.hpp"
namespace ESM
{
struct Dialogue;
}
namespace MWDialogue namespace MWDialogue
{ {
class DialogueManager : public MWBase::DialogueManager class DialogueManager : public MWBase::DialogueManager

View file

@ -8,8 +8,9 @@
#include "../mwbase/dialoguemanager.hpp" #include "../mwbase/dialoguemanager.hpp"
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/containerstore.hpp"
#include "../mwworld/inventorystore.hpp" #include "../mwworld/inventorystore.hpp"
#include "../mwworld/cellstore.hpp"
#include "../mwworld/esmstore.hpp"
#include "../mwmechanics/npcstats.hpp" #include "../mwmechanics/npcstats.hpp"
#include "../mwmechanics/creaturestats.hpp" #include "../mwmechanics/creaturestats.hpp"

View file

@ -2,6 +2,8 @@
#include <boost/lexical_cast.hpp> #include <boost/lexical_cast.hpp>
#include <components/esm/loadbook.hpp>
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwbase/soundmanager.hpp" #include "../mwbase/soundmanager.hpp"
@ -169,7 +171,7 @@ namespace MWGui
} }
++i; ++i;
} }
//If it is the last page, hide the button "Next Page" //If it is the last page, hide the button "Next Page"
if ( (mCurrentPage+1)*2 == mPages.size() if ( (mCurrentPage+1)*2 == mPages.size()
|| (mCurrentPage+1)*2 == mPages.size() + 1) || (mCurrentPage+1)*2 == mPages.size() + 1)
@ -194,7 +196,7 @@ namespace MWGui
if (button->getAlign().isRight()) if (button->getAlign().isRight())
button->setPosition(button->getPosition() + MyGUI::IntPoint(diff.width,0)); button->setPosition(button->getPosition() + MyGUI::IntPoint(diff.width,0));
} }
void BookWindow::nextPage() void BookWindow::nextPage()
{ {
if ((mCurrentPage+1)*2 < mPages.size()) if ((mCurrentPage+1)*2 < mPages.size())

View file

@ -1,6 +1,9 @@
#ifndef CHARACTER_CREATION_HPP #ifndef CHARACTER_CREATION_HPP
#define CHARACTER_CREATION_HPP #define CHARACTER_CREATION_HPP
#include <components/esm/loadskil.hpp>
#include <components/esm/loadclas.hpp>
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwbase/windowmanager.hpp" #include "../mwbase/windowmanager.hpp"

View file

@ -8,6 +8,8 @@
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/windowmanager.hpp" #include "../mwbase/windowmanager.hpp"
#include "../mwworld/esmstore.hpp"
namespace MWGui namespace MWGui
{ {
class ConsoleInterpreterContext : public MWScript::InterpreterContext class ConsoleInterpreterContext : public MWScript::InterpreterContext

View file

@ -8,6 +8,8 @@
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/fallback.hpp" #include "../mwworld/fallback.hpp"
#include "../mwworld/esmstore.hpp"
#include "../mwworld/cellstore.hpp"
#include "../mwmechanics/creaturestats.hpp" #include "../mwmechanics/creaturestats.hpp"
#include "../mwmechanics/npcstats.hpp" #include "../mwmechanics/npcstats.hpp"

View file

@ -7,7 +7,9 @@
#include "../mwbase/windowmanager.hpp" #include "../mwbase/windowmanager.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwworld/player.hpp" #include "../mwworld/player.hpp"
#include "../mwworld/cellstore.hpp"
#include "../mwrender/globalmap.hpp" #include "../mwrender/globalmap.hpp"

View file

@ -1,5 +1,7 @@
#include "merchantrepair.hpp" #include "merchantrepair.hpp"
#include <components/esm/loadgmst.hpp>
#include <boost/lexical_cast.hpp> #include <boost/lexical_cast.hpp>
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
@ -10,6 +12,7 @@
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/containerstore.hpp" #include "../mwworld/containerstore.hpp"
#include "../mwworld/esmstore.hpp"
namespace MWGui namespace MWGui
{ {

View file

@ -1,5 +1,7 @@
#include "scrollwindow.hpp" #include "scrollwindow.hpp"
#include <components/esm/loadbook.hpp>
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwbase/soundmanager.hpp" #include "../mwbase/soundmanager.hpp"

View file

@ -1,5 +1,18 @@
#include "sortfilteritemmodel.hpp" #include "sortfilteritemmodel.hpp"
#include <components/esm/loadalch.hpp>
#include <components/esm/loadappa.hpp>
#include <components/esm/loadarmo.hpp>
#include <components/esm/loadbook.hpp>
#include <components/esm/loadclot.hpp>
#include <components/esm/loadingr.hpp>
#include <components/esm/loadlock.hpp>
#include <components/esm/loadligh.hpp>
#include <components/esm/loadmisc.hpp>
#include <components/esm/loadprob.hpp>
#include <components/esm/loadrepa.hpp>
#include <components/esm/loadweap.hpp>
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
namespace namespace

View file

@ -10,6 +10,8 @@
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/containerstore.hpp" #include "../mwworld/containerstore.hpp"
#include "../mwworld/containerstore.hpp"
#include "../mwworld/esmstore.hpp"
#include "../mwmechanics/creaturestats.hpp" #include "../mwmechanics/creaturestats.hpp"

View file

@ -1,5 +1,7 @@
#include "tradeitemmodel.hpp" #include "tradeitemmodel.hpp"
#include <components/misc/stringops.hpp>
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/containerstore.hpp" #include "../mwworld/containerstore.hpp"
#include "../mwworld/inventorystore.hpp" #include "../mwworld/inventorystore.hpp"

View file

@ -13,6 +13,8 @@
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/containerstore.hpp" #include "../mwworld/containerstore.hpp"
#include "../mwworld/esmstore.hpp"
#include "../mwworld/cellstore.hpp"
namespace MWGui namespace MWGui
{ {

View file

@ -10,6 +10,7 @@
#include "../mwbase/mechanicsmanager.hpp" #include "../mwbase/mechanicsmanager.hpp"
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/cellstore.hpp"
#include "../mwmechanics/creaturestats.hpp" #include "../mwmechanics/creaturestats.hpp"
#include "../mwmechanics/npcstats.hpp" #include "../mwmechanics/npcstats.hpp"

View file

@ -18,6 +18,7 @@
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/player.hpp" #include "../mwworld/player.hpp"
#include "../mwworld/cellstore.hpp"
#include "console.hpp" #include "console.hpp"
#include "journalwindow.hpp" #include "journalwindow.hpp"

View file

@ -15,13 +15,16 @@
#include "../engine.hpp" #include "../engine.hpp"
#include "../mwworld/player.hpp"
#include "../mwworld/class.hpp"
#include "../mwworld/inventorystore.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwbase/windowmanager.hpp" #include "../mwbase/windowmanager.hpp"
#include "../mwbase/soundmanager.hpp" #include "../mwbase/soundmanager.hpp"
#include "../mwbase/statemanager.hpp" #include "../mwbase/statemanager.hpp"
#include "../mwworld/player.hpp"
#include "../mwworld/class.hpp"
#include "../mwworld/inventorystore.hpp"
#include "../mwworld/esmstore.hpp"
#include "../mwmechanics/creaturestats.hpp" #include "../mwmechanics/creaturestats.hpp"
using namespace ICS; using namespace ICS;
@ -169,7 +172,7 @@ namespace MWInput
switch (action) switch (action)
{ {
case A_GameMenu: case A_GameMenu:
if(!(MWBase::Environment::get().getStateManager()->getState() != MWBase::StateManager::State_Running if(!(MWBase::Environment::get().getStateManager()->getState() != MWBase::StateManager::State_Running
&& MWBase::Environment::get().getWindowManager()->getMode() == MWGui::GM_MainMenu)) && MWBase::Environment::get().getWindowManager()->getMode() == MWGui::GM_MainMenu))
toggleMainMenu (); toggleMainMenu ();
break; break;
@ -283,7 +286,7 @@ namespace MWInput
// Disable movement in Gui mode // Disable movement in Gui mode
if (MWBase::Environment::get().getWindowManager()->isGuiMode() if (MWBase::Environment::get().getWindowManager()->isGuiMode()
|| MWBase::Environment::get().getStateManager()->getState() != MWBase::StateManager::State_Running) || MWBase::Environment::get().getStateManager()->getState() != MWBase::StateManager::State_Running)
return; return;

View file

@ -1,8 +1,14 @@
#include "activespells.hpp" #include "activespells.hpp"
#include <components/misc/stringops.hpp>
#include <components/esm/loadmgef.hpp>
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwworld/esmstore.hpp"
namespace MWMechanics namespace MWMechanics
{ {
void ActiveSpells::update() const void ActiveSpells::update() const
@ -40,7 +46,7 @@ namespace MWMechanics
void ActiveSpells::rebuildEffects() const void ActiveSpells::rebuildEffects() const
{ {
MWWorld::TimeStamp now = MWBase::Environment::get().getWorld()->getTimeStamp(); MWWorld::TimeStamp now = MWBase::Environment::get().getWorld()->getTimeStamp();
mEffects = MagicEffects(); mEffects = MagicEffects();
for (TIterator iter (begin()); iter!=end(); ++iter) for (TIterator iter (begin()); iter!=end(); ++iter)
@ -59,7 +65,7 @@ namespace MWMechanics
if (end>now) if (end>now)
mEffects.add(effectIt->mKey, MWMechanics::EffectParam(effectIt->mMagnitude)); mEffects.add(effectIt->mKey, MWMechanics::EffectParam(effectIt->mMagnitude));
} }
} }
} }
ActiveSpells::ActiveSpells() ActiveSpells::ActiveSpells()

View file

@ -1,14 +1,14 @@
#include "aiactivate.hpp" #include "aiactivate.hpp"
#include <iostream>
#include "movement.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/action.hpp" #include "../mwworld/action.hpp"
#include "../mwworld/cellstore.hpp"
#include "steering.hpp" #include "steering.hpp"
#include "movement.hpp"
namespace namespace
{ {

View file

@ -7,6 +7,8 @@
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/timestamp.hpp" #include "../mwworld/timestamp.hpp"
#include "../mwworld/inventorystore.hpp" #include "../mwworld/inventorystore.hpp"
#include "../mwworld/esmstore.hpp"
#include "../mwworld/cellstore.hpp"
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/mechanicsmanager.hpp" #include "../mwbase/mechanicsmanager.hpp"

View file

@ -1,14 +1,15 @@
#include "aiescort.hpp" #include "aiescort.hpp"
#include "movement.hpp"
#include "../mwworld/class.hpp"
#include "../mwworld/timestamp.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/mechanicsmanager.hpp" #include "../mwbase/mechanicsmanager.hpp"
#include "../mwworld/cellstore.hpp"
#include "../mwworld/class.hpp"
#include "../mwworld/timestamp.hpp"
#include "steering.hpp" #include "steering.hpp"
#include "movement.hpp"
namespace namespace
{ {

View file

@ -1,12 +1,14 @@
#include "aifollow.hpp" #include "aifollow.hpp"
#include <iostream>
#include "../mwbase/world.hpp"
#include "../mwbase/environment.hpp"
#include "../mwworld/class.hpp"
#include "movement.hpp"
#include <OgreMath.h> #include <OgreMath.h>
#include "../mwbase/world.hpp"
#include "../mwbase/environment.hpp"
#include "../mwworld/class.hpp"
#include "../mwworld/cellstore.hpp"
#include "movement.hpp"
#include "steering.hpp" #include "steering.hpp"
MWMechanics::AiFollow::AiFollow(const std::string &actorId,float duration, float x, float y, float z) MWMechanics::AiFollow::AiFollow(const std::string &actorId,float duration, float x, float y, float z)

View file

@ -2,7 +2,9 @@
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/cellstore.hpp"
#include "steering.hpp" #include "steering.hpp"
#include "movement.hpp" #include "movement.hpp"

View file

@ -1,17 +1,19 @@
#include "aiwander.hpp" #include "aiwander.hpp"
#include "movement.hpp" #include <OgreVector3.h>
#include "../mwworld/class.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/mechanicsmanager.hpp" #include "../mwbase/mechanicsmanager.hpp"
#include "../mwbase/dialoguemanager.hpp" #include "../mwbase/dialoguemanager.hpp"
#include "creaturestats.hpp" #include "../mwworld/class.hpp"
#include <OgreVector3.h> #include "../mwworld/esmstore.hpp"
#include "../mwworld/cellstore.hpp"
#include "creaturestats.hpp"
#include "steering.hpp" #include "steering.hpp"
#include "movement.hpp"
namespace namespace
{ {

View file

@ -8,6 +8,11 @@
#include "../mwworld/ptr.hpp" #include "../mwworld/ptr.hpp"
namespace ESM
{
struct Potion;
}
namespace MWMechanics namespace MWMechanics
{ {
struct EffectKey; struct EffectKey;
@ -16,29 +21,29 @@ namespace MWMechanics
class Alchemy class Alchemy
{ {
public: public:
typedef std::vector<MWWorld::Ptr> TToolsContainer; typedef std::vector<MWWorld::Ptr> TToolsContainer;
typedef TToolsContainer::const_iterator TToolsIterator; typedef TToolsContainer::const_iterator TToolsIterator;
typedef std::vector<MWWorld::Ptr> TIngredientsContainer; typedef std::vector<MWWorld::Ptr> TIngredientsContainer;
typedef TIngredientsContainer::const_iterator TIngredientsIterator; typedef TIngredientsContainer::const_iterator TIngredientsIterator;
typedef std::vector<ESM::ENAMstruct> TEffectsContainer; typedef std::vector<ESM::ENAMstruct> TEffectsContainer;
typedef TEffectsContainer::const_iterator TEffectsIterator; typedef TEffectsContainer::const_iterator TEffectsIterator;
enum Result enum Result
{ {
Result_Success, Result_Success,
Result_NoMortarAndPestle, Result_NoMortarAndPestle,
Result_LessThanTwoIngredients, Result_LessThanTwoIngredients,
Result_NoName, Result_NoName,
Result_NoEffects, Result_NoEffects,
Result_RandomFailure Result_RandomFailure
}; };
private: private:
MWWorld::Ptr mAlchemist; MWWorld::Ptr mAlchemist;
TToolsContainer mTools; TToolsContainer mTools;
TIngredientsContainer mIngredients; TIngredientsContainer mIngredients;
@ -51,61 +56,61 @@ namespace MWMechanics
void applyTools (int flags, float& value) const; void applyTools (int flags, float& value) const;
void updateEffects(); void updateEffects();
const ESM::Potion *getRecord() const; const ESM::Potion *getRecord() const;
///< Return existing recrod for created potion (may return 0) ///< Return existing recrod for created potion (may return 0)
void removeIngredients(); void removeIngredients();
///< Remove selected ingredients from alchemist's inventory, cleanup selected ingredients and ///< Remove selected ingredients from alchemist's inventory, cleanup selected ingredients and
/// update effect list accordingly. /// update effect list accordingly.
void addPotion (const std::string& name); void addPotion (const std::string& name);
///< Add a potion to the alchemist's inventory. ///< Add a potion to the alchemist's inventory.
void increaseSkill(); void increaseSkill();
///< Increase alchemist's skill. ///< Increase alchemist's skill.
float getChance() const; float getChance() const;
///< Return chance of success. ///< Return chance of success.
int countIngredients() const; int countIngredients() const;
public: public:
void setAlchemist (const MWWorld::Ptr& npc); void setAlchemist (const MWWorld::Ptr& npc);
///< Set alchemist and configure alchemy setup accordingly. \a npc may be empty to indicate that ///< Set alchemist and configure alchemy setup accordingly. \a npc may be empty to indicate that
/// there is no alchemist (alchemy session has ended). /// there is no alchemist (alchemy session has ended).
TToolsIterator beginTools() const; TToolsIterator beginTools() const;
///< \attention Iterates over tool slots, not over tools. Some of the slots may be empty. ///< \attention Iterates over tool slots, not over tools. Some of the slots may be empty.
TToolsIterator endTools() const; TToolsIterator endTools() const;
TIngredientsIterator beginIngredients() const; TIngredientsIterator beginIngredients() const;
///< \attention Iterates over ingredient slots, not over ingredients. Some of the slots may be empty. ///< \attention Iterates over ingredient slots, not over ingredients. Some of the slots may be empty.
TIngredientsIterator endIngredients() const; TIngredientsIterator endIngredients() const;
void clear(); void clear();
///< Remove alchemist, tools and ingredients. ///< Remove alchemist, tools and ingredients.
int addIngredient (const MWWorld::Ptr& ingredient); int addIngredient (const MWWorld::Ptr& ingredient);
///< Add ingredient into the next free slot. ///< Add ingredient into the next free slot.
/// ///
/// \return Slot index or -1, if adding failed because of no free slot or the ingredient type being /// \return Slot index or -1, if adding failed because of no free slot or the ingredient type being
/// listed already. /// listed already.
void removeIngredient (int index); void removeIngredient (int index);
///< Remove ingredient from slot (calling this function on an empty slot is a no-op). ///< Remove ingredient from slot (calling this function on an empty slot is a no-op).
TEffectsIterator beginEffects() const; TEffectsIterator beginEffects() const;
TEffectsIterator endEffects() const; TEffectsIterator endEffects() const;
std::string getPotionName() const; std::string getPotionName() const;
///< Return the name of the potion that would be created when calling create (if a record for such ///< Return the name of the potion that would be created when calling create (if a record for such
/// a potion already exists) or return an empty string. /// a potion already exists) or return an empty string.
Result create (const std::string& name); Result create (const std::string& name);
///< Try to create a potion from the ingredients, place it in the inventory of the alchemist and ///< Try to create a potion from the ingredients, place it in the inventory of the alchemist and
/// adjust the skills of the alchemist accordingly. /// adjust the skills of the alchemist accordingly.

View file

@ -36,6 +36,7 @@
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/inventorystore.hpp" #include "../mwworld/inventorystore.hpp"
#include "../mwworld/esmstore.hpp"
namespace namespace
{ {
@ -562,7 +563,7 @@ bool CharacterController::updateWeaponState()
getWeaponGroup(weaptype, weapgroup); getWeaponGroup(weaptype, weapgroup);
mAnimation->showWeapons(false); mAnimation->showWeapons(false);
mAnimation->setWeaponGroup(weapgroup); mAnimation->setWeaponGroup(weapgroup);
mAnimation->play(weapgroup, Priority_Weapon, mAnimation->play(weapgroup, Priority_Weapon,
MWRender::Animation::Group_UpperBody, true, MWRender::Animation::Group_UpperBody, true,
1.0f, "equip start", "equip stop", 0.0f, 0); 1.0f, "equip start", "equip stop", 0.0f, 0);
@ -751,7 +752,7 @@ bool CharacterController::updateWeaponState()
MWRender::Animation::Group_UpperBody, false, MWRender::Animation::Group_UpperBody, false,
weapSpeed, mAttackType+" start", mAttackType+" min attack", weapSpeed, mAttackType+" start", mAttackType+" min attack",
0.0f, 0); 0.0f, 0);
mUpperBodyState = UpperCharState_StartToMinAttack; mUpperBodyState = UpperCharState_StartToMinAttack;
} }
} }
@ -855,7 +856,7 @@ bool CharacterController::updateWeaponState()
mUpperBodyState = UpperCharState_WeapEquiped; mUpperBodyState = UpperCharState_WeapEquiped;
//don't allow to continue playing hit animation on UpperBody after actor had attacked during it //don't allow to continue playing hit animation on UpperBody after actor had attacked during it
if(mHitState == CharState_Hit) if(mHitState == CharState_Hit)
{ {
mAnimation->changeGroups(mCurrentHit, MWRender::Animation::Group_LowerBody); mAnimation->changeGroups(mCurrentHit, MWRender::Animation::Group_LowerBody);
//commenting out following 2 lines will give a bit different combat dynamics(slower) //commenting out following 2 lines will give a bit different combat dynamics(slower)
@ -932,7 +933,7 @@ bool CharacterController::updateWeaponState()
weapSpeed, start, stop, 0.0f, 0); weapSpeed, start, stop, 0.0f, 0);
} }
} }
//if playing combat animation and lowerbody is not busy switch to whole body animation //if playing combat animation and lowerbody is not busy switch to whole body animation
if((weaptype != WeapType_None || UpperCharState_UnEquipingWeap) && animPlaying) if((weaptype != WeapType_None || UpperCharState_UnEquipingWeap) && animPlaying)
{ {
@ -1431,7 +1432,7 @@ void CharacterController::updateVisibility()
void CharacterController::determineAttackType() void CharacterController::determineAttackType()
{ {
float * move = mPtr.getClass().getMovementSettings(mPtr).mPosition; float * move = mPtr.getClass().getMovementSettings(mPtr).mPosition;
if(mPtr.getClass().hasInventoryStore(mPtr)) if(mPtr.getClass().hasInventoryStore(mPtr))
{ {
if (move[0] && !move[1]) //sideway if (move[0] && !move[1]) //sideway

View file

@ -10,6 +10,7 @@
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/inventorystore.hpp" #include "../mwworld/inventorystore.hpp"
#include "../mwworld/esmstore.hpp"
#include "../mwbase/windowmanager.hpp" #include "../mwbase/windowmanager.hpp"

View file

@ -6,6 +6,7 @@
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwworld/ptr.hpp" #include "../mwworld/ptr.hpp"
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/esmstore.hpp"
#include "../mwmechanics/spells.hpp" #include "../mwmechanics/spells.hpp"
#include "../mwmechanics/creaturestats.hpp" #include "../mwmechanics/creaturestats.hpp"

View file

@ -1,13 +1,15 @@
#include "pathfinding.hpp" #include "pathfinding.hpp"
#include "../mwbase/world.hpp" #include <map>
#include "../mwbase/environment.hpp"
#include "OgreMath.h" #include "OgreMath.h"
#include "OgreVector3.h" #include "OgreVector3.h"
#include "../mwbase/world.hpp"
#include "../mwbase/environment.hpp"
#include <map> #include "../mwworld/esmstore.hpp"
#include "../mwworld/cellstore.hpp"
namespace namespace
{ {

View file

@ -1,8 +1,11 @@
#include "pickpocket.hpp" #include "pickpocket.hpp"
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/esmstore.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "npcstats.hpp" #include "npcstats.hpp"
namespace MWMechanics namespace MWMechanics

View file

@ -10,6 +10,7 @@
#include "../mwworld/containerstore.hpp" #include "../mwworld/containerstore.hpp"
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/esmstore.hpp"
#include "../mwmechanics/creaturestats.hpp" #include "../mwmechanics/creaturestats.hpp"
#include "../mwmechanics/npcstats.hpp" #include "../mwmechanics/npcstats.hpp"

View file

@ -2,6 +2,7 @@
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/containerstore.hpp" #include "../mwworld/containerstore.hpp"
#include "../mwworld/esmstore.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"

View file

@ -14,6 +14,7 @@
#include "../mwworld/actionteleport.hpp" #include "../mwworld/actionteleport.hpp"
#include "../mwworld/player.hpp" #include "../mwworld/player.hpp"
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/cellstore.hpp"
#include "../mwrender/animation.hpp" #include "../mwrender/animation.hpp"

View file

@ -5,6 +5,16 @@
#include <OgreVector3.h> #include <OgreVector3.h>
#include <components/esm/loadskil.hpp>
namespace ESM
{
struct Spell;
struct Ingredient;
struct Potion;
struct EffectList;
}
namespace MWMechanics namespace MWMechanics
{ {
class EffectKey; class EffectKey;

View file

@ -4,6 +4,8 @@
#include <map> #include <map>
#include <string> #include <string>
#include <components/misc/stringops.hpp>
#include "../mwworld/ptr.hpp" #include "../mwworld/ptr.hpp"
#include "magiceffects.hpp" #include "magiceffects.hpp"

View file

@ -1,9 +1,11 @@
#include "activatoranimation.hpp" #include "activatoranimation.hpp"
#include "renderconst.hpp" #include <components/esm/loadacti.hpp>
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "renderconst.hpp"
namespace MWRender namespace MWRender
{ {

View file

@ -11,18 +11,26 @@
#include <OgreControllerManager.h> #include <OgreControllerManager.h>
#include <OgreStaticGeometry.h> #include <OgreStaticGeometry.h>
#include <components/esm/loadligh.hpp>
#include <components/esm/loadweap.hpp>
#include <components/esm/loadench.hpp>
#include <components/esm/loadstat.hpp>
#include <libs/openengine/ogre/lights.hpp> #include <libs/openengine/ogre/lights.hpp>
#include <extern/shiny/Main/Factory.hpp>
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/soundmanager.hpp" #include "../mwbase/soundmanager.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include <extern/shiny/Main/Factory.hpp>
#include "../mwmechanics/character.hpp" #include "../mwmechanics/character.hpp"
#include "../mwmechanics/creaturestats.hpp" #include "../mwmechanics/creaturestats.hpp"
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/fallback.hpp" #include "../mwworld/fallback.hpp"
#include "../mwworld/cellstore.hpp"
#include "../mwworld/esmstore.hpp"
#include "renderconst.hpp" #include "renderconst.hpp"

View file

@ -8,6 +8,10 @@
#include "../mwworld/ptr.hpp" #include "../mwworld/ptr.hpp"
namespace ESM
{
struct Light;
}
namespace MWRender namespace MWRender
{ {

View file

@ -4,12 +4,14 @@
#include <OgreSkeletonInstance.h> #include <OgreSkeletonInstance.h>
#include <OgreBone.h> #include <OgreBone.h>
#include "renderconst.hpp" #include <components/esm/loadcrea.hpp>
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "renderconst.hpp"
namespace MWRender namespace MWRender
{ {

View file

@ -13,12 +13,12 @@
#include <components/esm/loadstat.hpp> #include <components/esm/loadstat.hpp>
#include <components/esm/loadpgrd.hpp> #include <components/esm/loadpgrd.hpp>
#include "../mwworld/esmstore.hpp"
#include "../mwbase/world.hpp" // these includes can be removed once the static-hack is gone #include "../mwbase/world.hpp" // these includes can be removed once the static-hack is gone
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwworld/ptr.hpp" #include "../mwworld/ptr.hpp"
#include "../mwworld/cellstore.hpp"
#include "../mwworld/esmstore.hpp"
#include "renderconst.hpp" #include "renderconst.hpp"

View file

@ -7,12 +7,13 @@
#include <OgreCamera.h> #include <OgreCamera.h>
#include <OgreTextureManager.h> #include <OgreTextureManager.h>
#include "../mwworld/esmstore.hpp"
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwbase/windowmanager.hpp" #include "../mwbase/windowmanager.hpp"
#include "../mwworld/esmstore.hpp"
#include "../mwworld/cellstore.hpp"
#include "renderconst.hpp" #include "renderconst.hpp"
#include "renderingmanager.hpp" #include "renderingmanager.hpp"

View file

@ -11,11 +11,15 @@
#include <OgreParticleEmitter.h> #include <OgreParticleEmitter.h>
#include <OgreStaticGeometry.h> #include <OgreStaticGeometry.h>
#include <components/esm/loadligh.hpp>
#include <components/esm/loadstat.hpp>
#include <components/nifogre/ogrenifloader.hpp> #include <components/nifogre/ogrenifloader.hpp>
#include <components/settings/settings.hpp> #include <components/settings/settings.hpp>
#include "../mwworld/ptr.hpp" #include "../mwworld/ptr.hpp"
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/cellstore.hpp"
#include "renderconst.hpp" #include "renderconst.hpp"
#include "animation.hpp" #include "animation.hpp"

View file

@ -24,6 +24,7 @@
#include "../mwworld/esmstore.hpp" #include "../mwworld/esmstore.hpp"
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/cellstore.hpp"
#include "../mwbase/world.hpp" // these includes can be removed once the static-hack is gone #include "../mwbase/world.hpp" // these includes can be removed once the static-hack is gone
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"

View file

@ -13,6 +13,7 @@
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwworld/player.hpp" #include "../mwworld/player.hpp"
#include "../mwworld/cellstore.hpp"
#include "interpretercontext.hpp" #include "interpretercontext.hpp"

View file

@ -14,6 +14,8 @@
#include <components/interpreter/runtime.hpp> #include <components/interpreter/runtime.hpp>
#include <components/interpreter/opcodes.hpp> #include <components/interpreter/opcodes.hpp>
#include <components/esm/loadskil.hpp>
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/windowmanager.hpp" #include "../mwbase/windowmanager.hpp"
@ -284,7 +286,7 @@ namespace MWScript
virtual void execute(Interpreter::Runtime &runtime) virtual void execute(Interpreter::Runtime &runtime)
{ {
MWWorld::Ptr ptr = R()(runtime); MWWorld::Ptr ptr = R()(runtime);
const std::string &name = runtime.getStringLiteral (runtime[0].mInteger); const std::string &name = runtime.getStringLiteral (runtime[0].mInteger);
runtime.pop(); runtime.pop();

View file

@ -13,12 +13,16 @@
#include <components/interpreter/runtime.hpp> #include <components/interpreter/runtime.hpp>
#include <components/interpreter/opcodes.hpp> #include <components/interpreter/opcodes.hpp>
#include <components/esm/loadmgef.hpp>
#include <components/esm/loadcrea.hpp>
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/windowmanager.hpp" #include "../mwbase/windowmanager.hpp"
#include "../mwbase/scriptmanager.hpp" #include "../mwbase/scriptmanager.hpp"
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/containerstore.hpp" #include "../mwworld/containerstore.hpp"
#include "../mwworld/esmstore.hpp"
#include "../mwmechanics/npcstats.hpp" #include "../mwmechanics/npcstats.hpp"
#include "../mwmechanics/creaturestats.hpp" #include "../mwmechanics/creaturestats.hpp"

View file

@ -9,6 +9,7 @@
#include "../mwbase/statemanager.hpp" #include "../mwbase/statemanager.hpp"
#include "../mwworld/esmstore.hpp" #include "../mwworld/esmstore.hpp"
#include "../mwworld/cellstore.hpp"
#include "sound_output.hpp" #include "sound_output.hpp"
#include "sound_decoder.hpp" #include "sound_decoder.hpp"

View file

@ -23,6 +23,7 @@
#include "../mwworld/player.hpp" #include "../mwworld/player.hpp"
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/cellstore.hpp"
#include "../mwmechanics/npcstats.hpp" #include "../mwmechanics/npcstats.hpp"

View file

@ -3,6 +3,8 @@
#include <cstdlib> #include <cstdlib>
#include <components/esm/loadskil.hpp>
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
@ -19,10 +21,10 @@ namespace MWWorld
// apply to actor // apply to actor
std::string id = Class::get (getTarget()).getId (getTarget()); std::string id = Class::get (getTarget()).getId (getTarget());
if (Class::get (actor).apply (actor, id, actor)) if (Class::get (actor).apply (actor, id, actor))
Class::get (actor).skillUsageSucceeded (actor, ESM::Skill::Alchemy, 1); Class::get (actor).skillUsageSucceeded (actor, ESM::Skill::Alchemy, 1);
} }
ActionEat::ActionEat (const MWWorld::Ptr& object) : Action (false, object) {} ActionEat::ActionEat (const MWWorld::Ptr& object) : Action (false, object) {}
} }

View file

@ -0,0 +1,44 @@
#ifndef GAME_MWWORLD_CELLREFLIST_H
#define GAME_MWWORLD_CELLREFLIST_H
#include <list>
#include "livecellref.hpp"
namespace MWWorld
{
/// \brief Collection of references of one type
template <typename X>
struct CellRefList
{
typedef LiveCellRef<X> LiveRef;
typedef std::list<LiveRef> List;
List mList;
/// Search for the given reference in the given reclist from
/// ESMStore. Insert the reference into the list if a match is
/// found. If not, throw an exception.
/// Moved to cpp file, as we require a custom compare operator for it,
/// and the build will fail with an ugly three-way cyclic header dependence
/// so we need to pass the instantiation of the method to the linker, when
/// all methods are known.
void load (ESM::CellRef &ref, bool deleted, const MWWorld::ESMStore &esmStore);
LiveRef *find (const std::string& name)
{
for (typename List::iterator iter (mList.begin()); iter!=mList.end(); ++iter)
if (iter->mData.getCount() > 0 && iter->mRef.mRefID == name)
return &*iter;
return 0;
}
LiveRef &insert (const LiveRef &item)
{
mList.push_back(item);
return mList.back();
}
};
}
#endif

View file

@ -11,6 +11,7 @@
#include "class.hpp" #include "class.hpp"
#include "esmstore.hpp" #include "esmstore.hpp"
#include "containerstore.hpp" #include "containerstore.hpp"
#include "cellstore.hpp"
MWWorld::CellStore *MWWorld::Cells::getCellStore (const ESM::Cell *cell) MWWorld::CellStore *MWWorld::Cells::getCellStore (const ESM::Cell *cell)
{ {

View file

@ -12,6 +12,7 @@ namespace ESM
class ESMReader; class ESMReader;
class ESMWriter; class ESMWriter;
struct CellId; struct CellId;
struct Cell;
} }
namespace MWWorld namespace MWWorld

View file

@ -6,6 +6,7 @@
#include "livecellref.hpp" #include "livecellref.hpp"
#include "esmstore.hpp" #include "esmstore.hpp"
#include "cellreflist.hpp"
namespace ESM namespace ESM
{ {
@ -16,40 +17,6 @@ namespace MWWorld
{ {
class Ptr; class Ptr;
/// A list of cell references
template <typename X>
struct CellRefList
{
typedef LiveCellRef<X> LiveRef;
typedef std::list<LiveRef> List;
List mList;
// Search for the given reference in the given reclist from
// ESMStore. Insert the reference into the list if a match is
// found. If not, throw an exception.
// Moved to cpp file, as we require a custom compare operator for it,
// and the build will fail with an ugly three-way cyclic header dependence
// so we need to pass the instantiation of the method to the lnker, when
// all methods are known.
void load(ESM::CellRef &ref, bool deleted, const MWWorld::ESMStore &esmStore);
LiveRef *find (const std::string& name)
{
for (typename std::list<LiveRef>::iterator iter (mList.begin()); iter!=mList.end(); ++iter)
{
if (iter->mData.getCount() > 0 && iter->mRef.mRefID == name)
return &*iter;
}
return 0;
}
LiveRef &insert(const LiveRef &item) {
mList.push_back(item);
return mList.back();
}
};
/// \brief Mutable state of a cell /// \brief Mutable state of a cell
class CellStore class CellStore
{ {

View file

@ -3,6 +3,19 @@
#include <iterator> #include <iterator>
#include <components/esm/loadalch.hpp>
#include <components/esm/loadappa.hpp>
#include <components/esm/loadarmo.hpp>
#include <components/esm/loadbook.hpp>
#include <components/esm/loadclot.hpp>
#include <components/esm/loadingr.hpp>
#include <components/esm/loadlock.hpp>
#include <components/esm/loadligh.hpp>
#include <components/esm/loadmisc.hpp>
#include <components/esm/loadprob.hpp>
#include <components/esm/loadrepa.hpp>
#include <components/esm/loadweap.hpp>
#include "ptr.hpp" #include "ptr.hpp"
namespace ESM namespace ESM

View file

@ -5,6 +5,11 @@
#include "../mwmechanics/magiceffects.hpp" #include "../mwmechanics/magiceffects.hpp"
namespace ESM
{
struct MagicEffect;
}
namespace MWMechanics namespace MWMechanics
{ {
class NpcStats; class NpcStats;

View file

@ -15,13 +15,15 @@
#include <components/nifbullet/bulletnifloader.hpp> #include <components/nifbullet/bulletnifloader.hpp>
#include <components/esm/loadgmst.hpp>
#include "../mwbase/world.hpp" // FIXME #include "../mwbase/world.hpp" // FIXME
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwmechanics/creaturestats.hpp" #include "../mwmechanics/creaturestats.hpp"
#include <components/esm/loadgmst.hpp>
#include "../mwworld/esmstore.hpp" #include "../mwworld/esmstore.hpp"
#include "../mwworld/cellstore.hpp"
#include "ptr.hpp" #include "ptr.hpp"
#include "class.hpp" #include "class.hpp"

View file

@ -7,19 +7,20 @@
#include <components/esm/esmwriter.hpp> #include <components/esm/esmwriter.hpp>
#include <components/esm/player.hpp> #include <components/esm/player.hpp>
#include <components/esm/defs.hpp> #include <components/esm/defs.hpp>
#include <components/esm/loadbsgn.hpp>
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
#include "../mwbase/windowmanager.hpp" #include "../mwbase/windowmanager.hpp"
#include "../mwbase/soundmanager.hpp" #include "../mwbase/soundmanager.hpp"
#include "../mwworld/ptr.hpp"
#include "../mwworld/inventorystore.hpp"
#include "../mwmechanics/movement.hpp" #include "../mwmechanics/movement.hpp"
#include "../mwmechanics/npcstats.hpp" #include "../mwmechanics/npcstats.hpp"
#include "class.hpp" #include "class.hpp"
#include "ptr.hpp"
#include "inventorystore.hpp"
#include "cellstore.hpp"
namespace MWWorld namespace MWWorld
{ {

View file

@ -1,12 +1,18 @@
#ifndef GAME_MWWORLD_PTR_H #ifndef GAME_MWWORLD_PTR_H
#define GAME_MWWORLD_PTR_H #define GAME_MWWORLD_PTR_H
#include "cellstore.hpp" #include <cassert>
#include <string>
#include <sstream>
#include "cellreflist.hpp"
#include "livecellref.hpp" #include "livecellref.hpp"
namespace MWWorld namespace MWWorld
{ {
class ContainerStore; class ContainerStore;
class CellStore;
/// \brief Pointer to a LiveCellRef /// \brief Pointer to a LiveCellRef

View file

@ -17,8 +17,8 @@
#include "localscripts.hpp" #include "localscripts.hpp"
#include "esmstore.hpp" #include "esmstore.hpp"
#include "class.hpp" #include "class.hpp"
#include "cellfunctors.hpp" #include "cellfunctors.hpp"
#include "cellstore.hpp"
namespace namespace
{ {

View file

@ -21,6 +21,11 @@ namespace Files
class Collections; class Collections;
} }
namespace Loading
{
class Listener;
}
namespace Render namespace Render
{ {
class OgreRenderer; class OgreRenderer;

View file

@ -9,6 +9,7 @@
#include "player.hpp" #include "player.hpp"
#include "esmstore.hpp" #include "esmstore.hpp"
#include "fallback.hpp" #include "fallback.hpp"
#include "cellstore.hpp"
using namespace Ogre; using namespace Ogre;
using namespace MWWorld; using namespace MWWorld;