DESKTOP-SAJ6RKV\Administrator 2219757bec 1
2025-06-28 18:35:19 +08:00

758 lines
30 KiB
C#
Raw Permalink 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 UnityEngine;
using UnityEngine.UI;
using TEngine;
using System.Collections.Generic;
using GameConfig.giftConfig;
using System.Threading.Tasks;
using Cysharp.Threading.Tasks;
using TMPro;
using Coffee.UIExtensions;
using UnityEngine.Video;
using System.Xml.Linq;
using System;
using DG.Tweening;
using UnityEngine.Timeline;
namespace GameLogic
{
[Window(UILayer.UI)]
class UIGameBattle : UIWindow
{
#region
private RectTransform m_rectTopFx;
private RectTransform m_rectSdx;
private RectTransform m_rectSceneFx;
private RectTransform m_rectSpeed;
private RectTransform m_rectBgList;
private Image m_img_BT;
private TextMeshProUGUI m_tmpTimer;
private TextMeshProUGUI m_tmpWinPoint;
private TextMeshProUGUI m_tmpScoreAll;
private Button m_btnSetting;
private Button m_btnRank;
private RectTransform m_rectHPanel;
private GameObject m_itemActorHItem;
private RectTransform m_rect_GiftPanel;
private RawImage m_rimgHeadIcon;
private TextMeshProUGUI m_tmpPlayName;
private TextMeshProUGUI m_tmpTeamName;
private TextMeshProUGUI m_tmpGiftMsg;
private Image m_imgGiftImg;
private TextMeshProUGUI m_tmpCount;
private RawImage m_rimg_ViewTexture;
private VideoPlayer m_video_Video;
private RectTransform m_rect_Dz;
private TextMeshProUGUI m_tmp_PlayerName;
private RectTransform m_rectGjsk;
private Image m_img_HuangJinShiDai;
private VideoPlayer m_video_SjVideo;
private RawImage m_rimg_ViewSjTexture;
private Text m_textHuangJinInfo;
private Button m_btn_StartBtn;
private RectTransform m_rect_ShiJian;
private Image m_img_JinDu;
private TextMeshProUGUI m_tmp_ShiJian;
private TextMeshProUGUI m_tmp_ShiJianValue;
private Image m_imgShiJianSign;
protected override void ScriptGenerator()
{
m_rectTopFx = FindChildComponent<RectTransform>("Bg/m_rectTopFx");
m_rectSdx = FindChildComponent<RectTransform>("Bg/m_rectSdx");
m_rectSceneFx = FindChildComponent<RectTransform>("Bg/m_rectSceneFx");
m_rectSpeed = FindChildComponent<RectTransform>("Bg/m_rectSpeed");
m_rectBgList = FindChildComponent<RectTransform>("Bg/m_rectBgList");
m_img_BT = FindChildComponent<Image>("Bg/Top/m_img_BT");
m_tmpTimer = FindChildComponent<TextMeshProUGUI>("Bg/Top/m_img_BT/m_tmpTimer");
m_tmpWinPoint = FindChildComponent<TextMeshProUGUI>("Bg/Top/m_img_BT/m_tmpWinPoint");
m_tmpScoreAll = FindChildComponent<TextMeshProUGUI>("Bg/Top/m_img_BT/m_tmpScoreAll");
m_btnSetting = FindChildComponent<Button>("Bg/Top/m_btnSetting");
m_btnRank = FindChildComponent<Button>("Bg/Top/m_btnRank");
m_rectHPanel = FindChildComponent<RectTransform>("Bg/Main/m_rectHPanel");
m_itemActorHItem = FindChild("Bg/Main/m_rectHPanel/m_itemActorHItem").gameObject;
m_rect_GiftPanel = FindChildComponent<RectTransform>("Bg/m_rect_GiftPanel");
m_rimgHeadIcon = FindChildComponent<RawImage>("Bg/m_rect_GiftPanel/GiftItem/Item/Mask/m_rimgHeadIcon");
m_tmpPlayName = FindChildComponent<TextMeshProUGUI>("Bg/m_rect_GiftPanel/GiftItem/Item/m_tmpPlayName");
m_tmpTeamName = FindChildComponent<TextMeshProUGUI>("Bg/m_rect_GiftPanel/GiftItem/Item/m_tmpTeamName");
m_tmpGiftMsg = FindChildComponent<TextMeshProUGUI>("Bg/m_rect_GiftPanel/GiftItem/Item/m_tmpGiftMsg");
m_imgGiftImg = FindChildComponent<Image>("Bg/m_rect_GiftPanel/GiftItem/Item/m_imgGiftImg");
m_tmpCount = FindChildComponent<TextMeshProUGUI>("Bg/m_rect_GiftPanel/GiftItem/Item/m_tmpCount");
m_rimg_ViewTexture = FindChildComponent<RawImage>("Bg/BattleBg/m_rimg_ViewTexture");
m_video_Video = FindChildComponent<VideoPlayer>("Bg/BattleBg/m_video_Video");
m_rect_Dz = FindChildComponent<RectTransform>("Bg/m_rect_Dz");
m_tmp_PlayerName = FindChildComponent<TextMeshProUGUI>("Bg/m_rect_Dz/Icon/m_tmp_PlayerName");
m_rectGjsk = FindChildComponent<RectTransform>("Bg/m_rectGjsk");
m_img_HuangJinShiDai = FindChildComponent<Image>("Bg/m_img_HuangJinShiDai");
m_video_SjVideo = FindChildComponent<VideoPlayer>("Bg/m_img_HuangJinShiDai/m_video_SjVideo");
m_rimg_ViewSjTexture = FindChildComponent<RawImage>("Bg/m_img_HuangJinShiDai/m_rimg_ViewSjTexture");
m_textHuangJinInfo = FindChildComponent<Text>("Bg/m_img_HuangJinShiDai/m_textHuangJinInfo");
m_btn_StartBtn = FindChildComponent<Button>("Bg/m_btn_StartBtn");
m_rect_ShiJian = FindChildComponent<RectTransform>("Bg/m_rect_ShiJian");
m_img_JinDu = FindChildComponent<Image>("Bg/m_rect_ShiJian/m_img_JinDu");
m_tmp_ShiJian = FindChildComponent<TextMeshProUGUI>("Bg/m_rect_ShiJian/Image/m_tmp_ShiJian");
m_tmp_ShiJianValue = FindChildComponent<TextMeshProUGUI>("Bg/m_rect_ShiJian/Image/m_tmp_ShiJianValue");
m_imgShiJianSign = FindChildComponent<Image>("Bg/m_rect_ShiJian/m_imgShiJianSign");
m_btnSetting.onClick.AddListener(OnClickSettingBtn);
m_btnRank.onClick.AddListener(OnClickRankBtn);
m_btn_StartBtn.onClick.AddListener(OnClick_StartBtnBtn);
}
#endregion
#region
private void OnClick_StartBtnBtn()
{
// 游戏状态
DataGameSceneManager.Instance.SetGameState(true);
m_btn_StartBtn.gameObject.SetActive(false);
}
private void OnClickSettingBtn()
{
GameModule.UI.ShowUI<UISettingForm>();
}
private async void OnClickRankBtn()
{
GameModule.UI.ShowUI<UIGameWorldRankForm>();
}
#endregion
private Dictionary<RectTransform, Vector2> targetPositions = new Dictionary<RectTransform, Vector2>();
private float animationSpeed = 143f; // Adjust this value to control the speed of the animation
protected override void OnCreate()
{
base.OnCreate();
// 重新执行下Init
DataGameSceneManager.Instance.OnInit();
// 游戏状态
//DataGameSceneManager.Instance.SetGameState(true);
// 清除视频上的targetTexture残像
m_video_Video.targetTexture.Release();
// 刷新
UpdateGameTiemr();
UpdateGameScoreValue();
//RestHItemFunc();
// 创建横板列表
for (int i = 0; i < DataGameSceneManager.Instance.m_Strs.Count; i++)
{
ActorHItem actorHItem = CreateWidgetByPrefab<ActorHItem>(m_itemActorHItem, m_rectHPanel);
var r = actorHItem.gameObject.GetComponent<RectTransform>();
// 计算位置
r.anchorMin = new Vector2(0.5f, 0.5f);
r.anchorMax = new Vector2(0.5f, 0.5f);
r.anchoredPosition = new Vector2(127, 373 - 65 - i * (143 - 5f));
r.localPosition = new Vector3(r.localPosition.x, r.localPosition.y, 0);
actorHItem.OnInit(i);
DataGameSceneManager.Instance.m_DicTeamList.Add((i + 1).ToString(), actorHItem);
DataGameSceneManager.Instance.m_TeamSortList.Add(actorHItem);
}
}
protected override void Close()
{
base.Close();
// 清除视频上的targetTexture残像
m_video_Video.targetTexture.Release();
}
protected override void OnUpdate()
{
base.OnUpdate();
if (!DataGameSceneManager.Instance.GetGameState())
{
return;
}
UpdateGameTiemr();
UpdateGameScoreValue();
UpdateHItem();
// Move each HItemActor towards its target position
foreach (var kvp in targetPositions)
{
if (kvp.Key == null)
{
continue;
}
var rectTransform = kvp.Key;
var targetPosition = kvp.Value;
float distance = Vector2.Distance(rectTransform.localPosition, targetPosition);
float speed = distance / 0.2f; // Calculate speed to ensure movement completes in 1 second
rectTransform.localPosition = Vector2.MoveTowards(rectTransform.localPosition, targetPosition, speed * Time.deltaTime);
}
DataGameSceneManager.Instance.m_TeamSortList.Sort((a, b) =>
{
if (a.GetAllPower() > b.GetAllPower())
{
return -1;
}
else
{
return 1;
}
});
// 黄金事件相关逻辑处理
if (DataGameSceneManager.Instance.isLiShiShiJian)
{
// 更新界面逻辑
// 目前固定两百个点赞逻辑。
m_tmp_ShiJianValue.text = string.Format("{0}/{1}", DataGameSceneManager.Instance.m_LiShiShiJianLikeCount, DataGameSceneManager.Instance.m_LiShiShiJianLikeCountMax);
m_img_JinDu.fillAmount = (float)(DataGameSceneManager.Instance.m_LiShiShiJianLikeCount / (float)DataGameSceneManager.Instance.m_LiShiShiJianLikeCountMax);
var config = ConfigSystem.Instance.Tables.TbTeamConfig.Get(
DataGameSceneManager.Instance.m_TeamId);
m_tmp_ShiJian.text = config.ImgName;
// 奖励也是固定死的
if (DataGameSceneManager.Instance.m_LiShiShiJianLikeCount >= DataGameSceneManager.Instance.m_LiShiShiJianLikeCountMax)
{
Log.Debug("历史事件成功。。。");
DataGameSceneManager.Instance.isLiShiShiJian = false; // 重置
// 移除历史事件失败回调
if (m_LishiId != -1)
{
GameModule.Timer.RemoveTimer(m_LishiId);
}
// 触发历史事件条件
m_img_HuangJinShiDai.gameObject.SetActive(true);
// 设置用户信息显示
DataGameSceneManager.Instance.sjDatas.Sort((a, b) =>
{
if (a.count > b.count)
{
return -1;
}
else
{
return 1;
}
});
// 设置用户信息
m_textHuangJinInfo.text = string.Format(
config.TextInfo,
DataGameSceneManager.Instance.sjDatas.Count > 0 && DataGameSceneManager.Instance.sjDatas[0] != null ? DataGameSceneManager.Instance.sjDatas[0].name : "暂无",
DataGameSceneManager.Instance.sjDatas.Count > 1 && DataGameSceneManager.Instance.sjDatas[1] != null ? DataGameSceneManager.Instance.sjDatas[1].name : "暂无",
DataGameSceneManager.Instance.sjDatas.Count > 2 && DataGameSceneManager.Instance.sjDatas[2] != null ? DataGameSceneManager.Instance.sjDatas[2].name : "暂无"
);
// 给前三增加贡献
for (int i = 0; i < DataGameSceneManager.Instance.sjDatas.Count; i++)
{
if (i < 3)
{
var id = DataGameSceneManager.Instance.sjDatas[i].openId;
var data = DataGameSceneManager.Instance.GetUnitPlayerData(id);
if (data != null)
{
data.m_GongXian++;
}
}
}
// 设置图片从透明到不透明
//m_img_HuangJinShiDai.sprite = GameModule.Resource.LoadAsset<Sprite>(config.ImgName);
int teamId = DataGameSceneManager.Instance.m_TeamId;
Log.Debug("当前黄金时代id" + teamId);
// 先播放视频
string videoName = ConfigSystem.Instance.Tables.TbTeamConfig.Get(teamId).ImgName;
GameModule.Audio.Play(TEngine.AudioType.UISound, videoName + "_Audio", false, 1, true);
m_video_SjVideo.loopPointReached += async (v) =>
{
await UniTask.Delay(2000);
m_img_HuangJinShiDai.gameObject.SetActive(false);
m_rect_ShiJian.gameObject.SetActive(false);
DataGameSceneManager.Instance.m_LiShiShiJianLikeCount = 0;
m_video_Video.targetTexture.DiscardContents();
Log.Debug("回收");
};
var videoClip = GameModule.Resource.LoadAsset<VideoClip>(videoName);
m_video_SjVideo.clip = videoClip;
m_video_SjVideo.Play();
DataGameSceneManager.Instance.sjDatas.Clear(); // 清空数据
}
}
}
protected override void RegisterEvent()
{
base.RegisterEvent();
GameEvent.AddEventListener(EventConts.RestGameBattle, RestGameBattleFunc);
GameEvent.AddEventListener<GiftConfig>(EventConts.TtqEffectCreate, TtqEffectCreateFunc);
GameEvent.AddEventListener<UnitPlayerData>(EventConts.AddPlayer, AddPlayerFunc);
GameEvent.AddEventListener(EventConts.SwitchTeamId, SwitchTeamIdFunc);
GameEvent.AddEventListener(EventConts.HuangJinGameEnd, HuangJinGameEndFunc);
GameEvent.AddEventListener(EventConts.GuanJunShiKe, GuanJunShiKeFunc);
GameEvent.AddEventListener<string>(EventConts.UIDianZan, UIDianZanFunc);
GameEvent.AddEventListener<UnitPlayerData, string>(EventConts.UIHDWMSP, AddHdWmspFunc);
GameEvent.AddEventListener<UnitPlayerData, GiftConfig, int>(EventConts.AddGiftMessage, AddGiftMessageFunc);
GameEvent.AddEventListener(EventConts.UIDouDong, UIDouDongFunc);
}
protected override void OnDestroy()
{
base.OnDestroy();
GameEvent.RemoveEventListener(EventConts.RestGameBattle, RestGameBattleFunc);
GameEvent.RemoveEventListener<GiftConfig>(EventConts.TtqEffectCreate, TtqEffectCreateFunc);
GameEvent.RemoveEventListener<UnitPlayerData>(EventConts.AddPlayer, AddPlayerFunc);
GameEvent.RemoveEventListener(EventConts.SwitchTeamId, SwitchTeamIdFunc);
GameEvent.RemoveEventListener(EventConts.HuangJinGameEnd, HuangJinGameEndFunc);
GameEvent.RemoveEventListener(EventConts.GuanJunShiKe, GuanJunShiKeFunc);
GameEvent.RemoveEventListener<string>(EventConts.UIDianZan, UIDianZanFunc);
GameEvent.RemoveEventListener<UnitPlayerData, string>(EventConts.UIHDWMSP, AddHdWmspFunc);
GameEvent.RemoveEventListener<UnitPlayerData, GiftConfig, int>(EventConts.AddGiftMessage, AddGiftMessageFunc);
GameEvent.RemoveEventListener(EventConts.UIDouDong, UIDouDongFunc);
// 主界面销毁的时候应该停止所有
GameModule.Timer.RemoveTimer(m_LishiId);
}
bool isShaking = false;
private void UIDouDongFunc()
{
if (isShaking) return; // 抖动过程中不能再次进入
var rect = this.gameObject.GetComponent<RectTransform>();
if (rect != null)
{
ShakeRectTransformSequence(rect);
}
}
private void ShakeRectTransformSequence(RectTransform rect)
{
isShaking = true;
Sequence seq = DOTween.Sequence();
for (int i = 0; i < 10; i++)
{
float duration = UnityEngine.Random.Range(0.08f, 0.15f);
float strength = UnityEngine.Random.Range(20f, 40f);
int vibrato = UnityEngine.Random.Range(8, 14);
float randomness = UnityEngine.Random.Range(80f, 120f);
// 每次抖动后加一个AppendInterval保证有序
seq.Append(rect.DOShakePosition(duration, strength, vibrato, randomness, false, true));
}
seq.OnComplete(() => isShaking = false);
}
private void UIDianZanFunc(string nickName)
{
CreateWidgetByPrefab<UIDianZanItem>(m_rect_Dz.gameObject).OnInit(nickName);
}
private void GuanJunShiKeFunc()
{
m_rectGjsk.gameObject.SetActive(true);
}
private void ShowShiJain(VideoPlayer source)
{
// 弹个UI窗口
m_rect_ShiJian.gameObject.SetActive(true);
// 创建itme 实时更新进度条显示
DataGameSceneManager.Instance.isLiShiShiJian = true;
}
private int m_LishiId = -1;
/// <summary>
/// 黄金时代结束
/// </summary>
private void HuangJinGameEndFunc()
{
int teamId = DataGameSceneManager.Instance.m_TeamId;
Log.Debug("当前黄金时代id" + teamId);
// 先播放视频
string videoName = ConfigSystem.Instance.Tables.TbTeamConfig.Get(teamId).VideoName;
GameModule.Audio.Play(TEngine.AudioType.UISound, videoName + "_Audio", false, 1, true);
m_video_Video.loopPointReached += ShowShiJain;
var videoClip = GameModule.Resource.LoadAsset<VideoClip>(videoName);
m_video_Video.clip = videoClip;
m_video_Video.Play();
// 历史事件时间周期
if (m_LishiId != -1)
{
GameModule.Timer.RemoveTimer(m_LishiId);
}
// 历史事件维持时间周期
m_LishiId = GameModule.Timer.AddTimer((e) =>
{
Log.Debug("历史事件失败。。。");
DataGameSceneManager.Instance.isLiShiShiJian = false;
// 告知关闭历史事件了
// 设置用户信息显示
DataGameSceneManager.Instance.sjDatas.Sort((a, b) =>
{
if (a.count > b.count)
{
return -1;
}
else
{
return 1;
}
});
m_img_HuangJinShiDai.gameObject.SetActive(true);
var config = ConfigSystem.Instance.Tables.TbTeamConfig.Get(teamId);
// 设置用户信息
m_textHuangJinInfo.text = ConfigSystem.Instance.Tables.TbTeamConfig.Get(teamId).LoswerInfo;
// 设置图片从透明到不透明
//m_img_HuangJinShiDai.sprite = GameModule.Resource.LoadAsset<Sprite>(config.ImgName);
// 先播放视频
string videoName = ConfigSystem.Instance.Tables.TbTeamConfig.Get(teamId).ImgName;
GameModule.Audio.Play(TEngine.AudioType.UISound, videoName + "_Audio", false, 1, true);
m_video_SjVideo.loopPointReached += async (v) =>
{
await UniTask.Delay(2000);
m_img_HuangJinShiDai.gameObject.SetActive(false);
m_rect_ShiJian.gameObject.SetActive(false);
DataGameSceneManager.Instance.m_LiShiShiJianLikeCount = 0;
m_video_SjVideo.targetTexture.DiscardContents();
};
var videoClip = GameModule.Resource.LoadAsset<VideoClip>(videoName);
m_video_SjVideo.clip = videoClip;
m_video_SjVideo.Play();
DataGameSceneManager.Instance.sjDatas.Clear(); // 清空数据
DataGameSceneManager.Instance.m_LiShiShiJianLikeCount = 0;
}, EventConts.LiShiShiJianEnd);
}
private void SwitchTeamIdFunc()
{
int teamId = DataGameSceneManager.Instance.m_TeamId;
Log.Debug("触发切换朝代:" + teamId);
if (teamId != 1)
{
// 我想先把他身上的回调取消掉怎么整?
if (m_LishiId != -1)
{
GameModule.Timer.RemoveTimer(m_LishiId);
Log.Debug("历史事件失败。。。");
DataGameSceneManager.Instance.isLiShiShiJian = false;
DataGameSceneManager.Instance.sjDatas.Clear(); // 清空数据
DataGameSceneManager.Instance.m_LiShiShiJianLikeCount = 0;
m_img_HuangJinShiDai.gameObject.SetActive(false);
m_rect_ShiJian.gameObject.SetActive(false);
DataGameSceneManager.Instance.m_LiShiShiJianLikeCount = 0;
m_video_SjVideo.targetTexture.DiscardContents();
}
// 先播放视频
string videoName = "Scene_" + (teamId);
//m_video_Video.loopPointReached = null;
m_video_Video.loopPointReached -= ShowShiJain;
m_video_Video.loopPointReached += (v) =>
{
for (int i = 0; i < m_rectBgList.childCount; i++)
{
m_rectBgList.GetChild(i).gameObject.SetActive(false);
}
for (int i = 0; i < m_rectSdx.childCount; i++)
{
m_rectSdx.GetChild(i).gameObject.SetActive(false);
}
for (int i = 0; i < m_rectSceneFx.childCount; i++)
{
m_rectSceneFx.GetChild(i).gameObject.SetActive(false);
}
for (int i = 0; i < m_rectSpeed.childCount; i++)
{
m_rectSpeed.GetChild(i).gameObject.SetActive(false);
}
for (int i = 0; i < m_rectTopFx.childCount; i++)
{
m_rectTopFx.GetChild(i).gameObject.SetActive(false);
}
if (teamId > m_rectBgList.childCount)
{
Log.Error("背景Id错误" + teamId);
return;
}
m_rectBgList.GetChild(teamId - 1).gameObject.SetActive(true);
m_rectSdx.GetChild(teamId - 1).gameObject.SetActive(true);
m_rectSceneFx.GetChild(teamId - 1).gameObject.SetActive(true);
m_rectSpeed.GetChild(teamId - 1).gameObject.SetActive(true);
m_rectTopFx.GetChild(teamId - 1).gameObject.SetActive(true);
// 替换UI图
SwitchUIResource();
// 清除视频上的targetTexture残像
m_video_Video.targetTexture.Release();
};
// 播放音频
var videoAudioName = "csm_audios";
GameModule.Audio.Play(TEngine.AudioType.UISound, videoAudioName, false, 0.5f, true);
var videoClip = GameModule.Resource.LoadAsset<VideoClip>(videoName);
m_video_Video.clip = videoClip;
m_video_Video.Play();
for (int i = 0; i < m_rectBgList.childCount; i++)
{
m_rectBgList.GetChild(i).gameObject.SetActive(false);
}
for (int i = 0; i < m_rectSdx.childCount; i++)
{
m_rectSdx.GetChild(i).gameObject.SetActive(false);
}
for (int i = 0; i < m_rectSceneFx.childCount; i++)
{
m_rectSceneFx.GetChild(i).gameObject.SetActive(false);
}
for (int i = 0; i < m_rectSpeed.childCount; i++)
{
m_rectSpeed.GetChild(i).gameObject.SetActive(false);
}
for (int i = 0; i < m_rectSpeed.childCount; i++)
{
m_rectTopFx.GetChild(i).gameObject.SetActive(false);
}
}
if (teamId > m_rectBgList.childCount)
{
Log.Error("背景Id错误" + teamId);
return;
}
m_rectBgList.GetChild(teamId - 1).gameObject.SetActive(true);
m_rectSdx.GetChild(teamId - 1).gameObject.SetActive(true);
m_rectSceneFx.GetChild(teamId - 1).gameObject.SetActive(true);
m_rectSpeed.GetChild(teamId - 1).gameObject.SetActive(true);
m_rectTopFx.GetChild(teamId - 1).gameObject.SetActive(true);
// 替换UI图
SwitchUIResource();
}
private void AddPlayerFunc(UnitPlayerData unitPlayerData)
{
// 显示加入UI
var jiaRuItem = GameObject.Instantiate(m_rect_GiftPanel.transform.GetChild(1));
jiaRuItem.transform.SetParent(m_rect_GiftPanel);
jiaRuItem.transform.localScale = Vector3.one;
jiaRuItem.transform.localPosition = new Vector3(350, 0, 0);
jiaRuItem.gameObject.SetActive(true);
jiaRuItem.GetComponent<UIJiaRuItem>().OnInit(unitPlayerData);
}
public GameObject m_TestEgo = null;
/// <summary>
/// 甜甜圈特效
/// </summary>
private async void TtqEffectCreateFunc(GiftConfig giftConfig)
{
}
private async void AddGiftMessageFunc(UnitPlayerData unitPlayerData, GiftConfig giftConfig, int num)
{
var giftItem = GameObject.Instantiate(m_rect_GiftPanel.transform.GetChild(0));
giftItem.transform.SetParent(m_rect_GiftPanel);
giftItem.transform.localScale = Vector3.one;
giftItem.transform.localPosition = Vector3.zero;
giftItem.gameObject.SetActive(true);
giftItem.GetComponent<UIGiftItem>().OnInit(unitPlayerData, giftConfig, num);
}
private void AddHdWmspFunc(UnitPlayerData unitPlayerData, string teamName)
{
var giftItem = GameObject.Instantiate(m_rect_GiftPanel.transform.GetChild(2));
giftItem.transform.SetParent(m_rect_GiftPanel);
giftItem.transform.localScale = Vector3.one;
giftItem.transform.localPosition = Vector3.zero;
giftItem.gameObject.SetActive(true);
giftItem.GetComponent<UIHDWmsp>().OnInit(teamName, unitPlayerData.protCustMessageData.nickName, unitPlayerData.protCustMessageData.imgURL);
}
/// <summary>
/// 收到游戏重开的消息
/// </summary>
private void RestGameBattleFunc()
{
}
/// <summary>
/// 基于朝代切换资源
/// </summary>
private void SwitchUIResource()
{
//m_img_BT.sprite = GameModule.Resource.LoadAsset<Sprite>(string.Format("zjm_{0}_BT", DataGameSceneManager.Instance.m_TeamId + 1));
//m_img_BT.SetNativeSize();
m_img_BT.material = GameModule.Resource.LoadAsset<Material>(string.Format("Main_UI_Top{0}", DataGameSceneManager.Instance.m_TeamId));
}
/// <summary>
/// 更新游戏时间
/// </summary>
private void UpdateGameTiemr()
{
// 计算分钟和剩余秒数
int minutes = (int)DataGameSceneManager.Instance.m_GameTimerLen / 60;
int remainingSeconds = (int)DataGameSceneManager.Instance.m_GameTimerLen % 60;
// 返回格式化的字符串
m_tmpTimer.text = $"{minutes}:{remainingSeconds:D2}";
if (DataGameSceneManager.Instance.m_GameTimerLen <= 0)
{
m_rectGjsk.gameObject.SetActive(false);
}
}
/// <summary>
/// 更新游戏公用数据
/// </summary>
private void UpdateGameScoreValue()
{
// 积分池更新
m_tmpScoreAll.text = UITool.ConvertToString(DataGameSceneManager.Instance.ScoreAllValue);
// 胜点池
m_tmpWinPoint.text = UITool.ConvertToString(DataGameSceneManager.Instance.WinAllValue);
}
/// <summary>
/// 更新横版排版移动
/// </summary>
private void UpdateHItem()
{
// Create a list to hold the HItemActors and their scores
List<(ActorHItem actor, double score)> hItemActors = new List<(ActorHItem, double)>();
//hItemActors.Clear();
// Populate the list with HItemActors and their scores
for (int i = 0; i < m_rectHPanel.childCount; i++)
{
if (i < DataGameSceneManager.Instance.m_TeamSortList.Count)
{
var hItemActor = DataGameSceneManager.Instance.m_DicTeamList[(i + 1).ToString()];
double score = hItemActor.GetAllPower(); // Assume GetScore() returns the score of the actor
hItemActors.Add((hItemActor, score));
}
}
// Sort the list based on scores in descending order
hItemActors.Sort((a, b) => b.score.CompareTo(a.score));
// Set the target positions for the HItemActors based on their new order
for (int i = 0; i < hItemActors.Count; i++)
{
var hItemActor = hItemActors[i].actor;
//hItemActor.m_Index = i;
var rectTransform = hItemActor.gameObject.GetComponent<RectTransform>();
Vector2 targetPosition = new Vector2(127, 373 - i * (143 - 5f));
targetPositions[rectTransform] = targetPosition;
// 让UI层级与排序一致
rectTransform.SetSiblingIndex(i);
}
DataGameSceneManager.Instance.hItemActors = hItemActors; // 更新全局变量
}
}
}