#ifndef cTearsPlayer_H
#define cTearsPlayer_H

#include "cActiveObject.h"
#include "cTearsBoard.h"
#include "cTear.h"


enum ePlayerState{
	PS_STAGESTART, // 멈추어 있는 상태
	PS_READY, // 준비상태
	PS_MOVE, // 방울이 내려오고 있음
	PS_ERASE, // 방울들을 지우고 있음
	PS_DYING, // 게임자가 죽고 있음
	PS_DEAD, // 게임자가 죽어 있음
	PS_CLEARING, // 게임판이 지워지고 있음
	PS_CLEAR // 한판을 클리어 했음
};

enum ePlayerMessage{ // 게임자가 애플리케이션에 보내는 메시지
	PM_PLAYING, // 게임을 하고 있음
	PM_CLEARED, // 한판을 깻음
	PM_DEAD // 게임자는 죽어 있다.
};


struct sStageDesc{ // 스테이지 설명
	int TearKindCount; // 구슬 종류
	int TearCount; // 지워야할 구슬의 갯수
	int DownSpeed; // 내려오는 속도
	int RollDelay; // 티어가 회전하는 속도
	cPicture *pBackPicture; // 배경 그림 번호
	cPicture *pTitlePicture;
	cPicture *pClearPicture;
	cPicture *pDeadPicture;
};

class cTearsPlayer : public cActiveObject{
protected:
	ePlayerState State;

	cTearsBoard Board;
	cTear *pNextTears[3];
	cTear *pThisTear;

	int RestTearCount;
	int Score;
	int Stage;

	int EraseCount;
	int yTitle;
	int Count;

	sStageDesc StageDesc;

	void PrepareStage();
	cTear *CreateNextTear();
	void MoveTear();
	void EraseTear();


public:
	cTearsPlayer();
	~cTearsPlayer();

	void SetStage(int Stage, sStageDesc *pStageDesc);

	virtual int Act();
	void Show(cPicture *pDestPic, int Left, int Top);

	void MoveLeftTear();
	void SuspendTear();
	void MoveRightTear();
	void DropTear();
	void Exit();


};

#endif