/********************************************************************
*
* Created: 1/5/2014 15:47
*
* File: gfCJoinTheDotsMinigameComponent.h
*
* Author: Mick Waites
*
* Purpose: Join the dots mini game
*
*********************************************************************/
#ifndef gfCJoinTheDotsMinigameComponenthdr
#define gfCJoinTheDotsMinigameComponenthdr
#include <fsCore/src/fsCUniqueId.h>
#include "../gfIMinigameComponent.h"
#include "../gfIMinigameHintable.h"
class gfCJoinTheDotsMinigameComponent : public gfIMinigameComponent, public gfIMinigameHintable
{
friend class fsCComponentFactory;
public:
static const fsCUniqueId mTypeId;
static const fsCUniqueId mJtdFreezeInputMsg;
static const fsCUniqueId mJtdRestoreInputMsg;
static const fsCUniqueId mJtdResetStateMsg;
static const fsStr mEntityPrefix;
fsBool nextUp() const;
fsBool isHintableGet() const override;
protected:
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;
void updateDo(fsS32 pDeltaMs) override;
static fsIComponent* create(fsCEntity* pParent);
gfCJoinTheDotsMinigameComponent(fsCEntity* pParent);
virtual ~gfCJoinTheDotsMinigameComponent();<--- Destructor in derived class
private:
fsBool playSuccessfulSFX();
std::vector<gfCJoinTheDotsMinigameComponent*> siblingssGet() const;
fsBool dummyLayer() const;
void indexInit();
void maskLocate();
void visibleSet(fsBool pVisible);
static fsS32 mNextIndex;
static fsBool mTipFlashOnIncorrect;
static fsBool mResetOnIncorrect;
fsCEntity* mMaskEntity;
fsS32 mIndex;
fsS32 mCountdownMs;
fsBool mInputFrozen;
};
#endif