osb/source/game/StarPlayerFactory.hpp
2024-02-25 15:46:47 +01:00

70 lines
1.3 KiB
C++

#pragma once
#include "StarItemDescriptor.hpp"
#include "StarHumanoid.hpp"
#include "StarEntitySplash.hpp"
namespace Star {
STAR_CLASS(Player);
STAR_STRUCT(PlayerConfig);
STAR_CLASS(PlayerFactory);
STAR_EXCEPTION(PlayerException, StarException);
// The player has a large number of shared config states, so this is a shared
// config object to hold them.
struct PlayerConfig {
PlayerConfig(JsonObject const& cfg);
HumanoidIdentity defaultIdentity;
Humanoid::HumanoidTiming humanoidTiming;
List<ItemDescriptor> defaultItems;
List<ItemDescriptor> defaultBlueprints;
RectF metaBoundBox;
Json movementParameters;
Json zeroGMovementParameters;
Json statusControllerSettings;
float footstepTiming;
Vec2F footstepSensor;
Vec2F underwaterSensor;
float underwaterMinWaterLevel;
String effectsAnimator;
float teleportInTime;
float teleportOutTime;
float deployInTime;
float deployOutTime;
String bodyMaterialKind;
EntitySplashConfig splashConfig;
Json companionsConfig;
Json deploymentConfig;
StringMap<String> genericScriptContexts;
};
class PlayerFactory {
public:
PlayerFactory();
PlayerPtr create() const;
PlayerPtr diskLoadPlayer(Json const& diskStore) const;
PlayerPtr netLoadPlayer(ByteArray const& netStore) const;
private:
PlayerConfigPtr m_config;
};
}