v1.4.4
This commit is contained in:
commit
9c94d113d3
10260 changed files with 1237388 additions and 0 deletions
122
source/game/StarServerClientContext.hpp
Normal file
122
source/game/StarServerClientContext.hpp
Normal file
|
@ -0,0 +1,122 @@
|
|||
#ifndef STAR_CLIENT_CONTEXT_SERVER_HPP
|
||||
#define STAR_CLIENT_CONTEXT_SERVER_HPP
|
||||
|
||||
#include "StarNetElementSystem.hpp"
|
||||
#include "StarThread.hpp"
|
||||
#include "StarUuid.hpp"
|
||||
#include "StarJsonRpc.hpp"
|
||||
#include "StarDamageTypes.hpp"
|
||||
#include "StarGameTypes.hpp"
|
||||
#include "StarHostAddress.hpp"
|
||||
#include "StarClientContext.hpp"
|
||||
#include "StarWorldStorage.hpp"
|
||||
#include "StarSystemWorld.hpp"
|
||||
|
||||
namespace Star {
|
||||
|
||||
STAR_CLASS(WorldServerThread);
|
||||
STAR_CLASS(SystemWorldServerThread);
|
||||
STAR_CLASS(ServerClientContext);
|
||||
|
||||
class ServerClientContext {
|
||||
public:
|
||||
ServerClientContext(ConnectionId clientId, Maybe<HostAddress> remoteAddress, Uuid playerUuid,
|
||||
String playerName, String playerSpecies, bool canBecomeAdmin, WorldChunks initialShipChunks);
|
||||
|
||||
ConnectionId clientId() const;
|
||||
Maybe<HostAddress> const& remoteAddress() const;
|
||||
Uuid const& playerUuid() const;
|
||||
String const& playerName() const;
|
||||
String const& playerSpecies() const;
|
||||
bool canBecomeAdmin() const;
|
||||
String descriptiveName() const;
|
||||
|
||||
// Register additional rpc methods from other server side services.
|
||||
void registerRpcHandlers(JsonRpcHandlers const& rpcHandlers);
|
||||
|
||||
// The coordinate for the world which the *player's* ship is currently
|
||||
// orbiting, if it is currently orbiting a world.
|
||||
CelestialCoordinate shipCoordinate() const;
|
||||
void setShipCoordinate(CelestialCoordinate shipCoordinate);
|
||||
|
||||
SystemLocation shipLocation() const;
|
||||
void setShipLocation(SystemLocation location);
|
||||
|
||||
// Warp action and warp mode to the planet the player is currently orbiting
|
||||
// valid when the player is on any ship world orbiting a location
|
||||
Maybe<pair<WarpAction, WarpMode>> orbitWarpAction() const;
|
||||
void setOrbitWarpAction(Maybe<pair<WarpAction, WarpMode>> warpAction);
|
||||
|
||||
bool isAdmin() const;
|
||||
void setAdmin(bool admin);
|
||||
|
||||
EntityDamageTeam team() const;
|
||||
void setTeam(EntityDamageTeam team);
|
||||
|
||||
ShipUpgrades shipUpgrades() const;
|
||||
void setShipUpgrades(ShipUpgrades shipUpgrades);
|
||||
|
||||
WorldChunks shipChunks() const;
|
||||
void updateShipChunks(WorldChunks newShipChunks);
|
||||
|
||||
ByteArray writeInitialState() const;
|
||||
|
||||
void readUpdate(ByteArray data);
|
||||
ByteArray writeUpdate();
|
||||
|
||||
void setPlayerWorld(WorldServerThreadPtr worldThread);
|
||||
WorldServerThreadPtr playerWorld() const;
|
||||
WorldId playerWorldId() const;
|
||||
void clearPlayerWorld();
|
||||
|
||||
void setSystemWorld(SystemWorldServerThreadPtr systemWorldThread);
|
||||
SystemWorldServerThreadPtr systemWorld() const;
|
||||
void clearSystemWorld();
|
||||
|
||||
WarpToWorld playerReturnWarp() const;
|
||||
void setPlayerReturnWarp(WarpToWorld warp);
|
||||
|
||||
WarpToWorld playerReviveWarp() const;
|
||||
void setPlayerReviveWarp(WarpToWorld warp);
|
||||
|
||||
// Store and load the data for this client that should be persisted on the
|
||||
// server, such as celestial log data, admin state, team, and current ship
|
||||
// location, and warp history. Does not store ship data or ship upgrades.
|
||||
void loadServerData(Json const& store);
|
||||
Json storeServerData();
|
||||
|
||||
private:
|
||||
ConnectionId const m_clientId;
|
||||
Maybe<HostAddress> const m_remoteAddress;
|
||||
Uuid const m_playerUuid;
|
||||
String const m_playerName;
|
||||
String const m_playerSpecies;
|
||||
bool const m_canBecomeAdmin;
|
||||
|
||||
mutable RecursiveMutex m_mutex;
|
||||
|
||||
WorldChunks m_shipChunks;
|
||||
WorldChunks m_shipChunksUpdate;
|
||||
|
||||
SystemLocation m_shipSystemLocation;
|
||||
JsonRpc m_rpc;
|
||||
WorldServerThreadPtr m_worldThread;
|
||||
WarpToWorld m_returnWarp;
|
||||
WarpToWorld m_reviveWarp;
|
||||
|
||||
SystemWorldServerThreadPtr m_systemWorldThread;
|
||||
|
||||
NetElementTopGroup m_netGroup;
|
||||
uint64_t m_netVersion = 0;
|
||||
|
||||
NetElementData<Maybe<pair<WarpAction, WarpMode>>> m_orbitWarpActionNetState;
|
||||
NetElementData<WorldId> m_playerWorldIdNetState;
|
||||
NetElementBool m_isAdminNetState;
|
||||
NetElementData<EntityDamageTeam> m_teamNetState;
|
||||
NetElementData<ShipUpgrades> m_shipUpgrades;
|
||||
NetElementData<CelestialCoordinate> m_shipCoordinate;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue