1
This commit is contained in:
parent
0355f4ab07
commit
f5063dfa29
@ -102,7 +102,7 @@ static void GSListeneron_error(a8::TcpListener*, int type, int errorid)
|
||||
|
||||
void GGListener::Init()
|
||||
{
|
||||
tcp_listener_ = new a8::TcpListener();
|
||||
tcp_listener_ = std::make_shared<a8::TcpListener>();
|
||||
tcp_listener_->on_create_client_socket = CreateGameClientSocket;
|
||||
tcp_listener_->on_error = GSListeneron_error;
|
||||
|
||||
@ -121,7 +121,6 @@ void GGListener::Init()
|
||||
|
||||
void GGListener::UnInit()
|
||||
{
|
||||
delete tcp_listener_;
|
||||
tcp_listener_ = nullptr;
|
||||
}
|
||||
|
||||
|
@ -31,14 +31,14 @@ public:
|
||||
void SendProxyMsg(int sockhandle, T& msg)
|
||||
{
|
||||
static int msgid = f8::Net_GetMessageId(msg);
|
||||
f8::Net_SendProxyMsg(tcp_listener_, sockhandle, 0, 0, msgid, msg);
|
||||
f8::Net_SendProxyMsg(tcp_listener_.get(), sockhandle, 0, 0, msgid, msg);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void SendToClient(int sockhandle, unsigned int seqid, T& msg)
|
||||
{
|
||||
static int msgid = f8::Net_GetMessageId(msg);
|
||||
int packet_size = f8::Net_SendProxyMsg(tcp_listener_, sockhandle, seqid, 0, msgid, msg);
|
||||
int packet_size = f8::Net_SendProxyMsg(tcp_listener_.get(), sockhandle, seqid, 0, msgid, msg);
|
||||
if (packet_size > max_packet_size) {
|
||||
max_packet_size = packet_size;
|
||||
}
|
||||
@ -60,5 +60,5 @@ private:
|
||||
void OnListenError(int errorid);
|
||||
|
||||
private:
|
||||
a8::TcpListener *tcp_listener_ = nullptr;
|
||||
std::shared_ptr<a8::TcpListener> tcp_listener_;
|
||||
};
|
||||
|
@ -66,9 +66,6 @@ Creature::~Creature()
|
||||
{
|
||||
xtimer_attacher.ClearTimerList();
|
||||
ClearBuffList();
|
||||
for (auto& pair : skill_hash_) {
|
||||
delete pair.second;
|
||||
}
|
||||
skill_hash_.clear();
|
||||
ClearPassiveSkill();
|
||||
trigger_->UnInit();
|
||||
@ -664,7 +661,7 @@ void Creature::AddPassiveSkill(int skill_id)
|
||||
{
|
||||
const mt::Skill* skill_meta = mt::Skill::GetById(skill_id);
|
||||
if (skill_meta && !GetPassiveSkill(skill_meta->skill_id())) {
|
||||
Skill* skill = new Skill;
|
||||
auto skill = std::make_shared<Skill>();
|
||||
skill->owner = this;
|
||||
skill->meta = skill_meta;
|
||||
skill->xtimer_attacher.SetOwner(&room->xtimer);
|
||||
@ -689,7 +686,6 @@ void Creature::RemovePassiveSkill(int skill_id)
|
||||
{
|
||||
auto itr = passive_skill_hash_.find(skill_id);
|
||||
if (itr != passive_skill_hash_.end()) {
|
||||
delete itr->second;
|
||||
passive_skill_hash_.erase(itr);
|
||||
}
|
||||
}
|
||||
@ -709,7 +705,7 @@ void Creature::ClearPassiveSkill()
|
||||
Skill* Creature::GetPassiveSkill(int skill_id)
|
||||
{
|
||||
auto itr = passive_skill_hash_.find(skill_id);
|
||||
return itr != passive_skill_hash_.end() ? itr->second : nullptr;
|
||||
return itr != passive_skill_hash_.end() ? itr->second.get() : nullptr;
|
||||
}
|
||||
|
||||
void Creature::TriggerBuff(Skill* skill, std::set<Creature*>& target_list, BuffTriggerType_e trigger_type)
|
||||
@ -775,7 +771,7 @@ void Creature::TriggerOneObjectBuff(Skill* skill, Creature* target, BuffTriggerT
|
||||
Skill* Creature::GetSkill(int skill_id)
|
||||
{
|
||||
auto itr = skill_hash_.find(skill_id);
|
||||
return itr != skill_hash_.end() ? itr->second : nullptr;
|
||||
return itr != skill_hash_.end() ? itr->second.get() : nullptr;
|
||||
}
|
||||
|
||||
bool Creature::CanUseSkill(int skill_id)
|
||||
@ -1601,7 +1597,7 @@ void Creature::AddSkill(int skill_id)
|
||||
const mt::Skill* skill_meta = mt::Skill::GetById(skill_id);
|
||||
if (skill_meta && !GetSkill(skill_id)) {
|
||||
if (skill_meta->skill_type() == 1) {
|
||||
Skill* skill = new Skill;
|
||||
auto skill = std::make_shared<Skill>();
|
||||
skill->owner = this;
|
||||
skill->meta = skill_meta;
|
||||
skill->xtimer_attacher.SetOwner(&room->xtimer);
|
||||
@ -1617,12 +1613,10 @@ void Creature::AddSkill(int skill_id)
|
||||
|
||||
void Creature::ClearSkill()
|
||||
{
|
||||
Skill* reserve_skill = nullptr;
|
||||
std::shared_ptr<Skill> reserve_skill = nullptr;
|
||||
for (auto& pair : skill_hash_) {
|
||||
if (pair.second->meta->IsTurnOverSkill()) {
|
||||
reserve_skill = pair.second;
|
||||
} else {
|
||||
delete pair.second;
|
||||
}
|
||||
}
|
||||
skill_hash_.clear();
|
||||
@ -2781,7 +2775,7 @@ void Creature::TraverseSkill(std::function<void (Skill*, bool&)> func)
|
||||
{
|
||||
bool stop = false;
|
||||
for (auto& pair : skill_hash_) {
|
||||
func(pair.second, stop);
|
||||
func(pair.second.get(), stop);
|
||||
if (stop) {
|
||||
return;
|
||||
}
|
||||
|
@ -368,8 +368,8 @@ private:
|
||||
int skill_target_id_ = 0;
|
||||
Position skill_target_pos_;
|
||||
float skill_distance_ = 0.0f;
|
||||
std::map<int, Skill*> skill_hash_;
|
||||
std::map<int, Skill*> passive_skill_hash_;
|
||||
std::map<int, std::shared_ptr<Skill>> skill_hash_;
|
||||
std::map<int, std::shared_ptr<Skill>> passive_skill_hash_;
|
||||
std::map<int, long long> buff_interval_hash_;
|
||||
std::array<Inventory, IS_END> inventory_ = {};
|
||||
|
||||
|
@ -230,7 +230,7 @@ void MapInstance::AttachRoom(Room* room, RoomInitInfo& init_info)
|
||||
init_info.map_meta = map_meta_;
|
||||
init_info.grid_service = grid_service_;
|
||||
init_info.map_service = map_service_;
|
||||
init_info.map_instance = this;
|
||||
init_info.map_instance = shared_from_this();
|
||||
}
|
||||
|
||||
void MapInstance::CreateThings()
|
||||
|
@ -11,7 +11,7 @@ class MapService;
|
||||
class GridService;
|
||||
class Room;
|
||||
struct RoomInitInfo;
|
||||
class MapInstance
|
||||
class MapInstance : public std::enable_shared_from_this<MapInstance>
|
||||
{
|
||||
public:
|
||||
int map_id = 0;
|
||||
|
@ -16,18 +16,19 @@ void MapMgr::Init()
|
||||
(
|
||||
[this] (const mt::Map* map_meta, bool& stop)
|
||||
{
|
||||
MapInstance* map_instance = new MapInstance();
|
||||
map_instance->map_id = map_meta->map_id();
|
||||
map_instance->Init();
|
||||
instance_hash_[map_instance->map_id] = map_instance;
|
||||
{
|
||||
auto itr = mode_hash_.find(map_meta->map_mode());
|
||||
if (itr != mode_hash_.end()) {
|
||||
itr->second.push_back(map_instance);
|
||||
} else {
|
||||
mode_hash_[map_meta->map_mode()] = std::vector<MapInstance*>({map_instance});
|
||||
}
|
||||
}
|
||||
auto map_instance = std::make_shared<MapInstance>();
|
||||
map_instance->map_id = map_meta->map_id();
|
||||
map_instance->Init();
|
||||
instance_hash_[map_instance->map_id] = map_instance;
|
||||
{
|
||||
auto itr = mode_hash_.find(map_meta->map_mode());
|
||||
if (itr != mode_hash_.end()) {
|
||||
itr->second.push_back(map_instance);
|
||||
} else {
|
||||
mode_hash_[map_meta->map_mode()] =
|
||||
std::vector<std::shared_ptr<MapInstance>>({map_instance});
|
||||
}
|
||||
}
|
||||
});
|
||||
#if 0
|
||||
if (mode_hash_.find(kZombieMode) == mode_hash_.end()) {
|
||||
@ -46,7 +47,6 @@ void MapMgr::UnInit()
|
||||
{
|
||||
for (auto& pair : instance_hash_) {
|
||||
pair.second->UnInit();
|
||||
delete pair.second;
|
||||
}
|
||||
instance_hash_.clear();
|
||||
}
|
||||
@ -82,7 +82,7 @@ void MapMgr::AttachRoom(Room* room, RoomInitInfo& init_info)
|
||||
}
|
||||
#ifdef MAP3D
|
||||
init_info.init_map_id = 2001;
|
||||
MapInstance* map_instance = GetMapInstance(init_info.init_map_id);
|
||||
auto map_instance = GetMapInstance(init_info.init_map_id);
|
||||
#else
|
||||
MapInstance* map_instance = init_info.init_map_id == 0 ?
|
||||
RandMapInstance(init_info.room_mode) : GetMapInstance(init_info.init_map_id);
|
||||
@ -103,13 +103,13 @@ void MapMgr::AttachRoom(Room* room, RoomInitInfo& init_info)
|
||||
map_instance->AttachRoom(room, init_info);
|
||||
}
|
||||
|
||||
MapInstance* MapMgr::GetMapInstance(int map_id)
|
||||
std::shared_ptr<MapInstance> MapMgr::GetMapInstance(int map_id)
|
||||
{
|
||||
auto itr = instance_hash_.find(map_id);
|
||||
return itr != instance_hash_.end() ? itr->second : nullptr;
|
||||
}
|
||||
|
||||
MapInstance* MapMgr::RandMapInstance(int map_mode)
|
||||
std::shared_ptr<MapInstance> MapMgr::RandMapInstance(int map_mode)
|
||||
{
|
||||
auto itr = mode_hash_.find(map_mode);
|
||||
return itr != mode_hash_.end() ? itr->second[rand() % itr->second.size()] : nullptr;
|
||||
|
@ -16,12 +16,12 @@ public:
|
||||
void UnInit();
|
||||
|
||||
void AttachRoom(Room* room, RoomInitInfo& init_info);
|
||||
MapInstance* GetMapInstance(int map_id);
|
||||
std::shared_ptr<MapInstance> GetMapInstance(int map_id);
|
||||
|
||||
private:
|
||||
MapInstance* RandMapInstance(int map_mode);
|
||||
std::shared_ptr<MapInstance> RandMapInstance(int map_mode);
|
||||
|
||||
private:
|
||||
std::map<int, MapInstance*> instance_hash_;
|
||||
std::map<int, std::vector<MapInstance*>> mode_hash_;
|
||||
std::map<int, std::shared_ptr<MapInstance>> instance_hash_;
|
||||
std::map<int, std::vector<std::shared_ptr<MapInstance>>> mode_hash_;
|
||||
};
|
||||
|
@ -987,7 +987,7 @@ bool Room::CanJoin(const std::string& accountid,
|
||||
#endif
|
||||
}
|
||||
if (init_map_id != 0) {
|
||||
MapInstance* map_instance = MapMgr::Instance()->GetMapInstance(init_map_id);
|
||||
auto map_instance = MapMgr::Instance()->GetMapInstance(init_map_id);
|
||||
if (map_instance && map_instance->GetMapMeta()->map_mode() == room_mode_ &&
|
||||
map_instance->map_id != map_meta_->map_id()) {
|
||||
return false;
|
||||
|
@ -62,7 +62,7 @@ public:
|
||||
a8::Attacher xtimer_attacher_;
|
||||
GridService* grid_service = nullptr;
|
||||
MapService* map_service = nullptr;
|
||||
MapInstance* map_instance = nullptr;
|
||||
std::shared_ptr<MapInstance> map_instance;
|
||||
bool debug_trace = false;
|
||||
bool added_to_over_room = false;
|
||||
glm::vec3 last_player_jump_pos;
|
||||
|
@ -43,7 +43,7 @@ struct RoomInitInfo
|
||||
std::string map_tpl_name;
|
||||
GridService* grid_service = nullptr;
|
||||
MapService* map_service = nullptr;
|
||||
MapInstance* map_instance = nullptr;
|
||||
std::shared_ptr<MapInstance> map_instance;
|
||||
std::vector<const mt::MapTplThing*>* mini_room_spawn_points = nullptr;
|
||||
std::vector<const mt::MapTplThing*>* normal_room_spawn_points = nullptr;
|
||||
std::vector<const mt::MapTplThing*>* room_monster_spawn_points = nullptr;
|
||||
|
Loading…
x
Reference in New Issue
Block a user