OSDN Git Service

[Refactor] #37353 total_winner を world_type へ移動. / Move total_winner to world_type...
[hengband/hengband.git] / src / player-status.h
index a4074e2..87738d2 100644 (file)
@@ -1,5 +1,7 @@
 #pragma once 
 
+#include "floor.h"
+
 /*
  * Most of the "player" information goes here.
  *
@@ -79,6 +81,7 @@ extern const concptr stat_names[6];
 extern const concptr stat_names_reduced[6];
 
 typedef struct player_type player_type;
+struct floor_type;
 
 struct player_type
 {
@@ -86,6 +89,7 @@ struct player_type
        int player_euid;
        int player_egid;
 
+       floor_type *current_floor_ptr;
        POSITION oldpy;         /* Previous player location -KMW- */
        POSITION oldpx;         /* Previous player location -KMW- */
 
@@ -119,8 +123,6 @@ struct player_type
 
        TOWN_IDX town_num;                      /* Current town number */
        s16b arena_number;              /* monster number in arena -KMW- */
-       bool inside_arena;              /* Is character inside arena? */
-       QUEST_IDX inside_quest;         /* Inside quest level */
        bool phase_out;         /*!< フェイズアウト状態(闘技場観戦状態などに利用、NPCの処理の対象にならず自身もほとんどの行動ができない) */
 
        DUNGEON_IDX dungeon_idx; /* current dungeon index */
@@ -417,11 +419,8 @@ struct player_type
        concptr last_message;        /* Last message on death or retirement */
        char history[4][60];      /* Textual "history" for the Player */
 
-       u16b total_winner;        /* Total winner */
        u16b panic_save;          /* Panic save */
 
-       u16b noscore;             /* Cheating flags */
-
        bool wait_report_score;   /* Waiting to report score */
        bool is_dead;             /* Player is dead */
        bool now_damaged;
@@ -430,8 +429,6 @@ struct player_type
 
        bool reset_concent;   /* Concentration reset flag */
 
-       bool wizard;              /* Player is in wizard mode */
-
        MONSTER_IDX riding;              /* Riding on a monster of this index */
 
        #define KNOW_STAT   0x01
@@ -554,7 +551,49 @@ struct player_type
 #define PU_FLOW         0x10000000L     /*!< ステータス更新フラグ: プレイヤーから各マスへの到達距離 / Update flow */
 
        BIT_FLAGS redraw;       /* Normal Redraws */
+#define PR_MISC         0x00000001L     /*!< 再描画フラグ: 種族と職業 / Display Race/Class */
+#define PR_TITLE        0x00000002L     /*!< 再描画フラグ: 称号 / Display Title */
+#define PR_LEV          0x00000004L     /*!< 再描画フラグ: レベル / Display Level */
+#define PR_EXP          0x00000008L     /*!< 再描画フラグ: 経験値 / Display Experience */
+#define PR_STATS        0x00000010L     /*!< 再描画フラグ: ステータス /  Display Stats */
+#define PR_ARMOR        0x00000020L     /*!< 再描画フラグ: AC / Display Armor */
+#define PR_HP           0x00000040L     /*!< 再描画フラグ: HP / Display Hitpoints */
+#define PR_MANA         0x00000080L     /*!< 再描画フラグ: MP / Display Mana */
+#define PR_GOLD         0x00000100L     /*!< 再描画フラグ: 所持金 / Display Gold */
+#define PR_DEPTH        0x00000200L     /*!< 再描画フラグ: ダンジョンの階 / Display Depth */
+#define PR_EQUIPPY      0x00000400L     /*!< 再描画フラグ: 装備シンボル / Display equippy chars */
+#define PR_HEALTH       0x00000800L     /*!< 再描画フラグ: モンスターのステータス / Display Health Bar */
+#define PR_CUT          0x00001000L     /*!< 再描画フラグ: 負傷度 / Display Extra (Cut) */
+#define PR_STUN         0x00002000L     /*!< 再描画フラグ: 朦朧度 / Display Extra (Stun) */
+#define PR_HUNGER       0x00004000L     /*!< 再描画フラグ: 空腹度 / Display Extra (Hunger) */
+#define PR_STATUS       0x00008000L     /*!< 再描画フラグ: プレイヤーの付与状態 /  Display Status Bar */
+#define PR_XXX0         0x00010000L     /*!< (unused) */
+#define PR_UHEALTH      0x00020000L     /*!< 再描画フラグ: ペットのステータス / Display Uma Health Bar */
+#define PR_XXX1         0x00040000L     /*!< (unused) */
+#define PR_XXX2         0x00080000L     /*!< (unused) */
+#define PR_STATE        0x00100000L     /*!< 再描画フラグ: プレイヤーの行動状態 / Display Extra (State) */
+#define PR_SPEED        0x00200000L     /*!< 再描画フラグ: 加速 / Display Extra (Speed) */
+#define PR_STUDY        0x00400000L     /*!< 再描画フラグ: 学習 / Display Extra (Study) */
+#define PR_IMITATION    0x00800000L     /*!< 再描画フラグ: ものまね / Display Extra (Imitation) */
+#define PR_EXTRA        0x01000000L     /*!< 再描画フラグ: 拡張ステータス全体 / Display Extra Info */
+#define PR_BASIC        0x02000000L     /*!< 再描画フラグ: 基本ステータス全体 / Display Basic Info */
+#define PR_MAP          0x04000000L     /*!< 再描画フラグ: ゲームマップ / Display Map */
+#define PR_WIPE         0x08000000L     /*!< 再描画フラグ: 画面消去 / Hack -- Total Redraw */
+
        BIT_FLAGS window;       /* Window Redraws */
+#define PW_INVEN        0x00000001L     /*!<サブウィンドウ描画フラグ: 所持品-装備品 / Display inven/equip */
+#define PW_EQUIP        0x00000002L     /*!<サブウィンドウ描画フラグ: 装備品-所持品 / Display equip/inven */
+#define PW_SPELL        0x00000004L     /*!<サブウィンドウ描画フラグ: 魔法一覧 / Display spell list */
+#define PW_PLAYER       0x00000008L     /*!<サブウィンドウ描画フラグ: プレイヤーのステータス / Display character */
+#define PW_MONSTER_LIST 0x00000010L     /*!<サブウィンドウ描画フラグ: 視界内モンスターの一覧 / Display monster list */
+#define PW_MESSAGE      0x00000040L     /*!<サブウィンドウ描画フラグ: メッセージログ / Display messages */
+#define PW_OVERHEAD     0x00000080L     /*!<サブウィンドウ描画フラグ: 周辺の光景 / Display overhead view */
+#define PW_MONSTER      0x00000100L     /*!<サブウィンドウ描画フラグ: モンスターの思い出 / Display monster recall */
+#define PW_OBJECT       0x00000200L     /*!<サブウィンドウ描画フラグ: アイテムの知識 / Display object recall */
+#define PW_DUNGEON      0x00000400L     /*!<サブウィンドウ描画フラグ: ダンジョンの地形 / Display dungeon view */
+#define PW_SNAPSHOT     0x00000800L     /*!<サブウィンドウ描画フラグ: 記念写真 / Display snap-shot */
+#define PW_BORG_1       0x00004000L     /*!<サブウィンドウ描画フラグ: ボーグメッセージ / Display borg messages */
+#define PW_BORG_2       0x00008000L     /*!<サブウィンドウ描画フラグ: ボーグステータス / Display borg status */
 
        s16b stat_use[A_MAX];   /* Current modified stats */
        s16b stat_top[A_MAX];   /* Maximal modified stats */
@@ -715,7 +754,7 @@ struct player_type
 
        byte pspeed;            /* Current speed */
 
-       ENERGY energy_use;      /* Energy use this current_world_ptr->game_turn */
+       ENERGY energy_use;      /* Energy use this turn */
 
        POSITION y;     /* Player location in dungeon */
        POSITION x;     /* Player location in dungeon */
@@ -731,10 +770,10 @@ extern int riding_exp_level(int riding_exp);
 extern int spell_exp_level(int spell_exp);
 
 extern s16b calc_num_fire(player_type *creature_ptr, object_type *o_ptr);
-extern void calc_bonuses(void);
+extern void calc_bonuses(player_type *creature_ptr);
 extern WEIGHT weight_limit(player_type *creature_ptr);
 extern bool has_melee_weapon(player_type *creature_ptr, int i);
-extern bool is_heavy_shoot(object_type *o_ptr);
+extern bool is_heavy_shoot(player_type *creature_ptr, object_type *o_ptr);
 
 extern bool heavy_armor(player_type *creature_ptr);
 extern void update_creature(player_type *creature_ptr);
@@ -745,30 +784,30 @@ extern void take_turn(player_type *creature_ptr, PERCENTAGE need_cost);
 extern void free_turn(player_type *creature_ptr);
 
 extern bool player_place(player_type *creature_ptr, POSITION y, POSITION x);
-extern void sanity_blast(monster_type *m_ptr, bool necro);
+extern void sanity_blast(player_type *creature_ptr, monster_type *m_ptr, bool necro);
 
-extern void check_experience(void);
-extern void wreck_the_pattern(void);
+extern void check_experience(player_type *creature_ptr);
+extern void wreck_the_pattern(player_type *creature_ptr);
 extern void cnv_stat(int val, char *out_val);
 extern s16b modify_stat_value(int value, int amount);
-extern long calc_score(void);
+extern long calc_score(player_type *creature_ptr);
 
 extern const s32b player_exp[PY_MAX_LEVEL];
 extern const s32b player_exp_a[PY_MAX_LEVEL];
 
 
 /* Temporary flags macro */
-#define IS_FAST() (p_ptr->fast || music_singing(MUSIC_SPEED) || music_singing(MUSIC_SHERO))
-#define IS_INVULN() (p_ptr->invuln || music_singing(MUSIC_INVULN))
-#define IS_HERO() (p_ptr->hero || music_singing(MUSIC_HERO) || music_singing(MUSIC_SHERO))
-#define IS_BLESSED() (p_ptr->blessed || music_singing(MUSIC_BLESS) || hex_spelling(HEX_BLESS))
-#define IS_OPPOSE_ACID() (p_ptr->oppose_acid || music_singing(MUSIC_RESIST) || (p_ptr->special_defense & KATA_MUSOU))
-#define IS_OPPOSE_ELEC() (p_ptr->oppose_elec || music_singing(MUSIC_RESIST) || (p_ptr->special_defense & KATA_MUSOU))
-#define IS_OPPOSE_FIRE() (p_ptr->oppose_fire || music_singing(MUSIC_RESIST) || (p_ptr->special_defense & KATA_MUSOU))
-#define IS_OPPOSE_COLD() (p_ptr->oppose_cold || music_singing(MUSIC_RESIST) || (p_ptr->special_defense & KATA_MUSOU))
-#define IS_OPPOSE_POIS() (p_ptr->oppose_pois || music_singing(MUSIC_RESIST) || (p_ptr->special_defense & KATA_MUSOU))
-#define IS_TIM_ESP() (p_ptr->tim_esp || music_singing(MUSIC_MIND) || (p_ptr->concent >= CONCENT_TELE_THRESHOLD))
-#define IS_TIM_STEALTH() (p_ptr->tim_stealth || music_singing(MUSIC_STEALTH))
+#define IS_FAST(C) (C->fast || music_singing(C, MUSIC_SPEED) || music_singing(C, MUSIC_SHERO))
+#define IS_INVULN(C) (C->invuln || music_singing(C, MUSIC_INVULN))
+#define IS_HERO() (p_ptr->hero || music_singing(p_ptr, MUSIC_HERO) || music_singing(p_ptr, MUSIC_SHERO))
+#define IS_BLESSED() (p_ptr->blessed || music_singing(p_ptr, MUSIC_BLESS) || hex_spelling(HEX_BLESS))
+#define IS_OPPOSE_ACID() (p_ptr->oppose_acid || music_singing(p_ptr, MUSIC_RESIST) || (p_ptr->special_defense & KATA_MUSOU))
+#define IS_OPPOSE_ELEC() (p_ptr->oppose_elec || music_singing(p_ptr, MUSIC_RESIST) || (p_ptr->special_defense & KATA_MUSOU))
+#define IS_OPPOSE_FIRE() (p_ptr->oppose_fire || music_singing(p_ptr, MUSIC_RESIST) || (p_ptr->special_defense & KATA_MUSOU))
+#define IS_OPPOSE_COLD() (p_ptr->oppose_cold || music_singing(p_ptr, MUSIC_RESIST) || (p_ptr->special_defense & KATA_MUSOU))
+#define IS_OPPOSE_POIS() (p_ptr->oppose_pois || music_singing(p_ptr, MUSIC_RESIST) || (p_ptr->special_defense & KATA_MUSOU))
+#define IS_TIM_ESP() (p_ptr->tim_esp || music_singing(p_ptr, MUSIC_MIND) || (p_ptr->concent >= CONCENT_TELE_THRESHOLD))
+#define IS_TIM_STEALTH() (p_ptr->tim_stealth || music_singing(p_ptr, MUSIC_STEALTH))
 
 #define P_PTR_KI (p_ptr->magic_num1[0])