/* macro.txt */
/* マクロ定義 */

#define TRUE  1
#define FALSE 0
#define NULL  0
#define if_jump(exp, label) &cmp(exp); &tjump(label)

#define if_then_else(exp, t, f) &cmp(exp); &tjump(t); &jump(f)
#define if_then(exp, t) &cmp(exp); &tjump(t)

#define _fcall    &fcall
#define _call     &call
#define _cmp      &cmp
#define _fload(f) f
#define _fjump    &fjump
#define _jump     &jump

/*  */
#define _frand(n) _fload(rnd = Random(n))
#define _handler_jump &handler_jump

/* 構造体定義 */
#include "_struct.txt"

#define _p  &pause
#define _pc &pause; &clear

/* ------------------------------------------------------------------------ */
/* フォルダ定義 */

/* イメージフォルダ */
#define _image_folder ".\\data\\image\\"
/* サウンドフォルダ */
#define _sound_folder ".\\data\\"
#define _bgm_folder   ".\\data\\bgm\\"
#define _se_folder   ".\\data\\se\\"

/* ------------------------------------------------------------------------ */
/* イメージ処理 */

/* イメージ読み込 -> ｵｰﾊﾞｰﾗｯﾌﾟ */
#define _img_ol(n) &image(_image_folder n ".png"); &ol

/* イメージ読み込み -> ｵｰﾊﾞｰﾗｯﾌﾟ -> ﾎﾟｰｽﾞ -> ｸﾘｱ */
#define _img_olpc(n) &image(_image_folder n); &ol; &pause; &clear

/* イメージ読み込み -> ﾎﾟｰｽﾞ -> ｸﾘｱ */
#define _img_pc(n) &image(_image_folder n); &pause; &clear

/* ｵｰﾊﾞｰﾗｯﾌﾟ -> ﾎﾟｰｽﾞ -> ｸﾘｱ */
#define _olpc() &ol; &pause; &clear

/* マスク読み込み */
#define _mask(n) &mask(_mask_folder n ".png")

/* ------------------------------------------------------------------------ */
/* サウンド処理 */

/* ＢＧＭ再生 */
#define _bgm(n) Sound_Stop(0); Sound_Sync(0); &sound(0, _bgm_folder n ".wav"); &play(0)
//#define _bgm(n) &sound(0, _bgm_folder n ".mp3"); &play(0)
/* ＢＧＭ停止 */
#define _bgm_stop Sound_Stop(0)
//#define _bgm_fo(n) &timer_clear; Sound_FadeOut(0, n); &timer_wait(n)
#define _bgm_fi(n) Sound_SetFadeVolume(0, 0); Sound_FadeIn(0, n)

/* エフェクト再生 mp3*/
//#define _se(n) &sound(1, _se_folder n ".mp3"); &play(1)

/* エフェクト再生 wav*/
#define _se(n) Sound_Stop(1); Sound_Sync(1); &sound(1, _se_folder n ".wav"); &play(1)

/* 音声再生 */
#define _voice(n) Sound_Stop(2); Sound_Sync(2); &sound(2, _sound_folder n ".mp3"); &play(2)

/* ----------------------------------------------------------------------- */
/* マクロ定義 */
#define _handler_clear &handler_clear
#define _handler       &handler
#define _handler_wait  &handler_wait
#define _cmp           &cmp

int System_SetMessageSpeed();
int System_SetOverlapSpeed();

/* スクロール処理 */
int System_SetScrollSpeed();
int System_SetScrollRect();
int System_Scroll();

/* ビデオ処理 */
int Video_Load();
int Video_Play();
int Video_Stop();

/*  */
int Sound_Stop();
int Sound_FadeOut();
int Sound_FadeIn();
int Sound_SetFadeVolume();
int Sound_Load();

/* ----------------------------------------------------------------------- */
/* スクロール処理用 */

#define Front 0 /* 表 */
#define Back  1 /* 裏 */
#define Scroll_SetSpeed System_SetScrollSpeed
#define Scroll_SetRect  System_SetScrollRect
#define Scroll_Start    System_Scroll

#define RECT_Set(me, l, t, r, b) me.left= l; me.top = t; me.right = r; me.bottom = b

RECT begin_r, end_r;

/* スクロール 上→下 */
#define _scroll_ud(n, h, t) Image_Load(_image_folder n ".png"); RECT_Set(begin_r, 0,     0, 640, 480); RECT_Set(end_r  , 0, h-480, 640, h  ); Scroll_SetSpeed(t); Scroll_SetRect(Back, &begin_r, &end_r); &ol; &timer_clear; Scroll_Start(Front); &timer_wait(t);

/* スクロール 下→上 */
#define _scroll_du(n, h, t) Image_Load(_image_folder n ".png"); RECT_Set(begin_r, 0, h-480, 640, h  ); RECT_Set(end_r  , 0,     0, 640, 480); Scroll_SetSpeed(t); Scroll_SetRect(Back, &begin_r, &end_r); &ol; &timer_clear; Scroll_Start(Front); &timer_wait(t);

/* ----------------------------------------------------------------------- */
/* 色定義 */
#define COLOR_BLACK  0x000000
#define COLOR_BLUE   0xFF0000
#define COLOR_RED    0x0000FF
#define COLOR_YELLOW 0x00FFFF
#define COLOR_GREEN  0x00FF00
#define COLOR_WHITE  0xFFFFFF

/* ----------------------------------------------------------------------- */
/* システム関数定義 */
int System_GetScreen();      /* 画面の取得                 */
int SpriteLayer_LoadImage(); /* スプライトイメージ読み込み */
int System_ChangeScreen();   /* 画面の変更 */
int System_TakeScreen();     /* 画面の撮影 */
int System_TimerWait();      /* ウェイト */
int Random();                /* 乱数     */
/* 同期処理 */
int System_Await();          /* 待機     */
int System_GetResult();      /* 結果取得 */
/* 通信処理 */
int System_SetNetworkMode(); /*  */
int System_SetCurrentPlayer();
int System_GetPlayerNum();

int System_Goto();
int System_Call();

/*  */
int Fade_Out();
int Fade_In();
int Fade_SetColor();

/*  */
int Image_SetOrg();          /* イメージ表示原点設定   */
int Image_Load();            /* イメージの直接読み込み */

/* マスク処理 */
int Mask_Enable();
int Mask_Reverse();

/* レイヤー操作 */
int FrameLayer_SetVisible();  /* 表示／非表示     */
int FrameLayer_GetItem();     /* 子レイヤーの取得 */
int FrameLayer_SendMessage(); /* メッセージ送信   */
int FrameLayer_SetEnable();   /* 有効／無効       */
int FrameLayer_SetPos();      /* 位置指定         */

/* CSV 操作 */
int CSV_Open();
int CSV_Close();
int CSV_GetNumber();
int CSV_RefString();
int CSV_GetCount();

/* 標準関数 */
int sprintf();
int sscanf();
int strcpy();
int memcpy();

/* デバッグ関数 */
int out_debug();

/* 画面を揺らす */
#define _shake(n, t) &timer_clear; Image_SetOrg(-(n), -(n)); &timer_wait(t); Image_SetOrg((n), (n)); &timer_wait(t); Image_SetOrg(0, 0);

/* デフォルトのオーバーラップスピード */
#define _DefaultOverlapSpeed 1000
#define _flash(c, t) System_SetOverlapSpeed(0); Fade_SetColor(c); Fade_Out(); System_SetOverlapSpeed(t); Fade_In(); System_SetOverlapSpeed(_DefaultOverlapSpeed)

/* eof */