Skip to content

Commit

Permalink
Raise C++ standard to C++20 (#4380)
Browse files Browse the repository at this point in the history
  • Loading branch information
ranisalt committed Apr 9, 2023
1 parent 4f415a1 commit 5d62a1d
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 44 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ option(ENABLE_TESTING "Build unit tests" OFF)

include_directories(${Boost_INCLUDE_DIRS} ${Crypto++_INCLUDE_DIR} ${LUA_INCLUDE_DIR} ${MYSQL_INCLUDE_DIR} ${PUGIXML_INCLUDE_DIR})

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_subdirectory(src)
Expand Down
79 changes: 43 additions & 36 deletions src/game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -649,7 +649,7 @@ void Game::playerMoveThing(uint32_t playerId, const Position& fromPos, uint16_t

if (Position::areInRange<1, 1, 0>(movingCreature->getPosition(), player->getPosition())) {
SchedulerTask* task = createSchedulerTask(
MOVE_CREATURE_INTERVAL, [=, playerID = player->getID(), creatureID = movingCreature->getID()]() {
MOVE_CREATURE_INTERVAL, [=, this, playerID = player->getID(), creatureID = movingCreature->getID()]() {
playerMoveCreatureByID(playerID, creatureID, fromPos, toPos);
});
player->setNextActionTask(task);
Expand Down Expand Up @@ -695,7 +695,7 @@ void Game::playerMoveCreature(Player* player, Creature* movingCreature, const Po
if (!player->canDoAction()) {
uint32_t delay = player->getNextActionTime();
SchedulerTask* task =
createSchedulerTask(delay, [=, playerID = player->getID(), movingCreatureID = movingCreature->getID(),
createSchedulerTask(delay, [=, this, playerID = player->getID(), movingCreatureID = movingCreature->getID(),
toPos = toTile->getPosition()]() {
playerMoveCreatureByID(playerID, movingCreatureID, movingCreatureOrigPos, toPos);
});
Expand All @@ -714,10 +714,11 @@ void Game::playerMoveCreature(Player* player, Creature* movingCreature, const Po
// need to walk to the creature first before moving it
std::vector<Direction> listDir;
if (player->getPathTo(movingCreatureOrigPos, listDir, 0, 1, true, true)) {
g_dispatcher.addTask(
[=, playerID = player->getID(), listDir = std::move(listDir)]() { playerAutoWalk(playerID, listDir); });
g_dispatcher.addTask([this, playerID = player->getID(), listDir = std::move(listDir)]() {
playerAutoWalk(playerID, listDir);
});
SchedulerTask* task =
createSchedulerTask(RANGE_MOVE_CREATURE_INTERVAL, [=, playerID = player->getID(),
createSchedulerTask(RANGE_MOVE_CREATURE_INTERVAL, [=, this, playerID = player->getID(),
movingCreatureID = movingCreature->getID(),
toPos = toTile->getPosition()] {
playerMoveCreatureByID(playerID, movingCreatureID, movingCreatureOrigPos, toPos);
Expand Down Expand Up @@ -904,7 +905,7 @@ void Game::playerMoveItem(Player* player, const Position& fromPos, uint16_t spri
{
if (!player->canDoAction()) {
uint32_t delay = player->getNextActionTime();
SchedulerTask* task = createSchedulerTask(delay, [=, playerID = player->getID()]() {
SchedulerTask* task = createSchedulerTask(delay, [=, this, playerID = player->getID()]() {
playerMoveItemByPlayerID(playerID, fromPos, spriteId, fromStackPos, toPos, count);
});
player->setNextActionTask(task);
Expand Down Expand Up @@ -970,11 +971,13 @@ void Game::playerMoveItem(Player* player, const Position& fromPos, uint16_t spri
// need to walk to the item first before using it
std::vector<Direction> listDir;
if (player->getPathTo(item->getPosition(), listDir, 0, 1, true, true)) {
g_dispatcher.addTask(
[=, playerID = player->getID(), listDir = std::move(listDir)]() { playerAutoWalk(playerID, listDir); });
SchedulerTask* task = createSchedulerTask(RANGE_MOVE_ITEM_INTERVAL, [=, playerID = player->getID()]() {
playerMoveItemByPlayerID(playerID, fromPos, spriteId, fromStackPos, toPos, count);
g_dispatcher.addTask([this, playerID = player->getID(), listDir = std::move(listDir)]() {
playerAutoWalk(playerID, listDir);
});
SchedulerTask* task =
createSchedulerTask(RANGE_MOVE_ITEM_INTERVAL, [=, this, playerID = player->getID()]() {
playerMoveItemByPlayerID(playerID, fromPos, spriteId, fromStackPos, toPos, count);
});
player->setNextWalkActionTask(task);
} else {
player->sendCancelMessage(RETURNVALUE_THEREISNOWAY);
Expand Down Expand Up @@ -1030,7 +1033,7 @@ void Game::playerMoveItem(Player* player, const Position& fromPos, uint16_t spri

std::vector<Direction> listDir;
if (player->getPathTo(walkPos, listDir, 0, 0, true, true)) {
g_dispatcher.addTask([=, playerID = player->getID(), listDir = std::move(listDir)]() {
g_dispatcher.addTask([this, playerID = player->getID(), listDir = std::move(listDir)]() {
playerAutoWalk(playerID, listDir);
});
SchedulerTask* task = createSchedulerTask(
Expand Down Expand Up @@ -2145,10 +2148,10 @@ void Game::playerUseItemEx(uint32_t playerId, const Position& fromPos, uint8_t f

std::vector<Direction> listDir;
if (player->getPathTo(walkToPos, listDir, 0, 1, true, true)) {
g_dispatcher.addTask([=, playerID = player->getID(), listDir = std::move(listDir)]() {
g_dispatcher.addTask([this, playerID = player->getID(), listDir = std::move(listDir)]() {
playerAutoWalk(playerID, listDir);
});
SchedulerTask* task = createSchedulerTask(RANGE_USE_ITEM_EX_INTERVAL, [=]() {
SchedulerTask* task = createSchedulerTask(RANGE_USE_ITEM_EX_INTERVAL, [=, this]() {
playerUseItemEx(playerId, itemPos, itemStackPos, fromSpriteId, toPos, toStackPos, toSpriteId);
});
player->setNextWalkActionTask(task);
Expand All @@ -2164,7 +2167,7 @@ void Game::playerUseItemEx(uint32_t playerId, const Position& fromPos, uint8_t f

if (!player->canDoAction()) {
uint32_t delay = player->getNextActionTime();
SchedulerTask* task = createSchedulerTask(delay, [=]() {
SchedulerTask* task = createSchedulerTask(delay, [=, this]() {
playerUseItemEx(playerId, fromPos, fromStackPos, fromSpriteId, toPos, toStackPos, toSpriteId);
});
player->setNextActionTask(task);
Expand Down Expand Up @@ -2206,11 +2209,11 @@ void Game::playerUseItem(uint32_t playerId, const Position& pos, uint8_t stackPo
if (ret == RETURNVALUE_TOOFARAWAY) {
std::vector<Direction> listDir;
if (player->getPathTo(pos, listDir, 0, 1, true, true)) {
g_dispatcher.addTask([=, playerID = player->getID(), listDir = std::move(listDir)]() {
g_dispatcher.addTask([this, playerID = player->getID(), listDir = std::move(listDir)]() {
playerAutoWalk(playerID, listDir);
});
SchedulerTask* task = createSchedulerTask(
RANGE_USE_ITEM_INTERVAL, [=]() { playerUseItem(playerId, pos, stackPos, index, spriteId); });
RANGE_USE_ITEM_INTERVAL, [=, this]() { playerUseItem(playerId, pos, stackPos, index, spriteId); });
player->setNextWalkActionTask(task);
return;
}
Expand All @@ -2225,7 +2228,7 @@ void Game::playerUseItem(uint32_t playerId, const Position& pos, uint8_t stackPo
if (!player->canDoAction()) {
uint32_t delay = player->getNextActionTime();
SchedulerTask* task =
createSchedulerTask(delay, [=]() { playerUseItem(playerId, pos, stackPos, index, spriteId); });
createSchedulerTask(delay, [=, this]() { playerUseItem(playerId, pos, stackPos, index, spriteId); });
player->setNextActionTask(task);
return;
}
Expand Down Expand Up @@ -2305,10 +2308,10 @@ void Game::playerUseWithCreature(uint32_t playerId, const Position& fromPos, uin

std::vector<Direction> listDir;
if (player->getPathTo(walkToPos, listDir, 0, 1, true, true)) {
g_dispatcher.addTask([=, playerID = player->getID(), listDir = std::move(listDir)]() {
g_dispatcher.addTask([this, playerID = player->getID(), listDir = std::move(listDir)]() {
playerAutoWalk(playerID, listDir);
});
SchedulerTask* task = createSchedulerTask(RANGE_USE_WITH_CREATURE_INTERVAL, [=]() {
SchedulerTask* task = createSchedulerTask(RANGE_USE_WITH_CREATURE_INTERVAL, [=, this]() {
playerUseWithCreature(playerId, itemPos, itemStackPos, creatureId, spriteId);
});
player->setNextWalkActionTask(task);
Expand All @@ -2325,7 +2328,7 @@ void Game::playerUseWithCreature(uint32_t playerId, const Position& fromPos, uin
if (!player->canDoAction()) {
uint32_t delay = player->getNextActionTime();
SchedulerTask* task = createSchedulerTask(
delay, [=]() { playerUseWithCreature(playerId, fromPos, fromStackPos, creatureId, spriteId); });
delay, [=, this]() { playerUseWithCreature(playerId, fromPos, fromStackPos, creatureId, spriteId); });
player->setNextActionTask(task);
return;
}
Expand Down Expand Up @@ -2424,10 +2427,11 @@ void Game::playerRotateItem(uint32_t playerId, const Position& pos, uint8_t stac
if (pos.x != 0xFFFF && !Position::areInRange<1, 1, 0>(pos, player->getPosition())) {
std::vector<Direction> listDir;
if (player->getPathTo(pos, listDir, 0, 1, true, true)) {
g_dispatcher.addTask(
[=, playerID = player->getID(), listDir = std::move(listDir)]() { playerAutoWalk(playerID, listDir); });
SchedulerTask* task = createSchedulerTask(RANGE_ROTATE_ITEM_INTERVAL,
[=]() { playerRotateItem(playerId, pos, stackPos, spriteId); });
g_dispatcher.addTask([this, playerID = player->getID(), listDir = std::move(listDir)]() {
playerAutoWalk(playerID, listDir);
});
SchedulerTask* task = createSchedulerTask(
RANGE_ROTATE_ITEM_INTERVAL, [=, this]() { playerRotateItem(playerId, pos, stackPos, spriteId); });
player->setNextWalkActionTask(task);
} else {
player->sendCancelMessage(RETURNVALUE_THEREISNOWAY);
Expand Down Expand Up @@ -2522,10 +2526,11 @@ void Game::playerBrowseField(uint32_t playerId, const Position& pos)
if (!Position::areInRange<1, 1>(playerPos, pos)) {
std::vector<Direction> listDir;
if (player->getPathTo(pos, listDir, 0, 1, true, true)) {
g_dispatcher.addTask(
[=, playerID = player->getID(), listDir = std::move(listDir)]() { playerAutoWalk(playerID, listDir); });
g_dispatcher.addTask([this, playerID = player->getID(), listDir = std::move(listDir)]() {
playerAutoWalk(playerID, listDir);
});
SchedulerTask* task =
createSchedulerTask(RANGE_BROWSE_FIELD_INTERVAL, [=]() { playerBrowseField(playerId, pos); });
createSchedulerTask(RANGE_BROWSE_FIELD_INTERVAL, [=, this]() { playerBrowseField(playerId, pos); });
player->setNextWalkActionTask(task);
} else {
player->sendCancelMessage(RETURNVALUE_THEREISNOWAY);
Expand Down Expand Up @@ -2627,10 +2632,11 @@ void Game::playerWrapItem(uint32_t playerId, const Position& position, uint8_t s
if (position.x != 0xFFFF && !Position::areInRange<1, 1, 0>(position, player->getPosition())) {
std::vector<Direction> listDir;
if (player->getPathTo(position, listDir, 0, 1, true, true)) {
g_dispatcher.addTask(
[=, playerID = player->getID(), listDir = std::move(listDir)]() { playerAutoWalk(playerID, listDir); });
g_dispatcher.addTask([this, playerID = player->getID(), listDir = std::move(listDir)]() {
playerAutoWalk(playerID, listDir);
});
SchedulerTask* task = createSchedulerTask(
RANGE_WRAP_ITEM_INTERVAL, [=]() { playerWrapItem(playerId, position, stackPos, spriteId); });
RANGE_WRAP_ITEM_INTERVAL, [=, this]() { playerWrapItem(playerId, position, stackPos, spriteId); });
player->setNextWalkActionTask(task);
} else {
player->sendCancelMessage(RETURNVALUE_THEREISNOWAY);
Expand Down Expand Up @@ -2698,9 +2704,10 @@ void Game::playerRequestTrade(uint32_t playerId, const Position& pos, uint8_t st
if (!Position::areInRange<1, 1>(tradeItemPosition, playerPosition)) {
std::vector<Direction> listDir;
if (player->getPathTo(pos, listDir, 0, 1, true, true)) {
g_dispatcher.addTask(
[=, playerID = player->getID(), listDir = std::move(listDir)]() { playerAutoWalk(playerID, listDir); });
SchedulerTask* task = createSchedulerTask(RANGE_REQUEST_TRADE_INTERVAL, [=]() {
g_dispatcher.addTask([this, playerID = player->getID(), listDir = std::move(listDir)]() {
playerAutoWalk(playerID, listDir);
});
SchedulerTask* task = createSchedulerTask(RANGE_REQUEST_TRADE_INTERVAL, [=, this]() {
playerRequestTrade(playerId, pos, stackPos, tradePlayerId, spriteId);
});
player->setNextWalkActionTask(task);
Expand Down Expand Up @@ -3419,11 +3426,11 @@ void Game::playerRequestEditPodium(uint32_t playerId, const Position& position,
if (position.x != 0xFFFF && !Position::areInRange<1, 1, 0>(position, player->getPosition())) {
std::vector<Direction> listDir;
if (player->getPathTo(position, listDir, 0, 1, true, true)) {
g_dispatcher.addTask([=, playerID = player->getID(), listDir = std::move(listDir)]() {
g_dispatcher.addTask([this, playerID = player->getID(), listDir = std::move(listDir)]() {
playerAutoWalk(playerID, listDir);
});
SchedulerTask* task = createSchedulerTask(
400, [=]() { playerRequestEditPodium(playerId, position, stackPos, spriteId); });
400, [=, this]() { playerRequestEditPodium(playerId, position, stackPos, spriteId); });
player->setNextWalkActionTask(task);
} else {
player->sendCancelMessage(RETURNVALUE_THEREISNOWAY);
Expand Down Expand Up @@ -3905,7 +3912,7 @@ void Game::removeCreatureCheck(Creature* creature)
void Game::checkCreatures(size_t index)
{
g_scheduler.addEvent(createSchedulerTask(EVENT_CHECK_CREATURE_INTERVAL,
[=]() { checkCreatures((index + 1) % EVENT_CREATURECOUNT); }));
[=, this]() { checkCreatures((index + 1) % EVENT_CREATURECOUNT); }));

auto& checkCreatureList = checkCreatureLists[index];
auto it = checkCreatureList.begin(), end = checkCreatureList.end();
Expand Down
6 changes: 3 additions & 3 deletions src/raids.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,8 @@ void Raid::startRaid()
RaidEvent* raidEvent = getNextRaidEvent();
if (raidEvent) {
state = RAIDSTATE_EXECUTING;
nextEventEvent =
g_scheduler.addEvent(createSchedulerTask(raidEvent->getDelay(), [=]() { executeRaidEvent(raidEvent); }));
nextEventEvent = g_scheduler.addEvent(
createSchedulerTask(raidEvent->getDelay(), [=, this]() { executeRaidEvent(raidEvent); }));
}
}

Expand All @@ -239,7 +239,7 @@ void Raid::executeRaidEvent(RaidEvent* raidEvent)
uint32_t ticks = static_cast<uint32_t>(
std::max<int32_t>(RAID_MINTICKS, newRaidEvent->getDelay() - raidEvent->getDelay()));
nextEventEvent =
g_scheduler.addEvent(createSchedulerTask(ticks, [=]() { executeRaidEvent(newRaidEvent); }));
g_scheduler.addEvent(createSchedulerTask(ticks, [=, this]() { executeRaidEvent(newRaidEvent); }));
} else {
resetRaid();
}
Expand Down
8 changes: 4 additions & 4 deletions vc17/theforgottenserver.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<AdditionalIncludeDirectories>$(VcpkgRoot)include\luajit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp17</LanguageStandard>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<TargetMachine>MachineX86</TargetMachine>
Expand All @@ -109,7 +109,7 @@
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<AdditionalIncludeDirectories>$(VcpkgRoot)include\luajit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp17</LanguageStandard>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
Expand All @@ -127,7 +127,7 @@
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<AdditionalIncludeDirectories>$(VcpkgRoot)include\luajit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp17</LanguageStandard>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<TargetMachine>MachineX86</TargetMachine>
Expand All @@ -149,7 +149,7 @@
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<AdditionalIncludeDirectories>$(VcpkgRoot)include\luajit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp17</LanguageStandard>
<LanguageStandard>stdcpp20</LanguageStandard>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
Expand Down

0 comments on commit 5d62a1d

Please sign in to comment.