feat(animation): 添加动画状态回调支持
refactor(character): 重构角色动作处理逻辑 feat(swordman): 实现剑士基础攻击和技能1处理 refactor(state): 优化状态机与动作上下文管理 feat(input): 改进输入系统支持动作请求队列 refactor(movement): 重构移动系统支持行走/奔跑模式
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
#pragma once
|
||||
|
||||
#include "character/states/CharacterStateBase.h"
|
||||
#include <string>
|
||||
|
||||
namespace frostbite2D {
|
||||
|
||||
struct SwordmanActionUpdateResult {
|
||||
enum class Type {
|
||||
Running,
|
||||
Finished,
|
||||
Transition,
|
||||
};
|
||||
|
||||
static SwordmanActionUpdateResult Running() {
|
||||
return {};
|
||||
}
|
||||
|
||||
static SwordmanActionUpdateResult Finished() {
|
||||
SwordmanActionUpdateResult result;
|
||||
result.type = Type::Finished;
|
||||
return result;
|
||||
}
|
||||
|
||||
static SwordmanActionUpdateResult TransitionTo(const std::string& requestedActionId,
|
||||
bool requireBufferedInput = true) {
|
||||
SwordmanActionUpdateResult result;
|
||||
result.type = Type::Transition;
|
||||
result.requestedActionId = requestedActionId;
|
||||
result.requireBufferedInput = requireBufferedInput;
|
||||
return result;
|
||||
}
|
||||
|
||||
Type type = Type::Running;
|
||||
std::string requestedActionId;
|
||||
bool requireBufferedInput = true;
|
||||
};
|
||||
|
||||
class ISwordmanActionHandler {
|
||||
public:
|
||||
virtual ~ISwordmanActionHandler() = default;
|
||||
|
||||
virtual const std::string& GetActionId() const = 0;
|
||||
virtual void OnEnter(CharacterStateContext& context,
|
||||
const CharacterActionDefinition& action) = 0;
|
||||
virtual SwordmanActionUpdateResult OnUpdate(CharacterStateContext& context,
|
||||
const CharacterActionDefinition& action) = 0;
|
||||
virtual void OnExit(CharacterStateContext& context,
|
||||
const CharacterActionDefinition& action) {
|
||||
(void)context;
|
||||
(void)action;
|
||||
}
|
||||
};
|
||||
|
||||
class SwordmanActionHandlerBase : public ISwordmanActionHandler {
|
||||
public:
|
||||
explicit SwordmanActionHandlerBase(std::string actionId);
|
||||
~SwordmanActionHandlerBase() override = default;
|
||||
|
||||
const std::string& GetActionId() const override { return actionId_; }
|
||||
|
||||
protected:
|
||||
std::string actionId_;
|
||||
};
|
||||
|
||||
} // namespace frostbite2D
|
||||
Reference in New Issue
Block a user