summaryrefslogtreecommitdiff
path: root/src/map/map.h
diff options
context:
space:
mode:
authorcelest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec>2004-12-26 18:47:04 +0000
committercelest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec>2004-12-26 18:47:04 +0000
commita028a5fa44a6eb6b0ed87781eb18b8555eb08837 (patch)
tree47a3c8144bf0c11ece28b41767f0c7d6d993869e /src/map/map.h
parent48f2ec3f27a57a7fe3c60f5475174c075eec890d (diff)
downloadhercules-a028a5fa44a6eb6b0ed87781eb18b8555eb08837.tar.gz
hercules-a028a5fa44a6eb6b0ed87781eb18b8555eb08837.tar.bz2
hercules-a028a5fa44a6eb6b0ed87781eb18b8555eb08837.tar.xz
hercules-a028a5fa44a6eb6b0ed87781eb18b8555eb08837.zip
* Added Bitmap File system
* Added --run_once flag git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@789 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/map.h')
-rw-r--r--src/map/map.h40
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);