#pragma once #include #include #include #include #include #include #include "Tool/Ifstream_NPK.h" #include class Asset_ImagePack { public: struct NpkInfo { int Offset; int Length; std::string Path; }; // PNG结构体 struct ImgInfo { // 图片格式 int Type; // 压缩类型 int CmpType; // 宽度 int Width; // 高度 int Height; // 大小 int Size; // Xpos int Xpos; // Ypos int Ypos; // Xpos int XposEx = 0; // Ypos int YposEx = 0; // 帧域X int FrameXpos; // 帧域Y int FrameYpos; // 偏移 int Offset; // Png位图数据 BYTE *PNGdata; }; struct IMG // npk的img的结构体 { std::string lpImgName; // img文件的路径 int img_index; // img文件在npk文件里的序号 unsigned imgOffset; unsigned imgSize; std::string lpBelongsFile; // 这个img属于哪个npk文件 int png_sum; // 这个img文件有多少个 图片 ImgInfo *lp_lplist; // 图片的数组.. Uint32 UseTime = 0; }; public: Asset_ImagePack(const Asset_ImagePack &) = delete; Asset_ImagePack &operator=(const Asset_ImagePack &) = delete; Asset_ImagePack(Asset_ImagePack &&) = delete; Asset_ImagePack &operator=(Asset_ImagePack &&) = delete; // 全局访问点 static Asset_ImagePack &GetInstance() { static Asset_ImagePack instance; // 局部静态变量,保证只初始化一次 return instance; } public: void Init(); void ParseColor(BYTE *Tab, int Type, BYTE *SaveByte, int Offset); void LoadImgToMem(IMG *p); IMG *GetIMG(std::string imgName); private: Asset_ImagePack(/* args */); ~Asset_ImagePack(); std::map map_npk; };