/********************************************************************
*
* Created: 24/4/2014 15:35
*
* File: fsCSilhouettePickListEntryGui.h
*
* Author: Mick Waites
*
* Purpose: Sprite entries which display as black silhouettes
* until collected at which point they fade to full
* colour.
*
*********************************************************************/
#ifndef fsCSilhouettePickListEntryGuihdr
#define fsCSilhouettePickListEntryGuihdr
#include <fsCore/fsSColour.h>
#include <fsCore/src/fsCUniqueId.h>
#include <fsAppCore/src/fsCGraph.h>
#include "gfIHintablePickListEntry.h"
class fsCSilhouettePickListEntryGui : public gfIHintablePickListEntry
{
friend class fsCComponentFactory;
public:
static const fsCUniqueId mTypeId;
virtual ~fsCSilhouettePickListEntryGui() = default;<--- Destructor in derived class
protected:
void serialiseDo() override;
void deserialiseDo() override;
void deactivateDo() override;
void activateDo(std::vector<fsCEntity*> pMyEntities) override;
fsBool transitionOnUpdate(fsS32 pDeltaMs) override;
fsBool transitionOffUpdate(fsS32 pDeltaMs) override;
fsBool entityCollectedHandle() override;
void initialiseFromVariableTableDo(const fsCVariableTable& pVars) override;
static fsIComponent* create(fsCEntity* pParent);
fsCSilhouettePickListEntryGui(fsCEntity* pParent);
private:
void fadeGraphsCreate();
void spriteCreate() const;
void spriteBrushSet(fsS32 pElapsedTime) const;
fsBool mReverse;
fsCGraph<fsSColour> mFadeOnGraph;
fsCGraph<fsSColour> mFadeOffGraph;
fsS32 mElapsedTimeMs;
fsF32 mSlotWidth;
fsF32 mSlotHeight;
fsStr mEntityRawName;
};
#endif