/*
 ******************************************************************************
 *              
 *      "テーブル登録用ネーム"
 *      $Id: m_name_table.h,v 1.1 2003/06/06 00:15:12 tong Exp $
 ******************************************************************************
 */
#ifndef INCLUDE_M_NAME_TABLEh
#define INCLUDE_M_NAME_TABLEh

#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif	/* _LANGUAGE_C_PLUS_PLUS */
#if 0
} /*タブ位置を最初にするための小細工*/
#endif    
#include "m_scene.h"
#include "m_field_make.h"
#include "m_collision_bg.h"

/*
 *   以下のファイルは, m_name_table_declS.h の decl宣言による enum が
 * #define に変換されたファイルである。
 */
#include <m_name_table_declS_i.h>
    
/* 個々に描画するタイプのスタートNo. */
#define	INDIVIDUAL_DRAW_TYPE_START_NO	FG_NXGT0_TYPE

#define	GET_FG_ITEM0_CATEGORY(f)		(((f) & 0x800) >> 11)

#define	GET_FG_ITEM1_CATEGORY(f)		(((f) & 0xf00) >> 8)

#define	ITEM0_ALL_KINDS		(ITEM0_NO_END - ITEM0_NO_START)
#define	ITEM1_ALL_KINDS		(ITEM1_NO_END - ITEM1_NO_START)
#define	ITEM2_ALL_KINDS		(ITEM2_NO_END - ITEM2_NO_START)
#define	ACTOR_ALL_KINDS		(ACTOR_NO_END - ACTOR_NO_START)
#define	PROPS_ALL_KINDS		(PROPS_NO_END - PROPS_NO_START)
#define	SP_NPC_ALL_KINDS	(SP_NPC_NO_END - SP_NPC_NO_START)
#define	NPC_ALL_KINDS		(NPC_NO_END - NPC_NO_START)

#define	GET_FG_TYPE(f)		(((f) & 0xf000) >> 12)

#define	ITEM0_0_ALL_KINDS		(ITEM0_0_NO_END - ITEM0_0_NO_START)
#define	ITEM0_1_ALL_KINDS		(ITEM0_1_NO_END - ITEM0_1_NO_START)

#define	ITEM1_0_ALL_KINDS		(ITEM1_0_NO_END - ITEM1_0_NO_START)
#define	ITEM1_1_ALL_KINDS		(ITEM1_1_NO_END - ITEM1_1_NO_START)
#define	ITEM1_2_ALL_KINDS		(ITEM1_2_NO_END - ITEM1_2_NO_START)
#define	ITEM1_3_ALL_KINDS		(ITEM1_3_NO_END - ITEM1_3_NO_START)
#define	ITEM1_4_ALL_KINDS		(ITEM1_4_NO_END - ITEM1_4_NO_START)
#define	ITEM1_5_ALL_KINDS		(ITEM1_5_NO_END - ITEM1_5_NO_START)
#define	ITEM1_6_ALL_KINDS		(ITEM1_6_NO_END - ITEM1_6_NO_START)
#define	ITEM1_7_ALL_KINDS		(ITEM1_7_NO_END - ITEM1_7_NO_START)
#define	ITEM1_8_ALL_KINDS		(ITEM1_8_NO_END - ITEM1_8_NO_START)
#define	ITEM1_9_ALL_KINDS		(ITEM1_9_NO_END - ITEM1_9_NO_START)
#define	ITEM1_A_ALL_KINDS		(ITEM1_A_NO_END - ITEM1_A_NO_START)
#define	ITEM1_B_ALL_KINDS		(ITEM1_B_NO_END - ITEM1_B_NO_START)
#define	ITEM1_C_ALL_KINDS		(ITEM1_C_NO_END - ITEM1_C_NO_START)
#define	ITEM1_D_ALL_KINDS		(ITEM1_D_NO_END - ITEM1_D_NO_START)
#define	ITEM1_E_ALL_KINDS		(ITEM1_E_NO_END - ITEM1_E_NO_START)
#define	ITEM1_F_ALL_KINDS		(ITEM1_F_NO_END - ITEM1_F_NO_START)

#define FG_ITEM1_TICKET_COUNT_MAX	(5)
#define	GET_FG_ITEM1_TICKET_COUNT(f)	(((f) & 0x7) + 1)	/* 枚数を取得 */
#define	GET_FG_ITEM1_TICKET_MONTH(f)	((((f) >> 3) & 0xf)+1)	/* 月を取得 */
/* 月を指定して一枚の福引券を取得 */
#define GET_FG_ITEM1_TICKET_ONE(month)	((FG_ITEM1_TYPE << 12) | (FG_ITEM1_TICKET_CATEGORY << 8) | (((month)-1) << 3))
/* 月と枚数を指定して福引券のアイテムナンバー取得
   （数のチェックはしてませんので、必ず適切な値を使用してください） */
#define GET_FG_ITEM1_TICKET_ITEMNO(month, count)	((FG_ITEM1_TYPE << 12) | (FG_ITEM1_TICKET_CATEGORY << 8) | (((month)-1) << 3) | (count - 1))

#define	ITN_NO_NUM	(ITN_NO_END - ITN_NO_START)

/**/
#define mAREA_CHK(prm, p1, p2) ((prm >= p1) && (prm <= p2))

#define	mIS_BIT_RESERVE(fg_no)	(mAREA_CHK(fg_no, RESV000, RESV020))

/*----------------------*/
/* BG ITEM		*/    
/*----------------------*/

/*切株か？*/
#define mIS_BIT_STUMP(fg_no) (mAREA_CHK(fg_no, STUMP000, STUMP02))
/*フェンスか？*/
#define mIS_BIT_FENCE(fg_no) (mAREA_CHK(fg_no, FENCE00, FENCES))
/*雑草か？*/
#define mIS_BIT_GRASS(fg_no) (mAREA_CHK(fg_no, GRASS00, GRASS02))


/*ノーマル穴か？*/
#define mIS_BIT_HOLE_NRM(fg_no) (mAREA_CHK(fg_no, HOLE00, HOLE24))

/*光る穴か？*/
#define mIS_BIT_HOLE_SHIN(fg_no) (fg_no == HOLE00_SHIN)

/*穴か？*/
#define mIS_BIT_HOLE(fg_no) (mIS_BIT_HOLE_NRM(fg_no) || mIS_BIT_HOLE_SHIN(fg_no))

/*落とし穴？*/
#define mIS_BIT_PIT(fg_no) (mAREA_CHK(fg_no, PIT00, PIT24))

/*予約落とし穴？*/
#define mIS_BIT_PIT_RSV(fg_no) (mAREA_CHK(fg_no, PIT00_RSV, PIT24_RSV))

/*成長する木か？*/
#define mIS_BIT_TREE_GR(fg_no) (mAREA_CHK(fg_no, TREE000, TREE004_MN3) || mAREA_CHK(fg_no, TREE000_MN0, TREE004_MN0))

/*お金のなる木(段階ごと)*/
#define mIS_BIT_TREE000_MN(fg_no) (fg_no == TREE000_MN1 || fg_no == TREE000_MN2 || fg_no == TREE000_MN3 || fg_no == TREE000_MN0)
#define mIS_BIT_TREE001_MN(fg_no) (fg_no == TREE001_MN1 || fg_no == TREE001_MN2 || fg_no == TREE001_MN3 || fg_no == TREE001_MN0)
#define mIS_BIT_TREE002_MN(fg_no) (fg_no == TREE002_MN1 || fg_no == TREE002_MN2 || fg_no == TREE002_MN3 || fg_no == TREE002_MN0)
#define mIS_BIT_TREE003_MN(fg_no) (fg_no == TREE003_MN1 || fg_no == TREE003_MN2 || fg_no == TREE003_MN3 || fg_no == TREE003_MN0)
#define mIS_BIT_TREE004_MN(fg_no) (fg_no == TREE004_MN1 || fg_no == TREE004_MN2 || fg_no == TREE004_MN3 || fg_no == TREE004_MN0)

/*成長する木(各段階チェック用)*/



#define mIS_BIT_TREE_GR000(fg_no) ( \
				fg_no == TREE000 || fg_no == TREE000_AP || fg_no == TREE000_OR || \
				fg_no == TREE000_PH  || fg_no == TREE000_PR || fg_no == TREE000_NT || \
				mIS_BIT_TREE000_MN(fg_no) \
				)
#define mIS_BIT_TREE_GR001(fg_no) ( \
				fg_no == TREE001 || fg_no == TREE001_AP || fg_no == TREE001_OR || \
				fg_no == TREE001_PH || fg_no == TREE001_PR || fg_no == TREE001_NT || \
				fg_no == TREE001_MN1 || fg_no == TREE001_MN2 || fg_no == TREE001_MN3 || \
				mIS_BIT_TREE001_MN(fg_no) \
				)
#define mIS_BIT_TREE_GR002(fg_no) ( \
				fg_no == TREE002 || fg_no == TREE002_AP || fg_no == TREE002_OR || \
				fg_no == TREE002_PH || fg_no == TREE002_PR || fg_no == TREE002_NT || \
				fg_no == TREE002_MN1 || fg_no == TREE002_MN2 || fg_no == TREE002_MN3 || \
				mIS_BIT_TREE002_MN(fg_no) \
				)
#define mIS_BIT_TREE_GR003(fg_no) ( \
				fg_no == TREE003 || fg_no == TREE003_AP || fg_no == TREE003_OR || \
				fg_no == TREE003_PH || fg_no == TREE003_PR || fg_no == TREE003_NT || \
				fg_no == TREE003_MN1 || fg_no == TREE003_MN2 || fg_no == TREE003_MN3 || \
				mIS_BIT_TREE003_MN(fg_no) \
				)
#define mIS_BIT_TREE_GR004(fg_no) ( \
				fg_no == TREE004 || fg_no == TREE004_AP || fg_no == TREE004_OR || \
				fg_no == TREE004_PH || fg_no == TREE004_PR || fg_no == TREE004_NT || \
				mIS_BIT_TREE004_MN(fg_no) \
				)

#define mIS_BIT_TREE_FRT_3DAY(fg_no) ( \
			fg_no == TREE004_AP_3 || \
			fg_no == TREE004_OR_3 || \
			fg_no == TREE004_PH_3 || \
			fg_no == TREE004_PR_3 || \
			fg_no == TREE004_NT_3 \
			)

#define mIS_BIT_TREE_FRT_2DAY(fg_no) ( \
			fg_no == TREE004_AP_2 || \
			fg_no == TREE004_OR_2 || \
			fg_no == TREE004_PH_2 || \
			fg_no == TREE004_PR_2 || \
			fg_no == TREE004_NT_2 \
			)

#define mIS_BIT_TREE_FRT_1DAY(fg_no) ( \
			fg_no == TREE004_AP_1 || \
			fg_no == TREE004_OR_1 || \
			fg_no == TREE004_PH_1 || \
			fg_no == TREE004_PR_1 || \
			fg_no == TREE004_NT_1 \
			)

#define mIS_BIT_TREE_FRT_DAY(fg_no) ( \
			mIS_BIT_TREE_FRT_3DAY(fg_no) || \
			mIS_BIT_TREE_FRT_2DAY(fg_no) || \
			mIS_BIT_TREE_FRT_1DAY(fg_no)  \
			)

/*木の大きさ段階チェック用(成長する＆しない混合)*/

#define mIS_BIT_TREE_000(fg_no) (mIS_BIT_TREE_GR000(fg_no))
#define mIS_BIT_TREE_001(fg_no) (mIS_BIT_TREE_GR001(fg_no))
#define mIS_BIT_TREE_002(fg_no) (mIS_BIT_TREE_GR002(fg_no))
#define mIS_BIT_TREE_003(fg_no) (mIS_BIT_TREE_GR003(fg_no))
#define mIS_BIT_TREE_004(fg_no) (mIS_BIT_TREE_GR004(fg_no) || mIS_BIT_TREE_FRT_DAY(fg_no) || fg_no == TREE004_BEE || fg_no == TREE004_FTR || fg_no == TREE004_XMAS || fg_no == TREE004_PRESENT || fg_no == TREE004_SMN)

#define mIS_BIT_TREE_SET_PRESET (mIS_BIT_TREE_GR004(fg_no) || fg_no == TREE004_BEE || fg_no == TREE004_FTR || fg_no == TREE004_XMAS || fg_no == TREE004_PRESENT || fg_no == TREE004_SMN)


/*成長する木(種別チェック)*/

#define mIS_BIT_TREE_GR_NM(fg_no) (mAREA_CHK(fg_no, TREE000, TREE004)) /*普通の木*/
#define mIS_BIT_TREE_GR_AP(fg_no) (mAREA_CHK(fg_no, TREE000_AP, TREE004_AP)) /*林檎の木*/
#define mIS_BIT_TREE_GR_OR(fg_no) (mAREA_CHK(fg_no, TREE000_OR, TREE004_OR)) /*蜜柑の木*/
#define mIS_BIT_TREE_GR_PH(fg_no) (mAREA_CHK(fg_no, TREE000_PH, TREE004_PH)) /*桃の木*/
#define mIS_BIT_TREE_GR_PR(fg_no) (mAREA_CHK(fg_no, TREE000_PR, TREE004_PR)) /*洋梨の木*/
#define mIS_BIT_TREE_GR_NT(fg_no) (mAREA_CHK(fg_no, TREE000_NT, TREE004_NT)) /*栗の木*/
#define mIS_BIT_TREE_GR_MN(fg_no) (mAREA_CHK(fg_no, TREE000_MN1, TREE004_MN3) || mAREA_CHK(fg_no, TREE000_MN0, TREE004_MN0)) /*金の木*/

/*花かどうか*/
#define mIS_BIT_FLOWER(fg_no) (mAREA_CHK(fg_no, FLOWER000, FLOWER221))
    
/*花の１段階目*/
#define mIS_BIT_FLOWER_1(fg_no) (mAREA_CHK(fg_no, FLOWER000, FLOWER220))

/*花の２段階目*/
#define mIS_BIT_FLOWER_2(fg_no) (mAREA_CHK(fg_no, FLOWER001, FLOWER221))

/*10コイン石か？*/
#define mIS_BIT_STONE_TC(fg_no) (mAREA_CHK(fg_no, STONE_TC_A, STONE_TC_E) || (fg_no == STONE_DMY))

/*石か？*/
#define mIS_BIT_STONE(fg_no) (mAREA_CHK(fg_no, STONE_A, STONE_E) || mIS_BIT_STONE_TC(fg_no))


/*木で当りのある木か？ */
#define mIS_BIT_TREE_HIT(fg_no) ( \
				mIS_BIT_TREE_001(fg_no) || mIS_BIT_TREE_002(fg_no) || \
				mIS_BIT_TREE_003(fg_no) || mIS_BIT_TREE_004(fg_no) \
				)
/*木で切れる木か？ */
#define mIS_BIT_TREE_CUT(fg_no) ( \
				mIS_BIT_TREE_001(fg_no) || mIS_BIT_TREE_002(fg_no) || \
				mIS_BIT_TREE_003(fg_no) || mIS_BIT_TREE_004(fg_no) \
				)
/*揺らすと音有りの木か？*/
#define mIS_BIT_TREE_SOUND(fg_no) ( \
				mIS_BIT_TREE_002(fg_no) || mIS_BIT_TREE_003(fg_no) || mIS_BIT_TREE_004(fg_no) \
				)


/*クリスマスの木？(電飾付きの木？)*/
#define mIS_BIT_TREE_XMAS(fg_no) (fg_no == TREE004_XMAS)


/*スコップでとばせる(FG無視で掘れる) */
#define mIS_BIT_DIG_FLY(fg_no) ( \
    (fg_no != NULL_NO) && \
    (fg_no != GRND00_SHIN) \
    )

/*落とし穴(落とし穴の種が取れる)のFG判定*/
#define mIS_TAKE_PITFALL_MATERIAL(fg_no) (mAREA_CHK(fg_no, PIT00, PIT24))

/*(光る土壌(お金が取れる)のFG判定*/
#define mIS_TAKE_MONEY_FROM_GRND_SHIN(fg_no) (fg_no == GRND00_SHIN)

/*FG埋っていないアイテム以外で掘ってアイテムを取ることのできるFG番号*/
/*注意！この判別式でOKになるアイテムが取得できるとは限らない(変換ルーチンを通すこと)*/
#define mIS_DIG_ENABLE_NOTBURY_ITEM(fg_no) (mIS_TAKE_PITFALL_MATERIAL(fg_no) ||  mIS_TAKE_MONEY_FROM_GRND_SHIN(fg_no))

/*FG無視で掘って飛ばします */
#define mIS_BIT_DIG_ENABLE(fg_no) ( \
    ((fg_no >= FLOWER000) && (fg_no <= FLOWER221)) || \
    ((fg_no >= STUMP000 ) && (fg_no <= STUMP02  )) || \
    ((fg_no >= GRASS00  ) && (fg_no <= GRASS02  )) || \
    (fg_no == TREE000) || \
    (fg_no == TREE000_AP) || \
    (fg_no == TREE000_OR) || \
    (fg_no == TREE000_PH) || \
    (fg_no == TREE000_PR) || \
    (fg_no == TREE000_NT) || \
    (fg_no == D_TREE0) || \
    mIS_BIT_TREE000_MN(fg_no) \
    )
    /*mIS_DIG_ENABLE_NOTBURY_ITEM(fg_no) \*/

/*散らばりアイテムSCATTER*/

#define mIS_SCATTER_ITEM(fg_no) ((((fg_no) >= GRASS00) && ((fg_no) <= GRASS02)) || (((fg_no) >= SH_HIOUGI) && ((fg_no) <= SH_SANGO)))


/*FG BG_ITEM  変換作業種別*/


enum {
    BIT_FG_SUB_N_TREE2STUMP_e,	/*木FGから切株FGへの変換*/
    BIT_FG_SUB_N_VALUE
};

/*
 *
 *
 */
    mAc_nfs_t bg_item_fg_sub(
	const mAc_nfs_t fg_no,
	const short proc_type
	);

    /**/

enum {
    BIT_FG_SUB_TREE_GROW_MAX_1,
    BIT_FG_SUB_TREE_GROW_MAX_2,
    BIT_FG_SUB_TREE_GROW_MAX_3,
    BIT_FG_SUB_TREE_GROW_MAX_4,
    BIT_FG_SUB_TREE_GROW_MAX_5,
    BIT_FG_SUB_TREE_GROW_MAX_VALUE
};

/*
 */
extern mAc_nfs_t bg_item_fg_sub_tree_grow(
    mAc_nfs_t fg_no,
    int grow_cnt,
    int grow_max
    );

extern mAc_nfs_t bg_item_fg_sub_dig2take_conv(mAc_nfs_t dig_fg_no);

/* ＦＧからあたりのないことを確認（使うかどうかわからないけど...）
 * １.なにもおかれていない
 * ２.アイテム１である
 * ３.家具である
 * ４.花である（アイテム０）
 * FILL000は念のため省くことにする
 */
#define mNT_NO_COL_FG(fg_no)\
(fg_no == NULL_NO	||  \
 GET_FG_TYPE(fg_no) == FG_ITEM1_TYPE ||\
 GET_FG_TYPE(fg_no) == FG_FTR_TYPE ||\
 (fg_no >= FLOWER000 && fg_no <= FLOWER221))
    
/*----------------------*/
/* HANIWA		*/    
/*----------------------*/
/* 現在のHANIWA数。*/    
#define mNT_HANIWA_MAX	(((FTR_HNW127_NISHI - FTR_HNW001_MINAMI) / 4) + 1)
/* 家具ハニワマクロ。*/
#define mNT_IT_IS_HANIWA(item_no)	\
(item_no >= FTR_HNW001_MINAMI && item_no <= FTR_HNW127_NISHI)
/* ハニワitem_noをhaniwa_idxに変換。*/
#define mNT_ITEM_NO_2_HANIWA_IDX(item_no)\
    ((mAc_nfs_t)((item_no - FTR_HNW001_MINAMI) >> 2))
/* haniwa_idxをハニワitem_noに変換。*/
#define mNT_HANIWA_IDX_2_ITEM_NO(haniwa_idx)\
    ((mAc_nfs_t)(haniwa_idx << 2) + FTR_HNW001_MINAMI)
/*----------------------*/
/* MD			*/    
/*----------------------*/
/* 現在のMD数。*/    
#define mNT_MD_MAX	(ITEM1_A_ALL_KINDS)
/* MDマクロ。*/
#define mNT_IT_IS_MD(item_no)	\
    (item_no >= ITEM1_A_NO_START && item_no < ITEM1_A_NO_END)
/* MDitem_noをMDidxに変換。*/
#define mNT_ITEM_NO_2_MD_IDX(item_no)\
    ((mAc_nfs_t)(item_no - ITEM1_A_NO_START))
/* MDidxをMDitem_noに変換。*/
#define mNT_MD_IDX_2_ITEM_NO(md_idx)\
    ((mAc_nfs_t)(md_idx + ITEM1_A_NO_START))
/*----------------------*/
/* 傘			*/    
/*----------------------*/
/* 傘数 */
#define mNT_UMB_MAX	(UMBRELLA31 - UMBRELLA + 1)
/* それは傘だね。*/    
#define mNT_IT_IS_UMBRELLA(item_no)\
    (item_no >= UMBRELLA && item_no <= UMBRELLA31)
/* 傘item_noを傘IDXに変換。*/
#define mNT_ITEM_NO_2_UMB_IDX(item_no)\
    ((mNT_IT_IS_UMBRELLA(item_no)) ? (item_no - UMBRELLA) : 0)
/* 傘IDXを傘item_noに変換。*/
#define mNT_UMB_IDX_2_ITEM_NO(umb_idx)\
    ((mAc_nfs_t)(UMBRELLA + umb_idx))
/* 家具傘のスタート エンド */
#define mNT_FTR_UMB_S	(FTR_FUMBRELLA1_MINAMI)
#define mNT_FTR_UMB_E	(FTR_FUMBRELLA32_NISHI)
/* それは家具傘だね */
#define mNT_IT_IS_FTR_UMBRELLA(item_no)\
    (item_no >= mNT_FTR_UMB_S && item_no <= mNT_FTR_UMB_E)
/* 家具傘item_noを傘IDXに変換 */
#define mNT_FTR_ITEM_NO_2_UMB_IDX(item_no)\
    ((int)((item_no - mNT_FTR_UMB_S) >> 2))
/* 家具IDXを家具傘item_noに変換 */
#define mNT_UMB_IDX_2_FTR_ITEM_NO(idx)\
    ((mAc_nfs_t)((idx << 2) + mNT_FTR_UMB_S))

/*----------------------*
 * 家具とかぶっている	*
 *----------------------*/
#define mNT_CHECK_FTR_CROSS(item_no)\
    ((item_no >= FTR_NO_START && item_no <= FTR_NO_END) ||\
     item_no == FTR_DUMMY)
    
/*----------------------*/
/* マネキン家具。	*/
/*----------------------*/
#define mNT_MANEKIN_FTR_START	(FTR_FMANEKIN001_MINAMI)
#define mNT_MANEKIN_FTR_END	(FTR_FMANEKIN255_NISHI)
/* マネキン家具である。*/
#define mNT_IT_IS_MANEKIN_FTR(item_no)	\
    (item_no >= mNT_MANEKIN_FTR_START && item_no <= mNT_MANEKIN_FTR_END)
/* アイテム布である。*/
#define mNT_IT_IS_CLOTH(item_no)\
    (item_no >= ITEM1_4_NO_START && item_no <= ITEM1_4_NO_END)
/* マネキン家具item_noをマネキンIDXに変換。*/
#define mNT_MANEKIN_FTR_ITEM_NO_2_MANEKIN_IDX(item_no)\
    (mNT_IT_IS_MANEKIN_FTR(item_no) ? (int)(((int)item_no - (int)mNT_MANEKIN_FTR_START)>>2):0)
/* アイテム布item_noを布IDXに変換。*/
#define mNT_CLOTH_ITEM_NO_2_CLOTH_IDX(item_no)\
    (mNT_IT_IS_CLOTH(item_no) ? (int)((int)item_no - ITEM1_4_NO_START) : 0)
/* マネキンIDXをマネキン家具item_noに変換。*/
#define mNT_MANEKIN_IDX_2_MANEKIN_FTR_ITEM_NO(idx)\
    ((mAc_nfs_t)((mAc_nfs_t)mNT_MANEKIN_FTR_START + (mAc_nfs_t)((mAc_nfs_t)idx << (mAc_nfs_t)2)))
/* 布IDXを布item_noに変換。*/
#define mNT_CLOTH_IDX_2_CLOTH_ITEM_NO(idx)\
    ((mAc_nfs_t)((mAc_nfs_t)ITEM1_4_NO_START + (mAc_nfs_t)idx))
/*----------------------*/
/* 虫			*/
/*----------------------*/
#define mNT_INS_FTR_START	(FTR_SUM_MONSHIRO_MINAMI)
#define mNT_INS_FTR_END		(FTR_SUM_OKUWA_NISHI)
/* 虫家具である。*/
#define mNT_IT_IS_INS_FTR(item_no)\
    (item_no >= mNT_INS_FTR_START && item_no <= mNT_INS_FTR_END)
/* 虫item_noである。*/
#define mNT_IT_IS_INS(item_no)\
    (item_no >= ITEM1_D_NO_START && item_no <= ITEM1_D_NO_END)
/* 虫家具を虫IDXに変換。*/
#define mNT_INS_FTR_ITEM_NO_2_INS_IDX(item_no)\
    (mNT_IT_IS_INS_FTR(item_no) ? (int)((item_no - mNT_INS_FTR_START) >> 2) : 0)
/* 虫item_noを虫IDXに変換 */
#define mNT_ITEM_NO_2_INSECT_IDX(item_no)\
    (mNT_IT_IS_INS(item_no) ? (int)(item_no - ITEM1_D_NO_START) : 0)
/* 虫IDXを虫家具に変換。*/
#define mNT_INS_IDX_2_INS_FTR_ITEM_NO(idx)\
    ((mAc_nfs_t)(mNT_INS_FTR_START + (idx << 2)))
/* 虫IDXを虫item_noに変換 */
#define mNT_INSECT_IDX_2_ITEM_NO(idx)\
     ((mAc_nfs_t)(ITEM1_D_NO_START + idx))
/*----------------------*/
/* 魚			*/
/*----------------------*/
#define mNT_FISH_FTR_START	(FTR_SUM_FUNA_MINAMI)
#define mNT_FISH_FTR_END	(FTR_SUM_KASEKI_NISHI)
/* 魚である。*/
#define mNT_IT_IS_FISH(item_no)\
    (item_no >= ITEM1_3_NO_START && item_no <= ITEM1_3_NO_END)
/* 魚item_noを魚IDXに変換。*/
#define mNT_FISH_ITEM_NO_2_FISH_IDX(item_no)\
    (mNT_IT_IS_FISH(item_no) ? (item_no - ITEM1_3_NO_START) : 0)
/* 魚IDXを魚item_noに変換。
 * 不正なIdxが入ってきたらNULL_NOを返します。*/
extern mAc_nfs_t
mNT_FishIdx2FishItemNo(
    int	idx
    );
#define mNT_FISH_IDX_2_FISH_ITEM_NO(idx) mNT_FishIdx2FishItemNo(idx)
/* 魚家具である。*/
#define mNT_IT_IS_FISH_FTR(item_no)\
     (item_no >= mNT_FISH_FTR_START && item_no <= mNT_FISH_FTR_END)
/* 魚家具item_noを魚IDXに変換。*/
#define mNT_FISH_FTR_ITEM_NO_2_FISH_IDX(item_no)\
     (mNT_IT_IS_FISH_FTR(item_no) ? ((int)((item_no - mNT_FISH_FTR_START) >> 2)) : 0)
    
/* 魚IDXを魚家具item_noに変換。*/
#define mNT_FISH_IDX_2_FISH_FTR_ITEM_NO(idx) \
	 ((mAc_nfs_t)(mNT_FISH_FTR_START + (idx << 2)))
/*----------------------*/
/* 化石家具		*/
/*----------------------*/
#define mNT_FTR_FOSSIL_START	(FTR_DIN_TRIKERA_HEAD_MINAMI)
#define mNT_FTR_FOSSIL_END	(FTR_DIN_TRILOBITE_NISHI)
#define mNT_FOSSIL_MAX	(((mNT_FTR_FOSSIL_END - mNT_FTR_FOSSIL_START) / 4) + 1)
/* 家具化石である */
#define mNT_IT_IS_FTR_FOSSIL(item_no)\
    (item_no >= mNT_FTR_FOSSIL_START && item_no <= mNT_FTR_FOSSIL_END)
/* 家具化石を化石Idxに変換 */
#define mNT_ITEM_NO_2_FOSSIL_IDX(item_no)\
    (mNT_IT_IS_FTR_FOSSIL(item_no) ? ((int)((item_no - mNT_FTR_FOSSIL_START) >> 2)) : 0)
/* 化石Idxをitem_noに変換 */
#define mNT_FOSSIL_IDX_2_ITEM_NO(idx)\
     ((idx >= 0 && idx < mNT_FOSSIL_MAX) ? (mAc_nfs_t)(mNT_FTR_FOSSIL_START + idx << 2) : mNT_FTR_FOSSIL_START)
/*----------------------*/
/* 便箋			*/    
/*----------------------*/
/* 便箋item_noを便箋idxに変換。*/
#define mNT_ITEM_NO_2_PAPER_IDX(item_no)\
    ((mAc_nfs_t)(item_no - ITEM1_0_NO_START))
/* 便箋idxを便箋item_noに変換。*/
#define mNT_PAPER_IDX_2_ITEM_NO(paper_idx)\
    ((mAc_nfs_t)(paper_idx + ITEM1_0_NO_START))
/*----------------------*/
/* 壁紙			*/    
/*----------------------*/
/* 壁紙item_noを壁紙idxに変換。*/
#define mNT_ITEM_NO_2_WALL_IDX(item_no)\
    ((mAc_nfs_t)(item_no - ITEM1_7_NO_START))
/* 壁紙idxを壁紙item_noに変換。*/
#define mNT_WALL_IDX_2_ITEM_NO(paper_idx)\
    ((mAc_nfs_t)(paper_idx + ITEM1_7_NO_START))
/*----------------------*/
/* 絨毯			*/    
/*----------------------*/
/* 絨毯item_noを絨毯idxに変換。*/
#define mNT_ITEM_NO_2_CARPET_IDX(item_no)\
    ((mAc_nfs_t)(item_no - ITEM1_6_NO_START))
/* 絨毯idxを絨毯item_noに変換。*/
#define mNT_CARPET_IDX_2_ITEM_NO(paper_idx)\
    ((mAc_nfs_t)(paper_idx + ITEM1_6_NO_START))


/*----------------------*/
/* ＦＡＭＩＣＯＭ       */    
/*----------------------*/
#define mNT_FAMICOM_START       (FTR_KOB_DISKSYSTEM_MINAMI)
#define mNT_FAMICOM_END         (FTR_KOB_DISKSYSTEM7_NISHI)
#define mNT_IT_IS_FAMICOM(item_no)      \
(item_no >= mNT_FAMICOM_START && item_no <= mNT_FAMICOM_END)
    
/*
 ************************************************
 *						*
 *		クラス設定			*
 *						*
 ************************************************
 */
/*
 *	一般アイテムの高さデータクラス
 */
typedef struct {
    int			flag;		/* 0..1点分 1..5点分 */
    mCoBG_OffsetTable_c	table;

} mNmTBL_OffsetTable_c;

/*
 *
 *	外部参照用テーブル
 *
 */
/*#ifndef	M_NAME_TABLEp*/

#if 0
extern mNmTBL_OffsetTable_c	item_obj_height_table[];
#endif
#if 0
extern mNmTBL_OffsetTable_c	item_obj_height_table2[];
#endif
extern short		move_obj_profile_table[];
extern short		actor_profile_table[];
extern mCoBG_OffsetTable_c	dummy_height_table[];
extern short		props_profile_table[];
extern unchar		npc_looks_table[];


extern int mNT_get_itemTableNo(mAc_nfs_t itemNo);

extern mNmTBL_OffsetTable_c *obj_hight_table_item0_nogrow(mAc_nfs_t fg_no);

/*#endif*/	/* M_NAME_TABLEp */

#ifdef _LANGUAGE_C_PLUS_PLUS
} /* extern "C" */
#endif	/* _LANGUAGE_C_PLUS_PLUS */

#endif	/* INCLUDE_M_NAME_TABLE */


/*** m_name_table.h ***/

