More work on states, added bot
This commit is contained in:
1 parent
66e93d46f4
commit
5e9a663812
25 files changed
+1595
-740
No files matched your search
+27
-18
@@ -22,12 +22,14 @@ class IGameServer;
|
||||
|
||||
class Character {
|
||||
public:
|
||||
Character(const CharacterState& boundState, IGameServer& server,
|
||||
std::string locationId, std::string entityId)
|
||||
: characterState(boundState), gameServer_(server),
|
||||
locationId_(std::move(locationId)), entityId_(std::move(entityId)){}
|
||||
Character(IGameServer& server, std::string locationId, std::string entityId)
|
||||
: gameServer_(server), locationId_(std::move(locationId)),
|
||||
entityId_(std::move(entityId)) {}
|
||||
const std::string& entityId() const { return entityId_; }
|
||||
void bindToLocation(std::string locationId) { locationId_ = std::move(locationId); }
|
||||
// The aliasing shared_ptr keeps the owning GameSnapshot alive for as long
|
||||
// as the returned CharacterState is being read.
|
||||
std::shared_ptr<const CharacterState> stateSnapshot() const;
|
||||
static constexpr float kAttackRange = 1.25f;
|
||||
|
||||
// ---- Asset loading ----
|
||||
@@ -63,6 +65,10 @@ public:
|
||||
void drawName(TextRenderer& textRenderer,
|
||||
const Eigen::Matrix4f& cameraViewMatrix,
|
||||
const Eigen::Matrix4f& projectionMatrix);
|
||||
void drawPlayerName(TextRenderer& textRenderer,
|
||||
const Eigen::Matrix4f& cameraViewMatrix,
|
||||
const Eigen::Matrix4f& projectionMatrix,
|
||||
const std::string& displayName);
|
||||
void drawHealthBar(Renderer& renderer,
|
||||
const Eigen::Matrix4f& cameraViewMatrix,
|
||||
const Eigen::Matrix4f& projectionMatrix);
|
||||
@@ -84,11 +90,11 @@ public:
|
||||
const Eigen::Matrix4f& lightFromCamera, GLuint shadowMapTex,
|
||||
const float* ambientColor, const float* fogColor);
|
||||
|
||||
// ---- Query helpers (delegate to state) ----
|
||||
bool isMoving() const { return characterState.isMoving(); }
|
||||
const Eigen::Vector3f& getRequestedWalkTarget() const { return characterState.getRequestedWalkTarget(); }
|
||||
Eigen::Vector3f getCurrentNavigationTarget() const { return characterState.getCurrentNavigationTarget(); }
|
||||
float getHp() const { return characterState.getHp(); }
|
||||
// ---- Query helpers (read immutable snapshots) ----
|
||||
bool isMoving() const;
|
||||
Eigen::Vector3f getRequestedWalkTarget() const;
|
||||
Eigen::Vector3f getCurrentNavigationTarget() const;
|
||||
float getHp() const;
|
||||
|
||||
// ---- Weapon rendering data (initialized from state.creationInfo by createFromState) ----
|
||||
VertexRenderStruct weaponMesh;
|
||||
@@ -109,7 +115,6 @@ private:
|
||||
friend class LocationEditor;
|
||||
friend class PathVisualization;
|
||||
friend class InternalGameServer;
|
||||
const CharacterState& characterState; // private non-owning binding to server-owned storage
|
||||
IGameServer& gameServer_;
|
||||
std::string locationId_;
|
||||
std::string entityId_;
|
||||
@@ -120,28 +125,32 @@ private:
|
||||
VertexRenderStruct healthBarMesh;
|
||||
std::unordered_map<std::string, std::shared_ptr<Texture>> meshTextures;
|
||||
|
||||
AnimationState resolveActiveState() const;
|
||||
bool prepareGpuSkinning();
|
||||
void drawAttachedWeapon(Renderer& renderer);
|
||||
AnimationState resolveActiveState(const CharacterState& state) const;
|
||||
bool prepareGpuSkinning(const CharacterState& state);
|
||||
void drawAttachedWeapon(Renderer& renderer, const CharacterState& state);
|
||||
|
||||
void drawGpuSkinning(Renderer& renderer);
|
||||
void drawShadowDepthGpuSkinning(Renderer& renderer);
|
||||
void drawShadowDepthCpu(Renderer& renderer);
|
||||
void drawGpuSkinningWithShadow(Renderer& renderer, const Eigen::Matrix4f& lightFromCamera, GLuint shadowMapTex, const Eigen::Vector3f& lightDirCamera);
|
||||
void drawCpuWithShadow(Renderer& renderer, const Eigen::Matrix4f& lightFromCamera, GLuint shadowMapTex, const Eigen::Vector3f& lightDirCamera);
|
||||
void drawGpuSkinning(Renderer& renderer, const CharacterState& state);
|
||||
void drawShadowDepthGpuSkinning(Renderer& renderer, const CharacterState& state);
|
||||
void drawShadowDepthCpu(Renderer& renderer, const CharacterState& state);
|
||||
void drawGpuSkinningWithShadow(Renderer& renderer, const CharacterState& state, const Eigen::Matrix4f& lightFromCamera, GLuint shadowMapTex, const Eigen::Vector3f& lightDirCamera);
|
||||
void drawCpuWithShadow(Renderer& renderer, const CharacterState& state, const Eigen::Matrix4f& lightFromCamera, GLuint shadowMapTex, const Eigen::Vector3f& lightDirCamera);
|
||||
void drawNightGpuSkinning(Renderer& renderer,
|
||||
const CharacterState& state,
|
||||
const float* plPosEye, const float* plDirEye, const float* plColors, int plCount,
|
||||
const float* plWorldXZ, const float* plLimitXZ, const Eigen::Matrix4f& cameraViewInverse,
|
||||
const float* ambientColor, const float* fogColor);
|
||||
void drawNightCpu(Renderer& renderer,
|
||||
const CharacterState& state,
|
||||
const float* plPosEye, const float* plDirEye, const float* plColors, int plCount,
|
||||
const float* plWorldXZ, const float* plLimitXZ, const Eigen::Matrix4f& cameraViewInverse,
|
||||
const float* ambientColor, const float* fogColor);
|
||||
void drawNightGpuSkinningWithShadow(Renderer& renderer,
|
||||
const CharacterState& state,
|
||||
const float* plPosEye, const float* plDirEye, const float* plColors, int plCount,
|
||||
const float* plWorldXZ, const float* plLimitXZ, const Eigen::Matrix4f& cameraViewInverse,
|
||||
const Eigen::Matrix4f& lightFromCamera, GLuint shadowMapTex, const float* ambientColor, const float* fogColor);
|
||||
void drawNightCpuWithShadow(Renderer& renderer,
|
||||
const CharacterState& state,
|
||||
const float* plPosEye, const float* plDirEye, const float* plColors, int plCount,
|
||||
const float* plWorldXZ, const float* plLimitXZ, const Eigen::Matrix4f& cameraViewInverse,
|
||||
const Eigen::Matrix4f& lightFromCamera, GLuint shadowMapTex, const float* ambientColor, const float* fogColor);
|
||||
|
||||
Reference in new issue
Block a user