import { LocalDataMgr } from "../Mgr_LocalData/LocalDataMgr"; import { Global } from "../Global"; import { EResUrls } from "../ResUrl/EResUrls"; import { GameTotalType, EBundleName, QualityType, PropType, GameAbility, ESuitType } from "../const/GameEnum"; import { IData, IDataArray } from "../const/GameInterface"; import { Color } from "cc"; import { QUALITY_COLOR_PARAMS } from "../const/GGameData"; export default class GDUtils { /** 获取资源路径 */ static getName(data: IData) { switch (data.type) { case GameTotalType.EXP: return "御剑经验"; case GameTotalType.TOKEN: return Global.CsvMgr.base_res_csv[data.id].name; case GameTotalType.ITEM: return Global.CsvMgr.Items_csv[data.id].name; } return ; } /** 获取货币的名称 */ static getTokenName(type: PropType):string { return Global.CsvMgr.base_res_csv[type]? Global.CsvMgr.base_res_csv[type].name : ""; } /** 获取资源路径 */ static getUrl(data: IData) { return this.getUrl2(data.type, data.id); } /** 获取资源路径 */ static getUrl2(type: GameTotalType, id: number) { let url = ""; switch (type) { case GameTotalType.EXP: return EResUrls.Texture(`Basic/exp`); case GameTotalType.TOKEN: return EResUrls.Texture(`Basic/${Global.CsvMgr.base_res_csv[id].icon}`); case GameTotalType.ITEM: return EResUrls.Texture(`icon/${Global.CsvMgr.Items_csv[id].img}`); case GameTotalType.TREAS: return EResUrls.Texture(`icon/${Global.CsvMgr.Props_csv[id].img}`); case GameTotalType.ENEMYICON: let headicon = "Basic/exp" let enemycfg:any = Global.CsvMgr.Enemy_csv[id]; if(enemycfg == null){ enemycfg = Global.CsvMgr.Mutate_csv[id]; } if(enemycfg){ headicon = `icon/${enemycfg.headicon}` } return EResUrls.Texture(headicon); case GameTotalType.WUGONG: return EResUrls.Texture(`icon/${Global.CsvMgr.WuGong_csv[id].img}`); case GameTotalType.UNLOCK: case GameTotalType.BUILD: return EResUrls.Texture(`unlock/${type}_${id}`); case GameTotalType.SCENEBG: return EResUrls.Texture(Global.CsvMgr.Level_csv[id].name); case GameTotalType.MUTATEICON: return EResUrls.Texture(`pic/${id}`); case GameTotalType.SUITSKILL: return EResUrls.Texture(`skill/${Global.CsvMgr.Suit_eff_csv[id].img}`); } return url; } /** 获取资源路径 */ static getUBundle(type: GameTotalType,id:number = 0): EBundleName |string { switch (type) { case GameTotalType.EXP: case GameTotalType.TOKEN: case GameTotalType.ITEM: case GameTotalType.TREAS: case GameTotalType.WUGONG: case GameTotalType.UNLOCK: case GameTotalType.SUITSKILL: case GameTotalType.BUILD: return EBundleName.GeneralRes; case GameTotalType.ENEMYICON: case GameTotalType.MUTATEICON: return EBundleName.HeadIconRes; case GameTotalType.SCENEBG: return EBundleName.ScenesBgRes; } } /** 获取资源路径 */ static getAtlas(type: GameTotalType): string { switch (type) { case GameTotalType.TOKEN: return null; } return null; } /** 获取资源路径 */ static getType(tData: IData) { switch (tData.type) { case GameTotalType.TOKEN: return "货币"; case GameTotalType.ITEM: return "物品"; } return ""; } /**根据通用数据格式移除道具 * @param isAll 是否移除所有道具 只有道具和材料类型才生效 */ static RemovePropByIDataArray(data: IData | IDataArray, isAll: boolean = false) { if (Array.isArray(data)) { for (let i = 0; i < data.length; i++) { const element = data[i]; this.RemovePropByIDataArray(element, isAll); } } else { switch (data.type) { case GameTotalType.TOKEN: break default: ConsoleEx.Log("暂不支持 此类型得删除", data); break; } } } /**根据通用数据格式获取道具数量 */ static GetPropNumberByIData(data: IData): number { switch (data.type) { case GameTotalType.TOKEN: break default: ConsoleEx.Log("暂不支持 此类型得删除", data); break; } return 0; } /**分配奖励 */ static DistributeRewards(data:IDataArray|IData){ if(Array.isArray(data)){ for (let i = 0; i < data.length; i++) { this.DistributeRewards(data[i]); } }else{ switch (data.type) { case GameTotalType.TOKEN: LocalDataMgr.Token.addToken(data.id,data.num) break; case GameTotalType.ITEM: LocalDataMgr.Bag.addItem(data.id,data.num) break; case GameTotalType.ABILITY: this.GetGameDataReward(data) break; } } } /**游戏功能数据奖励 */ static GetGameDataReward(data:IData): void { switch (data.id) { case GameAbility.SHOP_REFRESH_TIMES: LocalDataMgr.Shop.addTimes(data.num); break; } } /**获取匹配的数据 */ static GetIDataByList(data: IData, list: IDataArray): IData { for (let i = 0; i < list.length; i++) { const tData = list[i]; if (data.type == tData.type && data.id == tData.id) { return tData; } } return null } /**获取品质颜色 */ static GetQualityColorHEX(quality: QualityType): string { switch (quality) { case QualityType.NULL: case QualityType.BLANCK: return "#000000"; case QualityType.GREEN: return "#6da751"; case QualityType.BLUE: return "#5679ff"; case QualityType.PURPLE: return "#a659e1"; case QualityType.ORANGE: return "#F0A03B"; case QualityType.RED: return "#F05F3B"; case QualityType.COL: return "#F05F3B"; default: return "#F05F3B"; } } /**获取品质颜色 */ static GetQualityColor(quality: QualityType): Color { switch (quality) { case QualityType.NULL: case QualityType.BLANCK: return QUALITY_COLOR_PARAMS.BLACK; case QualityType.GREEN: return QUALITY_COLOR_PARAMS.GREEN; case QualityType.BLUE: return QUALITY_COLOR_PARAMS.BLUE; case QualityType.PURPLE: return QUALITY_COLOR_PARAMS.PURPLE; case QualityType.ORANGE: return QUALITY_COLOR_PARAMS.ORANGE; case QualityType.RED: return QUALITY_COLOR_PARAMS.RED; case QualityType.COL: return QUALITY_COLOR_PARAMS.COL; default: return QUALITY_COLOR_PARAMS.RED; } } /**根据品质颜色格式化字符串 */ static GetHEXByQualityForStr(string: string, quality: QualityType): string { switch (quality) { case QualityType.NULL: case QualityType.BLANCK: return `${string}`; case QualityType.GREEN: return `${string}`; case QualityType.BLUE: return `${string}`; case QualityType.PURPLE: return `${string}`; case QualityType.ORANGE: return `${string}`; case QualityType.RED: return `${string}`; case QualityType.COL: return `${string}`; default: return `${string}`; } } /**根据套装类型格式化字符串颜色 */ static GetHEXBySuitTypeForStr(string: string, type: ESuitType): string { switch (type) { case ESuitType.YinYang: return `${string}`; case ESuitType.LieYan: return `${string}`; case ESuitType.CuiYu: return `${string}`; default: return `${string}`; } } }