forked from metin2/server
Replaced deprecated bound functions with modern lambda-functions.
This commit is contained in:
parent
d4fa88b7e2
commit
e921594eff
106
src/common/stl.h
106
src/common/stl.h
@ -1,5 +1,4 @@
|
||||
#ifndef __INC_METIN_II_STL_H__
|
||||
#define __INC_METIN_II_STL_H__
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
@ -19,15 +18,15 @@
|
||||
inline void stl_lowers(std::string& rstRet)
|
||||
{
|
||||
for (size_t i = 0; i < rstRet.length(); ++i)
|
||||
rstRet[i] = tolower(rstRet[i]);
|
||||
rstRet[i] = (char) tolower(rstRet[i]);
|
||||
}
|
||||
|
||||
struct stringhash
|
||||
struct stringhash
|
||||
{
|
||||
size_t operator () (const std::string & str) const
|
||||
{
|
||||
const unsigned char * s = (const unsigned char*) str.c_str();
|
||||
const unsigned char * end = s + str.size();
|
||||
const auto * s = (const unsigned char*) str.c_str();
|
||||
const auto * end = s + str.size();
|
||||
size_t h = 0;
|
||||
|
||||
while (s < end)
|
||||
@ -39,98 +38,3 @@ struct stringhash
|
||||
return h;
|
||||
}
|
||||
};
|
||||
|
||||
// code from tr1/functional_hash.h
|
||||
template<typename T>
|
||||
struct hash;
|
||||
|
||||
template<typename _Tp>
|
||||
struct hash<_Tp*>
|
||||
: public std::unary_function<_Tp*, std::size_t>
|
||||
{
|
||||
std::size_t
|
||||
operator()(_Tp* __p) const
|
||||
{ return reinterpret_cast<std::size_t>(__p); }
|
||||
};
|
||||
|
||||
namespace std
|
||||
{
|
||||
template <class container, class Pred>
|
||||
void erase_if (container & a, typename container::iterator first, typename container::iterator past, Pred pred)
|
||||
{
|
||||
while (first != past)
|
||||
if (pred(*first))
|
||||
a.erase(first++);
|
||||
else
|
||||
++first;
|
||||
}
|
||||
|
||||
template <class container>
|
||||
void wipe(container & a)
|
||||
{
|
||||
typename container::iterator first, past;
|
||||
|
||||
first = a.begin();
|
||||
past = a.end();
|
||||
|
||||
while (first != past)
|
||||
delete *(first++);
|
||||
|
||||
a.clear();
|
||||
}
|
||||
|
||||
template <class container>
|
||||
void wipe_second(container & a)
|
||||
{
|
||||
typename container::iterator first, past;
|
||||
|
||||
first = a.begin();
|
||||
past = a.end();
|
||||
|
||||
while (first != past)
|
||||
{
|
||||
delete first->second;
|
||||
++first;
|
||||
}
|
||||
|
||||
a.clear();
|
||||
}
|
||||
|
||||
template <class _Ty>
|
||||
class void_mem_fun_t : public unary_function<_Ty *, void>
|
||||
{
|
||||
public:
|
||||
explicit void_mem_fun_t(void (_Ty::*_Pm)()) : _Ptr(_Pm)
|
||||
{
|
||||
}
|
||||
|
||||
void operator()(_Ty* p) const
|
||||
{
|
||||
((p->*_Ptr)());
|
||||
}
|
||||
|
||||
private:
|
||||
void (_Ty::*_Ptr)();
|
||||
};
|
||||
|
||||
template<class _Ty> inline
|
||||
void_mem_fun_t<_Ty> void_mem_fun(void (_Ty::*_Pm)())
|
||||
{ return (void_mem_fun_t<_Ty>(_Pm)); }
|
||||
|
||||
template<class _Ty>
|
||||
class void_mem_fun_ref_t : public unary_function<_Ty, void>
|
||||
{
|
||||
public:
|
||||
explicit void_mem_fun_ref_t(void (_Ty::*_Pm)()) : _Ptr(_Pm) {}
|
||||
void operator()(_Ty& x) const
|
||||
{ return ((x.*_Ptr)()); }
|
||||
private:
|
||||
void (_Ty::*_Ptr)();
|
||||
};
|
||||
|
||||
template<class _Ty> inline
|
||||
void_mem_fun_ref_t<_Ty> void_mem_fun_ref(void (_Ty::*_Pm)())
|
||||
{ return (void_mem_fun_ref_t< _Ty>(_Pm)); }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1009,7 +1009,8 @@ void CHARACTER::ItemDropPenalty(LPCHARACTER pkKiller)
|
||||
|
||||
if (!vec_bSlots.empty())
|
||||
{
|
||||
random_shuffle(vec_bSlots.begin(), vec_bSlots.end());
|
||||
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
|
||||
std::shuffle(vec_bSlots.begin(), vec_bSlots.end(), std::default_random_engine(seed));
|
||||
|
||||
int iQty = std::min<int>(vec_bSlots.size(), r.iInventoryQty);
|
||||
|
||||
@ -1041,7 +1042,9 @@ void CHARACTER::ItemDropPenalty(LPCHARACTER pkKiller)
|
||||
|
||||
if (!vec_bSlots.empty())
|
||||
{
|
||||
random_shuffle(vec_bSlots.begin(), vec_bSlots.end());
|
||||
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
|
||||
std::shuffle(vec_bSlots.begin(), vec_bSlots.end(), std::default_random_engine(seed));
|
||||
|
||||
int iQty;
|
||||
|
||||
if (isDropAllEquipments)
|
||||
|
@ -663,7 +663,7 @@ void CHARACTER_MANAGER::Update(int iPulse)
|
||||
else
|
||||
{
|
||||
//for_each(v.begin(), v.end(), mem_fun(&CFSM::Update));
|
||||
for_each(v.begin(), v.end(), bind2nd(mem_fun(&CHARACTER::UpdateCharacter), iPulse));
|
||||
for (auto& ch : v) ch->UpdateCharacter(iPulse);
|
||||
}
|
||||
}
|
||||
|
||||
@ -678,7 +678,7 @@ void CHARACTER_MANAGER::Update(int iPulse)
|
||||
v.reserve(m_set_pkChrState.size());
|
||||
transform(m_set_pkChrState.begin(), m_set_pkChrState.end(), back_inserter(v), identity<CHARACTER_SET::value_type>());
|
||||
|
||||
for_each(v.begin(), v.end(), bind2nd(mem_fun(&CHARACTER::UpdateStateMachine), iPulse));
|
||||
for (auto& ch : v) ch->UpdateStateMachine(iPulse);
|
||||
}
|
||||
}
|
||||
|
||||
@ -688,8 +688,7 @@ void CHARACTER_MANAGER::Update(int iPulse)
|
||||
|
||||
if (CHARACTER_MANAGER::instance().GetCharactersByRaceNum(xmas::MOB_SANTA_VNUM, i))
|
||||
{
|
||||
for_each(i.begin(), i.end(),
|
||||
bind2nd(mem_fun(&CHARACTER::UpdateStateMachine), iPulse));
|
||||
for (auto& ch : i) ch->UpdateStateMachine(iPulse);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -618,15 +618,15 @@ void CGuild::Load(DWORD guild_id)
|
||||
|
||||
m_data.guild_id = guild_id;
|
||||
|
||||
DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&CGuild::LoadGuildData), this),
|
||||
DBManager::instance().FuncQuery([this](auto const& msg) { LoadGuildData(msg); },
|
||||
"SELECT master, level, exp, name, skill_point, skill, sp, ladder_point, win, draw, loss, gold FROM guild%s WHERE id = %u", get_table_postfix(), m_data.guild_id);
|
||||
|
||||
SPDLOG_DEBUG("GUILD: loading guild id {:>12} {}", m_data.name, guild_id);
|
||||
|
||||
DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&CGuild::LoadGuildGradeData), this),
|
||||
DBManager::instance().FuncQuery([this](auto const& msg) { LoadGuildGradeData(msg); },
|
||||
"SELECT grade, name, auth+0 FROM guild_grade%s WHERE guild_id = %u", get_table_postfix(), m_data.guild_id);
|
||||
|
||||
DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&CGuild::LoadGuildMemberData), this),
|
||||
DBManager::instance().FuncQuery([this](auto const& msg) { LoadGuildMemberData(msg); },
|
||||
"SELECT pid, grade, is_general, offer, level, job, name FROM guild_member%s, player%s WHERE guild_id = %u and pid = id", get_table_postfix(), get_table_postfix(), guild_id);
|
||||
}
|
||||
|
||||
@ -756,7 +756,7 @@ void CGuild::__P2PUpdateGrade(SQLMsg* pmsg)
|
||||
|
||||
void CGuild::P2PChangeGrade(BYTE grade)
|
||||
{
|
||||
DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&CGuild::__P2PUpdateGrade),this),
|
||||
DBManager::instance().FuncQuery([this](auto const& msg) { __P2PUpdateGrade(msg); },
|
||||
"SELECT grade, name, auth+0 FROM guild_grade%s WHERE guild_id = %u and grade = %d", get_table_postfix(), m_data.guild_id, grade);
|
||||
}
|
||||
|
||||
@ -1011,7 +1011,7 @@ void CGuild::AddComment(LPCHARACTER ch, const std::string& str)
|
||||
char text[GUILD_COMMENT_MAX_LEN * 2 + 1];
|
||||
DBManager::instance().EscapeString(text, sizeof(text), str.c_str(), str.length());
|
||||
|
||||
DBManager::instance().FuncAfterQuery(void_bind(std::bind1st(std::mem_fun(&CGuild::RefreshCommentForce),this),ch->GetPlayerID()),
|
||||
DBManager::instance().FuncAfterQuery([this, ch]() { this->RefreshCommentForce(ch->GetPlayerID()); },
|
||||
"INSERT INTO guild_comment%s(guild_id, name, notice, content, time) VALUES(%u, '%s', %d, '%s', NOW())",
|
||||
get_table_postfix(), m_data.guild_id, ch->GetName(), (str[0] == '!') ? 1 : 0, text);
|
||||
}
|
||||
@ -1223,7 +1223,7 @@ void CGuild::SkillLevelUp(DWORD dwVnum)
|
||||
break;
|
||||
}*/
|
||||
|
||||
for_each(m_memberOnline.begin(), m_memberOnline.end(), std::bind1st(std::mem_fun_ref(&CGuild::SendSkillInfoPacket),*this));
|
||||
for (auto& ch : m_memberOnline) SendSkillInfoPacket(ch);
|
||||
|
||||
SPDLOG_DEBUG("Guild SkillUp: {} {} level {} type {}", GetName(), pkSk->dwVnum, m_data.abySkill[dwRealVnum], pkSk->dwType);
|
||||
}
|
||||
@ -1482,7 +1482,7 @@ void CGuild::GuildPointChange(BYTE type, int amount, bool save)
|
||||
SaveSkill();
|
||||
}
|
||||
|
||||
for_each(m_memberOnline.begin(), m_memberOnline.end(), std::bind1st(std::mem_fun_ref(&CGuild::SendSkillInfoPacket),*this));
|
||||
for (auto& ch : m_memberOnline) SendSkillInfoPacket(ch);
|
||||
break;
|
||||
|
||||
case POINT_EXP:
|
||||
@ -1513,7 +1513,7 @@ void CGuild::GuildPointChange(BYTE type, int amount, bool save)
|
||||
ChangeLadderPoint(GUILD_LADDER_POINT_PER_LEVEL);
|
||||
|
||||
// NOTIFY_GUILD_EXP_CHANGE
|
||||
for_each(m_memberOnline.begin(), m_memberOnline.end(), std::bind1st(std::mem_fun(&CGuild::SendGuildInfoPacket), this));
|
||||
for (auto& ch : m_memberOnline) SendGuildInfoPacket(ch);
|
||||
// END_OF_NOTIFY_GUILD_EXP_CHANGE
|
||||
}
|
||||
|
||||
|
@ -284,7 +284,7 @@ int CGuildManager::GetRank(CGuild* g)
|
||||
return rank;
|
||||
}
|
||||
|
||||
struct FGuildCompare : public std::binary_function<CGuild*, CGuild*, bool>
|
||||
struct FGuildCompare
|
||||
{
|
||||
bool operator () (CGuild* g1, CGuild* g2) const
|
||||
{
|
||||
@ -942,16 +942,13 @@ std::vector<CGuildWarReserveForGame *> & CGuildManager::GetReserveWarRef()
|
||||
|
||||
void CGuildManager::ChangeMaster(DWORD dwGID)
|
||||
{
|
||||
TGuildMap::iterator iter = m_mapGuild.find(dwGID);
|
||||
auto iter = m_mapGuild.find(dwGID);
|
||||
|
||||
if ( iter != m_mapGuild.end() )
|
||||
{
|
||||
if (iter != m_mapGuild.end())
|
||||
iter->second->Load(dwGID);
|
||||
}
|
||||
|
||||
// 업데이트된 정보 보내주기
|
||||
DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&CGuild::SendGuildDataUpdateToAllMember), iter->second),
|
||||
DBManager::instance().FuncQuery([iter](auto const& msg) { iter->second->SendGuildDataUpdateToAllMember(msg); },
|
||||
"SELECT 1");
|
||||
|
||||
}
|
||||
|
||||
|
@ -1682,7 +1682,7 @@ void CInputDB::ReloadProto(const char * c_pData)
|
||||
|
||||
CMotionManager::instance().Build();
|
||||
|
||||
CHARACTER_MANAGER::instance().for_each_pc(std::mem_fun(&CHARACTER::ComputePoints));
|
||||
CHARACTER_MANAGER::instance().for_each_pc([](auto& pc) { pc->ComputePoints(); });
|
||||
}
|
||||
|
||||
void CInputDB::GuildSkillUsableChange(const char* c_pData)
|
||||
|
@ -43,7 +43,7 @@ void MessengerManager::Login(MessengerManager::keyA account)
|
||||
if (m_set_loginAccount.find(account) != m_set_loginAccount.end())
|
||||
return;
|
||||
|
||||
DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&MessengerManager::LoadList), this),
|
||||
DBManager::instance().FuncQuery([this](auto const& msg) { LoadList(msg); },
|
||||
"SELECT account, companion FROM messenger_list%s WHERE account='%s'", get_table_postfix(), account.c_str());
|
||||
|
||||
m_set_loginAccount.insert(account);
|
||||
|
@ -109,7 +109,7 @@ bool CMobManager::Initialize(TMobTable * pTable, int iSize)
|
||||
// END_OF_LOCALE_SERVICE
|
||||
|
||||
//exit(EXIT_FAILURE);
|
||||
CHARACTER_MANAGER::instance().for_each_pc(std::bind1st(std::mem_fun(&CMobManager::RebindMobProto),this));
|
||||
CHARACTER_MANAGER::instance().for_each_pc([this](auto& pc) { RebindMobProto(pc); });
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user