// SixtyFour.h : main header file for the SIXTYFOUR application
//

#if !defined(AFX_SIXTYFOUR_H__248CC4D2_D506_41B5_BFE0_96B19422CDE0__INCLUDED_)
#define AFX_SIXTYFOUR_H__248CC4D2_D506_41B5_BFE0_96B19422CDE0__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#ifndef __AFXWIN_H__
	#error include 'stdafx.h' before including this file for PCH
#endif

#include "resource.h"       // main symbols

#define APP_VERSION				1.0
#define APP_REVISION			0

#define DIALOG_COLOR_RED		0
#define DIALOG_COLOR_BLUE		1
#define DIALOG_COLOR_NEITHER	2
#define DIALOG_COLOR_BOTH		3

#define MOVE					0x0003

#define GAME_PAUSED				0
#define GAME_PLAYING			1

#define PLAYER_NONE				0
#define PLAYER_RED				1
#define PLAYER_BLUE				2
#define PLAYER_BOTH				3

#define PLAYER_TYPE_MOUSE		1
#define PLAYER_TYPE_COMPUTER	2

#define PACK_MOVE(x, y, z)		((x << 16) | (y << 8) | z)
#define GET_MOVE_I(m)			((m & 0x00FF0000) >> 16)
#define GET_MOVE_J(m)			((m & 0x0000FF00) >> 8)
#define GET_MOVE_K(m)			(m & 0x000000FF)

typedef struct {
	UINT nType;
} Player;

typedef struct {
	HWND hMainWindow;
	UINT nTurn;
	UINT *uCube;
	UINT nSkill;
} ThreadParam;

typedef struct {			// move struct
	int nMoveI;
	int nMoveJ;
	int nMoveK;
	int nEval;
} Move;

/////////////////////////////////////////////////////////////////////////////
// CSixtyFourApp:
// See SixtyFour.cpp for the implementation of this class
//

class CSixtyFourApp : public CWinApp
{
public:
	CSixtyFourApp();

	UINT m_nSettingCPUSkill;
	UINT m_nSettingCPUColor;

	void SaveSettings();

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CSixtyFourApp)
	public:
	virtual BOOL InitInstance();
	virtual int ExitInstance();
	//}}AFX_VIRTUAL

// Implementation
	//{{AFX_MSG(CSixtyFourApp)
	afx_msg void OnAppAbout();
		// NOTE - the ClassWizard will add and remove member functions here.
		//    DO NOT EDIT what you see in these blocks of generated code !
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};


/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_SIXTYFOUR_H__248CC4D2_D506_41B5_BFE0_96B19422CDE0__INCLUDED_)
