using Cysharp.Threading.Tasks; using System; using System.Linq; using System.Text.RegularExpressions; using UnityEngine; using UnityEngine.UI; public delegate void SetRewardItemCallBack(GameObject go); public static class RewardUtil { //public static void RewardItem(GameObject go, RewardItemData data, SetRewardItemCallBack callBack = null) //{ // ParseRewardItem rewItemData = ParseItemData(data); // SetRewItem(go, rewItemData, callBack); // UIEvent.Get(go).onClick = (e) => // { // UITool.OpenPropTips(rewItemData.itemId); // }; //} //public static void RewardItem(GameObject go, ParseRewardItem data, SetRewardItemCallBack callBack = null) //{ // SetRewItem(go, data, callBack); //} //public static void SetRewItem(GameObject go, ParseRewardItem data, SetRewardItemCallBack callBack = null) //{ // go.transform.Find("di").GetComponent().SetSprite_Quality_Prop((PropQuality)data.quality); // go.transform.Find("icon").GetComponent().SetAtlasSprite(data.atlas, data.icon); // go.transform.Find("num").GetComponent().text = "x" + data.count; // callBack?.Invoke(go); //} /// /// 设置头像框 /// /// Image组件 /// 头像框名 public static async void SetSprite_HeadBg(Image img, string icon, bool isNativeSize = false) { await img.SetAtlasSprite("Assets/Art/UI/Picture/TXK/atlas_TXK", icon, isNativeSize); img.gameObject.SetActive(true); } public static ParseRewardItem[] ParseItemDatas(RewardItemData[] datas) { ParseRewardItem[] list = new ParseRewardItem[datas.Length]; for (int i = 0; i < datas.Length; i++) { // list[i] = ParseItemData(datas[i]); } return list; } // public static ParseRewardItem ParseItemData(RewardItemData data) // { // ParseRewardItem parseData = new ParseRewardItem(); // parseData.itemId = data.itemId; // parseData.atlas = "Assets/Art/UI/Picture/Article/atlas_Article"; // parseData.type = (RewardType)data.t; // switch (parseData.type) // { // case RewardType.Item: // { // var cfg = Config_PropItem.GetItem(data.itemId); // if (cfg != null) // { // parseData.name = cfg.name_i18; // parseData.icon = cfg.img; // parseData.quality = cfg.colour; // parseData.star = 0; // goto finish; // } // } // // { // var cfg = Config_MaterialItem.GetItem(data.itemId); // if (cfg != null) // { // parseData.name = cfg.name_i18; // parseData.icon = cfg.img; // parseData.quality = cfg.colour; // parseData.star = 0; // goto finish; // } // } // // { // var cfg = Config_FakeItem.GetItem(data.itemId); // if (cfg != null) // { // parseData.name = cfg.name_i18; // parseData.icon = cfg.img; // parseData.quality = cfg.colour; // parseData.star = 0; // goto finish; // } // } // // { // var cfg = Config_DebrisItem.GetItem(data.itemId); // if (cfg != null) // { // parseData.name = cfg.name_i18; // parseData.icon = cfg.img; // parseData.quality = cfg.colour; // parseData.star = 0; // goto finish; // } // } // // GlobalUtil.LogDoubleError("Config_ x表没有该id:", $"{data.itemId}"); // // break; // case RewardType.Coin: // { // FakeItemConfigItem fakeCfg = Config_FakeItem.GetItem(Config_Coin.GetItem_Safe(data.c).showItemId); // parseData.name = fakeCfg.name_i18; // parseData.icon = fakeCfg.img; // parseData.itemId = fakeCfg.itemId; // parseData.quality = fakeCfg.colour; // parseData.star = 0; // } // break; // case RewardType.Exp: // { // FakeItemConfigItem fakeCfg = Config_FakeItem.GetItem(9501004); // parseData.name = fakeCfg.name_i18; // parseData.icon = fakeCfg.img; // parseData.itemId = 9501004; // parseData.quality = fakeCfg.colour; // parseData.star = 0; // } // break; // case RewardType.Hero: // { // HeroConfigItem heroCfg = Config_Hero.GetItem(data.id); // if (heroCfg == null) // GlobalUtil.LogDoubleError_ExcelBug("Hero表没有该英雄", "heroId:", data.id); // // FakeItemConfigItem fakeCfg = Config_FakeItem.GetItem(heroCfg.item_icon); // //parseData.atlas = "Assets/Art/UI/Picture/HeadIcon/atlas_tx";//美术出图后注释掉。把方向头像打进物品。 // if (fakeCfg == null) // { // Debug.LogError($"fakeCfg 为空 找不到为道具:{heroCfg.item_icon}"); // } // else // { // parseData.name = fakeCfg.name_i18; // parseData.icon = fakeCfg.img; // parseData.quality = fakeCfg.colour; // parseData.star = fakeCfg.star; // parseData.itemId = fakeCfg.itemId; // parseData.heroId = data.id; // } // } // break; // case RewardType.Relic: // { // var relicCfg = Config_Relic.GetItem(data.RelicTpId); // FakeItemConfigItem fakeCfg = Config_FakeItem.GetItem(relicCfg.item_icon); // parseData.name = relicCfg.name_i18; // parseData.icon = fakeCfg.img; // parseData.quality = relicCfg.colour; // parseData.itemId = fakeCfg.itemId; // parseData.star = 0; // } // break; // case RewardType.Privilege: // { // parseData.cardId = data.cardId; // parseData.day = data.day; // } // break; // case RewardType.Pay: // { // parseData.payGiftId = data.v; // } // break; // default: // break; // } // // finish: // parseData.count = data.v != 0 ? data.v : data.amount; // if (parseData.count == 0) // parseData.count = 1; // return parseData; // } [Obsolete("使用 SetSprite_HeadIcon()方法")] public static void SetHeadIcon(GameObject go, string headName) { Image img = go.GetComponent(); if (img == null) return; SetSprite_HeadIcon(img, headName); //img.SetAtlasSprite("Assets/Art/UI/Picture/HeadIcon/atlas_HeadIcon", headName); } // public static RewardItemData[] GetAllAwards(int id) // { // var item = Config_Award.GetItem(id); // if (item == null) // return GetAllAwards(""); // else // return GetAllAwards(Config_Award.GetItem(id).reward); // } public static RewardItemData[] GetAllAwards(string awardMsg) { string reward = ""; string separator = ";"; if (awardMsg.StartsWith("all:")) { reward = awardMsg.Split(":")[1]; } else if (awardMsg.StartsWith("ran:")) //ran:数字:*** { reward = Regex.Replace(awardMsg.Split(":")[2], "#\\d+", ""); separator = "|"; } else { reward = awardMsg; } string[] strings = reward.Split(separator).Where((s) => { return !string.IsNullOrEmpty(s); }).ToArray(); RewardItemData[] list = new RewardItemData[strings.Length]; for (int i = 0; i < strings.Length; i++) { list[i] = GetRewardItem(strings[i]); } return list; } public static RewardItemData GetRewardItem(string value) { RewardItemData item = new RewardItemData(); string[] content = value.Split(","); if (content[0] == "coin") { item.t = (int)RewardType.Coin; item.c = int.Parse(content[1]); item.v = int.Parse(content[2]); } else if (content[0] == "item") { item.t = (int)RewardType.Item; item.itemId = int.Parse(content[1]); item.v = int.Parse(content[2]); } else if (content[0] == "teamexp") { item.t = (int)RewardType.Exp; item.v = int.Parse(content[1]); } else if (content[0] == "hero") { item.t = (int)RewardType.Hero; item.id = int.Parse(content[1]); } else if (content[0] == "seasonexp") { item.t = (int)RewardType.Item; item.itemId = 9501025;//int.Parse(content[1]); item.v = int.Parse(content[1]); } return item; } /// /// 判断玩家是否拥有物品 /// /// // public static bool GetRewardIsHave(RewardItemData[] rewards) // { // foreach (var item in rewards) // { // if (item.itemId > 0) // { // if (Game.backpack.GetCount(item.itemId) < item.v) // return false; // } // else // { // switch ((RewardType)item.t) // { // case RewardType.Coin: // if (Game.token.GetTokenCount(item.c) < item.v) // return false; // break; // // } // // } // // } // return true; // } /// /// 设置物品 品质框 /// /// /// public static void SetSprite_Quality_Prop(Image img, PropQuality type) { if (RewardConst.propQuality.ContainsKey(type)) img.SetAtlasSprite("Assets/Art/UI/Picture/PropQuality/atlas_PropQuality", RewardConst.propQuality[type]); } public static void SetSprite_Quality_Prop(Image img, int type) { var t = (PropQuality)type; SetSprite_Quality_Prop(img, t); } /// /// 设置物品 图标 /// /// /// public static void SetSprite_Icon(Image img, string icon) { img.SetAtlasSprite("Assets/Art/UI/Picture/Article/atlas_Article", icon); img.gameObject.SetActive(true); } /// /// 设置神器 大图标 /// /// /// public async static UniTask SetSprite_RelicIcon(Image img, string icon) { await img.SetAtlasSprite("Assets/Art/UI/Picture/WeaponsIcon/atlas_WeaponsIcon", icon); img.gameObject.SetActive(true); } /// /// 设置神器 小图标 /// /// /// public static async UniTask SetSprite_RelicIcon_Small(Image img, string icon) { await img.SetAtlasSprite("Assets/Art/UI/Picture/WeaponsIconSmall/atlas_WeaponsIconSmall", icon); img.gameObject.SetActive(true); } /// /// 设置神器 图标 /// /// /// public static async void SetSprite_RelicIcon(Image img, string icon, string jsonStr) { await SetSprite_RelicIcon(img, icon); //img.SetAtlasSprite($"Assets/Art/UI/Picture/WeaponsIcon/atlas_WeaponsIcon", icon); img.SetNativeSize(); //img.gameObject.SetActive(true); //Relic_Icon_Json json = jsonStr.FromJson(); // img.transform.localEulerAngles = new Vector3(0, 0, json.angle); // img.transform.localScale = json.isTurn == 0 ? Vector3.one * json.scale : new Vector3(-1, 1, 1) * json.scale; // img.rectTransform.anchoredPosition = new Vector2(json.x, json.y); } /// /// 设置英雄头像图标 /// /// /// public static void SetSprite_HeadIcon(Image img, string icon) { img.SetAtlasSprite("Assets/Art/UI/Picture/HeadIcon/atlas_HeadIcon", icon); img.gameObject.SetActive(true); } /// /// 设置卡牌 半身像 /// /// /// public static void SetSprite_CardBody(Image img, string icon) { img.SetAtlasSprite("Assets/Art/UI/Picture/Card/atlas_Card", icon); } /// /// 设置技能 图标 /// /// /// public static void SetSprite_SkillIcon(Image img, string icon) { img.SetAtlasSprite($"Assets/Art/UI/Picture/SkillIcon/atlas_SkillIcon", icon); } /// /// 设置卡牌 品质 /// /// /// public static void SetSprite_CardColour(Image img, int colour) { // img.SetAtlasSprite("Assets/Art/UI/Picture/CardQuality/atlas_CardQuality", HeroCardsDefine.colour_cardImg[colour]); } /// /// 设置 图标 品质 SSR... /// /// /// public static void SetSprite_IconColour(Image img, int colour) { // img.SetAtlasSprite("Assets/Art/UI/Picture/Common/atlas_Common", HeroCardsDefine.quelity_icons[colour]); //img.SetSprite($"Assets/Art/UI/Picture/Common/{HeroCardsDefine.quelity_icons[colour]}"); } public static void SetSprite_CardClans(Image img, string zhen) { //Assets/Art/UI/Picture/Attribute/atlas_Attribute.png SetSprite_CardClans(img, int.Parse(zhen)); } public static void SetSprite_CardClans(Image img, int zhen) { //Assets/Art/UI/Picture/Attribute/atlas_Attribute.png // img.SetAtlasSprite($"Assets/Art/UI/Picture/Attribute/atlas_Attribute", HeroCardsDefine.zhen_icons[zhen]); } /// /// 设置 职业icon /// public static void SetSprite_Work(Image img, string work) { img.SetAtlasSprite($"Assets/Art/UI/Picture/Attribute/atlas_Attribute", work); } /// /// 设置卡牌 阵营背景 /// /// /// public static void SetSprite_CardClansBg(Image img, string zhen) { SetSprite_CardClansBg(img, int.Parse(zhen)); } /// /// 设置卡牌 阵营背景 /// /// /// public static void SetSprite_CardClansBg(Image img, int zhen) { // img.SetAtlasSprite($"Assets/Art/UI/Picture/Attribute/atlas_Attribute", HeroCardsDefine.zhen_bgs[zhen]); } /// /// 设置Buff图标 /// /// /// public static void SetSprite_BuffIcon(Image img, string imgName) { SetSprite_Attribute(img, imgName); } /// /// 设置属性 /// /// /// public static void SetSprite_Attribute(Image img, string imgName) { img.SetAtlasSprite($"Assets/Art/UI/Picture/Attribute/atlas_Attribute", imgName); } /// /// 设置图鉴 阵营icon /// /// /// public static void SetSprite_CardClans_Collection(Image img, int zhen) { //img.SetAtlasSprite("Assets/Art/UI/Picture/Illustrated/atlas_Illustrated", HeroCardsDefine.zhen_collection_icons[zhen]); } /// /// 设置提示框 背景图 /// /// /// public static void SetSprite_TipsBgIcon(Image img, PropQuality type) { // if (TipsConst.tipsQuality.ContainsKey(type)) // img.SetAtlasSprite("Assets/Art/UI/Picture/Bag/atlas_Bag", TipsConst.tipsQuality[type]); } public static void SetSprite_Star(Image img, int type) { switch (type) { case 0: img.SetAtlasSprite("Assets/Art/UI/Picture/Common/atlas_Common", "img_start"); break; case 1: img.SetAtlasSprite("Assets/Art/UI/Picture/Common/atlas_Common", "img_moon"); break; case 2: img.SetAtlasSprite("Assets/Art/UI/Picture/Common/atlas_Common", "img_sun"); break; case 3: img.SetAtlasSprite("Assets/Art/UI/Picture/Common/atlas_Common", "img_sun 1"); break; case 4: img.SetAtlasSprite("Assets/Art/UI/Picture/Common/atlas_Common", "img_sun_red"); break; } } /// /// 设置 白色 0星星,1月亮,2太阳图标 /// /// /// public static void SetSprite_Star_White(Image img, int type) { switch (type) { case 0: img.SetAtlasSprite("Assets/Art/UI/Picture/Common/atlas_Common", "img_start_white"); break; case 1: img.SetAtlasSprite("Assets/Art/UI/Picture/Common/atlas_Common", "img_moon_white"); break; case 2: img.SetAtlasSprite("Assets/Art/UI/Picture/Common/atlas_Common", "img_sun_white"); break; case 3: img.SetAtlasSprite("Assets/Art/UI/Picture/Common/atlas_Common", "img_sun_white 1"); break; case 4: img.SetAtlasSprite("Assets/Art/UI/Picture/Common/atlas_Common", "img_sun_red_w"); break; } } }