#ifndef OBJECT_H # define OBJECT_H # include <string> # include "descriptions.h" # include "dims.h" class object { private: const std::string &name; const std::string &description; object_type_t type; uint32_t color; pair_t position; const dice &damage; int32_t hit, dodge, defence, weight, speed, attribute, value; bool seen; object *next; object_description &od; public: object(object_description &o, pair_t p, object *next); ~object(); inline int32_t get_damage_base() const { return damage.get_base(); } inline int32_t get_damage_number() const { return damage.get_number(); } inline int32_t get_damage_sides() const { return damage.get_sides(); } char get_symbol(); uint32_t get_color(); const char *get_name(); int32_t get_speed(); int32_t roll_dice(); int32_t get_type(); bool have_seen() { return seen; } void has_been_seen() { seen = true; } int16_t *get_position() { return position; } void pick_up() { od.find(); } uint32_t is_equipable(); uint32_t is_removable(); uint32_t is_dropable(); uint32_t is_destructable(); int32_t get_eq_slot_index(); void to_pile(dungeon *d, pair_t location); inline object *get_next() { return next; } inline void set_next(object *n) { next = n; } const char *get_description() { return description.c_str(); } }; void gen_objects(dungeon *d); char object_get_symbol(object *o); void destroy_objects(dungeon *d); #endif