メインページ | ネームスペース一覧 | クラス階層 | アルファベット順一覧 | 構成 | ファイル一覧 | ネームスペースメンバ | 構成メンバ | ファイルメンバ

cronous-env.hh

説明を見る。
00001 #ifndef CRONOUS_ENV_HH_
00002 # define CRONOUS_ENV_HH_
00003 
00004 # include <map>
00005 # include <list>
00006 
00007 # include "infos_fwd.hh"
00008 # include "objects_fwd.hh"
00009 # include "packets_fwd.hh"
00010 # include "connection_fwd.hh"
00011 # include "environment_fwd.hh"
00012 # include "rxtools_fwd.hh"
00013 # include "characters_available.hh"
00014 # include "items.hh"
00015 # include "tasks_fwd.hh"
00016 # include "skills.hh"
00017 # include "events.hh"
00018 
00019 # define DEST_RANGE_X 10
00020 # define DEST_RANGE_Y 10
00021 # define DEST_RANGE_Z 1
00022 # define MOTION_RANGE_X 3
00023 # define MOTION_RANGE_Y 3
00024 # define MOTION_RANGE_Z 1
00025 
00026 namespace environment
00027 {
00028   class CronousEnv : public events::EventManager
00029   {
00030   public:
00031     enum EventID
00032     {
00033       event_chat = 0x00,
00034       event_motion = 0x01
00035     };
00036 
00037   public:
00038     enum State
00039     {
00040       state_news,
00041       state_login,
00042       state_select_character,
00043       state_start_character,
00044       state_game
00045     };
00046     typedef std::map<int, objects::Character *> IntToCharacterMap;
00047     typedef std::map<std::string, objects::Character *> StringToCharacterMap;
00048     typedef std::list<int> IntList;
00049     typedef std::set<int> IntSet;
00050     typedef std::set<const objects::HealingItem *> HealingItemSet;
00051 
00052   public: // Common.
00053     CronousEnv();
00054     ~CronousEnv();
00055 
00056     static CronousEnv &get_instance();
00057     static bool initialized();
00058     static void restart();
00059 
00060     // Control the packet protocol with _state/_substate.
00061     void process_read(connection::ServerConnection &sc);
00062     void report_packet_sent(connection::ServerConnection &sc,
00063       packets::DataPacket &p);
00064     void report_packet_received(connection::ServerConnection &sc,
00065       packets::DataPacket &p);
00066 
00067     const infos::CharactersAvailable *get_characters_available() const;
00068     const infos::CharactersAvailable::CharactersType &get_characters() const;
00069     void set_characters_available(infos::CharactersAvailable &);
00070 
00071     int get_state() const;
00072     void change_state(int state);
00073     int get_substate() const;
00074     void set_substate(int s);
00075 
00076   protected:
00077     int _state;
00078     int _substate;
00079     infos::CharactersAvailable *_characters_available;
00080     infos::CharactersAvailable::CharactersType *_characters;
00081     void time_report();
00082 
00083   public: // Position & map.
00084     int get_pos_x() const;
00085     int get_pos_y() const;
00086     int get_pos_z() const;
00087     void set_pos_x(int x);
00088     void set_pos_y(int y);
00089     void set_pos_z(int z);
00090     int get_dest_x() const;
00091     int get_dest_y() const;
00092     int get_dest_z() const;
00093     void set_dest_x(int x);
00094     void set_dest_y(int y);
00095     void set_dest_z(int z);
00096     void start_pos_report();
00097     bool is_moving() const;
00098     int get_angle() const;
00099     void set_angle(int degrees);
00100 
00101     // Map related.
00102     const objects::DefMap *get_current_map() const;
00103     void set_current_map(const objects::DefMap &map);
00104     const objects::DefMap *get_scroll_map() const;
00105     void set_scroll_map(const objects::DefMap &map);
00106     const objects::DefMap *get_home_map() const;
00107     void set_home_map(const objects::DefMap &map);
00108     bool is_warping() const;
00109     void set_warping(bool b);
00110 
00111     // Node related.
00112     void set_dest_node(const objects::MapNode &n);
00113     int calculate_distance(const objects::MapNode &mn) const;
00114 
00115   protected:
00116     int _pos_x;
00117     int _pos_y;
00118     int _pos_z;
00119     int _dest_x;
00120     int _dest_y;
00121     int _dest_z;
00122     int _angle;
00123     rxtimer::RxTimer *_pos_report_timer;
00124     const objects::DefMap *_current_map;
00125     const objects::DefMap *_scroll_map;
00126     const objects::DefMap *_home_map;
00127     bool _warping;
00128 
00129   public: // Objects in screen.
00130     objects::Character *get_character(int id);
00131     objects::Character *get_character(std::string name);
00132     objects::Character *get_screen_character(int id);
00133     void add_character(objects::Character *c);
00134     void add_character_to_screen(objects::Character *c);
00135     void remove_character_from_screen(int id);
00136     const IntToCharacterMap &get_id_map() const;
00137     const IntToCharacterMap &get_screen_id_map() const;
00138     const StringToCharacterMap &get_name_map() const;
00139     objects::Character *get_player_character() const;
00140 
00141     int calculate_distance(const objects::Character &c) const;
00142     objects::Character *get_closest_npc();
00143     
00144   protected:
00145     IntToCharacterMap _id_map;
00146     IntToCharacterMap _screen_id_map;
00147     StringToCharacterMap _name_map;
00148     objects::Character *_player_character;
00149 
00150   public: // Character status.
00151     int get_status_flag() const;
00152     void set_status_flag(int i);
00153     bool get_can_attack() const;
00154     void set_can_attack(bool can);
00155     const std::string &get_name() const;
00156     int get_class() const;
00157     int get_level() const;
00158     int get_str_status_points() const;
00159     int get_sta_status_points() const;
00160     int get_dex_status_points() const;
00161     int get_int_status_points() const;
00162     int get_fame() const;
00163     int get_free_status_points() const;
00164     int get_free_skill_points() const;
00165     int get_money_in_hand() const;
00166     int get_money_in_bank() const;
00167     void set_name(const std::string &s);
00168     void set_class(int i);
00169     void set_level(int i);
00170     void set_str_status_points(int i);
00171     void set_sta_status_points(int i);
00172     void set_dex_status_points(int i);
00173     void set_int_status_points(int i);
00174     void set_fame(int i);
00175     void set_free_status_points(int i);
00176     void set_free_skill_points(int i);
00177     void set_money_in_hand(int i);
00178     void set_money_in_bank(int i);
00179 
00180     void push_assigned_status(int status_id);
00181     void report_status_assigning(int code);
00182     void check_support_skills();
00183 
00184     bool get_alive() const;
00185     void set_alive(bool alive);
00186 
00187   protected:
00188     int _status_flag;
00189     bool _can_attack;
00190     bool _alive;
00191 
00192     std::string _name;
00193     int _class;
00194     int _level;
00195     int _str_status_points;
00196     int _sta_status_points;
00197     int _dex_status_points;
00198     int _int_status_points;
00199     int _fame;
00200     int _free_status_points;
00201     int _free_skill_points;
00202     int _money_in_hand;
00203     int _money_in_bank;
00204 
00205     IntList _assigned_status;
00206 
00207   public: // Status (emulation).
00208     int get_hp() const;
00209     int get_mp() const;
00210     int get_weight() const;
00211     void set_hp(int i);
00212     void set_mp(int i);
00213     void set_weight(int i);
00214     int get_hp_max() const;
00215     int get_mp_max() const;
00216     void set_hp_max(int i);
00217     void set_mp_max(int i);
00218     int get_weight_max() const;
00219     void set_weight_max(int i);
00220 
00221     double get_experience() const;
00222     void set_experience(double d);
00223 
00224   protected:
00225     int _hp;
00226     int _mp;
00227     int _weight;
00228     int _hp_max;
00229     int _mp_max;
00230     int _weight_max;
00231     double _experience;
00232 
00233   public: // Skills
00234     objects::Skills &get_skills();
00235 
00236     void push_skill_id(int id);
00237     void assign_skill_level(int level);
00238 
00239     void push_assigned_skill(int skill_id);
00240     void report_skill_assigning(int code);
00241 
00242     bool can_use_skill() const;
00243     void report_skill_using(int skill_id, objects::Character &c);
00244     void push_auto_skill(int skill_id);
00245     void use_auto_skill();
00246 
00247   protected:
00248     objects::Skills _skills;
00249     IntList _skill_list;
00250     IntList _assigned_skill;
00251     IntSet _auto_skills;
00252 
00253   public: // Inventory.
00254     const objects::Items &get_items() const;
00255     objects::Items &get_items();
00256     int calculate_distance(const objects::ItemInScreen &iis) const;
00257     int get_last_item_info() const;
00258     void set_last_item_info(int id);
00259 
00260     // Item manipulation.
00261     void push_sold_item(int item_id);
00262     void report_selling(int code);
00263     int count_sold_items_in_queue();
00264     void push_used_item(int item_id);
00265     void report_using(int code);
00266     int count_used_items_in_queue();
00267     void push_repaired_item(int item_id);
00268     void report_repairing(int code);
00269     int count_repaired_items_in_queue();
00270     void push_traded_item(int item_id);
00271     void report_trading(int code);
00272     int count_traded_items_in_queue();
00273     void push_picked_item(int item_id);
00274     void report_picking(int code);
00275     int count_picked_items_in_queue();
00276 
00277     // Stats.
00278     int get_amount_of_hp_healed() const;
00279     int get_amount_of_mp_healed() const;
00280     void reset_healing_stats();
00281     void report_healing(const objects::HealingItem &hi);
00282 
00283     // Shortcuts.
00284     const objects::HealingItem &get_hp_healing_item() const;
00285     const objects::HealingItem &get_mp_healing_item() const;
00286     objects::PossessedItem *get_best_hp_healing_item_in_hand(bool force);
00287     objects::PossessedItem *get_best_mp_healing_item_in_hand(bool force);
00288     void warp();
00289 
00290   protected:
00291     objects::Items _items;
00292     IntList _sold_items;
00293     IntList _used_items;
00294     IntList _repaired_items;
00295     IntList _traded_items;
00296     IntList _picked_items;
00297     int _amount_of_hp_healed;
00298     int _amount_of_mp_healed;
00299     int _last_item_info;
00300 
00301   public: // Chat.
00302     const std::string &get_last_chat_message() const;
00303     const std::string &get_last_chat_character() const;
00304     void set_last_chat_message(const std::string &message);
00305     void set_last_chat_character(const std::string &character);
00306     void trim_chat_message(std::string &message);
00307 
00308   protected:
00309     std::string _last_chat_message;
00310     std::string _last_chat_character;
00311 
00312   public: // Personal shop.
00313     void push_shop_item(int item_id);
00314     int count_shop_item_in_queue() const;
00315     void report_shop_item(int code);
00316 
00317   protected:
00318     IntList _shop_items;
00319 
00320   public: // Tasks, AI.
00321     const tasks::Activity &get_current_activity() const;
00322     bool start_activity(tasks::Activity &activity);
00323 
00324   protected:
00325     tasks::Activity *_current_activity;
00326 
00327   public: // GUI related.
00328     void add_possessed_item_to_gui(objects::PossessedItem &pi);
00329     void add_possessed_item_to_gui(objects::PossessedItem &pi, int proto_id);
00330   };
00331 }
00332 
00333 # include "cronous-env.hxx"
00334 
00335 #endif

Cronous Emulatorに対してWed Aug 17 06:01:21 2005に生成されました。  doxygen 1.4.2-20050421