/*	
 *	clipsl4r.h
 *
 *	スロットゲーム用サブルーチン集(4ライン・ART機)
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2001-2016 Naoyuki Sawa
 *
 *	* Tue Jun 24 21:30:13 JST 2014 Naoyuki Sawa
 *	- 1stリリース。
 *	- 当モジュールは、PCでツールを作成する時にプロジェクトに含めて使用します。
 *	  P/ECE上で直接使用することは無いので、clip.h,Makefileには含めていません。
 *	* Wed Nov 18 21:37:53 JST 2015 Naoyuki Sawa
 *	- 'extern "C" {'〜'}'で囲みました。.cppを含むWin32プロジェクトからもインクルード出来るようにするためです。
 *	* Sun Jul 24 21:18:15 JST 2016 Naoyuki Sawa
 *	- clipsl4r.cに、clipsl4r.hのインクルードを追加しました。
 *	  /clip/libclip/extclip.hはclipsl4r.hをインクルードしないので、clipsl4r.c,及び,アプリケーションが明示的にインクルードする必要が有ります。
 *	  /clip/libclip/extclip.hがclipsl4r.hをインクルードしない理由は、clipsl5n.h,clipsl4r.h,clipsl1a.hが排他だからです。
 */
#ifndef __CLIP_SL4R_H__
#define __CLIP_SL4R_H__

#ifdef  __cplusplus
extern "C" {
#endif//__cplusplus

/****************************************************************************
 *	スペックデータ作成・出力
 ****************************************************************************/
#ifdef  WIN32	//PC上でスペックデータを作成する時に使用します。P/ECE上では使用しません。
/* 絵柄 */
typedef struct _ST_Slot_Spec_Pict {
	unsigned char	iColor;							//色									0=灰,1=赤,2=緑,3=黄,4=青,5=紫,6=空,7=白
	const char	*pSym,*pName;						//シンボル,名前								アプリケーション定義であるが、セブン絵柄の名前の一部(又は全体)を「ｾﾌﾞﾝ」とすること。チェリー絵柄の名前の一部(又は全体)を「ﾁｪﾘｰ」とすること。それ以外は、自由に定義して良い。
} ST_Slot_Spec_Pict;
/* 条件装置 */
typedef struct _ST_Slot_Spec_HitCd {
	unsigned char	iColor;							//色									0=灰,1=赤,2=緑,3=黄,4=青,5=紫,6=空,7=白
	const char	*pSym,*pName;						//シンボル,名前								アプリケーション定義であるが、ボーナスの名前の一部(又は全体)を「ﾎﾞｰﾅｽ」とすること。CT中全小役の名前の一部(又は全体)を「全小役」とすること。それ以外は、自由に定義して良い。
	unsigned short	aWeight[3/*RT状態数(調整可)*/][6];			//[RT状態][設定値]⇒(抽選値-1)						(1-1)〜(65536-1)
} ST_Slot_Spec_HitCd;
/* 絵柄組合せ */
typedef struct _ST_Slot_Spec_HitFlg {
	unsigned char	iColor;							//色									0=灰,1=赤,2=緑,3=黄,4=青,5=紫,6=空,7=白
	const char	*pSym,*pName;						//シンボル,名前
	unsigned char	aPict[3];						//[リール番号]⇒絵柄番号						0〜(SIZE_Pict-1)
	unsigned char	nPay;							//払出枚数								0〜15
	char		aPriority[64/*SIZE_HitCd*/][3][2];			//[条件装置番号][押順][有効ライン,無効ライン]⇒優先度	-1,0,1〜	「優先度=0」ならば、停止不可であることを示す。「優先度=(-1)」ならば、停止可能であるがそれ単独では停止不可であり、他の「優先度≧1」の絵柄組合せと同時に表示されねばならないことを示す。
} ST_Slot_Spec_HitFlg;
/* スペック情報 */
typedef struct _ST_Slot_SpecInfo {
	/* 絵柄 */
	const ST_Slot_Spec_Pict (*TBL_Pict/*[SIZE_Pict]*/);			//[絵柄番号]⇒絵柄
	int SIZE_Pict;								//絵柄の数								1〜10
	/* リール配列 */
	const unsigned short (*TBL_Reel/*[21]*/);				//[絵柄位置]⇒絵柄番号([3:0]=左,[7:4]=中,[11:8]=右)			アプリケーション定義であるが、「[0]=Any」とすること。それ以外は、自由に定義して良い。
	int CT_Reel;								//CT中に無制御とするリール番号						0=左,1=中,2=右 (CT非搭載ならばどの値でも関係無い)
	/* 条件装置 */
	const ST_Slot_Spec_HitCd (*TBL_HitCd/*[SIZE_HitCd]*/);			//[条件装置番号]⇒条件装置						アプリケーション定義であるが、「[0]=ハズレ」とすること。それ以外は、自由に定義して良い。
	int SIZE_HitCd;								//条件装置の数								1〜64
	/* 絵柄組合せ */
	const ST_Slot_Spec_HitFlg (*TBL_HitFlg/*[SIZE_HitFlg]*/);		//[絵柄組合せ番号]⇒絵柄組合せ						アプリケーション定義であるが、「[0]=ハズレ(Any,Any,Any)」とすること。それ以外は、自由に定義して良い。
	int SIZE_HitFlg;							//絵柄組合せの数							1〜256
} ST_Slot_SpecInfo;
/* スペックデータを作成する。
 * [in]
 *	pInfo		スペック情報
 * [note]
 *	- 使用例は、clip/Slot/SlotSpec.cを参照してください。
 */
void Slot_MakeSpec(const ST_Slot_SpecInfo* pInfo);
#endif//WIN32	//PC上でスペックデータを作成する時に使用します。P/ECE上では使用しません。

#ifdef  __cplusplus
}//extern "C"
#endif//__cplusplus

#endif/*__CLIP_SL5N_H__*/
