SwitchGame/source_game/Asset/AnimationStruct.h

45 lines
1.4 KiB
C++

#pragma once
#include <vector>
#include <string>
#include <variant>
#include <unordered_map>
#include <SDL.h>
#include "Tool/Blob.hpp"
#include "Tool/Tool_String.h"
namespace AniScriptParser
{
using AniFlag = std::variant<
int,
float,
SDL_Point,
SDL_FPoint,
std::string,
std::vector<int>,
std::vector<float>>;
struct AniFrame
{
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; // 延迟
};
struct AniInfo
{
std::vector<std::string> Img_List; // img列表
std::vector<AniFrame> Frame; // ani列表
std::unordered_map<std::string, AniFlag> Flag; // ani特效数据
};
// 工具函数
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);
};