forked from Tr0n/client
Solution refactoring and restructuring, removed Boost dependency, removed unused tools
This commit is contained in:
80
src/GameLib/FlyTarget.h
Normal file
80
src/GameLib/FlyTarget.h
Normal file
@ -0,0 +1,80 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
class IFlyTargetableObject
|
||||
{
|
||||
friend class CFlyTarget;
|
||||
public:
|
||||
IFlyTargetableObject() {}
|
||||
virtual ~IFlyTargetableObject() {}
|
||||
|
||||
virtual D3DXVECTOR3 OnGetFlyTargetPosition() = 0;
|
||||
virtual void OnShootDamage() = 0;
|
||||
|
||||
protected:
|
||||
inline void ClearFlyTargeter();
|
||||
private:
|
||||
std::set<CFlyTarget*> m_FlyTargeterSet;
|
||||
inline void AddFlyTargeter(CFlyTarget* pTargeter)
|
||||
{
|
||||
//if (m_FlyTargeterSet.find(pTargeter)!=m_FlyTargeterSet.end())
|
||||
m_FlyTargeterSet.insert(pTargeter);
|
||||
}
|
||||
inline void RemoveFlyTargeter(CFlyTarget* pTargeter)
|
||||
{
|
||||
//if (m_FlyTargeterSet.find(pTargeter)!=m_FlyTargeterSet.end())
|
||||
m_FlyTargeterSet.erase(pTargeter);
|
||||
}
|
||||
};
|
||||
|
||||
class CFlyTarget // final
|
||||
{
|
||||
public:
|
||||
enum EType
|
||||
{
|
||||
TYPE_NONE,
|
||||
TYPE_OBJECT,
|
||||
TYPE_POSITION,
|
||||
};
|
||||
|
||||
public:
|
||||
CFlyTarget();
|
||||
CFlyTarget(IFlyTargetableObject * pFlyTarget);
|
||||
CFlyTarget(const D3DXVECTOR3& v3FlyTargetPosition);
|
||||
CFlyTarget(const CFlyTarget& rhs);
|
||||
virtual ~CFlyTarget();
|
||||
|
||||
void Clear();
|
||||
bool IsObject();
|
||||
bool IsPosition();
|
||||
bool IsValidTarget();
|
||||
void NotifyTargetClear();
|
||||
|
||||
const D3DXVECTOR3 & GetFlyTargetPosition() const;
|
||||
EType GetType();
|
||||
|
||||
IFlyTargetableObject * GetFlyTarget();
|
||||
|
||||
CFlyTarget & operator = (const CFlyTarget & rhs);
|
||||
void GetFlyTargetData(CFlyTarget * pFlyTarget);
|
||||
|
||||
private:
|
||||
void __Initialize();
|
||||
|
||||
private:
|
||||
mutable D3DXVECTOR3 m_v3FlyTargetPosition;
|
||||
IFlyTargetableObject * m_pFlyTarget;
|
||||
|
||||
EType m_eType;
|
||||
};
|
||||
|
||||
inline void IFlyTargetableObject::ClearFlyTargeter()
|
||||
{
|
||||
std::set<CFlyTarget*>::iterator it;
|
||||
for(it = m_FlyTargeterSet.begin();it!=m_FlyTargeterSet.end();++it)
|
||||
{
|
||||
(*it)->NotifyTargetClear();
|
||||
}
|
||||
m_FlyTargeterSet.clear();
|
||||
}
|
||||
|
Reference in New Issue
Block a user