diff options
Diffstat (limited to 'src/map/map.h')
-rw-r--r-- | src/map/map.h | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/src/map/map.h b/src/map/map.h index 9d8a0b194..2b976fe6c 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -500,10 +500,15 @@ enum { EQP_HELM = 0x0100, // 頭上段 }; +#define MAX_CELL_TYPE 7 //今ではセルのタイプは数字的に6が最大なので7にした、 + //MAX_CELL_TYPE+1はワープポイントなどのタッチ系に + struct map_data { char name[24]; unsigned char *gat; // NULLなら下のmap_data_other_serverとして扱う - char *alias; // [MouseJstr] + char *alias; // [MouseJstr] + int *gat_fileused[MAX_CELL_TYPE+1+1]; //もしビットマップを使うならこちらを使う、 + //上のgatはキャストされてgat_fileused[0]に指す struct block_list **block; struct block_list **block_mob; int *block_count,*block_mob_count; @@ -557,8 +562,8 @@ struct map_data_other_server { unsigned long ip; unsigned int port; }; -#define read_gat(m,x,y) (map[m].gat[(x)+(y)*map[m].xs]) -#define read_gatp(m,x,y) (m->gat[(x)+(y)*m->xs]) +#define read_gat(m,x,y) (map_getcell(m,x,y,CELL_CHKTYPE)) //ビットマップ使う場合結構CPUに負担かかるので、消極的に使おう +#define read_gatp(m,x,y) (map_getcellp(m,x,y,CELL_CHKTYPE)) //同上 struct flooritem_data { struct block_list bl; @@ -617,6 +622,25 @@ enum { LOOK_BASE,LOOK_HAIR,LOOK_WEAPON,LOOK_HEAD_BOTTOM,LOOK_HEAD_TOP,LOOK_HEAD_MID,LOOK_HAIR_COLOR,LOOK_CLOTHES_COLOR,LOOK_SHIELD,LOOK_SHOES }; +/*-------CELL_CHK*---------------- + * CELL_CHKPASS: セルは0,3,6のどっちかの場合は1を返す、以外は0 + * CELL_CHKNOPASS: セルは1、5のどっちかの場合は1を返す、以外は0 + * CELL_CHKWATER: セルは3の場合は1を返す、以外は0 + * CELL_CHKHIGH: セルは5の場合は1を返す、以外は0 + * CHELL_CHKTOUCH:セルはタッチ系の場合は1を返す、以外は0 + * CELL_CHKTYPE: セルのタイプを知りたい場合は1を返す、以外は0 +*/ +typedef enum { + CELL_CHKPASS,CELL_CHKNOPASS,CELL_CHKWATER=3,CELL_CHKHIGH=5,CELL_CHKTOUCH,CELL_CHKTYPE +} CELL_CHK; + +/*-------CELL_SET*--------------- + * ほとんどは上と対応、設定用 + */ +typedef enum { + CELL_SETPASS,CELL_SETNOPASS,CELL_SETWATER=3,CELL_SETHIGH=5,CELL_SETNOHIGH,CELL_SETTOUCH +} CELL_SET; + struct chat_data { struct block_list bl; @@ -638,6 +662,13 @@ extern int autosave_interval; extern int agit_flag; extern int night_flag; // 0=day, 1=night [Yor] +//------bitmap使用とgrfファイル使用両方対応できるために追加、また、 +//セルの取得や設定は列挙型CELL_CHK*とCELL_SET*を使った方が意図がわかりやすいので変更してみた +int map_getcell(int,int,int,CELL_CHK); +int map_getcellp(struct map_data*,int,int,CELL_CHK); +extern int map_read_flag; //セル情報のソース判定フラグ、0ならgrfファイル、1ならビットマップファイル +enum { READ_FROM_GAT, READ_FROM_AFM, READ_FROM_BITMAP, CREATE_BITMAP }; + extern char motd_txt[]; extern char help_txt[]; @@ -698,8 +729,7 @@ struct map_session_data * map_nick2sd(char*); int compare_item(struct item *a, struct item *b); // gat関連 -int map_getcell(int,int,int); -int map_setcell(int,int,int,int); +int map_setcell(int,int,int,CELL_SET); // その他 int map_check_dir(int s_dir,int t_dir); |