Files
shadow-over-bishkek001/src/game_server/IGameServerHost.h
T

46 lines
1.4 KiB
C++

#pragma once
#include "IGameServer.h"
#include <memory>
#include <string>
#include <vector>
class AudioPlayerAsync;
namespace FRG {
class Location;
struct LocationConfig;
struct LocationSetup;
// Client-only lifecycle and presentation integration for the in-process server.
// The public gameplay contract remains IGameServer and is graphics-free.
class IGameServerHost {
public:
virtual ~IGameServerHost() = default;
virtual void initializeCampaign(
const std::string& campaignId, const std::string& questsPath,
const std::string& zipFile) = 0;
virtual void clearCampaign() = 0;
virtual void resetCampaign(
const std::string& questsPath, const std::string& zipFile) = 0;
virtual bool prepareLocation(const LocationConfig& config) = 0;
virtual void setupRuntimeLocation(
const std::string& id, const std::shared_ptr<Location>& location,
LocationSetup params, AudioPlayerAsync* audioPlayer) = 0;
virtual Location* runtimeLocation(const std::string& id) const = 0;
virtual bool hasRuntimeLocation(const std::string& id) const = 0;
virtual std::vector<std::string> loadedRuntimeLocationIds() const = 0;
virtual void clearRuntimeLocations(bool retainState) = 0;
virtual void bindRuntimeLocation(
const std::string& id, std::shared_ptr<Location> location) = 0;
virtual void update(std::int64_t deltaMs) = 0;
virtual void save(nlohmann::json& out) = 0;
virtual void load(const nlohmann::json& in) = 0;
};
} // namespace FRG