add mod download warning

This commit is contained in:
Lion Kortlepel 2024-06-04 16:45:02 +02:00
parent 8c9d3a5455
commit 3db1f6773e
No known key found for this signature in database
GPG Key ID: 4322FF2B4C71259B
3 changed files with 32 additions and 1 deletions

View File

@ -13,6 +13,8 @@ void NetReset();
extern bool Dev;
extern int ping;
extern bool ModWarningConfirmed;
[[noreturn]] void CoreNetwork();
extern int ProxyPort;
extern int ClientID;
@ -46,3 +48,4 @@ void TCPClientMain(const std::string& IP,int Port);
void UDPClientMain(const std::string& IP,int Port);
void TCPGameServer(const std::string& IP, int Port);

View File

@ -58,6 +58,8 @@ bool IsAllowedLink(const std::string& Link) {
return std::regex_search(Link,link_match, link_pattern) && link_match.position() == 0;
}
bool ModWarningConfirmed = false;
void Parse(std::string Data,SOCKET CSocket){
char Code = Data.at(0), SubCode = 0;
if(Data.length() > 1)SubCode = Data.at(1);
@ -87,6 +89,17 @@ void Parse(std::string Data,SOCKET CSocket){
}
Data.clear();
break;
// response to "WMODS_FOUND" message, either Y (yes ok) or N (no)
case 'W': {
if (SubCode == 'Y') {
ModWarningConfirmed = true;
} else if (SubCode == 'N') {
ModWarningConfirmed = false;
NetReset();
Terminate = true;
TCPTerminate = true;
}
}
case 'P':
Data = Code + std::to_string(ProxyPort);
break;

View File

@ -221,6 +221,21 @@ void SyncResources(SOCKET Sock){
std::string Ret = Auth(Sock);
if(Ret.empty())return;
ModWarningConfirmed = false;
GameSend("WMODS_FOUND");
while (!Terminate && !ModWarningConfirmed) {
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
if (!ModWarningConfirmed) {
UlStatus = "UlMods rejected!";
info("Mods rejected by user!");
// game has already cancelled by now
return;
}
info("Checking Resources...");
CheckForDir();