2025-09-15 11:28:54 +08:00
|
|
|
#pragma once
|
|
|
|
|
#include <vector>
|
|
|
|
|
#include <string>
|
|
|
|
|
#include <variant>
|
|
|
|
|
#include <unordered_map>
|
|
|
|
|
#include <SDL.h>
|
2025-09-18 15:21:43 +08:00
|
|
|
#include "Tool/Blob.hpp"
|
|
|
|
|
#include "Tool/Tool_String.h"
|
2025-09-15 11:28:54 +08:00
|
|
|
|
|
|
|
|
namespace AniScriptParser
|
|
|
|
|
{
|
2025-09-18 15:21:43 +08:00
|
|
|
using AniFlag = std::variant<
|
|
|
|
|
int,
|
|
|
|
|
float,
|
|
|
|
|
SDL_Point,
|
|
|
|
|
SDL_FPoint,
|
|
|
|
|
std::string,
|
|
|
|
|
std::vector<int>,
|
|
|
|
|
std::vector<float>>;
|
|
|
|
|
struct AniFrame
|
2025-09-15 11:28:54 +08:00
|
|
|
{
|
2025-09-18 15:21:43 +08:00
|
|
|
std::string Img_Path; // img路径
|
|
|
|
|
int Img_Index; // img索引
|
|
|
|
|
SDL_Point Img_Pos; // img位置
|
|
|
|
|
std::vector<std::vector<int>> AttackBox; // 攻击框
|
|
|
|
|
std::vector<std::vector<int>> DamageBox; // 受击框
|
|
|
|
|
std::unordered_map<std::string, AniFlag> Flag; // Frame特效数据
|
|
|
|
|
int Delay; // 延迟
|
2025-09-15 11:28:54 +08:00
|
|
|
};
|
2025-09-18 15:21:43 +08:00
|
|
|
struct AniInfo
|
2025-09-15 11:28:54 +08:00
|
|
|
{
|
2025-09-18 15:21:43 +08:00
|
|
|
std::vector<std::string> Img_List; // img列表
|
|
|
|
|
std::vector<AniFrame> Frame; // ani列表
|
|
|
|
|
std::unordered_map<std::string, AniFlag> Flag; // ani特效数据
|
2025-09-15 11:28:54 +08:00
|
|
|
};
|
|
|
|
|
|
2025-09-18 15:21:43 +08:00
|
|
|
// 工具函数
|
|
|
|
|
std::string Get_Ani_Flag(int data);
|
|
|
|
|
std::string Get_Ani_Effect_Type(int data);
|
|
|
|
|
std::string Get_Ani_Flip_Type(int data);
|
|
|
|
|
std::string Get_Ani_Damage_Type(int data);
|
|
|
|
|
|
|
|
|
|
// Ani脚本的读取逻辑
|
|
|
|
|
AniInfo StructAniInfo(Blob blob);
|
2025-09-15 11:28:54 +08:00
|
|
|
};
|