rogue > struct > THING


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

メモ

union thingとなっている。

コメントではモンスタとプレイヤという位置づけになっているが、

どうもフィールドに落ちているアイテムもTHINGで管理している様子。

typedef union thing THING;

ソース

モンスターとプレイヤーの構造体。

coordなどの共通データはコンパイラによっては同じ位置へ配置される保証はないのだから、

だしておいた方がいいのでは?

/*
 * Structure for monsters and player
 */
union thing {
    struct {
        union thing *_l_next, *_l_prev; /* Next pointer in link */
        coord _t_pos;                   /* Position */
        int _t_turn;                    /* If slowed, is it a turn to move */
        int _t_type;                    /* What it is */
        int _t_disguise;                /* What mimic looks like */
        int _t_oldch;                   /* Character that was where it was */
        const coord *_t_dest;           /* Where it is running to */
        int _t_flags;                   /* State word */
        struct stats _t_stats;          /* Physical description */
        struct room *_t_room;           /* Current room for thing */
        union thing *_t_pack;           /* What the thing is carrying */
        int _t_reserved;
    } _t;
    struct {
        union thing *_l_next, *_l_prev; /* Next pointer in link */
        int _o_type;                    /* What kind of object it is */
        coord _o_pos;                   /* Where it lives on the screen */
        char *_o_text;                  /* What it says if you read it */
        int  _o_launch;                 /* What you need to launch it */
        int _o_packch;                  /* What character it is in the pack */
        char _o_damage[8];              /* Damage if used like sword */
        char _o_hurldmg[8];             /* Damage if thrown */
        int _o_count;                   /* count for plural objects */
        int _o_which;                   /* Which object of a type it is */
        int _o_hplus;                   /* Plusses to hit */
        int _o_dplus;                   /* Plusses to damage */
        int _o_arm;                     /* Armor protection */
        int _o_flags;                   /* information about objects */
        int _o_group;                   /* group number for this object */
        char *_o_label;                 /* Label for object */
    } _o;
};