2025-06-07 17:43:34 +08:00

564 lines
19 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}
}