mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-04-01 08:06:45 +00:00
better timer
This commit is contained in:
parent
a6e7c6c104
commit
650a112e2e
16 changed files with 30 additions and 26 deletions
|
@ -35,7 +35,7 @@ namespace MWMechanics
|
||||||
if(!MWBase::Environment::get().getWindowManager()->isGuiMode())
|
if(!MWBase::Environment::get().getWindowManager()->isGuiMode())
|
||||||
{
|
{
|
||||||
CreatureStats& creatureStats = MWWorld::Class::get (ptr).getCreatureStats (ptr);
|
CreatureStats& creatureStats = MWWorld::Class::get (ptr).getCreatureStats (ptr);
|
||||||
creatureStats.getAiSequence().execute (ptr);
|
creatureStats.getAiSequence().execute (ptr,duration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ MWMechanics::AiActivate *MWMechanics::AiActivate::clone() const
|
||||||
{
|
{
|
||||||
return new AiActivate(*this);
|
return new AiActivate(*this);
|
||||||
}
|
}
|
||||||
bool MWMechanics::AiActivate::execute (const MWWorld::Ptr& actor)
|
bool MWMechanics::AiActivate::execute (const MWWorld::Ptr& actor,float duration)
|
||||||
{
|
{
|
||||||
std::cout << "AiActivate completed.\n";
|
std::cout << "AiActivate completed.\n";
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -12,7 +12,7 @@ namespace MWMechanics
|
||||||
public:
|
public:
|
||||||
AiActivate(const std::string &objectId);
|
AiActivate(const std::string &objectId);
|
||||||
virtual AiActivate *clone() const;
|
virtual AiActivate *clone() const;
|
||||||
virtual bool execute (const MWWorld::Ptr& actor);
|
virtual bool execute (const MWWorld::Ptr& actor,float duration);
|
||||||
///< \return Package completed?
|
///< \return Package completed?
|
||||||
virtual int getTypeId() const;
|
virtual int getTypeId() const;
|
||||||
|
|
||||||
|
|
|
@ -25,11 +25,11 @@ namespace MWMechanics
|
||||||
{
|
{
|
||||||
|
|
||||||
AiCombat::AiCombat(const std::string &targetId)
|
AiCombat::AiCombat(const std::string &targetId)
|
||||||
:mTargetId(targetId),mStartingSecond(0)
|
:mTargetId(targetId),mTimer(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AiCombat::execute (const MWWorld::Ptr& actor)
|
bool AiCombat::execute (const MWWorld::Ptr& actor,float duration)
|
||||||
{
|
{
|
||||||
const MWWorld::Ptr target = MWBase::Environment::get().getWorld()->getPtr(mTargetId, false);
|
const MWWorld::Ptr target = MWBase::Environment::get().getWorld()->getPtr(mTargetId, false);
|
||||||
|
|
||||||
|
@ -97,18 +97,22 @@ namespace MWMechanics
|
||||||
MWBase::Environment::get().getWorld()->rotateObject(actor, 0, 0, zAngle, false);
|
MWBase::Environment::get().getWorld()->rotateObject(actor, 0, 0, zAngle, false);
|
||||||
|
|
||||||
mPathFinder.clearPath();
|
mPathFinder.clearPath();
|
||||||
|
|
||||||
MWWorld::TimeStamp time = MWBase::Environment::get().getWorld()->getTimeStamp();
|
if(mTimer == 0)
|
||||||
if(mStartingSecond == 0)
|
|
||||||
{
|
{
|
||||||
MWWorld::Class::get(actor).getCreatureStats(actor).setAttackingOrSpell(false);
|
MWWorld::Class::get(actor).getCreatureStats(actor).setAttackingOrSpell(false);
|
||||||
mStartingSecond = ((time.getHour() - int(time.getHour())) * 100);
|
//mTimer = mTimer + duration;
|
||||||
}
|
}
|
||||||
else if( ((time.getHour() - int(time.getHour())) * 100) - mStartingSecond > 1)
|
if( mTimer > 1)
|
||||||
{
|
{
|
||||||
MWWorld::Class::get(actor).getCreatureStats(actor).setAttackingOrSpell(true);
|
MWWorld::Class::get(actor).getCreatureStats(actor).setAttackingOrSpell(true);
|
||||||
mStartingSecond = 0;
|
mTimer = 0;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mTimer = mTimer + duration;
|
||||||
|
}
|
||||||
|
|
||||||
MWWorld::Class::get(actor).getMovementSettings(actor).mPosition[1] = 0;
|
MWWorld::Class::get(actor).getMovementSettings(actor).mPosition[1] = 0;
|
||||||
//MWWorld::Class::get(actor).getCreatureStats(actor).setAttackingOrSpell(!MWWorld::Class::get(actor).getCreatureStats(actor).getAttackingOrSpell());
|
//MWWorld::Class::get(actor).getCreatureStats(actor).setAttackingOrSpell(!MWWorld::Class::get(actor).getCreatureStats(actor).getAttackingOrSpell());
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace MWMechanics
|
||||||
|
|
||||||
virtual AiCombat *clone() const;
|
virtual AiCombat *clone() const;
|
||||||
|
|
||||||
virtual bool execute (const MWWorld::Ptr& actor);
|
virtual bool execute (const MWWorld::Ptr& actor,float duration);
|
||||||
///< \return Package completed?
|
///< \return Package completed?
|
||||||
|
|
||||||
virtual int getTypeId() const;
|
virtual int getTypeId() const;
|
||||||
|
@ -34,7 +34,7 @@ namespace MWMechanics
|
||||||
|
|
||||||
PathFinder mPathFinder;
|
PathFinder mPathFinder;
|
||||||
PathFinder mPathFinder2;
|
PathFinder mPathFinder2;
|
||||||
unsigned int mStartingSecond;
|
float mTimer;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ namespace MWMechanics
|
||||||
return new AiEscort(*this);
|
return new AiEscort(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AiEscort::execute (const MWWorld::Ptr& actor)
|
bool AiEscort::execute (const MWWorld::Ptr& actor,float duration)
|
||||||
{
|
{
|
||||||
// If AiEscort has ran for as long or longer then the duration specified
|
// If AiEscort has ran for as long or longer then the duration specified
|
||||||
// and the duration is not infinite, the package is complete.
|
// and the duration is not infinite, the package is complete.
|
||||||
|
|
|
@ -18,7 +18,7 @@ namespace MWMechanics
|
||||||
|
|
||||||
virtual AiEscort *clone() const;
|
virtual AiEscort *clone() const;
|
||||||
|
|
||||||
virtual bool execute (const MWWorld::Ptr& actor);
|
virtual bool execute (const MWWorld::Ptr& actor,float duration);
|
||||||
///< \return Package completed?
|
///< \return Package completed?
|
||||||
|
|
||||||
virtual int getTypeId() const;
|
virtual int getTypeId() const;
|
||||||
|
|
|
@ -15,7 +15,7 @@ MWMechanics::AiFollow *MWMechanics::AiFollow::clone() const
|
||||||
return new AiFollow(*this);
|
return new AiFollow(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MWMechanics::AiFollow::execute (const MWWorld::Ptr& actor)
|
bool MWMechanics::AiFollow::execute (const MWWorld::Ptr& actor,float duration)
|
||||||
{
|
{
|
||||||
std::cout << "AiFollow completed.\n";
|
std::cout << "AiFollow completed.\n";
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace MWMechanics
|
||||||
AiFollow(const std::string &ActorId,float duration, float X, float Y, float Z);
|
AiFollow(const std::string &ActorId,float duration, float X, float Y, float Z);
|
||||||
AiFollow(const std::string &ActorId,const std::string &CellId,float duration, float X, float Y, float Z);
|
AiFollow(const std::string &ActorId,const std::string &CellId,float duration, float X, float Y, float Z);
|
||||||
virtual AiFollow *clone() const;
|
virtual AiFollow *clone() const;
|
||||||
virtual bool execute (const MWWorld::Ptr& actor);
|
virtual bool execute (const MWWorld::Ptr& actor,float duration);
|
||||||
///< \return Package completed?
|
///< \return Package completed?
|
||||||
virtual int getTypeId() const;
|
virtual int getTypeId() const;
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace MWMechanics
|
||||||
|
|
||||||
virtual AiPackage *clone() const = 0;
|
virtual AiPackage *clone() const = 0;
|
||||||
|
|
||||||
virtual bool execute (const MWWorld::Ptr& actor) = 0;
|
virtual bool execute (const MWWorld::Ptr& actor,float duration) = 0;
|
||||||
///< \return Package completed?
|
///< \return Package completed?
|
||||||
|
|
||||||
virtual int getTypeId() const = 0;
|
virtual int getTypeId() const = 0;
|
||||||
|
|
|
@ -65,13 +65,13 @@ bool MWMechanics::AiSequence::isPackageDone() const
|
||||||
return mDone;
|
return mDone;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MWMechanics::AiSequence::execute (const MWWorld::Ptr& actor)
|
void MWMechanics::AiSequence::execute (const MWWorld::Ptr& actor,float duration)
|
||||||
{
|
{
|
||||||
if(actor != MWBase::Environment::get().getWorld()->getPlayer().getPlayer())
|
if(actor != MWBase::Environment::get().getWorld()->getPlayer().getPlayer())
|
||||||
{
|
{
|
||||||
if(mCombat)
|
if(mCombat)
|
||||||
{
|
{
|
||||||
mCombatPackage->execute(actor);
|
mCombatPackage->execute(actor,duration);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -103,7 +103,7 @@ void MWMechanics::AiSequence::execute (const MWWorld::Ptr& actor)
|
||||||
}
|
}
|
||||||
if (!mPackages.empty())
|
if (!mPackages.empty())
|
||||||
{
|
{
|
||||||
if (mPackages.front()->execute (actor))
|
if (mPackages.front()->execute (actor,duration))
|
||||||
{
|
{
|
||||||
mPackages.erase (mPackages.begin());
|
mPackages.erase (mPackages.begin());
|
||||||
mDone = true;
|
mDone = true;
|
||||||
|
|
|
@ -41,7 +41,7 @@ namespace MWMechanics
|
||||||
bool isPackageDone() const;
|
bool isPackageDone() const;
|
||||||
///< Has a package been completed during the last update?
|
///< Has a package been completed during the last update?
|
||||||
|
|
||||||
void execute (const MWWorld::Ptr& actor);
|
void execute (const MWWorld::Ptr& actor,float duration);
|
||||||
///< Execute package.
|
///< Execute package.
|
||||||
|
|
||||||
void clear();
|
void clear();
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace MWMechanics
|
||||||
return new AiTravel(*this);
|
return new AiTravel(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AiTravel::execute (const MWWorld::Ptr& actor)
|
bool AiTravel::execute (const MWWorld::Ptr& actor,float duration)
|
||||||
{
|
{
|
||||||
MWBase::World *world = MWBase::Environment::get().getWorld();
|
MWBase::World *world = MWBase::Environment::get().getWorld();
|
||||||
ESM::Position pos = actor.getRefData().getPosition();
|
ESM::Position pos = actor.getRefData().getPosition();
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace MWMechanics
|
||||||
AiTravel(float x, float y, float z);
|
AiTravel(float x, float y, float z);
|
||||||
virtual AiTravel *clone() const;
|
virtual AiTravel *clone() const;
|
||||||
|
|
||||||
virtual bool execute (const MWWorld::Ptr& actor);
|
virtual bool execute (const MWWorld::Ptr& actor,float duration);
|
||||||
///< \return Package completed?
|
///< \return Package completed?
|
||||||
|
|
||||||
virtual int getTypeId() const;
|
virtual int getTypeId() const;
|
||||||
|
|
|
@ -63,7 +63,7 @@ namespace MWMechanics
|
||||||
return new AiWander(*this);
|
return new AiWander(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AiWander::execute (const MWWorld::Ptr& actor)
|
bool AiWander::execute (const MWWorld::Ptr& actor,float duration)
|
||||||
{
|
{
|
||||||
MWBase::World *world = MWBase::Environment::get().getWorld();
|
MWBase::World *world = MWBase::Environment::get().getWorld();
|
||||||
if(mDuration)
|
if(mDuration)
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace MWMechanics
|
||||||
|
|
||||||
AiWander(int distance, int duration, int timeOfDay, const std::vector<int>& idle, bool repeat);
|
AiWander(int distance, int duration, int timeOfDay, const std::vector<int>& idle, bool repeat);
|
||||||
virtual AiPackage *clone() const;
|
virtual AiPackage *clone() const;
|
||||||
virtual bool execute (const MWWorld::Ptr& actor);
|
virtual bool execute (const MWWorld::Ptr& actor,float duration);
|
||||||
///< \return Package completed?
|
///< \return Package completed?
|
||||||
virtual int getTypeId() const;
|
virtual int getTypeId() const;
|
||||||
///< 0: Wander
|
///< 0: Wander
|
||||||
|
|
Loading…
Reference in a new issue