SwitchGame/source_game/Asset/AnimationStruct.h

45 lines
1.4 KiB
C
Raw Normal View History

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
};