/********************************************************************
*
* File: gfCTappableCollectableComponent.h
*
* Purpose: To control entities which are collected when they are
* tapped.
*
*********************************************************************/
#ifndef gfCTappableCollectableComponenthdr
#define gfCTappableCollectableComponenthdr
#include "gfICollectableComponent.h"
class fsISpriteComponent;
class gfCGhostSpriteComponent;
struct fsPoint;
class gfCTappableCollectableComponent : public gfICollectableComponent
{
friend class fsCComponentFactory;
friend class gfCTutorialSequencerComponent;
public:
void touchHitSpriteStore();
static const fsCUniqueId mTypeId;
virtual ~gfCTappableCollectableComponent();<--- Destructor in derived class
protected:
virtual fsBool collectable() const { return true; }
virtual fsBool hitTestAndCollect(const fsPoint& pPointerPos);
virtual fsBool hitTest(const fsPoint& pPointerPos);
void deserialiseDo() override;
void listenersRegisterDo() override;
void listenersDeregisterDo() override;
fsBool messageProcessDo(const fsCUniqueId& pMessageType,
const fsIMessageDispatcher::sMessageParameters& pParam) override;
void inputStealDo() override;
void activateDo() override;
void deactivateDo() override;
static fsIComponent* create(fsCEntity* pParent);
gfCTappableCollectableComponent(fsCEntity* pParent);
fsBool mTakingInput;
fsISpriteComponent* mTouchHitSprite;
gfCGhostSpriteComponent* mGhostSpriteComp;
private:
fsBool mouseNoLongerOver(const fsIMessageDispatcher::sMessageParameters& pParam);
fsBool pointerDownHandle(const fsIMessageDispatcher::sMessageParameters& pParam);
void pointerUpHandle(const fsPoint& pPointerPos);
};
#endif