/********************************************************************
*
* File: gfCSpotTheDiffMinigameComponent.h
*
* Purpose: Spot the difference mini game
*
*********************************************************************/
#ifndef gfCSpotTheDiffMinigameComponenthdr
#define gfCSpotTheDiffMinigameComponenthdr
#include <fsCore/src/fsCUniqueId.h>
#include "../gfIMinigameComponent.h"
#include "../gfIMinigameHintable.h"
class fsCAnimatingSpriteComponent;
class fsCParticleEmitterComponent;
class gfCSpotTheDiffMinigameComponent : public gfIMinigameComponent, public gfIMinigameHintable
{
friend class fsCComponentFactory;
public:
static const fsCUniqueId mTypeId;
static const fsCUniqueId mDifferenceFoundMsg;
static const fsCUniqueId mDifferenceCollectedMsg;
static const fsStr mEntityPrefix;
fsBool isHintableGet() const override;
protected:
struct sSpotDiffEventMsgParam : public fsIMessageDispatcher::sMessageParameters
{
sSpotDiffEventMsgParam(fsS32 pIndex) : mIndex(pIndex) {}
const fsS32 mIndex;
};
void listenersRegisterDo() override;
void listenersDeregisterDo() override;
fsBool messageProcessDo(const fsCUniqueId& pMessageType,
const fsIMessageDispatcher::sMessageParameters& pParam) override;
void onTap(const fsPoint& pTapPos) override;
void serialiseDo() override;
void deserialiseDo() override;
void initialiseDo(const fsCVariableTable& pVars) override;
void skipDo() override;
fsBool acceptingInputGet() const override;
static fsIComponent* create(fsCEntity* pParent);
gfCSpotTheDiffMinigameComponent(fsCEntity* pParent);
virtual ~gfCSpotTheDiffMinigameComponent();<--- Destructor in derived class
private:
fsS32 originalDiffGet() const;
void collectedSet(fsBool pSFX);
void foundMarkerEffectReset();
void foundMarkerEffectCreate();
void foundMarkerAnimationCreate(fsCEntity* pEffectEnt, fsStr const& pEffectFilename);
void foundMarkerParticleCreate(fsCEntity* pEffectEnt, fsStr const& pEffectFilename);
fsCAnimatingSpriteComponent* mAnimEffect;
fsCParticleEmitterComponent* mParticleEffect;
fsS32 mIndex;
fsBool mCollected;
};
#endif