564 lines
19 KiB
C#
Raw Normal View History

2025-06-07 17:43:34 +08:00
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<Image>().SetSprite_Quality_Prop((PropQuality)data.quality);
// go.transform.Find("icon").GetComponent<Image>().SetAtlasSprite(data.atlas, data.icon);
// go.transform.Find("num").GetComponent<Text>().text = "x" + data.count;
// callBack?.Invoke(go);
//}
/// <summary>
/// 设置头像框
/// </summary>
/// <param name="img">Image组件</param>
/// <param name="icon">头像框名</param>
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<Image>();
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;
}
/// <summary>
/// 判断玩家是否拥有物品
/// </summary>
/// <returns></returns>
// 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;
// }
/// <summary>
/// 设置物品 品质框
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
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);
}
/// <summary>
/// 设置物品 图标
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
public static void SetSprite_Icon(Image img, string icon)
{
img.SetAtlasSprite("Assets/Art/UI/Picture/Article/atlas_Article", icon);
img.gameObject.SetActive(true);
}
/// <summary>
/// 设置神器 大图标
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
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);
}
/// <summary>
/// 设置神器 小图标
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
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);
}
/// <summary>
/// 设置神器 图标
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
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<Relic_Icon_Json>();
// 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);
}
/// <summary>
/// 设置英雄头像图标
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
public static void SetSprite_HeadIcon(Image img, string icon)
{
img.SetAtlasSprite("Assets/Art/UI/Picture/HeadIcon/atlas_HeadIcon", icon);
img.gameObject.SetActive(true);
}
/// <summary>
/// 设置卡牌 半身像
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
public static void SetSprite_CardBody(Image img, string icon)
{
img.SetAtlasSprite("Assets/Art/UI/Picture/Card/atlas_Card", icon);
}
/// <summary>
/// 设置技能 图标
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
public static void SetSprite_SkillIcon(Image img, string icon)
{
img.SetAtlasSprite($"Assets/Art/UI/Picture/SkillIcon/atlas_SkillIcon", icon);
}
/// <summary>
/// 设置卡牌 品质
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
public static void SetSprite_CardColour(Image img, int colour)
{
// img.SetAtlasSprite("Assets/Art/UI/Picture/CardQuality/atlas_CardQuality", HeroCardsDefine.colour_cardImg[colour]);
}
/// <summary>
/// 设置 图标 品质 SSR...
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
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]);
}
/// <summary>
/// 设置 职业icon
/// </summary>
public static void SetSprite_Work(Image img, string work)
{
img.SetAtlasSprite($"Assets/Art/UI/Picture/Attribute/atlas_Attribute", work);
}
/// <summary>
/// 设置卡牌 阵营背景
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
public static void SetSprite_CardClansBg(Image img, string zhen)
{
SetSprite_CardClansBg(img, int.Parse(zhen));
}
/// <summary>
/// 设置卡牌 阵营背景
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
public static void SetSprite_CardClansBg(Image img, int zhen)
{
// img.SetAtlasSprite($"Assets/Art/UI/Picture/Attribute/atlas_Attribute", HeroCardsDefine.zhen_bgs[zhen]);
}
/// <summary>
/// 设置Buff图标
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
public static void SetSprite_BuffIcon(Image img, string imgName)
{
SetSprite_Attribute(img, imgName);
}
/// <summary>
/// 设置属性
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
public static void SetSprite_Attribute(Image img, string imgName)
{
img.SetAtlasSprite($"Assets/Art/UI/Picture/Attribute/atlas_Attribute", imgName);
}
/// <summary>
/// 设置图鉴 阵营icon
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
public static void SetSprite_CardClans_Collection(Image img, int zhen)
{
//img.SetAtlasSprite("Assets/Art/UI/Picture/Illustrated/atlas_Illustrated", HeroCardsDefine.zhen_collection_icons[zhen]);
}
/// <summary>
/// 设置提示框 背景图
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
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;
}
}
/// <summary>
/// 设置 白色 0星星1月亮2太阳图标
/// </summary>
/// <param name="img"></param>
/// <param name="type"></param>
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;
}
}
}