mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-08-14 15:52:27 +00:00
fix: stupid
This commit is contained in:
parent
6131826226
commit
653a2c4289
|
|
@ -818,7 +818,7 @@ void MultiPlayerLevel::removeAllPendingEntityRemovals()
|
||||||
{
|
{
|
||||||
if (e->riding->removed || e->riding->rider.lock() != e)
|
if (e->riding->removed || e->riding->rider.lock() != e)
|
||||||
{
|
{
|
||||||
e->riding->rider = std::<Entity>();
|
e->riding->rider = std::weak_ptr<Entity>();
|
||||||
e->riding = nullptr;
|
e->riding = nullptr;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ void ChatIntegrationLayer::InitializeChatManager(
|
||||||
|
|
||||||
InitializeCriticalSection(&m_csAddedUsers);
|
InitializeCriticalSection(&m_csAddedUsers);
|
||||||
|
|
||||||
std::<ChatIntegrationLayer> weakPtrToThis = shared_from_this();
|
std::weak_ptr<ChatIntegrationLayer> weakPtrToThis = shared_from_this();
|
||||||
|
|
||||||
#ifdef PROFILE
|
#ifdef PROFILE
|
||||||
m_chatManager->ChatSettings->PerformanceCountersEnabled = true;
|
m_chatManager->ChatSettings->PerformanceCountersEnabled = true;
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ bool Sensing::canSee(std::shared_ptr<Entity> target)
|
||||||
//util.Timer.push("canSee");
|
//util.Timer.push("canSee");
|
||||||
bool canSee = mob->canSee(target);
|
bool canSee = mob->canSee(target);
|
||||||
//util.Timer.pop();
|
//util.Timer.pop();
|
||||||
if (canSee) seen.push_back(std::<Entity>(target));
|
if (canSee) seen.push_back(std::weak_ptr<Entity>(target));
|
||||||
else unseen.push_back(std::<Entity>(target));
|
else unseen.push_back(std::weak_ptr<Entity>(target));
|
||||||
return canSee;
|
return canSee;
|
||||||
}
|
}
|
||||||
|
|
@ -4,8 +4,8 @@ class Sensing
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
Mob *mob;
|
Mob *mob;
|
||||||
std::vector<std::<Entity> > seen;
|
std::vector<std::weak_ptr<Entity> > seen;
|
||||||
std::vector<std::<Entity> > unseen;
|
std::vector<std::weak_ptr<Entity> > unseen;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Sensing(Mob *mob);
|
Sensing(Mob *mob);
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
ArrowAttackGoal::ArrowAttackGoal(Mob *mob, float speed, int projectileType, int attackInterval)
|
ArrowAttackGoal::ArrowAttackGoal(Mob *mob, float speed, int projectileType, int attackInterval)
|
||||||
{
|
{
|
||||||
// 4J Init
|
// 4J Init
|
||||||
target = std::<Mob>();
|
target = std::weak_ptr<Mob>();
|
||||||
attackTime = 0;
|
attackTime = 0;
|
||||||
seeTime = 0;
|
seeTime = 0;
|
||||||
|
|
||||||
|
|
@ -28,7 +28,7 @@ bool ArrowAttackGoal::canUse()
|
||||||
{
|
{
|
||||||
std::shared_ptr<Mob> bestTarget = mob->getTarget();
|
std::shared_ptr<Mob> bestTarget = mob->getTarget();
|
||||||
if (bestTarget == NULL) return false;
|
if (bestTarget == NULL) return false;
|
||||||
target = std::<Mob>(bestTarget);
|
target = std::weak_ptr<Mob>(bestTarget);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -39,7 +39,7 @@ bool ArrowAttackGoal::canContinueToUse()
|
||||||
|
|
||||||
void ArrowAttackGoal::stop()
|
void ArrowAttackGoal::stop()
|
||||||
{
|
{
|
||||||
target = std::<Mob>();
|
target = std::weak_ptr<Mob>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ArrowAttackGoal::tick()
|
void ArrowAttackGoal::tick()
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ public:
|
||||||
|
|
||||||
Level *level;
|
Level *level;
|
||||||
Mob *mob; // Owner of this goal
|
Mob *mob; // Owner of this goal
|
||||||
std::<Mob> target;
|
std::weak_ptr<Mob> target;
|
||||||
int attackTime;
|
int attackTime;
|
||||||
float speed;
|
float speed;
|
||||||
int seeTime;
|
int seeTime;
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ AvoidPlayerGoal::AvoidPlayerGoal(PathfinderMob *mob, const std::type_info& avoid
|
||||||
this->pathNav = mob->getNavigation();
|
this->pathNav = mob->getNavigation();
|
||||||
setRequiredControlFlags(Control::MoveControlFlag);
|
setRequiredControlFlags(Control::MoveControlFlag);
|
||||||
|
|
||||||
toAvoid = std::<Entity>();
|
toAvoid = std::weak_ptr<Entity>();
|
||||||
path = NULL;
|
path = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -35,7 +35,7 @@ bool AvoidPlayerGoal::canUse()
|
||||||
{
|
{
|
||||||
std::shared_ptr<TamableAnimal> tamableAnimal = dynamic_pointer_cast<TamableAnimal>(mob->shared_from_this());
|
std::shared_ptr<TamableAnimal> tamableAnimal = dynamic_pointer_cast<TamableAnimal>(mob->shared_from_this());
|
||||||
if (tamableAnimal != NULL && tamableAnimal->isTame()) return false;
|
if (tamableAnimal != NULL && tamableAnimal->isTame()) return false;
|
||||||
toAvoid = std::<Entity>(mob->level->getNearestPlayer(mob->shared_from_this(), maxDist));
|
toAvoid = std::weak_ptr<Entity>(mob->level->getNearestPlayer(mob->shared_from_this(), maxDist));
|
||||||
if (toAvoid.lock() == NULL) return false;
|
if (toAvoid.lock() == NULL) return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -46,7 +46,7 @@ bool AvoidPlayerGoal::canUse()
|
||||||
delete entities;
|
delete entities;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
toAvoid = std::<Entity>(entities->at(0));
|
toAvoid = std::weak_ptr<Entity>(entities->at(0));
|
||||||
delete entities;
|
delete entities;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -75,7 +75,7 @@ void AvoidPlayerGoal::start()
|
||||||
|
|
||||||
void AvoidPlayerGoal::stop()
|
void AvoidPlayerGoal::stop()
|
||||||
{
|
{
|
||||||
toAvoid = std::<Entity>();
|
toAvoid = std::weak_ptr<Entity>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AvoidPlayerGoal::tick()
|
void AvoidPlayerGoal::tick()
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ class AvoidPlayerGoal : public Goal
|
||||||
private:
|
private:
|
||||||
PathfinderMob *mob; // Owner of this goal
|
PathfinderMob *mob; // Owner of this goal
|
||||||
float walkSpeed, sprintSpeed;
|
float walkSpeed, sprintSpeed;
|
||||||
std::<Entity> toAvoid;
|
std::weak_ptr<Entity> toAvoid;
|
||||||
float maxDist;
|
float maxDist;
|
||||||
Path *path;
|
Path *path;
|
||||||
PathNavigation *pathNav;
|
PathNavigation *pathNav;
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
BegGoal::BegGoal(Wolf *wolf, float lookDistance)
|
BegGoal::BegGoal(Wolf *wolf, float lookDistance)
|
||||||
{
|
{
|
||||||
player = std::<Player>();
|
player = std::weak_ptr<Player>();
|
||||||
lookTime = 0;
|
lookTime = 0;
|
||||||
|
|
||||||
this->wolf = wolf;
|
this->wolf = wolf;
|
||||||
|
|
@ -19,7 +19,7 @@ BegGoal::BegGoal(Wolf *wolf, float lookDistance)
|
||||||
|
|
||||||
bool BegGoal::canUse()
|
bool BegGoal::canUse()
|
||||||
{
|
{
|
||||||
player = std::<Player>(level->getNearestPlayer(wolf->shared_from_this(), lookDistance));
|
player = std::weak_ptr<Player>(level->getNearestPlayer(wolf->shared_from_this(), lookDistance));
|
||||||
if (player.lock() == NULL) return false;
|
if (player.lock() == NULL) return false;
|
||||||
wolf->setDespawnProtected();
|
wolf->setDespawnProtected();
|
||||||
return playerHoldingInteresting(player.lock());
|
return playerHoldingInteresting(player.lock());
|
||||||
|
|
@ -42,7 +42,7 @@ void BegGoal::start()
|
||||||
void BegGoal::stop()
|
void BegGoal::stop()
|
||||||
{
|
{
|
||||||
wolf->setIsInterested(false);
|
wolf->setIsInterested(false);
|
||||||
player = std::<Player>();
|
player = std::weak_ptr<Player>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BegGoal::tick()
|
void BegGoal::tick()
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ class BegGoal : public Goal
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
Wolf *wolf; // Owner of this goal
|
Wolf *wolf; // Owner of this goal
|
||||||
std::<Player> player;
|
std::weak_ptr<Player> player;
|
||||||
Level *level;
|
Level *level;
|
||||||
float lookDistance;
|
float lookDistance;
|
||||||
int lookTime;
|
int lookTime;
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
BreedGoal::BreedGoal(Animal *animal, float speed)
|
BreedGoal::BreedGoal(Animal *animal, float speed)
|
||||||
{
|
{
|
||||||
partner = std::<Animal>();
|
partner = std::weak_ptr<Animal>();
|
||||||
loveTime = 0;
|
loveTime = 0;
|
||||||
|
|
||||||
this->animal = animal;
|
this->animal = animal;
|
||||||
|
|
@ -23,7 +23,7 @@ BreedGoal::BreedGoal(Animal *animal, float speed)
|
||||||
bool BreedGoal::canUse()
|
bool BreedGoal::canUse()
|
||||||
{
|
{
|
||||||
if (!animal->isInLove()) return false;
|
if (!animal->isInLove()) return false;
|
||||||
partner = std::<Animal>(getFreePartner());
|
partner = std::weak_ptr<Animal>(getFreePartner());
|
||||||
return partner.lock() != NULL;
|
return partner.lock() != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -34,7 +34,7 @@ bool BreedGoal::canContinueToUse()
|
||||||
|
|
||||||
void BreedGoal::stop()
|
void BreedGoal::stop()
|
||||||
{
|
{
|
||||||
partner = std::<Animal>();
|
partner = std::weak_ptr<Animal>();
|
||||||
loveTime = 0;
|
loveTime = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ class BreedGoal : public Goal
|
||||||
private:
|
private:
|
||||||
Animal *animal; // Owner of this goal
|
Animal *animal; // Owner of this goal
|
||||||
Level *level;
|
Level *level;
|
||||||
std::<Animal> partner;
|
std::weak_ptr<Animal> partner;
|
||||||
int loveTime;
|
int loveTime;
|
||||||
float speed;
|
float speed;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ bool DefendVillageTargetGoal::canUse()
|
||||||
{
|
{
|
||||||
std::shared_ptr<Village> village = golem->getVillage();
|
std::shared_ptr<Village> village = golem->getVillage();
|
||||||
if (village == NULL) return false;
|
if (village == NULL) return false;
|
||||||
potentialTarget = std::<Mob>(village->getClosestAggressor(dynamic_pointer_cast<Mob>(golem->shared_from_this())));
|
potentialTarget = std::weak_ptr<Mob>(village->getClosestAggressor(dynamic_pointer_cast<Mob>(golem->shared_from_this())));
|
||||||
return canAttack(potentialTarget.lock(), false);
|
return canAttack(potentialTarget.lock(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ class DefendVillageTargetGoal : public TargetGoal
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
VillagerGolem *golem; // Owner of this goal
|
VillagerGolem *golem; // Owner of this goal
|
||||||
std::<Mob> potentialTarget;
|
std::weak_ptr<Mob> potentialTarget;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DefendVillageTargetGoal(VillagerGolem *golem);
|
DefendVillageTargetGoal(VillagerGolem *golem);
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
FollowOwnerGoal::FollowOwnerGoal(TamableAnimal *tamable, float speed, float startDistance, float stopDistance)
|
FollowOwnerGoal::FollowOwnerGoal(TamableAnimal *tamable, float speed, float startDistance, float stopDistance)
|
||||||
{
|
{
|
||||||
owner = std::<Mob>();
|
owner = std::weak_ptr<Mob>();
|
||||||
timeToRecalcPath = 0;
|
timeToRecalcPath = 0;
|
||||||
oldAvoidWater = false;
|
oldAvoidWater = false;
|
||||||
|
|
||||||
|
|
@ -28,7 +28,7 @@ bool FollowOwnerGoal::canUse()
|
||||||
if (owner == NULL) return false;
|
if (owner == NULL) return false;
|
||||||
if (tamable->isSitting()) return false;
|
if (tamable->isSitting()) return false;
|
||||||
if (tamable->distanceToSqr(owner) < startDistance * startDistance) return false;
|
if (tamable->distanceToSqr(owner) < startDistance * startDistance) return false;
|
||||||
this->owner = std::<Mob>(owner);
|
this->owner = std::weak_ptr<Mob>(owner);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -46,7 +46,7 @@ void FollowOwnerGoal::start()
|
||||||
|
|
||||||
void FollowOwnerGoal::stop()
|
void FollowOwnerGoal::stop()
|
||||||
{
|
{
|
||||||
owner = std::<Mob>();
|
owner = std::weak_ptr<Mob>();
|
||||||
navigation->stop();
|
navigation->stop();
|
||||||
tamable->getNavigation()->setAvoidWater(oldAvoidWater);
|
tamable->getNavigation()->setAvoidWater(oldAvoidWater);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TamableAnimal *tamable; // Owner of this goal
|
TamableAnimal *tamable; // Owner of this goal
|
||||||
std::<Mob> owner;
|
std::weak_ptr<Mob> owner;
|
||||||
Level *level;
|
Level *level;
|
||||||
float speed;
|
float speed;
|
||||||
PathNavigation *navigation;
|
PathNavigation *navigation;
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ bool FollowParentGoal::canUse()
|
||||||
|
|
||||||
if (closest == NULL) return false;
|
if (closest == NULL) return false;
|
||||||
if (closestDistSqr < 3 * 3) return false;
|
if (closestDistSqr < 3 * 3) return false;
|
||||||
parent = std::<Animal>(closest);
|
parent = std::weak_ptr<Animal>(closest);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -54,7 +54,7 @@ void FollowParentGoal::start()
|
||||||
|
|
||||||
void FollowParentGoal::stop()
|
void FollowParentGoal::stop()
|
||||||
{
|
{
|
||||||
parent = std::<Animal>();
|
parent = std::weak_ptr<Animal>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FollowParentGoal::tick()
|
void FollowParentGoal::tick()
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ class FollowParentGoal : public Goal
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
Animal *animal; // Owner of this goal
|
Animal *animal; // Owner of this goal
|
||||||
std::<Animal> parent;
|
std::weak_ptr<Animal> parent;
|
||||||
float speed;
|
float speed;
|
||||||
int timeToRecalcPath;
|
int timeToRecalcPath;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
LeapAtTargetGoal::LeapAtTargetGoal(Mob *mob, float yd)
|
LeapAtTargetGoal::LeapAtTargetGoal(Mob *mob, float yd)
|
||||||
{
|
{
|
||||||
target = std::<Mob>();
|
target = std::weak_ptr<Mob>();
|
||||||
|
|
||||||
this->mob = mob;
|
this->mob = mob;
|
||||||
this->yd = yd;
|
this->yd = yd;
|
||||||
|
|
@ -14,7 +14,7 @@ LeapAtTargetGoal::LeapAtTargetGoal(Mob *mob, float yd)
|
||||||
|
|
||||||
bool LeapAtTargetGoal::canUse()
|
bool LeapAtTargetGoal::canUse()
|
||||||
{
|
{
|
||||||
target = std::<Mob>(mob->getTarget());
|
target = std::weak_ptr<Mob>(mob->getTarget());
|
||||||
if (target.lock() == NULL) return false;
|
if (target.lock() == NULL) return false;
|
||||||
double d = mob->distanceToSqr(target.lock());
|
double d = mob->distanceToSqr(target.lock());
|
||||||
if (d < 2 * 2 || d > 4 * 4) return false;
|
if (d < 2 * 2 || d > 4 * 4) return false;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ class LeapAtTargetGoal : public Goal
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
Mob *mob; // Owner of this goal
|
Mob *mob; // Owner of this goal
|
||||||
std::<Mob> target;
|
std::weak_ptr<Mob> target;
|
||||||
float yd;
|
float yd;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ bool LookAtPlayerGoal::canUse()
|
||||||
{
|
{
|
||||||
if (mob->getRandom()->nextFloat() >= probability) return false;
|
if (mob->getRandom()->nextFloat() >= probability) return false;
|
||||||
if (lookAtType == typeid(Player)) lookAt = mob->level->getNearestPlayer(mob->shared_from_this(), lookDistance);
|
if (lookAtType == typeid(Player)) lookAt = mob->level->getNearestPlayer(mob->shared_from_this(), lookDistance);
|
||||||
else lookAt = std::<Entity>(mob->level->getClosestEntityOfClass(lookAtType, mob->bb->grow(lookDistance, 3, lookDistance), mob->shared_from_this()));
|
else lookAt = std::weak_ptr<Entity>(mob->level->getClosestEntityOfClass(lookAtType, mob->bb->grow(lookDistance, 3, lookDistance), mob->shared_from_this()));
|
||||||
return lookAt.lock() != NULL;
|
return lookAt.lock() != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -47,7 +47,7 @@ void LookAtPlayerGoal::start()
|
||||||
|
|
||||||
void LookAtPlayerGoal::stop()
|
void LookAtPlayerGoal::stop()
|
||||||
{
|
{
|
||||||
lookAt = std::<Entity>();
|
lookAt = std::weak_ptr<Entity>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LookAtPlayerGoal::tick()
|
void LookAtPlayerGoal::tick()
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ private:
|
||||||
Mob *mob; // Owner of this goal
|
Mob *mob; // Owner of this goal
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::<Entity> lookAt;
|
std::weak_ptr<Entity> lookAt;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
float lookDistance;
|
float lookDistance;
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ bool LookAtTradingPlayerGoal::canUse()
|
||||||
{
|
{
|
||||||
if (villager->isTrading())
|
if (villager->isTrading())
|
||||||
{
|
{
|
||||||
lookAt = std::<Entity>(dynamic_pointer_cast<Entity>(villager->getTradingPlayer()));
|
lookAt = std::weak_ptr<Entity>(dynamic_pointer_cast<Entity>(villager->getTradingPlayer()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@
|
||||||
|
|
||||||
MakeLoveGoal::MakeLoveGoal(Villager *villager)
|
MakeLoveGoal::MakeLoveGoal(Villager *villager)
|
||||||
{
|
{
|
||||||
village = std::<Village>();
|
village = std::weak_ptr<Village>();
|
||||||
partner = std::<Villager>();
|
partner = std::weak_ptr<Villager>();
|
||||||
loveMakingTime = 0;
|
loveMakingTime = 0;
|
||||||
|
|
||||||
this->villager = villager;
|
this->villager = villager;
|
||||||
|
|
@ -32,7 +32,7 @@ bool MakeLoveGoal::canUse()
|
||||||
std::shared_ptr<Entity> mate = level->getClosestEntityOfClass(typeid(Villager), villager->bb->grow(8, 3, 8), villager->shared_from_this());
|
std::shared_ptr<Entity> mate = level->getClosestEntityOfClass(typeid(Villager), villager->bb->grow(8, 3, 8), villager->shared_from_this());
|
||||||
if (mate == NULL) return false;
|
if (mate == NULL) return false;
|
||||||
|
|
||||||
partner = std::<Villager>(dynamic_pointer_cast<Villager>(mate));
|
partner = std::weak_ptr<Villager>(dynamic_pointer_cast<Villager>(mate));
|
||||||
if (partner.lock()->getAge() != 0) return false;
|
if (partner.lock()->getAge() != 0) return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -46,8 +46,8 @@ void MakeLoveGoal::start()
|
||||||
|
|
||||||
void MakeLoveGoal::stop()
|
void MakeLoveGoal::stop()
|
||||||
{
|
{
|
||||||
village = std::<Village>();
|
village = std::weak_ptr<Village>();
|
||||||
partner = std::<Villager>();
|
partner = std::weak_ptr<Villager>();
|
||||||
villager->setInLove(false);
|
villager->setInLove(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,10 @@ class MakeLoveGoal : public Goal
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
Villager *villager; // Owner of this goal
|
Villager *villager; // Owner of this goal
|
||||||
std::<Villager> partner;
|
std::weak_ptr<Villager> partner;
|
||||||
Level *level;
|
Level *level;
|
||||||
int loveMakingTime;
|
int loveMakingTime;
|
||||||
std::<Village> village;
|
std::weak_ptr<Village> village;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MakeLoveGoal(Villager *villager);
|
MakeLoveGoal(Villager *villager);
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ bool MeleeAttackGoal::canUse()
|
||||||
if (bestTarget == NULL) return false;
|
if (bestTarget == NULL) return false;
|
||||||
if(!bestTarget->isAlive()) return false;
|
if(!bestTarget->isAlive()) return false;
|
||||||
if (attackType != eTYPE_NOTSET && (attackType & bestTarget->GetType()) != attackType) return false;
|
if (attackType != eTYPE_NOTSET && (attackType & bestTarget->GetType()) != attackType) return false;
|
||||||
target = std::<Mob>(bestTarget);
|
target = std::weak_ptr<Mob>(bestTarget);
|
||||||
delete path;
|
delete path;
|
||||||
path = mob->getNavigation()->createPath(target.lock());
|
path = mob->getNavigation()->createPath(target.lock());
|
||||||
return path != NULL;
|
return path != NULL;
|
||||||
|
|
@ -70,7 +70,7 @@ void MeleeAttackGoal::start()
|
||||||
|
|
||||||
void MeleeAttackGoal::stop()
|
void MeleeAttackGoal::stop()
|
||||||
{
|
{
|
||||||
target = std::<Mob>();
|
target = std::weak_ptr<Mob>();
|
||||||
mob->getNavigation()->stop();
|
mob->getNavigation()->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ class MeleeAttackGoal : public Goal
|
||||||
private:
|
private:
|
||||||
Level *level;
|
Level *level;
|
||||||
Mob *mob; // Owner of this goal
|
Mob *mob; // Owner of this goal
|
||||||
std::<Mob> target;
|
std::weak_ptr<Mob> target;
|
||||||
|
|
||||||
int attackTime;
|
int attackTime;
|
||||||
float speed;
|
float speed;
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ void MoveIndoorsGoal::start()
|
||||||
std::shared_ptr<DoorInfo> _doorInfo = doorInfo.lock();
|
std::shared_ptr<DoorInfo> _doorInfo = doorInfo.lock();
|
||||||
if( _doorInfo == NULL )
|
if( _doorInfo == NULL )
|
||||||
{
|
{
|
||||||
doorInfo = std::<DoorInfo>();
|
doorInfo = std::weak_ptr<DoorInfo>();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (mob->distanceToSqr(_doorInfo->getIndoorX(), _doorInfo->y, _doorInfo->getIndoorZ()) > 16 * 16)
|
if (mob->distanceToSqr(_doorInfo->getIndoorX(), _doorInfo->y, _doorInfo->getIndoorZ()) > 16 * 16)
|
||||||
|
|
@ -55,11 +55,11 @@ void MoveIndoorsGoal::stop()
|
||||||
std::shared_ptr<DoorInfo> _doorInfo = doorInfo.lock();
|
std::shared_ptr<DoorInfo> _doorInfo = doorInfo.lock();
|
||||||
if( _doorInfo == NULL )
|
if( _doorInfo == NULL )
|
||||||
{
|
{
|
||||||
doorInfo = std::<DoorInfo>();
|
doorInfo = std::weak_ptr<DoorInfo>();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
insideX = _doorInfo->getIndoorX();
|
insideX = _doorInfo->getIndoorX();
|
||||||
insideZ = _doorInfo->getIndoorZ();
|
insideZ = _doorInfo->getIndoorZ();
|
||||||
doorInfo = std::<DoorInfo>();
|
doorInfo = std::weak_ptr<DoorInfo>();
|
||||||
}
|
}
|
||||||
|
|
@ -9,7 +9,7 @@ class MoveIndoorsGoal : public Goal
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
PathfinderMob *mob;
|
PathfinderMob *mob;
|
||||||
std::<DoorInfo> doorInfo;
|
std::weak_ptr<DoorInfo> doorInfo;
|
||||||
int insideX, insideZ;
|
int insideX, insideZ;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
MoveThroughVillageGoal::MoveThroughVillageGoal(PathfinderMob *mob, float speed, bool onlyAtNight)
|
MoveThroughVillageGoal::MoveThroughVillageGoal(PathfinderMob *mob, float speed, bool onlyAtNight)
|
||||||
{
|
{
|
||||||
path = NULL;
|
path = NULL;
|
||||||
doorInfo = std::<DoorInfo>();
|
doorInfo = std::weak_ptr<DoorInfo>();
|
||||||
|
|
||||||
this->mob = mob;
|
this->mob = mob;
|
||||||
this->speed = speed;
|
this->speed = speed;
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,9 @@ private:
|
||||||
PathfinderMob *mob;
|
PathfinderMob *mob;
|
||||||
float speed;
|
float speed;
|
||||||
Path *path;
|
Path *path;
|
||||||
std::<DoorInfo> doorInfo;
|
std::weak_ptr<DoorInfo> doorInfo;
|
||||||
bool onlyAtNight;
|
bool onlyAtNight;
|
||||||
std::vector< std::<DoorInfo> > visited;
|
std::vector< std::weak_ptr<DoorInfo> > visited;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MoveThroughVillageGoal(PathfinderMob *mob, float speed, bool onlyAtNight);
|
MoveThroughVillageGoal(PathfinderMob *mob, float speed, bool onlyAtNight);
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ MoveTowardsTargetGoal::MoveTowardsTargetGoal(PathfinderMob *mob, float speed, fl
|
||||||
|
|
||||||
bool MoveTowardsTargetGoal::canUse()
|
bool MoveTowardsTargetGoal::canUse()
|
||||||
{
|
{
|
||||||
target = std::<Mob>(mob->getTarget());
|
target = std::weak_ptr<Mob>(mob->getTarget());
|
||||||
if (target.lock() == NULL) return false;
|
if (target.lock() == NULL) return false;
|
||||||
if (target.lock()->distanceToSqr(mob->shared_from_this()) > within * within) return false;
|
if (target.lock()->distanceToSqr(mob->shared_from_this()) > within * within) return false;
|
||||||
Vec3 *pos = RandomPos::getPosTowards(dynamic_pointer_cast<PathfinderMob>(mob->shared_from_this()), 16, 7, Vec3::newTemp(target.lock()->x, target.lock()->y, target.lock()->z));
|
Vec3 *pos = RandomPos::getPosTowards(dynamic_pointer_cast<PathfinderMob>(mob->shared_from_this()), 16, 7, Vec3::newTemp(target.lock()->x, target.lock()->y, target.lock()->z));
|
||||||
|
|
@ -34,7 +34,7 @@ bool MoveTowardsTargetGoal::canContinueToUse()
|
||||||
|
|
||||||
void MoveTowardsTargetGoal::stop()
|
void MoveTowardsTargetGoal::stop()
|
||||||
{
|
{
|
||||||
target = std::<Mob>();
|
target = std::weak_ptr<Mob>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveTowardsTargetGoal::start()
|
void MoveTowardsTargetGoal::start()
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ class MoveTowardsTargetGoal : public Goal
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
PathfinderMob *mob;
|
PathfinderMob *mob;
|
||||||
std::<Mob> target;
|
std::weak_ptr<Mob> target;
|
||||||
double wantedX, wantedY, wantedZ;
|
double wantedX, wantedY, wantedZ;
|
||||||
float speed, within;
|
float speed, within;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ bool NearestAttackableTargetGoal::canUse()
|
||||||
std::shared_ptr<Mob> potentialTarget = mob->level->getNearestAttackablePlayer(mob->shared_from_this(), within);
|
std::shared_ptr<Mob> potentialTarget = mob->level->getNearestAttackablePlayer(mob->shared_from_this(), within);
|
||||||
if (canAttack(potentialTarget, false))
|
if (canAttack(potentialTarget, false))
|
||||||
{
|
{
|
||||||
target = std::<Mob>(potentialTarget);
|
target = std::weak_ptr<Mob>(potentialTarget);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -55,7 +55,7 @@ bool NearestAttackableTargetGoal::canUse()
|
||||||
std::shared_ptr<Mob> potTarget = dynamic_pointer_cast<Mob>(*it);
|
std::shared_ptr<Mob> potTarget = dynamic_pointer_cast<Mob>(*it);
|
||||||
if (canAttack(potTarget, false))
|
if (canAttack(potTarget, false))
|
||||||
{
|
{
|
||||||
target = std::<Mob>(potTarget);
|
target = std::weak_ptr<Mob>(potTarget);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::<Mob> target;
|
std::weak_ptr<Mob> target;
|
||||||
const std::type_info& targetType;
|
const std::type_info& targetType;
|
||||||
int randomInterval;
|
int randomInterval;
|
||||||
DistComp *distComp;
|
DistComp *distComp;
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
OzelotAttackGoal::OzelotAttackGoal(Mob *mob)
|
OzelotAttackGoal::OzelotAttackGoal(Mob *mob)
|
||||||
{
|
{
|
||||||
target = std::<Mob>();
|
target = std::weak_ptr<Mob>();
|
||||||
attackTime = 0;
|
attackTime = 0;
|
||||||
speed = 0;
|
speed = 0;
|
||||||
trackTarget = false;
|
trackTarget = false;
|
||||||
|
|
@ -22,7 +22,7 @@ bool OzelotAttackGoal::canUse()
|
||||||
{
|
{
|
||||||
std::shared_ptr<Mob> bestTarget = mob->getTarget();
|
std::shared_ptr<Mob> bestTarget = mob->getTarget();
|
||||||
if (bestTarget == NULL) return false;
|
if (bestTarget == NULL) return false;
|
||||||
target = std::<Mob>(bestTarget);
|
target = std::weak_ptr<Mob>(bestTarget);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -35,7 +35,7 @@ bool OzelotAttackGoal::canContinueToUse()
|
||||||
|
|
||||||
void OzelotAttackGoal::stop()
|
void OzelotAttackGoal::stop()
|
||||||
{
|
{
|
||||||
target = std::<Mob>();
|
target = std::weak_ptr<Mob>();
|
||||||
mob->getNavigation()->stop();
|
mob->getNavigation()->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ class OzelotAttackGoal : public Goal
|
||||||
private:
|
private:
|
||||||
Level *level;
|
Level *level;
|
||||||
Mob *mob;
|
Mob *mob;
|
||||||
std::<Mob> target;
|
std::weak_ptr<Mob> target;
|
||||||
int attackTime;
|
int attackTime;
|
||||||
float speed;
|
float speed;
|
||||||
bool trackTarget;
|
bool trackTarget;
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ bool OfferFlowerGoal::canUse()
|
||||||
{
|
{
|
||||||
if (!golem->level->isDay()) return false;
|
if (!golem->level->isDay()) return false;
|
||||||
if (golem->getRandom()->nextInt(8000) != 0) return false;
|
if (golem->getRandom()->nextInt(8000) != 0) return false;
|
||||||
villager = std::<Villager>(dynamic_pointer_cast<Villager>( golem->level->getClosestEntityOfClass(typeid(Villager), golem->bb->grow(6, 2, 6), golem->shared_from_this()) ));
|
villager = std::weak_ptr<Villager>(dynamic_pointer_cast<Villager>( golem->level->getClosestEntityOfClass(typeid(Villager), golem->bb->grow(6, 2, 6), golem->shared_from_this()) ));
|
||||||
return villager.lock() != NULL;
|
return villager.lock() != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -34,7 +34,7 @@ void OfferFlowerGoal::start()
|
||||||
void OfferFlowerGoal::stop()
|
void OfferFlowerGoal::stop()
|
||||||
{
|
{
|
||||||
golem->offerFlower(false);
|
golem->offerFlower(false);
|
||||||
villager = std::<Villager>();
|
villager = std::weak_ptr<Villager>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OfferFlowerGoal::tick()
|
void OfferFlowerGoal::tick()
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
VillagerGolem *golem;
|
VillagerGolem *golem;
|
||||||
std::<Villager> villager;
|
std::weak_ptr<Villager> villager;
|
||||||
int _tick;
|
int _tick;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ bool OwnerHurtByTargetGoal::canUse()
|
||||||
if (!tameAnimal->isTame()) return false;
|
if (!tameAnimal->isTame()) return false;
|
||||||
std::shared_ptr<Mob> owner = tameAnimal->getOwner();
|
std::shared_ptr<Mob> owner = tameAnimal->getOwner();
|
||||||
if (owner == NULL) return false;
|
if (owner == NULL) return false;
|
||||||
ownerLastHurtBy = std::<Mob>(owner->getLastHurtByMob());
|
ownerLastHurtBy = std::weak_ptr<Mob>(owner->getLastHurtByMob());
|
||||||
return canAttack(ownerLastHurtBy.lock(), false);
|
return canAttack(ownerLastHurtBy.lock(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ class OwnerHurtByTargetGoal : public TargetGoal
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
TamableAnimal *tameAnimal; // Owner of this goal
|
TamableAnimal *tameAnimal; // Owner of this goal
|
||||||
std::<Mob> ownerLastHurtBy;
|
std::weak_ptr<Mob> ownerLastHurtBy;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
OwnerHurtByTargetGoal(TamableAnimal *tameAnimal);
|
OwnerHurtByTargetGoal(TamableAnimal *tameAnimal);
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ bool OwnerHurtTargetGoal::canUse()
|
||||||
if (!tameAnimal->isTame()) return false;
|
if (!tameAnimal->isTame()) return false;
|
||||||
std::shared_ptr<Mob> owner = tameAnimal->getOwner();
|
std::shared_ptr<Mob> owner = tameAnimal->getOwner();
|
||||||
if (owner == NULL) return false;
|
if (owner == NULL) return false;
|
||||||
ownerLastHurt = std::<Mob>(owner->getLastHurtMob());
|
ownerLastHurt = std::weak_ptr<Mob>(owner->getLastHurtMob());
|
||||||
return canAttack(ownerLastHurt.lock(), false);
|
return canAttack(ownerLastHurt.lock(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ class OwnerHurtTargetGoal : public TargetGoal
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
TamableAnimal *tameAnimal; // Owner of this goal
|
TamableAnimal *tameAnimal; // Owner of this goal
|
||||||
std::<Mob> ownerLastHurt;
|
std::weak_ptr<Mob> ownerLastHurt;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
OwnerHurtTargetGoal(TamableAnimal *tameAnimal);
|
OwnerHurtTargetGoal(TamableAnimal *tameAnimal);
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
PlayGoal::PlayGoal(Villager *mob, float speed)
|
PlayGoal::PlayGoal(Villager *mob, float speed)
|
||||||
{
|
{
|
||||||
followFriend = std::<Mob>();
|
followFriend = std::weak_ptr<Mob>();
|
||||||
wantedX = wantedY = wantedZ = 0.0;
|
wantedX = wantedY = wantedZ = 0.0;
|
||||||
playTime = 0;
|
playTime = 0;
|
||||||
|
|
||||||
|
|
@ -38,7 +38,7 @@ bool PlayGoal::canUse()
|
||||||
double distSqr = friendV->distanceToSqr(mob->shared_from_this());
|
double distSqr = friendV->distanceToSqr(mob->shared_from_this());
|
||||||
if (distSqr > closestDistSqr) continue;
|
if (distSqr > closestDistSqr) continue;
|
||||||
closestDistSqr = distSqr;
|
closestDistSqr = distSqr;
|
||||||
followFriend = std::<Mob>(friendV);
|
followFriend = std::weak_ptr<Mob>(friendV);
|
||||||
}
|
}
|
||||||
delete children;
|
delete children;
|
||||||
|
|
||||||
|
|
@ -64,7 +64,7 @@ void PlayGoal::start()
|
||||||
void PlayGoal::stop()
|
void PlayGoal::stop()
|
||||||
{
|
{
|
||||||
mob->setChasing(false);
|
mob->setChasing(false);
|
||||||
followFriend = std::<Mob>();
|
followFriend = std::weak_ptr<Mob>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayGoal::tick()
|
void PlayGoal::tick()
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ class PlayGoal : public Goal
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
Villager *mob;
|
Villager *mob;
|
||||||
std::<Mob> followFriend;
|
std::weak_ptr<Mob> followFriend;
|
||||||
float speed;
|
float speed;
|
||||||
double wantedX, wantedY, wantedZ;
|
double wantedX, wantedY, wantedZ;
|
||||||
int playTime;
|
int playTime;
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ void RestrictOpenDoorGoal::stop()
|
||||||
{
|
{
|
||||||
mob->getNavigation()->setCanOpenDoors(true);
|
mob->getNavigation()->setCanOpenDoors(true);
|
||||||
mob->getNavigation()->setCanPassDoors(true);
|
mob->getNavigation()->setCanPassDoors(true);
|
||||||
doorInfo = std::<DoorInfo>();
|
doorInfo = std::weak_ptr<DoorInfo>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RestrictOpenDoorGoal::tick()
|
void RestrictOpenDoorGoal::tick()
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ class RestrictOpenDoorGoal : public Goal
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
PathfinderMob *mob;
|
PathfinderMob *mob;
|
||||||
std::<DoorInfo> doorInfo;
|
std::weak_ptr<DoorInfo> doorInfo;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RestrictOpenDoorGoal(PathfinderMob *mob);
|
RestrictOpenDoorGoal(PathfinderMob *mob);
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
SwellGoal::SwellGoal(Creeper *creeper)
|
SwellGoal::SwellGoal(Creeper *creeper)
|
||||||
{
|
{
|
||||||
target = std::<Mob>();
|
target = std::weak_ptr<Mob>();
|
||||||
|
|
||||||
this->creeper = creeper;
|
this->creeper = creeper;
|
||||||
setRequiredControlFlags(Control::MoveControlFlag);
|
setRequiredControlFlags(Control::MoveControlFlag);
|
||||||
|
|
@ -22,12 +22,12 @@ bool SwellGoal::canUse()
|
||||||
void SwellGoal::start()
|
void SwellGoal::start()
|
||||||
{
|
{
|
||||||
creeper->getNavigation()->stop();
|
creeper->getNavigation()->stop();
|
||||||
target = std::<Mob>(creeper->getTarget());
|
target = std::weak_ptr<Mob>(creeper->getTarget());
|
||||||
}
|
}
|
||||||
|
|
||||||
void SwellGoal::stop()
|
void SwellGoal::stop()
|
||||||
{
|
{
|
||||||
target = std::<Mob>();
|
target = std::weak_ptr<Mob>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SwellGoal::tick()
|
void SwellGoal::tick()
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ class SwellGoal : public Goal
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
Creeper *creeper;
|
Creeper *creeper;
|
||||||
std::<Mob> target;
|
std::weak_ptr<Mob> target;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SwellGoal(Creeper *creeper);
|
SwellGoal(Creeper *creeper);
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ TakeFlowerGoal::TakeFlowerGoal(Villager *villager)
|
||||||
{
|
{
|
||||||
takeFlower = false;
|
takeFlower = false;
|
||||||
pickupTick = 0;
|
pickupTick = 0;
|
||||||
golem = std::<VillagerGolem>();
|
golem = std::weak_ptr<VillagerGolem>();
|
||||||
|
|
||||||
this->villager = villager;
|
this->villager = villager;
|
||||||
setRequiredControlFlags(Control::MoveControlFlag | Control::LookControlFlag);
|
setRequiredControlFlags(Control::MoveControlFlag | Control::LookControlFlag);
|
||||||
|
|
@ -36,7 +36,7 @@ bool TakeFlowerGoal::canUse()
|
||||||
std::shared_ptr<VillagerGolem> vg = dynamic_pointer_cast<VillagerGolem>(*it);
|
std::shared_ptr<VillagerGolem> vg = dynamic_pointer_cast<VillagerGolem>(*it);
|
||||||
if (vg->getOfferFlowerTick() > 0)
|
if (vg->getOfferFlowerTick() > 0)
|
||||||
{
|
{
|
||||||
golem = std::<VillagerGolem>(vg);
|
golem = std::weak_ptr<VillagerGolem>(vg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -58,7 +58,7 @@ void TakeFlowerGoal::start()
|
||||||
|
|
||||||
void TakeFlowerGoal::stop()
|
void TakeFlowerGoal::stop()
|
||||||
{
|
{
|
||||||
golem = std::<VillagerGolem>();
|
golem = std::weak_ptr<VillagerGolem>();
|
||||||
villager->getNavigation()->stop();
|
villager->getNavigation()->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ class TakeFlowerGoal : public Goal
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
Villager *villager;
|
Villager *villager;
|
||||||
std::<VillagerGolem> golem;
|
std::weak_ptr<VillagerGolem> golem;
|
||||||
int pickupTick;
|
int pickupTick;
|
||||||
bool takeFlower;
|
bool takeFlower;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
TemptGoal::TemptGoal(PathfinderMob *mob, float speed, int itemId, bool canScare)
|
TemptGoal::TemptGoal(PathfinderMob *mob, float speed, int itemId, bool canScare)
|
||||||
{
|
{
|
||||||
px = py = pz = pRotX = pRotY = 0.0;
|
px = py = pz = pRotX = pRotY = 0.0;
|
||||||
player = std::<Player>();
|
player = std::weak_ptr<Player>();
|
||||||
calmDown = 0;
|
calmDown = 0;
|
||||||
_isRunning = false;
|
_isRunning = false;
|
||||||
oldAvoidWater = false;
|
oldAvoidWater = false;
|
||||||
|
|
@ -28,7 +28,7 @@ bool TemptGoal::canUse()
|
||||||
--calmDown;
|
--calmDown;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
player = std::<Player>(mob->level->getNearestPlayer(mob->shared_from_this(), 10));
|
player = std::weak_ptr<Player>(mob->level->getNearestPlayer(mob->shared_from_this(), 10));
|
||||||
if (player.lock() == NULL) return false;
|
if (player.lock() == NULL) return false;
|
||||||
mob->setDespawnProtected(); // If we've got a nearby player, then consider this mob as something we'd miss if it despawned
|
mob->setDespawnProtected(); // If we've got a nearby player, then consider this mob as something we'd miss if it despawned
|
||||||
std::shared_ptr<ItemInstance> item = player.lock()->getSelectedItem();
|
std::shared_ptr<ItemInstance> item = player.lock()->getSelectedItem();
|
||||||
|
|
@ -71,7 +71,7 @@ void TemptGoal::start()
|
||||||
|
|
||||||
void TemptGoal::stop()
|
void TemptGoal::stop()
|
||||||
{
|
{
|
||||||
player = std::<Player>();
|
player = std::weak_ptr<Player>();
|
||||||
mob->getNavigation()->stop();
|
mob->getNavigation()->stop();
|
||||||
calmDown = 100;
|
calmDown = 100;
|
||||||
_isRunning = false;
|
_isRunning = false;
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ private:
|
||||||
PathfinderMob *mob;
|
PathfinderMob *mob;
|
||||||
float speed;
|
float speed;
|
||||||
double px, py, pz, pRotX, pRotY;
|
double px, py, pz, pRotX, pRotY;
|
||||||
std::<Player> player;
|
std::weak_ptr<Player> player;
|
||||||
int calmDown ;
|
int calmDown ;
|
||||||
bool _isRunning;
|
bool _isRunning;
|
||||||
int itemId;
|
int itemId;
|
||||||
|
|
|
||||||
|
|
@ -158,10 +158,10 @@ void ChestTileEntity::checkNeighbors()
|
||||||
if (hasCheckedNeighbors) return;
|
if (hasCheckedNeighbors) return;
|
||||||
|
|
||||||
hasCheckedNeighbors = true;
|
hasCheckedNeighbors = true;
|
||||||
n = std::<ChestTileEntity>();
|
n = std::weak_ptr<ChestTileEntity>();
|
||||||
e = std::<ChestTileEntity>();
|
e = std::weak_ptr<ChestTileEntity>();
|
||||||
w = std::<ChestTileEntity>();
|
w = std::weak_ptr<ChestTileEntity>();
|
||||||
s = std::<ChestTileEntity>();
|
s = std::weak_ptr<ChestTileEntity>();
|
||||||
|
|
||||||
if (level->getTile(x - 1, y, z) == Tile::chest_Id)
|
if (level->getTile(x - 1, y, z) == Tile::chest_Id)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -28,10 +28,10 @@ private:
|
||||||
public:
|
public:
|
||||||
bool isBonusChest; // 4J added
|
bool isBonusChest; // 4J added
|
||||||
bool hasCheckedNeighbors;
|
bool hasCheckedNeighbors;
|
||||||
std::<ChestTileEntity> n;
|
std::weak_ptr<ChestTileEntity> n;
|
||||||
std::<ChestTileEntity> e;
|
std::weak_ptr<ChestTileEntity> e;
|
||||||
std::<ChestTileEntity> w;
|
std::weak_ptr<ChestTileEntity> w;
|
||||||
std::<ChestTileEntity> s;
|
std::weak_ptr<ChestTileEntity> s;
|
||||||
|
|
||||||
float openness, oOpenness;
|
float openness, oOpenness;
|
||||||
int openCount;
|
int openCount;
|
||||||
|
|
|
||||||
|
|
@ -257,7 +257,7 @@ void Entity::_init(bool useSmallId)
|
||||||
viewScale = 1.0;
|
viewScale = 1.0;
|
||||||
|
|
||||||
blocksBuilding = false;
|
blocksBuilding = false;
|
||||||
rider = std::<Entity>();
|
rider = std::weak_ptr<Entity>();
|
||||||
riding = nullptr;
|
riding = nullptr;
|
||||||
|
|
||||||
//level = NULL; // Level is assigned to in the original c_tor code
|
//level = NULL; // Level is assigned to in the original c_tor code
|
||||||
|
|
@ -1571,14 +1571,14 @@ void Entity::ride(std::shared_ptr<Entity> e)
|
||||||
{
|
{
|
||||||
// 4J Stu - Position should already be updated before the SetRidingPacket comes in
|
// 4J Stu - Position should already be updated before the SetRidingPacket comes in
|
||||||
if(!level->isClientSide) moveTo(riding->x, riding->bb->y0 + riding->bbHeight, riding->z, yRot, xRot);
|
if(!level->isClientSide) moveTo(riding->x, riding->bb->y0 + riding->bbHeight, riding->z, yRot, xRot);
|
||||||
riding->rider = std::<Entity>();
|
riding->rider = std::weak_ptr<Entity>();
|
||||||
}
|
}
|
||||||
riding = nullptr;
|
riding = nullptr;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (riding != NULL)
|
if (riding != NULL)
|
||||||
{
|
{
|
||||||
riding->rider = std::<Entity>();
|
riding->rider = std::weak_ptr<Entity>();
|
||||||
}
|
}
|
||||||
riding = e;
|
riding = e;
|
||||||
e->rider = shared_from_this();
|
e->rider = shared_from_this();
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ public:
|
||||||
double viewScale;
|
double viewScale;
|
||||||
|
|
||||||
bool blocksBuilding;
|
bool blocksBuilding;
|
||||||
std::<Entity> rider; // Changed to weak to avoid circular dependency between rider/riding entity
|
std::weak_ptr<Entity> rider; // Changed to weak to avoid circular dependency between rider/riding entity
|
||||||
std::shared_ptr<Entity> riding;
|
std::shared_ptr<Entity> riding;
|
||||||
|
|
||||||
Level *level;
|
Level *level;
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ private:
|
||||||
|
|
||||||
// int inLove; // 4J removed - now synched data
|
// int inLove; // 4J removed - now synched data
|
||||||
int loveTime;
|
int loveTime;
|
||||||
std::<Player> loveCause;
|
std::weak_ptr<Player> loveCause;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Animal(Level *level);
|
Animal(Level *level);
|
||||||
|
|
|
||||||
|
|
@ -434,7 +434,7 @@ void Boat::tick()
|
||||||
|
|
||||||
if (rider.lock() != NULL)
|
if (rider.lock() != NULL)
|
||||||
{
|
{
|
||||||
if (rider.lock()->removed) rider = std::<Entity>();
|
if (rider.lock()->removed) rider = std::weak_ptr<Entity>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -696,7 +696,7 @@ void Minecart::tick()
|
||||||
{
|
{
|
||||||
rider.lock()->riding = nullptr;
|
rider.lock()->riding = nullptr;
|
||||||
}
|
}
|
||||||
rider = std::<Entity>();
|
rider = std::weak_ptr<Entity>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,9 +36,9 @@ void Villager::_init(int profession)
|
||||||
villageUpdateInterval = 0;
|
villageUpdateInterval = 0;
|
||||||
inLove = false;
|
inLove = false;
|
||||||
chasing = false;
|
chasing = false;
|
||||||
village = std::<Village>();
|
village = std::weak_ptr<Village>();
|
||||||
|
|
||||||
tradingPlayer = std::<Player>();
|
tradingPlayer = std::weak_ptr<Player>();
|
||||||
offers = NULL;
|
offers = NULL;
|
||||||
updateMerchantTimer = 0;
|
updateMerchantTimer = 0;
|
||||||
addRecipeOnUpdate = false;
|
addRecipeOnUpdate = false;
|
||||||
|
|
@ -341,7 +341,7 @@ void Villager::die(DamageSource *source)
|
||||||
|
|
||||||
void Villager::setTradingPlayer(std::shared_ptr<Player> player)
|
void Villager::setTradingPlayer(std::shared_ptr<Player> player)
|
||||||
{
|
{
|
||||||
tradingPlayer = std::<Player>(player);
|
tradingPlayer = std::weak_ptr<Player>(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<Player> Villager::getTradingPlayer()
|
std::shared_ptr<Player> Villager::getTradingPlayer()
|
||||||
|
|
|
||||||
|
|
@ -32,9 +32,9 @@ private:
|
||||||
|
|
||||||
bool inLove;
|
bool inLove;
|
||||||
bool chasing;
|
bool chasing;
|
||||||
std::<Village> village;
|
std::weak_ptr<Village> village;
|
||||||
|
|
||||||
std::<Player> tradingPlayer;
|
std::weak_ptr<Player> tradingPlayer;
|
||||||
MerchantRecipeList *offers;
|
MerchantRecipeList *offers;
|
||||||
int updateMerchantTimer;
|
int updateMerchantTimer;
|
||||||
bool addRecipeOnUpdate;
|
bool addRecipeOnUpdate;
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ VillagerGolem::VillagerGolem(Level *level) : Golem(level)
|
||||||
health = getMaxHealth();
|
health = getMaxHealth();
|
||||||
|
|
||||||
villageUpdateInterval = 0;
|
villageUpdateInterval = 0;
|
||||||
village = std::<Village>();
|
village = std::weak_ptr<Village>();
|
||||||
attackAnimationTick = 0;
|
attackAnimationTick = 0;
|
||||||
offerFlowerTick = 0;
|
offerFlowerTick = 0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ protected:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int villageUpdateInterval;
|
int villageUpdateInterval;
|
||||||
std::<Village> village;
|
std::weak_ptr<Village> village;
|
||||||
int attackAnimationTick;
|
int attackAnimationTick;
|
||||||
int offerFlowerTick;
|
int offerFlowerTick;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ VillageSiege::VillageSiege(Level *level)
|
||||||
siegeState = SIEGE_NOT_INITED;
|
siegeState = SIEGE_NOT_INITED;
|
||||||
siegeCount = 0;
|
siegeCount = 0;
|
||||||
nextSpawnTime = 0;
|
nextSpawnTime = 0;
|
||||||
village = std::<Village>();
|
village = std::weak_ptr<Village>();
|
||||||
spawnX = spawnY = spawnZ = 0;
|
spawnX = spawnY = spawnZ = 0;
|
||||||
|
|
||||||
this->level = level;
|
this->level = level;
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ private:
|
||||||
int siegeState;
|
int siegeState;
|
||||||
int siegeCount;
|
int siegeCount;
|
||||||
int nextSpawnTime;
|
int nextSpawnTime;
|
||||||
std::<Village> village;
|
std::weak_ptr<Village> village;
|
||||||
int spawnX, spawnY, spawnZ;
|
int spawnX, spawnY, spawnZ;
|
||||||
|
|
||||||
static const int SIEGE_NOT_INITED = -1;
|
static const int SIEGE_NOT_INITED = -1;
|
||||||
|
|
|
||||||
|
|
@ -2273,7 +2273,7 @@ void Level::tickEntities()
|
||||||
{
|
{
|
||||||
if (e->riding->removed || e->riding->rider.lock() != e)
|
if (e->riding->removed || e->riding->rider.lock() != e)
|
||||||
{
|
{
|
||||||
e->riding->rider = std::<Entity>();
|
e->riding->rider = std::weak_ptr<Entity>();
|
||||||
e->riding = nullptr;
|
e->riding = nullptr;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -2521,7 +2521,7 @@ void Level::tick(std::shared_ptr<Entity> e, bool actual)
|
||||||
if (e->rider.lock()->removed || e->rider.lock()->riding != e)
|
if (e->rider.lock()->removed || e->rider.lock()->riding != e)
|
||||||
{
|
{
|
||||||
e->rider.lock()->riding = nullptr;
|
e->rider.lock()->riding = nullptr;
|
||||||
e->rider = std::<Entity>();
|
e->rider = std::weak_ptr<Entity>();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -603,7 +603,7 @@ void Player::ride(std::shared_ptr<Entity> e)
|
||||||
|
|
||||||
if (riding != NULL)
|
if (riding != NULL)
|
||||||
{
|
{
|
||||||
riding->rider = std::<Entity>();
|
riding->rider = std::weak_ptr<Entity>();
|
||||||
}
|
}
|
||||||
riding = nullptr;
|
riding = nullptr;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue