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

	FILE	: Dialog.h

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

	ダイアログ
	担当するのは生成までであり、その後の処理は各々が担当

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

#pragma once

#include "Card.h"
#include "Button.h"
#include "Image2D.h"
#include "CardList.h"
#include "Graphic_Text.h"

class Mouse;
class Skill;

#define DLG_BTN_NUM	5

// ボタン1個型
#define DLG_BTN1_W	(BTN_NORMAL_W+10)
#define DLG_BTN1_H	((BTN_NORMAL_H)+10)
// ボタン2個型
#define DLG_BTN2_W	(BTN_NORMAL_W+10)
#define DLG_BTN2_H	((BTN_NORMAL_H*2)+15)
// カードリスト型
#define DLG_LIST_W	670
#define DLG_LIST_H	400
// テキスト型
#define DLG_TEXT_W	400
#define DLG_TEXT_H	120

// ダイアログ種類
enum DLGTYPE{
	DLG_HAND_PROGRESS,	// 手札プログレス
	DLG_HAND_ACTION,	// 手札アクション
	DLG_PROGRESS,		// 場プログレス
	DLG_ACTION,			// 場アクション
	DLG_ATTACK,			// 攻撃
	DLG_LIST,			// カードリスト(ボタン)
	DLG_CARDLIST,		// カードリスト(本体)
	DLG_TEXT,			// テキスト
	DLG_T_YESNO,		// はい/いいえ
	DLG_T_UPDOWN,		// 上/下
	DLG_T_UPDUMP,		// 上/捨札
};

// ダイアログ場所
enum DLGPLACE{
	DLG_PLACE_CENTER,	// 画面中央
	DLG_PLACE_CARD,		// カード付与
	DLG_PLACE_SEEMY,	// 自分側が見える
	DLG_PLACE_SEEOPPO,	// 相手側が見える
	DLG_PLACE_TOP,		// 上部
};

class Dialog
{
	private:
		Mouse*		m_pMouse;		// マウス
		Skill*		m_pSkill;		// スキル

		Button		m_base;
		VEC3		m_pos;
		int			m_w, m_h;
		int			m_id;
		bool		m_isCreate;
		bool		m_isOverWrite;	// 上書き可能フラグ

	public:
		Dialog();
		~Dialog();

		VecpBtn		m_btnList;			// ボタンリスト
		TextGraphic m_text;				// 文字
		CardList	m_cardList;			// カードリスト
		Card*		m_card;				// ダイアログ表示元

		void	init(Skill* pSkill);
		int		create		(int set_x, int set_y, int set_w, int set_h, int id, Card* pCard, int tex);
		void	draw		(void);

		void	open		(int type, int place, Card* pCard = NULL, char* pText = NULL);
		void	close		(void);

		void	openDlg		(Card* pCard);
		void	update		(void);	// 更新
		DWORD	getResult	(void);	// 押されたボタンIDとダイアログ種類の取得

		VEC3*	getPos		(void){ return(&m_pos); };
		int		getWidth	(void){ return(m_w); };
		int		getHeight	(void){ return(m_h); };
		int		getID		(void){ return(m_id); };
		bool	isExist		(void){ return(m_isCreate); };
		bool	isOverWrite	(void){ return(m_isOverWrite); }

		// 臨時
		bool	isFocus		(void){ return(m_base.isFocus()); }
};

