//////////////////////////////////////////
// Maze.h
// Copyright (c) 06/21/2020 by BCCSkelton
//////////////////////////////////////////
//迷路の基準規模
#define		MSIZE 45	//縦横の単位数
#define		UNIT 16		//一単位のピクセル数（16 x 16 Bitmap使用）

//BCCSkeltonのヘッダー−これに必要なヘッダーが入っている
#include	"BCCSkelton.h"
//リソースIDのヘッダー
#include	"ResMaze.h"
//Maze（Digging method）クラスのヘッダー
#include	"MazebyDigging.h"
//WANDERERクラスのヘッダー
#include	"Wanderer.h"

/////////////////////////////////////////////////////////////////////
//CMyWndクラスをCSDIクラスから派生させ、メッセージ用の関数を宣言する
/////////////////////////////////////////////////////////////////////
class CMyWnd : public CSDI
{
public:	//以下はコールバック関数マクロと関連している
	//２重起動防止用のMutex用ID名称
	CMyWnd(char* UName) : CSDI(UName) {}
	//メニュー項目、ダイアログコントロール関連
	bool OnNew();
	bool OnOpen();
	bool OnSave();
	bool OnExit();
	bool OnTwod();
	bool OnThreed();
	bool OnVersion();
	//ウィンドウメッセージ関連
	bool OnCreate(WPARAM, LPARAM);
	bool OnTimer(WPARAM, LPARAM);
	bool OnLButtonDown(WPARAM, LPARAM);
	bool OnRButtonDown(WPARAM, LPARAM);
	bool OnSize(WPARAM, LPARAM);
	bool OnPaint(WPARAM, LPARAM);
	bool OnClose(WPARAM, LPARAM);
	//ユーザー関数
	void Display2D();
	void WhenGoal();
	void Display3D();
	bool DisplayMaze(int, int, int, RECT, int);
};

////////////////////////////////////////////////////////////////////////
//派生させたCMyWndクラスのインスタンスとコールバック関数(マクロ）の作成
//主ウィンドウはダイアログと違い、コールバック関数は一つしか作れない
////////////////////////////////////////////////////////////////////////
CMyWnd Maze("Maze");	//ウィンドウクラスインスタンスの生成

BEGIN_SDIMSG(Maze)	//ダイアログと違い、コールバック関数名を特定しない
	//メニュー項目、ダイアログコントロール関連
	ON_COMMAND(Maze, IDM_NEW, OnNew())
	ON_COMMAND(Maze, IDM_OPEN, OnOpen())
	ON_COMMAND(Maze, IDM_SAVE, OnSave())
	ON_COMMAND(Maze, IDM_EXIT, OnExit())
	ON_COMMAND(Maze, IDM_TWOD, OnTwod())
	ON_COMMAND(Maze, IDM_THREED, OnThreed())
	ON_COMMAND(Maze, IDM_VERSION, OnVersion())
	//ウィンドウメッセージ関連
	ON_CREATE(Maze)
	ON_TIMER(Maze)
	ON_LBUTTONDOWN(Maze)
	ON_RBUTTONDOWN(Maze)
	ON_SIZE(Maze)
	ON_PAINT(Maze)
	ON_CLOSE(Maze)
END_WNDMSG

///////////////////////
//ステータスバーの作成
///////////////////////
CSBAR SBar;

////////////////////////
//コモンダイアログの作成
////////////////////////
CMNDLG cmndlg;
CSTR FileName;

///////////////////////
//仮想ウィンドウの作成
///////////////////////
CANVAS cvs;

//////////////////////////////////////////
//右クリックポップアップメニューのハンドル
//////////////////////////////////////////
HMENU g_hPopup;

///////////////////////
//画像保存用CBMP変数
///////////////////////
CBMP Brick;
CBMP Ball;
CBMP Back;
CBMP Exit;

///////////////////////
//タイマ−関連
///////////////////////
#define		ID_TIMER 1000
bool Timer_On = FALSE;

///////////////////////
//迷路（整数配列）用変数
///////////////////////
MAZE mz(MSIZE, MSIZE);
int* Mazedata = 0;

///////////////////////
//さまよう人の変数
///////////////////////
WANDERER man(1, 1);
bool Show = FALSE;

///////////////////////
//迷路表示用変数
///////////////////////
bool ThreeD = FALSE;
