summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBardur Arantsson <bardur@scientician.net>2015-03-07 16:55:42 +0100
committerBardur Arantsson <bardur@scientician.net>2015-03-07 16:55:42 +0100
commit99a0478c7a943290ab4350d64688682dbb615f24 (patch)
treea565a0f4bba73f9019f57db5ff2c5d7e38d33316
parent1dff4ac4fe5325ab8a2ac630d5211a5474e6a77b (diff)
Convert object-related macros from defines.h into functions
-rw-r--r--src/cave.cc1
-rw-r--r--src/defines.h88
-rw-r--r--src/monster2.cc1
-rw-r--r--src/object1.cc99
-rw-r--r--src/object1.hpp8
-rw-r--r--src/object2.cc26
-rw-r--r--src/object2.hpp3
-rw-r--r--src/q_thief.cc1
-rw-r--r--src/squelch/condition.cc1
-rw-r--r--src/squelch/object_status.cc1
10 files changed, 141 insertions, 88 deletions
diff --git a/src/cave.cc b/src/cave.cc
index 6928abdb..c7fe706a 100644
--- a/src/cave.cc
+++ b/src/cave.cc
@@ -2,6 +2,7 @@
#include "angband.h"
#include "monster2.hpp"
+#include "object1.hpp"
#include "options.hpp"
#include "q_rand.h"
#include "spells1.hpp"
diff --git a/src/defines.h b/src/defines.h
index 4c8039e1..22c75868 100644
--- a/src/defines.h
+++ b/src/defines.h
@@ -3387,95 +3387,7 @@
#define term_screen (angband_term[0])
-/*
- * Determine if a given inventory item is "aware"
- */
-#define object_aware_p(T) \
- (k_info[(T)->k_idx].aware)
-
-/*
- * Determine if a given inventory item is "tried"
- */
-#define object_tried_p(T) \
- (k_info[(T)->k_idx].tried)
-
-
-/*
- * Determine if a given inventory item is "known"
- * Test One -- Check for special "known" tag
- * Test Two -- Check for "Easy Know" + "Aware"
- */
-#define object_known_p(T) \
- (((T)->ident & (IDENT_KNOWN)) || \
- (k_info[(T)->k_idx].easy_know && k_info[(T)->k_idx].aware))
-
-
-/*
- * Return the "attr" for a given item.
- * Use "flavor" if available.
- * Default to user definitions.
- */
-#define object_attr(T) \
- (((T)->tval == TV_RANDART) ? \
- random_artifacts[(T)->sval].attr : \
- (k_info[(T)->k_idx].flavor) ? \
- misc_to_attr[k_info[(T)->k_idx].flavor] : \
- k_info[(T)->k_idx].x_attr)
-
-#define object_attr_default(T) \
- (((T)->tval == TV_RANDART) ? \
- random_artifacts[(T)->sval].attr : \
- (k_info[(T)->k_idx].flavor) ? \
- misc_to_attr[k_info[(T)->k_idx].flavor] : \
- k_info[(T)->k_idx].d_attr)
-
-/*
- * Return the "char" for a given item.
- * Use "flavor" if available.
- * Default to user definitions.
- */
-#define object_char(T) \
- ((k_info[(T)->k_idx].flavor) ? \
- misc_to_char[k_info[(T)->k_idx].flavor] : \
- k_info[(T)->k_idx].x_char)
-#define object_char_default(T) \
- ((k_info[(T)->k_idx].flavor) ? \
- misc_to_char[k_info[(T)->k_idx].flavor] : \
- k_info[(T)->k_idx].d_char)
-
-
-
-/*
- * Artifacts use the "name1" field
- */
-#define artifact_p(T) \
- ( \
- ((T)->tval == TV_RANDART || \
- ((T)->name1 ? TRUE : FALSE) || \
- ((T)->art_name ? TRUE : FALSE) || \
- ((k_info[(T)->k_idx].flags3 & TR3_NORM_ART)? TRUE : FALSE)) \
- )
-
-/*
- * Ego-Items use the "name2" field
- */
-#define ego_item_p(T) \
- ((T)->name2 || (T)->name2b ? TRUE : FALSE)
-
-/*
- * Ego-Items use the "name2" field
- */
-#define is_ego_p(T, e) \
- (((T)->name2 == (e)) || ((T)->name2b == (e)))
-
-
-
-/*
- * Cursed items.
- */
-#define cursed_p(T) \
- ((T)->ident & (IDENT_CURSED))
/*
diff --git a/src/monster2.cc b/src/monster2.cc
index 65035cca..d0103815 100644
--- a/src/monster2.cc
+++ b/src/monster2.cc
@@ -14,6 +14,7 @@
#include "levels.hpp"
#include "mimic.hpp"
#include "monster3.hpp"
+#include "object1.hpp"
#include "object2.hpp"
#include "options.hpp"
#include "randart.hpp"
diff --git a/src/object1.cc b/src/object1.cc
index 93021cec..2e9f09ff 100644
--- a/src/object1.cc
+++ b/src/object1.cc
@@ -6613,7 +6613,106 @@ static bool_ apply_flags_set(s16b a_idx, s16b set_idx,
return (FALSE);
}
+/*
+ * Return the "attr" for a given item.
+ * Use "flavor" if available.
+ * Default to user definitions.
+ */
+
+byte object_attr(object_type const *o_ptr)
+{
+ if (o_ptr->tval == TV_RANDART)
+ {
+ return random_artifacts[o_ptr->sval].attr;
+ }
+ else if (k_info[o_ptr->k_idx].flavor)
+ {
+ return misc_to_attr[k_info[o_ptr->k_idx].flavor];
+ }
+ else
+ {
+ return k_info[o_ptr->k_idx].x_attr;
+ }
+}
+
+byte object_attr_default(object_type *o_ptr)
+{
+ if (o_ptr->tval == TV_RANDART)
+ {
+ return random_artifacts[o_ptr->sval].attr;
+ }
+ else if (k_info[o_ptr->k_idx].flavor)
+ {
+ return misc_to_attr[k_info[o_ptr->k_idx].flavor];
+ }
+ else
+ {
+ return k_info[o_ptr->k_idx].d_attr;
+ }
+}
+
+/*
+ * Return the "char" for a given item.
+ * Use "flavor" if available.
+ * Default to user definitions.
+ */
+
+char object_char(object_type const *o_ptr)
+{
+ if (k_info[o_ptr->k_idx].flavor)
+ {
+ return misc_to_char[k_info[o_ptr->k_idx].flavor];
+ }
+ else
+ {
+ return k_info[o_ptr->k_idx].x_char;
+ }
+}
+char object_char_default(object_type const *o_ptr)
+{
+ if (k_info[o_ptr->k_idx].flavor)
+ {
+ return misc_to_char[k_info[o_ptr->k_idx].flavor];
+ }
+ else
+ {
+ return k_info[o_ptr->k_idx].d_char;
+ }
+}
+/**
+ * Is the given object an artifact?
+ */
+bool artifact_p(object_type const *o_ptr)
+{
+ return
+ (o_ptr->tval == TV_RANDART) ||
+ (o_ptr->name1 ? true : false) ||
+ (o_ptr->art_name ? true : false) ||
+ ((k_info[o_ptr->k_idx].flags3 & TR3_NORM_ART) ? true : false);
+}
+/**
+ * Is the given object an ego item?
+ */
+bool ego_item_p(object_type const *o_ptr)
+{
+ return o_ptr->name2 || (o_ptr->name2b ? TRUE : FALSE);
+}
+/*
+ * Is the given object an ego item of the given type?
+ */
+bool is_ego_p(object_type const *o_ptr, s16b ego)
+{
+ return (o_ptr->name2 == ego) || (o_ptr->name2b == ego);
+}
+
+/**
+ * Is the given object identified as cursed?
+ */
+bool cursed_p(object_type const *o_ptr)
+{
+ return o_ptr->ident & (IDENT_CURSED);
+}
diff --git a/src/object1.hpp b/src/object1.hpp
index 187a4d57..c605539b 100644
--- a/src/object1.hpp
+++ b/src/object1.hpp
@@ -32,3 +32,11 @@ extern bool_ get_item(int *cp, cptr pmt, cptr str, int mode);
extern cptr item_activation(object_type *o_ptr,byte num);
extern void py_pickup_floor(int pickup);
extern void object_gain_level(object_type *o_ptr);
+extern byte object_attr(object_type const *o_ptr);
+extern byte object_attr_default(object_type *o_ptr);
+extern char object_char(object_type const *o_ptr);
+extern char object_char_default(object_type const *o_ptr);
+extern bool artifact_p(object_type const *o_ptr);
+extern bool ego_item_p(object_type const *o_ptr);
+extern bool is_ego_p(object_type const *o_ptr, s16b ego);
+extern bool cursed_p(object_type const *o_ptr);
diff --git a/src/object2.cc b/src/object2.cc
index 895b0a9b..c5f4fa44 100644
--- a/src/object2.cc
+++ b/src/object2.cc
@@ -823,6 +823,17 @@ void object_known(object_type *o_ptr)
+/*
+ * Determine if a given inventory item is "known"
+ * Test One -- Check for special "known" tag
+ * Test Two -- Check for "Easy Know" + "Aware"
+ */
+extern bool object_known_p(object_type const *o_ptr)
+{
+ return ((o_ptr->ident & (IDENT_KNOWN)) ||
+ (k_info[o_ptr->k_idx].easy_know && k_info[o_ptr->k_idx].aware));
+}
+
/*
@@ -834,6 +845,13 @@ void object_aware(object_type *o_ptr)
k_info[o_ptr->k_idx].aware = TRUE;
}
+/**
+ * Is the player aware of the effects of the given object?
+ */
+bool object_aware_p(object_type const *o_ptr)
+{
+ return k_info[o_ptr->k_idx].aware;
+}
/*
@@ -846,6 +864,14 @@ void object_tried(object_type *o_ptr)
}
+/**
+ * Has the given object been "tried"?
+ */
+bool object_tried_p(object_type const *o_ptr)
+{
+ return k_info[o_ptr->k_idx].tried;
+}
+
/*
* Return the "value" of an "unknown" item
diff --git a/src/object2.hpp b/src/object2.hpp
index c205334c..52165a7e 100644
--- a/src/object2.hpp
+++ b/src/object2.hpp
@@ -35,8 +35,11 @@ extern s16b o_pop(void);
extern errr get_obj_num_prep(void);
extern s16b get_obj_num(int level);
extern void object_known(object_type *o_ptr);
+extern bool object_known_p(object_type const *o_ptr);
extern void object_aware(object_type *o_ptr);
+extern bool object_aware_p(object_type const *o_ptr);
extern void object_tried(object_type *o_ptr);
+extern bool object_tried_p(object_type const *o_ptr);
extern s32b object_value(object_type *o_ptr);
extern s32b object_value_real(object_type *o_ptr);
extern bool_ object_similar(object_type *o_ptr, object_type *j_ptr);
diff --git a/src/q_thief.cc b/src/q_thief.cc
index 452c6739..896bd553 100644
--- a/src/q_thief.cc
+++ b/src/q_thief.cc
@@ -4,6 +4,7 @@
#include "hooks.h"
#include "init1.hpp"
#include "monster2.hpp"
+#include "object1.hpp"
#include "object2.hpp"
#include "spells2.hpp"
#include "tables.hpp"
diff --git a/src/squelch/condition.cc b/src/squelch/condition.cc
index 786a1b29..221ab677 100644
--- a/src/squelch/condition.cc
+++ b/src/squelch/condition.cc
@@ -7,6 +7,7 @@
#include "tome/squelch/tree_printer.hpp"
#include "angband.h"
#include "object1.hpp"
+#include "object2.hpp"
#include "skills.hpp"
#include "quark.h"
#include "util.hpp"
diff --git a/src/squelch/object_status.cc b/src/squelch/object_status.cc
index 2d4f07f9..d0293c41 100644
--- a/src/squelch/object_status.cc
+++ b/src/squelch/object_status.cc
@@ -3,6 +3,7 @@
#include "angband.h"
#include "object1.hpp"
+#include "object2.hpp"
#include "variable.hpp"
namespace squelch {