
/* _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

	FILE	: Button.h

+ ------ Explanation of file --------------------------------------------------------------------------

+ _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ */

#pragma once

#include "Image2D.h"

class Mouse;

#define BTN_NORMAL_W	70
#define BTN_NORMAL_H	30
#define BTN_PHASE_W		70
#define BTN_PHASE_H		20

// ボタン種類
enum{
	BTN_ID_SHIFT,		// シフト
	BTN_ID_INVOKE,		// 発動
	BTN_ID_ATTACK,		// アタック

	BTN_ID_P_AWAKE,		// アウェイク
	BTN_ID_P_DRAW,		// ドロー
	BTN_ID_P_ENERGY,	// エナジー
	BTN_ID_P_MAIN,		// メイン
	BTN_ID_P_ATTACK,	// アタック
	BTN_ID_P_END,		// エンド

	BTN_ID_YES,			// はい
	BTN_ID_NO,			// いいえ
	BTN_ID_UP,			// 上
	BTN_ID_DOWN,		// 下
	BTN_ID_DISCARD,		// 捨札
	BTN_ID_LIST,		// リスト
	BTN_ID_CLOSE,		// 閉じる
};

enum BTNTEX{
	BTNTEX_NORMAL,
	BTNTEX_DISABLE,
	BTNTEX_FOCUS,

	BTNTEX_MAX
};

enum BTNPART{
	BTNPART_YES		= 0,		// はい
	BTNPART_NO,					// いいえ
	BTNPART_ATTACK,				// アタック
	BTNPART_SHIFT,				// シフト
	BTNPART_INVOKE,				// 発動
	BTNPART_UP		= 15,		// 上
	BTNPART_DOWN,				// 下
	BTNPART_DISCARD,			// 捨札
	BTNPART_LIST,				// リスト
	BTNPART_CLOSE,				// 閉じる
	BTNPART_AWAKE	= 30,		// アウェイク
	BTNPART_DRAW,				// ドロー
	BTNPART_ENERGY,				// エナジー
	BTNPART_MAIN,				// メイン
	BTNPART_END,				// エンド
};
#define BUTTONPART(btn)		btn, btn+TEXPARTX_BTN, btn+(TEXPARTX_BTN*2)

class Button : public Image2D
{
	typedef Image2D	Super;

	private:
		Mouse*	m_pMouse;	// マウス

		int		m_texPartList[BTNTEX_MAX];	// テクスチャリスト

		int		m_id;		// 任意ID
		bool	m_enable;	// 有効無効
		bool	m_focus;	// フォーカス
		bool	m_select;	// 選択

	private:
		void	release		(void);

	public:
		Button();
		~Button();

		void	init		(void);
		void	update		(bool isSelect = true);

		int		getID		(void){ return(m_id); };
		bool	getEnable	(void){ return(m_enable); };

		void	setTexType	(int normal, int disable = -1, int focus = -1);
		void	setID		(int id){ m_id = id; };
		void	setEnable	(bool b){ m_enable = b; };

		bool	isFocus		(void){ return(m_focus); }
		bool	isSelect	(void){ return(m_select); }
};

typedef vector<Button>					VecBtn;
typedef vector<Button>::iterator		IteBtn;
typedef vector<Button*>					VecpBtn;
typedef vector<Button*>::iterator		ItepBtn;



