mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-11-14 07:47:13 +00:00
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>
62 lines
2.5 KiB
C++
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);
|
|
}
|