cache self player_ptr (#288)
This commit is contained in:
parent
bb3c4ec0bf
commit
66cea797fc
@ -138,9 +138,14 @@ namespace big
|
|||||||
return m_selected_player;
|
return m_selected_player;
|
||||||
}
|
}
|
||||||
|
|
||||||
player_ptr player_service::get_self() const
|
player_ptr player_service::get_self()
|
||||||
{
|
{
|
||||||
return std::make_shared<player>(*m_self);
|
if (!m_self_ptr || !m_self_ptr->equals(*m_self))
|
||||||
|
{
|
||||||
|
m_self_ptr = std::make_shared<player>(*m_self);
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_self_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void player_service::player_join(CNetGamePlayer* net_game_player)
|
void player_service::player_join(CNetGamePlayer* net_game_player)
|
||||||
@ -168,4 +173,4 @@ namespace big
|
|||||||
{
|
{
|
||||||
m_selected_player = plyr;
|
m_selected_player = plyr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ namespace big
|
|||||||
public:
|
public:
|
||||||
explicit player(CNetGamePlayer* net_game_player);
|
explicit player(CNetGamePlayer* net_game_player);
|
||||||
~player() = default;
|
~player() = default;
|
||||||
|
|
||||||
player(const player&) = default;
|
player(const player&) = default;
|
||||||
player(player&&) noexcept = default;
|
player(player&&) noexcept = default;
|
||||||
player& operator=(const player&) = default;
|
player& operator=(const player&) = default;
|
||||||
@ -50,6 +50,8 @@ namespace big
|
|||||||
{
|
{
|
||||||
CNetGamePlayer** m_self;
|
CNetGamePlayer** m_self;
|
||||||
|
|
||||||
|
player_ptr m_self_ptr;
|
||||||
|
|
||||||
players m_players;
|
players m_players;
|
||||||
|
|
||||||
player_ptr m_dummy = std::make_shared<player>(nullptr);
|
player_ptr m_dummy = std::make_shared<player>(nullptr);
|
||||||
@ -58,7 +60,7 @@ namespace big
|
|||||||
|
|
||||||
player_service();
|
player_service();
|
||||||
~player_service();
|
~player_service();
|
||||||
|
|
||||||
player_service(const player_service&) = delete;
|
player_service(const player_service&) = delete;
|
||||||
player_service(player_service&&) noexcept = delete;
|
player_service(player_service&&) noexcept = delete;
|
||||||
player_service& operator=(const player_service&) = delete;
|
player_service& operator=(const player_service&) = delete;
|
||||||
@ -66,7 +68,7 @@ namespace big
|
|||||||
|
|
||||||
void do_cleanup();
|
void do_cleanup();
|
||||||
|
|
||||||
[[nodiscard]] player_ptr get_self() const;
|
[[nodiscard]] player_ptr get_self();
|
||||||
|
|
||||||
[[nodiscard]] player_ptr get_by_name(std::string name);
|
[[nodiscard]] player_ptr get_by_name(std::string name);
|
||||||
[[nodiscard]] player_ptr get_by_msg_id(uint32_t msg_id) const;
|
[[nodiscard]] player_ptr get_by_msg_id(uint32_t msg_id) const;
|
||||||
@ -84,4 +86,4 @@ namespace big
|
|||||||
};
|
};
|
||||||
|
|
||||||
inline player_service* g_player_service{};
|
inline player_service* g_player_service{};
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user