//============================================================================================
/**
 * @file	field.h
 * @brief	フィールドから外部公開する関数参照用ヘッダ
 * @author	tamada
 * @date	2005.08.01
 *
 *
 * 2006.05.25・追記
 * 本来はフィールド（マップ）システムやスクリプト、イベントシステムとゲームシステムは
 * 独立したものであるべきでしたが力不足＆時間切れのためFIELDSYS_WORKに混在した形と
 * なってしまっています。作成するイベントによってはGMEVENT_CONTROLやFIELDSYS_WORKを
 * 参照する必要がある（そのほうが手早く作成できる）ようなので、外部公開することとします。
 *
 * ただし、なるべく各アプリケーションは独立した（引数・戻り値が最小限に抑えられた）形で
 * 設計することが望ましいと考えれれます。
 *
 * @li	フィールド以外（タイトルメニューや 別のアプリ）からの呼び出しに対して柔軟に対応できます。
 * @li	ダミーの入出力を作成することで呼び出し先が出来ていない状況でも開発できます。
 * @li	作用する変数エリアを制限することで、バグの発見が容易になります。
 */
//============================================================================================

#ifndef	__FIELD_H__
#define	__FIELD_H__

//#include "system/savedata.h"
//#include "system/procsys.h"


//-----------------------------------------------------------------------------
/**
 * @brief	ゲームシステムワークへの不完全型ポインタ
 * 
 * 通常ゲーム進行データは全てこのポインタを経由して取得することができる。
 * 安易に公開すると「限定されたグローバル変数」として扱われてしまうため
 * 内部公開はsrc/field直下にのみ限定している。
 */
//-----------------------------------------------------------------------------
typedef	struct _FIELDSYS_WORK FIELDSYS_WORK;

//-----------------------------------------------------------------------------
/**
 * @brief	イベント制御ワークへの不完全型ポインタ
 *
 * ゲームでは並行処理で動作しているが単一の処理が全体の流れを制御することが
 * 必要とされる場面もある。その場合の制御を行うワークへのポインタ
 * ゲーム開始イベント、ゲーム中のスクリプト、エンカウントなどはすべてこの
 * ポインタ経由で制御される。
 * ゲーム中で同時に二つのGMEVENT_CONTROLが動作することは禁止されている。
 *
 */
//-----------------------------------------------------------------------------
typedef struct _GMEVENT_CONTROL GMEVENT_CONTROL;


#endif	/* __FIELD_H__ */

