merge
This commit is contained in:
commit
6cfd47e80d
19 files changed
+3264
-1955
No files matched your search
@@ -172,6 +172,13 @@ if(BUILD_TESTING)
|
||||
GameServerWebsocketLockstepTests PRIVATE "${BOOST_BUNDLED_DIR}")
|
||||
target_compile_definitions(
|
||||
GameServerWebsocketLockstepTests PRIVATE NETWORK)
|
||||
GameServerWebsocketLockstepTests PRIVATE
|
||||
NETWORK WIN32_LEAN_AND_MEAN _WIN32_WINNT=0x0A00)
|
||||
if(MSVC)
|
||||
set_source_files_properties(
|
||||
"${GAME_ROOT}/src/game_server/WebsocketGameClient.cpp"
|
||||
PROPERTIES COMPILE_OPTIONS "/bigobj")
|
||||
endif()
|
||||
target_link_libraries(
|
||||
GameServerWebsocketLockstepTests PRIVATE game_server_core)
|
||||
if(WIN32)
|
||||
|
||||
@@ -194,6 +194,59 @@ int main()
|
||||
return fail("Hostile NPC did not return home after losing its target");
|
||||
}
|
||||
|
||||
auto blocker = std::make_shared<FRG::CharacterState>();
|
||||
blocker->enabled = true;
|
||||
blocker->hp = 50.f;
|
||||
blocker->position = {0.8f, 0.f, 0.f};
|
||||
state.npcs["blocker"] = blocker;
|
||||
hostileNpc.position = Eigen::Vector3f::Zero();
|
||||
hostileNpc.homePosition = {5.f, 0.f, 0.f};
|
||||
hostileNpc.attackTargetId = "player";
|
||||
hostileNpc.requestedWalkTarget = playerOne->position;
|
||||
hostileNpc.walkTarget = playerOne->position;
|
||||
hostileNpc.pathWaypoints = {playerOne->position};
|
||||
hostileNpc.currentWaypointIndex = 0;
|
||||
hostileNpc.movementBlockedTicks = 0;
|
||||
playerOne->enabled = true;
|
||||
playerOne->hp = 75.f;
|
||||
playerOne->position = {4.f, 0.f, 0.f};
|
||||
playerTwo->enabled = true;
|
||||
playerTwo->hp = 75.f;
|
||||
playerTwo->position = {2.f, 0.f, 0.f};
|
||||
|
||||
bool blockedRetryRequested = false;
|
||||
for (int tick = 0; tick < 10 && !blockedRetryRequested; ++tick) {
|
||||
const FRG::LocationSimulationEvents events =
|
||||
state.update(100, combatPlayers, false);
|
||||
for (const auto& event : events.characters) {
|
||||
if (event.characterId == "npc" &&
|
||||
event.events.forceNavigationReplan) {
|
||||
blockedRetryRequested = true;
|
||||
if (!state.replanCharacter(
|
||||
"npc", combatPlayers,
|
||||
event.events.blockingCharacterId)) {
|
||||
return fail("Blocked NPC replan was rejected");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!blockedRetryRequested ||
|
||||
hostileNpc.attackTargetId != "player2" ||
|
||||
(hostileNpc.requestedWalkTarget - playerTwo->position).norm() >
|
||||
FRG::CharacterState::kWalkThreshold) {
|
||||
return fail("Blocked NPC did not switch to the nearest player");
|
||||
}
|
||||
|
||||
playerOne->enabled = false;
|
||||
playerTwo->enabled = false;
|
||||
if (!state.replanCharacter("npc", combatPlayers, "blocker") ||
|
||||
!hostileNpc.attackTargetId.empty() ||
|
||||
hostileNpc.battle_state != 0 ||
|
||||
(hostileNpc.requestedWalkTarget - hostileNpc.homePosition).norm() >
|
||||
FRG::CharacterState::kWalkThreshold) {
|
||||
return fail("Blocked NPC did not return home without an eligible target");
|
||||
}
|
||||
|
||||
FRG::CampaignConfig battleZone;
|
||||
battleZone.id = "battle_zone";
|
||||
battleZone.questsPath = "resources/config/quests_battle_zone.json";
|
||||
|
||||
@@ -32,6 +32,31 @@ bool waitFor(Predicate predicate)
|
||||
|
||||
int main()
|
||||
{
|
||||
FRG::WebsocketEndpoint secureEndpoint;
|
||||
require(
|
||||
secureEndpoint.parse(
|
||||
"wss://api.shadowoverbishkek.com/server001/"),
|
||||
"secure WebSocket endpoint was rejected");
|
||||
require(
|
||||
secureEndpoint.host == "api.shadowoverbishkek.com" &&
|
||||
secureEndpoint.port == "443" &&
|
||||
secureEndpoint.path == "/server001/" &&
|
||||
secureEndpoint.useTls,
|
||||
"secure WebSocket endpoint was parsed incorrectly");
|
||||
FRG::WebsocketEndpoint insecureEndpoint;
|
||||
require(
|
||||
insecureEndpoint.parse("ws://127.0.0.1:8080/"),
|
||||
"insecure WebSocket endpoint was rejected");
|
||||
require(
|
||||
insecureEndpoint.host == "127.0.0.1" &&
|
||||
insecureEndpoint.port == "8080" &&
|
||||
!insecureEndpoint.useTls,
|
||||
"insecure WebSocket endpoint was parsed incorrectly");
|
||||
FRG::WebsocketEndpoint invalidEndpoint;
|
||||
require(
|
||||
!invalidEndpoint.parse("https://api.shadowoverbishkek.com/"),
|
||||
"non-WebSocket endpoint was accepted");
|
||||
|
||||
FRG::CampaignConfig campaign;
|
||||
campaign.id = "test_lockstep";
|
||||
campaign.networkPlayerSlots = {"player", "player2"};
|
||||
|
||||
Reference in new issue
Block a user