mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-21 08:53:52 +00:00
Undid some code clean up changes, and changed how some includes work
This commit is contained in:
parent
77d365e196
commit
ee36ace00b
6 changed files with 197 additions and 200 deletions
|
@ -46,7 +46,10 @@ namespace MyGUI
|
|||
|
||||
namespace MWInput
|
||||
{
|
||||
/// \brief Class that handles all input and key bindings for OpenMW.
|
||||
|
||||
/**
|
||||
* @brief Class that handles all input and key bindings for OpenMW.
|
||||
*/
|
||||
class InputManager :
|
||||
public MWBase::InputManager,
|
||||
public SFO::KeyListener,
|
||||
|
@ -65,7 +68,6 @@ namespace MWInput
|
|||
/// Clear all savegame-specific data
|
||||
virtual void clear();
|
||||
|
||||
|
||||
virtual void update(float dt, bool disableControls=false, bool disableEvents=false);
|
||||
|
||||
void setPlayer (MWWorld::Player* player) { mPlayer = player; }
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include "aipackage.hpp"
|
||||
#include <string>
|
||||
#include "pathfinding.hpp"
|
||||
#include "../../../components/esm/defs.hpp"
|
||||
#include <components/esm/defs.hpp>
|
||||
#include "../mwworld/class.hpp"
|
||||
|
||||
namespace MWMechanics
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include "aipackage.hpp"
|
||||
#include <string>
|
||||
#include "pathfinding.hpp"
|
||||
#include "../../../components/esm/defs.hpp"
|
||||
#include <components/esm/defs.hpp>
|
||||
|
||||
namespace MWMechanics
|
||||
{
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define GAME_MWMECHANICS_AIPACKAGE_H
|
||||
|
||||
#include "pathfinding.hpp"
|
||||
#include "../../../components/esm/defs.hpp"
|
||||
#include <components/esm/defs.hpp>
|
||||
|
||||
#include "obstacle.hpp"
|
||||
|
||||
|
|
|
@ -31,8 +31,6 @@ namespace MWMechanics
|
|||
typedef std::vector<ESM::ENAMstruct> TEffectsContainer;
|
||||
typedef TEffectsContainer::const_iterator TEffectsIterator;
|
||||
|
||||
/// Result of potion creation
|
||||
/** Only Result_Success results in success **/
|
||||
enum Result
|
||||
{
|
||||
Result_Success,
|
||||
|
@ -44,46 +42,6 @@ namespace MWMechanics
|
|||
Result_RandomFailure
|
||||
};
|
||||
|
||||
/// Set alchemist and configure alchemy setup accordingly.
|
||||
/** \a npc may be empty to indicate that there is no alchemist (alchemy session has ended). **/
|
||||
void setAlchemist (const MWWorld::Ptr& npc);
|
||||
|
||||
/// \attention Iterates over tool slots, not over tools. Some of the slots may be empty.
|
||||
TToolsIterator beginTools() const;
|
||||
|
||||
TToolsIterator endTools() const;
|
||||
|
||||
/// \attention Iterates over ingredient slots, not over ingredients. Some of the slots may be empty.
|
||||
TIngredientsIterator beginIngredients() const;
|
||||
|
||||
TIngredientsIterator endIngredients() const;
|
||||
|
||||
/// Remove alchemist, tools and ingredients.
|
||||
void clear();
|
||||
|
||||
/// 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
|
||||
/// listed already.
|
||||
int addIngredient (const MWWorld::Ptr& ingredient);
|
||||
|
||||
/// Remove ingredient from slot (calling this function on an empty slot is a no-op).
|
||||
void removeIngredient (int index);
|
||||
|
||||
TEffectsIterator beginEffects() const;
|
||||
|
||||
TEffectsIterator endEffects() const;
|
||||
|
||||
/// 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.
|
||||
std::string getPotionName() const;
|
||||
|
||||
/// Try to create a potion from the ingredients, place it in the inventory of the alchemist and
|
||||
/// adjust the skills of the alchemist accordingly.
|
||||
/// \param name must not be an empty string, unless there is already a potion record (
|
||||
/// getPotionName() does not return an empty string).
|
||||
Result create (const std::string& name);
|
||||
|
||||
private:
|
||||
|
||||
MWWorld::Ptr mAlchemist;
|
||||
|
@ -92,19 +50,19 @@ namespace MWMechanics
|
|||
TEffectsContainer mEffects;
|
||||
int mValue;
|
||||
|
||||
/// List all effects shared by at least two ingredients.
|
||||
std::set<EffectKey> listEffects() const;
|
||||
///< List all effects shared by at least two ingredients.
|
||||
|
||||
void applyTools (int flags, float& value) const;
|
||||
|
||||
void updateEffects();
|
||||
|
||||
/// Return existing recrod for created potion (may return 0)
|
||||
const ESM::Potion *getRecord() const;
|
||||
///< Return existing recrod for created potion (may return 0)
|
||||
|
||||
/// Remove selected ingredients from alchemist's inventory, cleanup selected ingredients and
|
||||
/// update effect list accordingly.
|
||||
void removeIngredients();
|
||||
///< Remove selected ingredients from alchemist's inventory, cleanup selected ingredients and
|
||||
/// update effect list accordingly.
|
||||
|
||||
void addPotion (const std::string& name);
|
||||
///< Add a potion to the alchemist's inventory.
|
||||
|
@ -116,6 +74,48 @@ namespace MWMechanics
|
|||
///< Return chance of success.
|
||||
|
||||
int countIngredients() const;
|
||||
|
||||
public:
|
||||
|
||||
void setAlchemist (const MWWorld::Ptr& npc);
|
||||
///< Set alchemist and configure alchemy setup accordingly. \a npc may be empty to indicate that
|
||||
/// there is no alchemist (alchemy session has ended).
|
||||
|
||||
TToolsIterator beginTools() const;
|
||||
///< \attention Iterates over tool slots, not over tools. Some of the slots may be empty.
|
||||
|
||||
TToolsIterator endTools() const;
|
||||
|
||||
TIngredientsIterator beginIngredients() const;
|
||||
///< \attention Iterates over ingredient slots, not over ingredients. Some of the slots may be empty.
|
||||
|
||||
TIngredientsIterator endIngredients() const;
|
||||
|
||||
void clear();
|
||||
///< Remove alchemist, tools and ingredients.
|
||||
|
||||
int addIngredient (const MWWorld::Ptr& ingredient);
|
||||
///< 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
|
||||
/// listed already.
|
||||
|
||||
void removeIngredient (int index);
|
||||
///< Remove ingredient from slot (calling this function on an empty slot is a no-op).
|
||||
|
||||
TEffectsIterator beginEffects() const;
|
||||
|
||||
TEffectsIterator endEffects() const;
|
||||
|
||||
std::string getPotionName() const;
|
||||
///< 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.
|
||||
|
||||
Result create (const std::string& name);
|
||||
///< Try to create a potion from the ingredients, place it in the inventory of the alchemist and
|
||||
/// adjust the skills of the alchemist accordingly.
|
||||
/// \param name must not be an empty string, unless there is already a potion record (
|
||||
/// getPotionName() does not return an empty string).
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -21,199 +21,194 @@ namespace MWRender
|
|||
namespace MWMechanics
|
||||
{
|
||||
|
||||
class Movement;
|
||||
class CreatureStats;
|
||||
class Movement;
|
||||
class CreatureStats;
|
||||
|
||||
///Priority of actions
|
||||
enum Priority {
|
||||
Priority_Default,
|
||||
Priority_Jump,
|
||||
Priority_Movement,
|
||||
Priority_Hit,
|
||||
Priority_Weapon,
|
||||
Priority_Knockdown,
|
||||
Priority_Torch,
|
||||
enum Priority {
|
||||
Priority_Default,
|
||||
Priority_Jump,
|
||||
Priority_Movement,
|
||||
Priority_Hit,
|
||||
Priority_Weapon,
|
||||
Priority_Knockdown,
|
||||
Priority_Torch,
|
||||
|
||||
Priority_Death,
|
||||
Priority_Death,
|
||||
|
||||
Num_Priorities
|
||||
};
|
||||
Num_Priorities
|
||||
};
|
||||
|
||||
/// Current action of the character
|
||||
enum CharacterState {
|
||||
CharState_None,
|
||||
enum CharacterState {
|
||||
CharState_None,
|
||||
|
||||
CharState_SpecialIdle,
|
||||
CharState_Idle,
|
||||
CharState_Idle2,
|
||||
CharState_Idle3,
|
||||
CharState_Idle4,
|
||||
CharState_Idle5,
|
||||
CharState_Idle6,
|
||||
CharState_Idle7,
|
||||
CharState_Idle8,
|
||||
CharState_Idle9,
|
||||
CharState_IdleSwim,
|
||||
CharState_IdleSneak,
|
||||
CharState_SpecialIdle,
|
||||
CharState_Idle,
|
||||
CharState_Idle2,
|
||||
CharState_Idle3,
|
||||
CharState_Idle4,
|
||||
CharState_Idle5,
|
||||
CharState_Idle6,
|
||||
CharState_Idle7,
|
||||
CharState_Idle8,
|
||||
CharState_Idle9,
|
||||
CharState_IdleSwim,
|
||||
CharState_IdleSneak,
|
||||
|
||||
CharState_WalkForward,
|
||||
CharState_WalkBack,
|
||||
CharState_WalkLeft,
|
||||
CharState_WalkRight,
|
||||
CharState_WalkForward,
|
||||
CharState_WalkBack,
|
||||
CharState_WalkLeft,
|
||||
CharState_WalkRight,
|
||||
|
||||
CharState_SwimWalkForward,
|
||||
CharState_SwimWalkBack,
|
||||
CharState_SwimWalkLeft,
|
||||
CharState_SwimWalkRight,
|
||||
CharState_SwimWalkForward,
|
||||
CharState_SwimWalkBack,
|
||||
CharState_SwimWalkLeft,
|
||||
CharState_SwimWalkRight,
|
||||
|
||||
CharState_RunForward,
|
||||
CharState_RunBack,
|
||||
CharState_RunLeft,
|
||||
CharState_RunRight,
|
||||
CharState_RunForward,
|
||||
CharState_RunBack,
|
||||
CharState_RunLeft,
|
||||
CharState_RunRight,
|
||||
|
||||
CharState_SwimRunForward,
|
||||
CharState_SwimRunBack,
|
||||
CharState_SwimRunLeft,
|
||||
CharState_SwimRunRight,
|
||||
CharState_SwimRunForward,
|
||||
CharState_SwimRunBack,
|
||||
CharState_SwimRunLeft,
|
||||
CharState_SwimRunRight,
|
||||
|
||||
CharState_SneakForward,
|
||||
CharState_SneakBack,
|
||||
CharState_SneakLeft,
|
||||
CharState_SneakRight,
|
||||
CharState_SneakForward,
|
||||
CharState_SneakBack,
|
||||
CharState_SneakLeft,
|
||||
CharState_SneakRight,
|
||||
|
||||
CharState_TurnLeft,
|
||||
CharState_TurnRight,
|
||||
CharState_TurnLeft,
|
||||
CharState_TurnRight,
|
||||
|
||||
CharState_Jump,
|
||||
CharState_Jump,
|
||||
|
||||
CharState_Death1,
|
||||
CharState_Death2,
|
||||
CharState_Death3,
|
||||
CharState_Death4,
|
||||
CharState_Death5,
|
||||
CharState_SwimDeath,
|
||||
CharState_DeathKnockDown,
|
||||
CharState_DeathKnockOut,
|
||||
CharState_Death1,
|
||||
CharState_Death2,
|
||||
CharState_Death3,
|
||||
CharState_Death4,
|
||||
CharState_Death5,
|
||||
CharState_SwimDeath,
|
||||
CharState_DeathKnockDown,
|
||||
CharState_DeathKnockOut,
|
||||
|
||||
CharState_Hit,
|
||||
CharState_KnockDown,
|
||||
CharState_KnockOut,
|
||||
CharState_Block
|
||||
};
|
||||
CharState_Hit,
|
||||
CharState_KnockDown,
|
||||
CharState_KnockOut,
|
||||
CharState_Block
|
||||
};
|
||||
|
||||
///Weapon type
|
||||
enum WeaponType {
|
||||
WeapType_None,
|
||||
enum WeaponType {
|
||||
WeapType_None,
|
||||
|
||||
WeapType_HandToHand,
|
||||
WeapType_OneHand,
|
||||
WeapType_TwoHand,
|
||||
WeapType_TwoWide,
|
||||
WeapType_BowAndArrow,
|
||||
WeapType_Crossbow,
|
||||
WeapType_Thrown,
|
||||
WeapType_PickProbe,
|
||||
WeapType_HandToHand,
|
||||
WeapType_OneHand,
|
||||
WeapType_TwoHand,
|
||||
WeapType_TwoWide,
|
||||
WeapType_BowAndArrow,
|
||||
WeapType_Crossbow,
|
||||
WeapType_Thrown,
|
||||
WeapType_PickProbe,
|
||||
|
||||
WeapType_Spell
|
||||
};
|
||||
WeapType_Spell
|
||||
};
|
||||
|
||||
///Specific, weapon based state of the character
|
||||
enum UpperBodyCharacterState {
|
||||
UpperCharState_Nothing,
|
||||
UpperCharState_EquipingWeap,
|
||||
UpperCharState_UnEquipingWeap,
|
||||
UpperCharState_WeapEquiped,
|
||||
UpperCharState_StartToMinAttack,
|
||||
UpperCharState_MinAttackToMaxAttack,
|
||||
UpperCharState_MaxAttackToMinHit,
|
||||
UpperCharState_MinHitToHit,
|
||||
UpperCharState_FollowStartToFollowStop,
|
||||
UpperCharState_CastingSpell
|
||||
};
|
||||
enum UpperBodyCharacterState {
|
||||
UpperCharState_Nothing,
|
||||
UpperCharState_EquipingWeap,
|
||||
UpperCharState_UnEquipingWeap,
|
||||
UpperCharState_WeapEquiped,
|
||||
UpperCharState_StartToMinAttack,
|
||||
UpperCharState_MinAttackToMaxAttack,
|
||||
UpperCharState_MaxAttackToMinHit,
|
||||
UpperCharState_MinHitToHit,
|
||||
UpperCharState_FollowStartToFollowStop,
|
||||
UpperCharState_CastingSpell
|
||||
};
|
||||
|
||||
///Current jumping state
|
||||
enum JumpingState {
|
||||
JumpState_None,
|
||||
JumpState_Falling,
|
||||
JumpState_Landing
|
||||
};
|
||||
enum JumpingState {
|
||||
JumpState_None,
|
||||
JumpState_Falling,
|
||||
JumpState_Landing
|
||||
};
|
||||
|
||||
class CharacterController
|
||||
{
|
||||
MWWorld::Ptr mPtr;
|
||||
MWRender::Animation *mAnimation;
|
||||
class CharacterController
|
||||
{
|
||||
MWWorld::Ptr mPtr;
|
||||
MWRender::Animation *mAnimation;
|
||||
|
||||
typedef std::deque<std::pair<std::string,size_t> > AnimationQueue;
|
||||
AnimationQueue mAnimQueue;
|
||||
typedef std::deque<std::pair<std::string,size_t> > AnimationQueue;
|
||||
AnimationQueue mAnimQueue;
|
||||
|
||||
CharacterState mIdleState;
|
||||
std::string mCurrentIdle;
|
||||
CharacterState mIdleState;
|
||||
std::string mCurrentIdle;
|
||||
|
||||
CharacterState mMovementState;
|
||||
std::string mCurrentMovement;
|
||||
float mMovementSpeed;
|
||||
float mMovementAnimVelocity;
|
||||
CharacterState mMovementState;
|
||||
std::string mCurrentMovement;
|
||||
float mMovementSpeed;
|
||||
float mMovementAnimVelocity;
|
||||
|
||||
CharacterState mDeathState;
|
||||
std::string mCurrentDeath;
|
||||
CharacterState mDeathState;
|
||||
std::string mCurrentDeath;
|
||||
|
||||
CharacterState mHitState;
|
||||
std::string mCurrentHit;
|
||||
CharacterState mHitState;
|
||||
std::string mCurrentHit;
|
||||
|
||||
UpperBodyCharacterState mUpperBodyState;
|
||||
UpperBodyCharacterState mUpperBodyState;
|
||||
|
||||
JumpingState mJumpState;
|
||||
std::string mCurrentJump;
|
||||
JumpingState mJumpState;
|
||||
std::string mCurrentJump;
|
||||
|
||||
WeaponType mWeaponType;
|
||||
std::string mCurrentWeapon;
|
||||
WeaponType mWeaponType;
|
||||
std::string mCurrentWeapon;
|
||||
|
||||
bool mSkipAnim;
|
||||
bool mSkipAnim;
|
||||
|
||||
// counted for skill increase
|
||||
float mSecondsOfSwimming;
|
||||
float mSecondsOfRunning;
|
||||
// counted for skill increase
|
||||
float mSecondsOfSwimming;
|
||||
float mSecondsOfRunning;
|
||||
|
||||
std::string mAttackType; // slash, chop or thrust
|
||||
void determineAttackType();
|
||||
std::string mAttackType; // slash, chop or thrust
|
||||
void determineAttackType();
|
||||
|
||||
void refreshCurrentAnims(CharacterState idle, CharacterState movement, bool force=false);
|
||||
void refreshCurrentAnims(CharacterState idle, CharacterState movement, bool force=false);
|
||||
|
||||
void clearAnimQueue();
|
||||
void clearAnimQueue();
|
||||
|
||||
bool updateWeaponState();
|
||||
bool updateCreatureState();
|
||||
bool updateWeaponState();
|
||||
bool updateCreatureState();
|
||||
|
||||
void updateVisibility();
|
||||
void updateVisibility();
|
||||
|
||||
void playRandomDeath(float startpoint = 0.0f);
|
||||
void playRandomDeath(float startpoint = 0.0f);
|
||||
|
||||
/// choose a random animation group with \a prefix and numeric suffix
|
||||
/// @param num if non-NULL, the chosen animation number will be written here
|
||||
std::string chooseRandomGroup (const std::string& prefix, int* num = NULL);
|
||||
/// choose a random animation group with \a prefix and numeric suffix
|
||||
/// @param num if non-NULL, the chosen animation number will be written here
|
||||
std::string chooseRandomGroup (const std::string& prefix, int* num = NULL);
|
||||
|
||||
public:
|
||||
CharacterController(const MWWorld::Ptr &ptr, MWRender::Animation *anim);
|
||||
virtual ~CharacterController();
|
||||
public:
|
||||
CharacterController(const MWWorld::Ptr &ptr, MWRender::Animation *anim);
|
||||
virtual ~CharacterController();
|
||||
|
||||
// Be careful when to call this, see comment in Actors
|
||||
void updateContinuousVfx();
|
||||
// Be careful when to call this, see comment in Actors
|
||||
void updateContinuousVfx();
|
||||
|
||||
void updatePtr(const MWWorld::Ptr &ptr);
|
||||
void updatePtr(const MWWorld::Ptr &ptr);
|
||||
|
||||
void update(float duration);
|
||||
void update(float duration);
|
||||
|
||||
void playGroup(const std::string &groupname, int mode, int count);
|
||||
void skipAnim();
|
||||
bool isAnimPlaying(const std::string &groupName);
|
||||
void playGroup(const std::string &groupname, int mode, int count);
|
||||
void skipAnim();
|
||||
bool isAnimPlaying(const std::string &groupName);
|
||||
|
||||
bool kill();
|
||||
void resurrect();
|
||||
bool isDead() const
|
||||
{ return mDeathState != CharState_None; }
|
||||
bool kill();
|
||||
void resurrect();
|
||||
bool isDead() const
|
||||
{ return mDeathState != CharState_None; }
|
||||
|
||||
void forceStateUpdate();
|
||||
};
|
||||
void forceStateUpdate();
|
||||
};
|
||||
|
||||
void getWeaponGroup(WeaponType weaptype, std::string &group);
|
||||
MWWorld::ContainerStoreIterator getActiveWeapon(CreatureStats &stats, MWWorld::InventoryStore &inv, WeaponType *weaptype);
|
||||
|
|
Loading…
Reference in a new issue