//**************************************************************
//
//						mini.h
//
//**************************************************************
#ifndef	MINI_H_INCLUDED
#define	MINI_H_INCLUDED

#ifdef	GLOBAL_VALUE_DEFINE		//定義と外部宣言を使い分けて
#define	GLOBAL					//複数のファイルへのincludeを可能にする
#else
#define	GLOBAL	extern
#endif							//end


//==============================================================
//
//==============================================================

GLOBAL int	GameMini(void);



//--------------------------------------------------------------
//		データ
//--------------------------------------------------------------

enum
{
	INIT_MINISEL_1, FIN_MINISEL, MINISEL, FOUT_MINISEL, INIT_MINISEL_2, 
	INIT_MINI_BB, FIN_MINI_BB, MINI_BB, FOUT_MINI_BB, 
	INIT_MINI_RACE, FIN_MINI_RACE, MINI_RACE, FOUT_MINI_RACE, 
	INIT_MINI_WARAI, FIN_MINI_WARAI, MINI_WARAI, FOUT_MINI_WARAI
};

enum
{
	MINI_BASEBALL_GAME, MINI_RACE_GAME, MINI_WARAI_GAME, MINI_EXIT, MINI_NOWHERE
};

enum
{
	MINI_LEFT_PUSH, MINI_RIGHT_PUSH, MINI_UP_PUSH, MINI_DOWN_PUSH, MINI_NO_PUSH
};

typedef struct
{
	u32	uiObjAddr;
	u8	ucTimer;
}AnmDef;

#define		MINI_WINDOW_SPEED		5		// ウインドウが開くスピード

// LOGOの拡縮スピード
#define		MINI_LOGO_SCALE_SPEED		20


//--------------------------------------------------------------
//		変数
//--------------------------------------------------------------

// どのゲームで遊んでいるか
GLOBAL u8	ucMiniStatus;

// シーケンス用
GLOBAL u8	ucMiniSeq;				// ゲーム中のシーケンス
GLOBAL u8	ucMiniSeqBak;
GLOBAL u8	ucMiniDemoSeq;			// ゲーム中のシーケンスの中のデモのシーケンス
GLOBAL u16	usMiniDemoCount;		// デモ中のカウント


// コイン関連
GLOBAL	s32		iMiniTotalCoinTemp;
GLOBAL	u16		usMiniCoinSoundCount;

// ウェイト
GLOBAL	u16		usMiniWaitCount;

typedef struct
{
	u16	usAnmTimer;
	u16	usAnmPat;
	s16	sX;
	s16	sY;
}MiniCurDef;

GLOBAL	MiniCurDef	MiniCur;

GLOBAL AnmDef	*MiniCurAnmPtr;


typedef struct
{
	u16	usAnmTimer;
	u16	usAnmPat;
	s16	sX;
	s16	sY;
	u8	ucStatus;
}MiniObjDef;


// ハイスコアフラグ
GLOBAL	u8	ucMiniHighScoreFlg;
GLOBAL	u16	usMiniScore;		// 点数

GLOBAL s8	cMiniEvb;
GLOBAL s8	cMiniEva;


// メダル用
typedef	struct
{
	u16	usAnmTimer;
	u16	usAnmPat;
}MiniObj2Def;

GLOBAL MiniObj2Def	MiniMedal;

GLOBAL	u8	ucMiniMedalFlg;		// 回転しているかどうか


// ゲームオーバーなどの表記用
typedef	struct
{
	u16	usAnmTimer;
	u16	usAnmPat;
	u16	usScale;
	u16	usRotate;
	s16	sX;
	s16	sY;
	u8	ucStatus;
} MiniLogoDef;

GLOBAL MiniLogoDef	MiniLogo;

GLOBAL	u8	ucMiniPlayFlg;		// ゲームで遊んだかフラグ

//--------------------------------------------------------------
//		参照するもの
//--------------------------------------------------------------
extern void	Select_Fade_Init();

extern void	SelCoinSet(int score, u32 CharAddr, u32 VramAddr);
extern void	SelCoinSet2(int score, u32 CharAddr, u32 VramAddr);
extern void	SelMedalSet(int score, u32 CharAddr, u32 VramAddr);
#if CHINA
extern void MojiCreate_ZH(u8 *ptr, u32 VramAddr,u8* bgChar, u8 MojiNum);
extern const u8 font_Char[];
#else
extern void MojiCreate(u8 *ptr, u32 VramAddr, u8 MojiNum);
#endif
extern u16	usMojiCount;

// ウインドウパラメータ
extern s16	sDmapWindowLeftX;
extern s16	sDmapWindowRightX;
extern s16	sDmapWindowUpY;
extern s16	sDmapWindowDownY;

extern void SelWindowOpen();

//==============================================================
#undef	GLOBAL
#endif


//**************************************************************
//end
