From 80d9c26c12a5be619a757d0251525664bf7065a6 Mon Sep 17 00:00:00 2001 From: LogicParrot Date: Tue, 22 Aug 2017 13:23:03 +0300 Subject: Initial copy of old files --- src/Mobs/Behaviors/BehaviorItemFollower.cpp | 44 +++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/Mobs/Behaviors/BehaviorItemFollower.cpp (limited to 'src/Mobs/Behaviors/BehaviorItemFollower.cpp') diff --git a/src/Mobs/Behaviors/BehaviorItemFollower.cpp b/src/Mobs/Behaviors/BehaviorItemFollower.cpp new file mode 100644 index 000000000..7cc0f8dfc --- /dev/null +++ b/src/Mobs/Behaviors/BehaviorItemFollower.cpp @@ -0,0 +1,44 @@ +#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules + +#include "BehaviorItemFollower.h" +#include "../Monster.h" +#include "../../World.h" +#include "../../Entities/Player.h" + +iBehaviorItemFollower::~iBehaviorItemFollower() +{ + +} + +cBehaviorItemFollower::cBehaviorItemFollower(iBehaviorItemFollower * a_ParentInterface) : + m_ParentInterface(a_ParentInterface) +{ + m_Parent = dynamic_cast(m_ParentInterface); + ASSERT(m_Parent != nullptr); +} + + + + + +bool cBehaviorItemFollower::ActiveTick() +{ + cWorld * World = m_Parent->GetWorld(); + cItems FollowedItems; + m_ParentInterface->GetFollowedItems(FollowedItems); + if (FollowedItems.Size() > 0) + { + cPlayer * a_Closest_Player = m_Parent->GetNearestPlayer(); + if (a_Closest_Player != nullptr) + { + cItem EquippedItem = a_Closest_Player->GetEquippedItem(); + if (FollowedItems.ContainsType(EquippedItem)) + { + Vector3d PlayerPos = a_Closest_Player->GetPosition(); + m_Parent->MoveToPosition(PlayerPos); + return true; // We took control of the monster, prevent other Behaviors from doing so + } + } + } + return false; +} -- cgit v1.2.3