00001 #ifndef PACKET_HANDLER_HH_ 00002 # define PACKET_HANDLER_HH_ 00003 00004 # include "packets_fwd.hh" 00005 # include "cronous-env.hh" 00006 # include "cronous-interface.hh" 00007 # include "server-connection.hh" 00008 # include "actions_fwd.hh" 00009 # include "infos_fwd.hh" 00010 # include "packet-visitor.hh" 00011 00012 namespace environment 00013 { 00014 class PacketHandler : public packets::PacketVisitor 00015 { 00016 public: 00017 PacketHandler(connection::ServerConnection &sc = connection::ServerConnection::get_instance(), 00018 CronousEnv &ce = CronousEnv::get_instance(), 00019 CronousInterface &ci = CronousInterface::get_instance()); 00020 00021 // Handle packet. 00022 virtual void handle(packets::DataPacket &p); 00023 00024 // Info packets. 00025 virtual void operator ()(infos::UnknownInfo &p); 00026 virtual void operator ()(infos::News &p); 00027 virtual void operator ()(infos::LoggedIn &p); 00028 virtual void operator ()(infos::CharactersAvailable &p); 00029 virtual void operator ()(infos::CharacterStatus &p); 00030 virtual void operator ()(infos::SkillsAvailable &p); 00031 virtual void operator ()(infos::SkillsLevel &p); 00032 virtual void operator ()(infos::Health &p); 00033 virtual void operator ()(infos::Mana &p); 00034 virtual void operator ()(infos::Weight &p); 00035 virtual void operator ()(infos::ItemInfo &p); 00036 virtual void operator ()(infos::MoneyInHand &p); 00037 virtual void operator ()(infos::MoneyInBank &p); 00038 virtual void operator ()(infos::Experience &p); 00039 virtual void operator ()(infos::Chat1 &p); 00040 virtual void operator ()(infos::Chat2 &p); 00041 virtual void operator ()(infos::Chat3 &p); 00042 virtual void operator ()(infos::Chat4 &p); 00043 virtual void operator ()(infos::Chat5 &p); 00044 virtual void operator ()(infos::Chat6 &p); 00045 virtual void operator ()(infos::CharacterEntry &p); 00046 virtual void operator ()(infos::CharacterExit &p); 00047 virtual void operator ()(infos::CharacterPosition &p); 00048 virtual void operator ()(infos::ItemEntry &p); 00049 virtual void operator ()(infos::ItemExit &p); 00050 virtual void operator ()(infos::CharacterProfile &p); 00051 virtual void operator ()(infos::CharacterHealth &p); 00052 virtual void operator ()(infos::CharacterDeath &p); 00053 virtual void operator ()(infos::LevelUp &p); 00054 virtual void operator ()(infos::Attacking &p); 00055 virtual void operator ()(infos::LoadMap &p); 00056 virtual void operator ()(infos::ItemPicking &p); 00057 virtual void operator ()(infos::ItemSelling &p); 00058 virtual void operator ()(infos::ItemUsing &p); 00059 virtual void operator ()(infos::LoadGame &p); 00060 virtual void operator ()(infos::StatusAssigning &p); 00061 virtual void operator ()(infos::ItemRepairing &p); 00062 virtual void operator ()(infos::ItemTrading &p); 00063 virtual void operator ()(infos::SkillAssigning &p); 00064 virtual void operator ()(infos::StatusFlag &p); 00065 virtual void operator ()(infos::SkillUsing &p); 00066 virtual void operator ()(infos::CharacterFinalStatus &p); 00067 virtual void operator ()(infos::TeamInfo &p); 00068 virtual void operator ()(infos::TeamMember &p); 00069 virtual void operator ()(infos::PersonalShopInfo &p); 00070 virtual void operator ()(infos::StatusCheck &p); 00071 00072 // Action packets. 00073 virtual void operator ()(actions::UnknownAction &p); 00074 virtual void operator ()(actions::Hello &p); 00075 virtual void operator ()(actions::Login &p); 00076 virtual void operator ()(actions::SelectCharacter &p); 00077 virtual void operator ()(actions::Move &p); 00078 virtual void operator ()(actions::Say &p); 00079 virtual void operator ()(actions::Attack &p); 00080 virtual void operator ()(actions::PickItem &p); 00081 virtual void operator ()(actions::UseItem &p); 00082 virtual void operator ()(actions::BuyItem &p); 00083 virtual void operator ()(actions::SellItem &p); 00084 virtual void operator ()(actions::Talk &p); 00085 virtual void operator ()(actions::RepairItem &p); 00086 virtual void operator ()(actions::TransferItem &p); 00087 virtual void operator ()(actions::GameLoaded &p); 00088 virtual void operator ()(actions::MapLoaded &p); 00089 virtual void operator ()(actions::Warp &p); 00090 virtual void operator ()(actions::AssignStatus &p); 00091 virtual void operator ()(actions::AssignSkill &p); 00092 virtual void operator ()(actions::UseSkill &p); 00093 virtual void operator ()(actions::SwitchRunning &p); 00094 virtual void operator ()(actions::Restart &p); 00095 virtual void operator ()(actions::TeamAction &p); 00096 virtual void operator ()(actions::PersonalShopAction &p); 00097 virtual void operator ()(actions::SelectServer &p); 00098 00099 protected: 00100 connection::ServerConnection &_sc; 00101 CronousEnv &_ce; 00102 CronousInterface &_ci; 00103 00104 void handle_chat(infos::CustomChat &p); 00105 }; 00106 } 00107 00108 #endif