1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-04 21:40:03 +00:00

renamed mPlayedIdle to mIdleAnimation.

This commit is contained in:
dteviot 2015-07-19 18:04:42 +12:00
parent 22f49128cc
commit 00eef585af
2 changed files with 12 additions and 13 deletions

View File

@ -66,7 +66,7 @@ namespace MWMechanics
// AiWander states // AiWander states
AiWander::WanderState mState; AiWander::WanderState mState;
unsigned short mPlayedIdle; unsigned short mIdleAnimation;
PathFinder mPathFinder; PathFinder mPathFinder;
@ -78,7 +78,7 @@ namespace MWMechanics
mGreetingTimer(0), mGreetingTimer(0),
mCell(NULL), mCell(NULL),
mState(AiWander::Wander_ChooseAction), mState(AiWander::Wander_ChooseAction),
mPlayedIdle(0) mIdleAnimation(0)
{}; {};
}; };
@ -240,12 +240,11 @@ namespace MWMechanics
} }
// Check if idle animation finished // Check if idle animation finished
short unsigned& playedIdle = storage.mPlayedIdle; short unsigned& idleAnimation = storage.mIdleAnimation;
GreetingState& greetingState = storage.mSaidGreeting; GreetingState& greetingState = storage.mSaidGreeting;
if ((wanderState == Wander_IdleNow) && if ((wanderState == Wander_IdleNow) &&
!checkIdle(actor, playedIdle) && (greetingState == Greet_Done || greetingState == Greet_None)) !checkIdle(actor, idleAnimation) && (greetingState == Greet_Done || greetingState == Greet_None))
{ {
playedIdle = 0;
wanderState = Wander_ChooseAction; wanderState = Wander_ChooseAction;
} }
@ -253,10 +252,9 @@ namespace MWMechanics
if (wanderState == Wander_ChooseAction) if (wanderState == Wander_ChooseAction)
{ {
playedIdle = 0; idleAnimation = getRandomIdle();
getRandomIdle(playedIdle); // NOTE: sets mPlayedIdle with a random selection
if(!playedIdle && mDistance) if(!idleAnimation && mDistance)
{ {
wanderState = Wander_MoveNow; wanderState = Wander_MoveNow;
} }
@ -265,7 +263,7 @@ namespace MWMechanics
// Play idle animation and recreate vanilla (broken?) behavior of resetting start time of AIWander: // Play idle animation and recreate vanilla (broken?) behavior of resetting start time of AIWander:
MWWorld::TimeStamp currentTime = world->getTimeStamp(); MWWorld::TimeStamp currentTime = world->getTimeStamp();
mStartTime = currentTime; mStartTime = currentTime;
playIdle(actor, playedIdle); playIdle(actor, idleAnimation);
wanderState = Wander_IdleNow; wanderState = Wander_IdleNow;
} }
} }
@ -468,7 +466,6 @@ namespace MWMechanics
stopWalking(actor, storage); stopWalking(actor, storage);
mObstacleCheck.clear(); mObstacleCheck.clear();
storage.mState = Wander_IdleNow; storage.mState = Wander_IdleNow;
getRandomIdle(storage.mPlayedIdle);
} }
turnActorToFacePlayer(actorPos, playerPos, storage); turnActorToFacePlayer(actorPos, playerPos, storage);
@ -605,9 +602,10 @@ namespace MWMechanics
} }
} }
void AiWander::getRandomIdle(short unsigned& playedIdle) short unsigned AiWander::getRandomIdle()
{ {
unsigned short idleRoll = 0; unsigned short idleRoll = 0;
short unsigned selectedAnimation = 0;
for(unsigned int counter = 0; counter < mIdle.size(); counter++) for(unsigned int counter = 0; counter < mIdle.size(); counter++)
{ {
@ -618,10 +616,11 @@ namespace MWMechanics
unsigned short randSelect = (int)(Misc::Rng::rollProbability() * int(100 / fIdleChanceMultiplier)); unsigned short randSelect = (int)(Misc::Rng::rollProbability() * int(100 / fIdleChanceMultiplier));
if(randSelect < idleChance && randSelect > idleRoll) if(randSelect < idleChance && randSelect > idleRoll)
{ {
playedIdle = counter+2; selectedAnimation = counter + GroupIndex_MinIdle;
idleRoll = randSelect; idleRoll = randSelect;
} }
} }
return selectedAnimation;
} }
void AiWander::fastForward(const MWWorld::Ptr& actor, AiState &state) void AiWander::fastForward(const MWWorld::Ptr& actor, AiState &state)

View File

@ -77,7 +77,7 @@ namespace MWMechanics
void stopWalking(const MWWorld::Ptr& actor, AiWanderStorage& storage); void stopWalking(const MWWorld::Ptr& actor, AiWanderStorage& storage);
void playIdle(const MWWorld::Ptr& actor, unsigned short idleSelect); void playIdle(const MWWorld::Ptr& actor, unsigned short idleSelect);
bool checkIdle(const MWWorld::Ptr& actor, unsigned short idleSelect); bool checkIdle(const MWWorld::Ptr& actor, unsigned short idleSelect);
void getRandomIdle(unsigned short& playedIdle); short unsigned getRandomIdle();
void setPathToAnAllowedNode(const MWWorld::Ptr& actor, AiWanderStorage& storage, const ESM::Position& actorPos); void setPathToAnAllowedNode(const MWWorld::Ptr& actor, AiWanderStorage& storage, const ESM::Position& actorPos);
void playGreetingIfPlayerGetsTooClose(const MWWorld::Ptr& actor, AiWanderStorage& storage); void playGreetingIfPlayerGetsTooClose(const MWWorld::Ptr& actor, AiWanderStorage& storage);
void evadeObstacles(const MWWorld::Ptr& actor, AiWanderStorage& storage, float duration); void evadeObstacles(const MWWorld::Ptr& actor, AiWanderStorage& storage, float duration);