Files
DarkflameServer/dNet/ZoneInstanceManager.cpp
Aaron Kimbrell 37cc844562 revert(master): the edit mode flag on a private instance
This reverts commit 4cf0909d. Nothing starts an edit mode instance any more. Its two
fixes that had nothing to do with edit mode come back in the next commit.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-10 19:34:43 -06:00

62 lines
2.5 KiB
C++

#include "ZoneInstanceManager.h"
// Custom Classes
#include "MasterPackets.h"
// Static Variables
ZoneInstanceManager* ZoneInstanceManager::m_Address = nullptr;
//! Requests a zone transfer
void ZoneInstanceManager::RequestZoneTransfer(dServer* server, uint32_t zoneID, uint32_t zoneClone, bool mythranShift, TransferCallback callback) {
RequestZoneTransfer(server, zoneID, zoneClone, mythranShift, Stamps{}, [callback](bool mythranShift, uint32_t zoneID, uint32_t zoneInstance, uint32_t zoneClone, std::string serverIP, uint16_t serverPort, Stamps) {
callback(mythranShift, zoneID, zoneInstance, zoneClone, serverIP, serverPort);
});
}
void ZoneInstanceManager::RequestZoneTransfer(dServer* server, uint32_t zoneID, uint32_t zoneClone, bool mythranShift, const Stamps& stamps, StampedTransferCallback callback) {
const auto nextID = ++currentRequestID;
requests[nextID] = callback;
MasterPackets::RequestZoneTransfer request;
request.requestID = nextID;
request.mythranShift = mythranShift;
request.zoneID = zoneID;
request.cloneID = zoneClone;
request.stamps = stamps;
MasterPackets::SendToMaster(request, server);
}
//! Handles a zone transfer response
void ZoneInstanceManager::HandleRequestZoneTransferResponse(const MasterPackets::RequestZoneTransferResponse& response) {
const auto entry = requests.find(response.requestID);
if (entry != requests.end()) {
entry->second(response.mythranShift > 0, response.zoneID, response.zoneInstance, response.zoneClone, response.serverIP.string, response.serverPort, response.stamps);
requests.erase(entry);
}
}
void ZoneInstanceManager::CreatePrivateZone(dServer* server, uint32_t zoneID, uint32_t zoneClone, const std::string& password) {
MasterPackets::CreatePrivateZone request;
request.zoneID = zoneID;
request.cloneID = zoneClone;
request.password = password;
MasterPackets::SendToMaster(request, server);
}
void ZoneInstanceManager::RequestPrivateZone(
dServer* server,
bool mythranShift,
const std::string& password,
TransferCallback callback) {
const auto nextID = ++currentRequestID;
requests[nextID] = [callback](bool mythranShift, uint32_t zoneID, uint32_t zoneInstance, uint32_t zoneClone, std::string serverIP, uint16_t serverPort, Stamps) {
callback(mythranShift, zoneID, zoneInstance, zoneClone, serverIP, serverPort);
};
MasterPackets::RequestPrivateZone request;
request.requestID = nextID;
request.mythranShift = mythranShift;
request.password = password;
MasterPackets::SendToMaster(request, server);
}