/*	
 *	supp.h
 *
 *	シンプルライブラリサポートルーチン集
 *	Copyright (C) 2002-2006 Naoyuki Sawa
 *
 *	* Sat Sep  7 18:26:00 JST 2002 Naoyuki Sawa
 *	- 作成開始。
 */
#ifndef __SUPP_H__
#define __SUPP_H__

/* 標準ヘッダのincludeのみ、CLiPライブラリを利用 */
#include <clip.h>
/* シンプルライブラリ特有のヘッダをインクルード  */
#include <simple.h>
#include <thread.h>
/* 「Randomism Zone」さん(http://www8.plala.or.jp/randomism/)の */
/* 『ドラム音色分離キット ver.2.10』用ヘッダをインクルード      */
#include "muslib2.h"

/****************************************************************************
 *	定数・型
 ****************************************************************************/

#define N_OBJS	64		/* スプライトプレーン数 */

typedef struct _CHR {
	unsigned char pno;	/* 左上のパターン番号             */
	unsigned char w, h;	/* 横・縦キャラ数                 */
	unsigned char x, y;	/* キャラ中心のピクセルオフセット */
} CHR;

/* キャラ番号宣言用。enumの中で使ってください。 */
#define CHR_INIT1(name,pno_x,pno_y,w,h,x,y) name,

/* キャラ定義用。CHR[]の中で使ってください。 */
#define CHR_INIT2(name,pno_x,pno_y,w,h,x,y) {((pno_x)|(pno_y)<<4),(w),(h),(x),(y)},

/****************************************************************************
 *	関数宣言
 ****************************************************************************/

/* エラー処理 */
//#define DIE() die(__FILE__ "(%d)", __LINE__) -> clipmisc.hで宣言済み
//void die(const char* fmt, ...);              -> clipmisc.hで宣言済み

/* フォント */
const unsigned char* fntadr(int code);

/* スプライト */
void spcls(int obj);
int chdisp(int obj, int x, int y, const CHR* chr);
int sphit(int x1, int y1, int pno1, int x2, int y2, int pno2);
int chhit(int x1, int y1, const CHR* chr1, int x2, int y2, const CHR* chr2);

/* ＢＧ */
void bgcls();
void bgput(int x, int y, int code);
void bgdisp(int x, int y, const CHR* chr);
void bghome(int x, int y);
int bghomex();
int bghomey();

/* グラフィック */
void grcls(int color);
void paint(int x0, int y0, int color);
void symbolf(int x, int y, int type, int color, char* fmt, ...);
void grfont(int x, int y, int code, int color);
void grputstr(int x, int y, const char* str, int color);
void grprintf(int x, int y, int color, const char* fmt, ...);

/* PAUSE表示 */
void pausedisp(int pause);

/* 範囲を指定して乱数生成 */
int rnd_range(int min_value, int max_plus1);

#endif /*__SUPP_H__*/
