/*
  ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
  △▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽
  
  	File :		m_land.h
  	Programer :	Gentaro Takaki
  
	$Id: m_land.h,v 1.1 2003/06/06 00:15:12 tong Exp $
	
  △▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽△▽
  ▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲
*/

#ifndef	M_LAND_H_INCLUDED
#define	M_LAND_H_INCLUDED

#if	defined(LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)

#ifdef	_LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif

#include "m_land_h.h"
#include "m_basic.h"
    
#define	mLd_LAND_ID_MASK	(0x3000)
#define	mLd_8BIT_MASK		(0xff00)
#define	mLd_LAND_ID_CHK( id )	(( id & mLd_8BIT_MASK ) ==  mLd_LAND_ID_MASK )

enum	man_kind_table{
    MAN_KIND_TABLE_e = 0,
    NATIVE_e = MAN_KIND_TABLE_e,	/** 現地人 */
    FOREIGNER_e,			/** 外国人 */
    MAN_KIND_TABLE_END_e
};
#define	mLd_PLAYER_IS_NATIVE( )	( mLd_PlayerManKindCheck( ) == NATIVE_e )
#define	mLd_PLAYER_IS_FOREIGNER( )	( mLd_PlayerManKindCheck( ) != NATIVE_e )


/*
 *	■ 国名の空きチェック
 */
extern int mLd_NullCheckLandName(
    unchar *name_p
    );

/*
 *	国 IDチェック
 *
 *	正常		TRUE
 *	不正		FALSE
 */
extern int mLd_CheckId(
    lndid_t	land_id
    );

/*
 *
 *	■ 国名の一致チェック
 *
 */
extern int mLd_CheckCmpLandName(
    unchar *dst_land_name,
    unchar *src_land_name
    );

/*
 ****************************************************************
 *	国の一致チェック
 *
 *	一致		TRUE
 *	不一致		FALSE
 ****************************************************************
 */
extern int mLd_CheckCmpLand(
    unchar	*dst_land_name_p,
    lndid_t	dst_land_id,
    unchar	*src_land_name_p,
    lndid_t	src_land_id
    );

/*
 ******************************************************************************
 *	■ 国名の初期化
 ******************************************************************************
 */
extern void mLd_ClearLandName(
    unchar *land_name
    );

/*
 ******************************************************************************
 *	■ 国名のコピー
 ******************************************************************************
 */
extern void mLd_CopyLandName(
    unchar *dst_land_name,
    unchar *src_land_name
    );

/*
 ****************************************************************
 *	国名への「むら」文字列の付加
 ****************************************************************
 */
extern int mLd_AddMuraString(
    unchar	*dst_land_name_p,	/** land_name_len+2以上の領域が必要 */
    int		land_name_len		/** 国名文字列長 */
    );

/*
 ****************************************************************
 *	「むら」を加えた国名を取得
 *
 *	in	:	unchar *
 *			COUNTRY_MURA_NAME_NUM以上の領域が必要
 *
 *	out	:	国名文字列
 *
 *	返り値	:	最終的な文字数
 *
 *	文字列をコピーした残りはスペースでクリアします
 ****************************************************************
 */
extern int mLd_GetLandNameStringAddMura(
    unchar	*dst_p		/** COUNTRY_MURA_NAME_NUM以上の領域が必要 */
    );

/*
 ****************************************************************
 *	国名に「むら」を付加して自由文字列にセット
 ****************************************************************
 */
extern void mLd_SetFreeStrLandMuraName(
    unchar	*src_name_p,
    int		free_no
    );

/*
 ******************************************************************************
 *	■ この国の国名を取得
 ******************************************************************************
 */
extern unchar *mLd_GetLandName( void );

/*
 ****************************************************************
 *	国識別 ID作成関数
 ****************************************************************
 */
extern lndid_t mLd_MakeLandId( void );
    
/*
 ****************************************************************
 *	プレーヤー番号からどこの人か判定する
 *
 *	この国の人	NATIVE_e
 *	よその国の人	FOREIGNER_e
 ****************************************************************
 */
extern int mLd_PlayerManKindCheckNo(
    unchar	player_no
    );

/*
 ****************************************************************
 *	プレーヤーがどこの人か判定する関数
 *
 *	この国の人	NATIVE_e
 *	よその国の人	FOREIGNER_e
 ****************************************************************
 */
extern int mLd_PlayerManKindCheck( void );

/*
 ****************************************************************
 *	国名・国 IDからこの国かどうかチェック
 *
 *	この国である	TRUE
 *	よその国である	FALSE
 ****************************************************************
 */
extern int mLd_CheckThisLand(
    unchar	*dst_land_name_p,
    lndid_t	dst_land_id
    );

/*
 ******************************************************************************
 *	■ フィールド情報の初期化関数
 ******************************************************************************
 */
extern void mLd_LandInfoInit( void );

/*
 ******************************************************************************
 *	■ フィールド全体情報の初期化関数	いろいろなデータを含む
 ******************************************************************************
 */
extern void mLd_LandDataInit( void );

#ifdef	_LANGUAGE_C_PLUS_PLUS
}
#endif

#endif	/** defined(LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#endif	/** M_LAND_H_INCLUDED */
