From 6d73f6f76a94eb492ae07ec383dc664ce5baf502 Mon Sep 17 00:00:00 2001 From: "SD-20250424WZPW\\Administrator" Date: Tue, 6 May 2025 16:21:22 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A4=BC=E7=89=A9=E6=95=88=E6=9E=9C=E6=95=B0?= =?UTF-8?q?=E5=80=BC=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HotFix/GameLogic/Actor/ActorHItem.cs | 91 +++++++- .../HotFix/GameLogic/Common/CommonData.cs | 2 +- .../GameLogic/Manager/DataGameSceneManager.cs | 210 +++++++++--------- 3 files changed, 181 insertions(+), 122 deletions(-) diff --git a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Actor/ActorHItem.cs b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Actor/ActorHItem.cs index add2c4fb..8ee735fb 100644 --- a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Actor/ActorHItem.cs +++ b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Actor/ActorHItem.cs @@ -36,16 +36,8 @@ namespace GameLogic private long m_AllPush = 0; // 当前总值 private int m_AllAddPush = 0;//永久增加推力值 - private int aniIndex = 1; // 当前人物动画索引Id - private int texuteIndex = 0; // 当前人物纹理索引Id - - private TextureEntry m_CurrentTextureEntry; // 当前播放的 TextureEntry - private int m_CurrentTextureIndex = 0; // 当前播放的纹理索引 - private float m_FrameInterval = 0.1f; // 每帧的时间间隔(秒) - private float m_TimeSinceLastFrame = 0f; // 距离上次切换的时间 - private bool m_IsPlaying = false; // 是否正在播放 - private bool m_Loop = true; // 是否循环播放 + private Dictionary> m_Buffs = new Dictionary>(); //自身Buff列表 protected override void OnCreate() { @@ -83,7 +75,7 @@ namespace GameLogic public void AddPlayer(UnitPlayerData data) { - data.teamId = m_Index; + data.teamId = m_Index.ToString(); m_ListUnitPlayDatas.Add(data); m_AddPush++; } @@ -95,6 +87,51 @@ namespace GameLogic private void AddMyPush() { + // 最终结果值 = 初始推力+玩家数量 + 永久增加推力值 + m_AddPush = EventConts.InitPower + m_ListUnitPlayDatas.Count + m_AllAddPush; + + foreach (var item in m_Buffs) + { + // 临时准备移除的Buff列表 + List m_tempBuffList = new List(); + + // 两层遍历,计算Buff效果 + foreach (var buff in item.Value) + { + // 增加Buff耗时开销 + buff.m_CraeteTimer += 0.05f; + + // 计算Buff时常 + if (buff.m_CraeteTimer >= buff.m_AllTimer) + { + // 超时移除 + m_tempBuffList.Add(buff); + } + else + { + // 增加推力 + if (buff.addPower > 0) + { + m_AddPush += buff.addPower; + } + } + } + + // 移除超时的Buff + foreach (var buff in m_tempBuffList) + { + Log.Debug("移除Buff列表:" + buff.m_Id); + item.Value.Remove(buff); + } + } + + + // 减速也不能减到负数 + if (m_AddPush <= 0) + { + m_AddPush = 0; + } + m_AllPush += m_AddPush; } @@ -103,6 +140,40 @@ namespace GameLogic m_tmpAllValue.text = m_AllPush.ToString(); } + /// + /// 增加礼物推力效果 + /// + /// + /// + public void AddBuff(Buff buff, UnitPlayerData unitPlayerData) + { + if (m_Buffs.ContainsKey(unitPlayerData.protCustMessageData.openId)) + { + // // 存在相同BuffId,目前设计是增加时常? + // foreach (var item in m_Buffs[unitPlayerData.protCustMessageData.openId]) + // { + // // 相同类型 + // if (item.m_Id == buff.m_Id) + // { + // // 增加时常 + // item.m_AllTimer += buff.m_AllTimer; + // return; + // } + // } + + // 累加设计 + // 没有该Buff,则新增这个Buff + m_Buffs[unitPlayerData.protCustMessageData.openId].Add(buff); + } + else + { + // 初始化这个列表Buff + m_Buffs.Add(unitPlayerData.protCustMessageData.openId, new List()); + m_Buffs[unitPlayerData.protCustMessageData.openId].Add(buff); + } + + } + /// /// 计算百分比大小值 /// diff --git a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Common/CommonData.cs b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Common/CommonData.cs index 0638a71b..779c4042 100644 --- a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Common/CommonData.cs +++ b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Common/CommonData.cs @@ -51,7 +51,7 @@ namespace GameLogic public class UnitPlayerData { - public int teamId; + public string teamId; public ProtCustMessageData protCustMessageData; public long m_Score; // 当局积分 public long m_AllWinCount;// 当局胜点 diff --git a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameSceneManager.cs b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameSceneManager.cs index 0a5c8e88..78eafc6f 100644 --- a/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameSceneManager.cs +++ b/UnityProject/Assets/GameScripts/HotFix/GameLogic/Manager/DataGameSceneManager.cs @@ -115,7 +115,7 @@ namespace GameLogic UnitPlayerData unitPlayerData = new UnitPlayerData() { protCustMessageData = protCustMessageData, - teamId = -1 + teamId = "-1" }; if (string.IsNullOrEmpty(protCustMessageData.imgURL)) @@ -321,119 +321,107 @@ namespace GameLogic } - // // 处理音效 - // if (buff.addPower > 0) - // { - // // GameModule.Audio.Play(TEngine.AudioType.UISound, "数字跳动的音效", false); - // // 加速特效 - // m_SpeefEffectTimer += buff.m_AllTimer; - // } - // else - // { - // m_SnowEffectTimer += buff.m_AllTimer; - // } - - // // 特殊Buff处理 - // if (buff.isZoneTimer) - // { - // // 除了我自己以外,都挂这个Buff - // var d = GetTeamActors(); - // var actor = DataGameSceneManager.Instance.GetTeamActor(unitPlayerData.teamId); - // foreach (var item in d) - // { - // if (item.Value != actor) - // { - // item.Value.AddBuff(buff, unitPlayerData); - // } - // else - // { - // item.Value.ShowGift5Emoji(); - // } - // } - // } - // else - // { - // // 减速Buff的处理 - // if (buff.addPower < 0) - // { - // // 获取加速最快的星球 - // var actors = GetAllRankUnityPlayerData(); - // actors.Sort((a, b) => - // { - // // 减速加速最高的 - // // if (a.GetAddPush() > b.GetAddPush()) - // // { - // // return -1; - // // } - // // else - // // { - // // return 1; - // // } - // if (a.GetPush() > b.GetPush()) - // { - // return -1; - // } - // else - // { - // return 1; - // } - // }); - // var actor = DataGameSceneManager.Instance.GetTeamActor(unitPlayerData.teamId); - // // 减速Buff不能给自己挂 - // if (actor != actors[0]) - // { - // // 只减速一次 - // actors[0].AddAllPush(buff.addPower); - // actors[0].AddBuff(buff, unitPlayerData); - // } - // else - // { - // // 往下依次找 - // for (int i = 1; i < actors.Count; i++) - // { - // // 只减速一次 - // actors[i].AddAllPush(buff.addPower); - // actors[i].AddBuff(buff, unitPlayerData); - // break; - // } - // } + // 特殊Buff处理 + if (buff.isZoneTimer) + { + // 冻结 + //// 除了我自己以外,都挂这个Buff + //var d = GetTeamActors(); + //var actor = DataGameSceneManager.Instance.GetTeamActor(unitPlayerData.teamId); + //foreach (var item in d) + //{ + // if (item.Value != actor) + // { + // item.Value.AddBuff(buff, unitPlayerData); + // } + // else + // { + // item.Value.ShowGift5Emoji(); + // } + //} + } + else + { + // 减速Buff的处理 + if (buff.addPower < 0) + { + //// 获取加速最快的星球 + //var actors = GetAllRankUnityPlayerData(); + //actors.Sort((a, b) => + //{ + // // 减速加速最高的 + // // if (a.GetAddPush() > b.GetAddPush()) + // // { + // // return -1; + // // } + // // else + // // { + // // return 1; + // // } + // if (a.GetPush() > b.GetPush()) + // { + // return -1; + // } + // else + // { + // return 1; + // } + //}); + //var actor = DataGameSceneManager.Instance.GetTeamActor(unitPlayerData.teamId); + //// 减速Buff不能给自己挂 + //if (actor != actors[0]) + //{ + // // 只减速一次 + // actors[0].AddAllPush(buff.addPower); + // actors[0].AddBuff(buff, unitPlayerData); + //} + //else + //{ + // // 往下依次找 + // for (int i = 1; i < actors.Count; i++) + // { + // // 只减速一次 + // actors[i].AddAllPush(buff.addPower); + // actors[i].AddBuff(buff, unitPlayerData); + // break; + // } + //} - // var d = GetTeamActors(); - // var m_actor = DataGameSceneManager.Instance.GetTeamActor(unitPlayerData.teamId); - // foreach (var item in d) - // { - // if (item.Value == actor) - // { - // // 自己身上增加总值 - // item.Value.AddAllPush(Math.Abs(buff.addPower) / 2); + //var d = GetTeamActors(); + //var m_actor = DataGameSceneManager.Instance.GetTeamActor(unitPlayerData.teamId); + //foreach (var item in d) + //{ + // if (item.Value == actor) + // { + // // 自己身上增加总值 + // item.Value.AddAllPush(Math.Abs(buff.addPower) / 2); - // if (buff.m_Id == 3) - // { - // item.Value.ShowGift2Emoji(); - // } - // else - // { - // // 自己Actor播放表情 - // item.Value.ShowGift4Emoji(); - // } - // } - // } - // } - // else - // { - // var actor = DataGameSceneManager.Instance.GetTeamActor(unitPlayerData.teamId); - // if (actor != null) - // { - // // actor.m_Go.transform.DOScale(actor.m_Go.transform.localScale.x + 2f, 1f); - // actor.AddBuff(buff, unitPlayerData); - // } - // else - // { - // Log.Error("没有找到自己对应的阵营:{0}", unitPlayerData.teamId); - // } - // } - // } + // if (buff.m_Id == 3) + // { + // item.Value.ShowGift2Emoji(); + // } + // else + // { + // // 自己Actor播放表情 + // item.Value.ShowGift4Emoji(); + // } + // } + //} + } + else + { + var actor = GetTeamActor(unitPlayerData.teamId); + if (actor != null) + { + actor.AddBuff(buff, unitPlayerData); + } + else + { + Log.Error("没有找到自己对应的阵营:{0}", unitPlayerData.teamId); + } + } + } // if (giftConfig.Id != 1) // {