diff options
Diffstat (limited to 'stone_soup/crawl-ref/source/Kills.h')
-rw-r--r-- | stone_soup/crawl-ref/source/Kills.h | 186 |
1 files changed, 0 insertions, 186 deletions
diff --git a/stone_soup/crawl-ref/source/Kills.h b/stone_soup/crawl-ref/source/Kills.h deleted file mode 100644 index 074ea79a6d..0000000000 --- a/stone_soup/crawl-ref/source/Kills.h +++ /dev/null @@ -1,186 +0,0 @@ -/* - * File: Kills.h - * Summary: Tracks monsters the player has killed. - * Written by: Darshan Shaligram - */ -#ifndef KILLS_H -#define KILLS_H - -#include <vector> -#include <string> -#include <map> -#include <stdio.h> -#include "enum.h" - -struct monsters; - -// Not intended for external use! -struct kill_monster_desc -{ - kill_monster_desc(const struct monsters *); - kill_monster_desc() { } - - void save(FILE*) const; - void load(FILE*); - - enum name_modifier - { - M_NORMAL, M_ZOMBIE, M_SKELETON, M_SIMULACRUM, M_SPECTRE, - M_SHAPESHIFTER // A shapeshifter pretending to be 'monnum' - }; - - int monnum; // Number of the beast - name_modifier modifier; // Nature of the beast - - struct less_than - { - bool operator () ( const kill_monster_desc &m1, - const kill_monster_desc &m2) const - { - return m1.monnum < m2.monnum || - (m1.monnum == m2.monnum && m1.modifier < m2.modifier); - } - }; -}; - -#define PLACE_LIMIT 5 // How many unique kill places we're prepared to track -class kill_def -{ -public: - kill_def(const struct monsters *mon); - kill_def() : kills(0), exp(0) - { - // This object just says to the world that it's uninitialized - } - - void save(FILE*) const; - void load(FILE*); - - void add_kill(const struct monsters *mon, unsigned short place); - void add_place(unsigned short place, bool force = false); - - void merge(const kill_def &k, bool unique_monster); - - std::string info(const kill_monster_desc &md) const; - std::string base_name(const kill_monster_desc &md) const; - - unsigned short kills; // How many kills does the player have? - int exp; // Experience gained for slaying the beast. - // Only set *once*, even for shapeshifters. - - std::vector<unsigned short> places; // Places where we've killed the beast. -private: - std::string append_places(const kill_monster_desc &md, - const std::string &name) const; -}; - -// Ghosts and random Pandemonium demons. -class kill_ghost -{ -public: - kill_ghost(const struct monsters *mon); - kill_ghost() { } - - void save(FILE*) const; - void load(FILE*); - - std::string info() const; - - std::string ghost_name; - int exp; - unsigned short place; -}; - -// This is the structure that Lua sees. -struct kill_exp -{ - int nkills; - int exp; - std::string base_name; - std::string desc; - - int monnum; // Number of the beast - int modifier; // Nature of the beast - - std::vector<unsigned short> places; - - kill_exp(const kill_def &k, const kill_monster_desc &md) - : nkills(k.kills), exp(k.exp), base_name(k.base_name(md)), - desc(k.info(md)), - monnum(md.monnum), modifier(md.modifier) - { - places = k.places; - } - - kill_exp(const kill_ghost &kg) - : nkills(1), exp(kg.exp), base_name(), desc(kg.info()), - monnum(-1), modifier(0) - { - places.push_back(kg.place); - } - - // operator< is implemented for a descending sort. - bool operator < ( const kill_exp &b) const - { - return exp == b.exp? (base_name < b.base_name) : (exp > b.exp); - } -}; - -class Kills -{ -public: - void record_kill(const monsters *mon); - void merge(const Kills &k); - - bool empty() const; - void save(FILE*) const; - void load(FILE*); - - long get_kills(std::vector<kill_exp> &v) const; -private: - typedef std::map<kill_monster_desc, - kill_def, - kill_monster_desc::less_than> kill_map; - typedef std::vector<kill_ghost> ghost_vec; - - kill_map kills; - ghost_vec ghosts; - - void record_ghost_kill(const struct monsters *mon); -}; - -class KillMaster -{ -public: - void record_kill(const monsters *mon, int killer, bool ispet); - - bool empty() const; - void save(FILE*) const; - void load(FILE*); - - std::string kill_info() const; -private: - const char *category_name(kill_category kc) const; - - Kills categorized_kills[KC_NCATEGORIES]; -private: - void add_kill_info(std::string &, std::vector<kill_exp> &, - long count, const char *c, bool separator) - const; -}; - -unsigned short get_packed_place(); - -unsigned short get_packed_place( unsigned char branch, int subdepth, - char level_type ); - -std::string short_place_name(unsigned short place); - -enum KILL_DUMP_OPTIONS -{ - KDO_NO_PLACES, // Don't dump places at all - KDO_ONE_PLACE, // Show places only for single kills and uniques. - KDO_ALL_PLACES // Show all available place information -}; - -#endif |