/* * @Author: WoNiu * @Date: 2024-03-10 20:00:57 * @LastEditTime: 2024-03-29 12:57:23 * @LastEditors: WoNiu * @Description: */ import { SpriteFrame, Texture2D, v2 } from "cc"; import { ImagePack } from "../GlobalScript/ImagePack/ImagePack"; import { ImgInfo } from "../GlobalScript/GlobalInterface/GlobalInterface"; /** interface2/event/chn_event_2020/200922_dnf_marble/ */ export const NpkImagePath = "interface2/event/chn_event_2020/200922_dnf_marble/"; export enum NpkImage { main = NpkImagePath + "00_main.img", ingame = NpkImagePath + "01_ingame.img", board = NpkImagePath + "02_board.img", gauge = NpkImagePath + "03_gauge.img", character_sd = NpkImagePath + "04_character_sd.img", monsternotice = NpkImagePath + "05_monsternotice.img", specialplace = NpkImagePath + "06_specialplace.img", conditionsofvictory = NpkImagePath + "07_conditionsofvictory.img", calendar = NpkImagePath + "08_calendar.img", bankruptcy = NpkImagePath + "bankruptcy.img", character_loop = NpkImagePath + "character_loop.img", count_font = NpkImagePath + "count_font.img", dice_1x1_db = NpkImagePath + "dice_1x1_db.img", dice_1x2 = NpkImagePath + "dice_1x2.img", dice_1x3 = NpkImagePath + "dice_1x3.img", dice_2x2_db = NpkImagePath + "dice_2x2_db.img", dice_2x3 = NpkImagePath + "dice_2x3.img", dice_2x4 = NpkImagePath + "dice_2x4.img", dice_3x3_db = NpkImagePath + "dice_3x3_db.img", dice_3x4 = NpkImagePath + "dice_3x4.img", dice_3x5 = NpkImagePath + "dice_3x5.img", dice_4x4_db = NpkImagePath + "dice_4x4_db.img", dice_4x5 = NpkImagePath + "dice_4x5.img", dice_4x6 = NpkImagePath + "dice_4x6.img", dice_5x5 = NpkImagePath + "dice_5x5.img", dice_5x6 = NpkImagePath + "dice_5x6.img", dice_6x6_db = NpkImagePath + "dice_6x6_db.img", dice_font = NpkImagePath + "dice_font.img", dungeonbg = NpkImagePath + "dungeonbg.img", fire_loop = NpkImagePath + "fire_loop.img", light01 = NpkImagePath + "light01.img", light02 = NpkImagePath + "light02.img", loading_loop = NpkImagePath + "loading_loop.img", luckycoin = NpkImagePath + "luckycoin.img", luckycoin_bg = NpkImagePath + "luckycoin_bg.img", point_loop = NpkImagePath + "point_loop.img", table_back = NpkImagePath + "table_back.img", table_dodge = NpkImagePath + "table_dodge.img", table_front = NpkImagePath + "table_front.img", title_loop = NpkImagePath + "title_loop.img", win = NpkImagePath + "win.img", } interface NpkImageCallback{ /** * @param {number} frameCount:精灵帧总数量 * @param {Map} frameMap:所有精灵帧Map */ (frameCount: number, frameMap: Map): void; } export class NpkImageTool { /** * @description: 获取Npk path路径下的所有 图片 * @param {string} path:读取路径 * @param {Function} callBack:回调((frameCount, frameMap)(number, Map) */ static GetNpkImageAll(path: string, callBack: NpkImageCallback) { // 精灵帧总数 let frameCount = 0; // 精灵帧缓存 let frameMap: Map = new Map(); ImagePack.getInstance().ReadNpkTable( "sprite/" + path.toLocaleLowerCase(), (ImgObj: { Png_List: [ImgInfo]; Png_Count: number; }) => { const Pngs = ImgObj.Png_List; // 总数量 frameCount = ImgObj.Png_Count; for (let i = 0; i < Pngs.length; i++) { const png = Pngs[i]; const spriteFrame = NpkImageTool.initSpriteFrame(png); frameMap.set(i, spriteFrame); } callBack(frameCount, frameMap); } ); } /** * @description:根据拿到的数据 初始化精灵帧 * @param {ImgInfo} Png: 动画数据 */ static initSpriteFrame(Png: ImgInfo): SpriteFrame { const spriteFrame = new SpriteFrame(); let tex = new Texture2D(); tex.reset({ width: Png.Width, height: Png.Height, format: Texture2D.PixelFormat.RGBA8888, mipmapLevel: 0, }); tex.uploadData(Png.PNGdata); // 更新 0 级 Mipmap。 tex.updateImage(); spriteFrame.texture = tex; spriteFrame.offset = v2(Png.Xpos, -Png.Ypos); return spriteFrame; } }