From 39001a600fcae2bcf27c225df8752d75fb92fef4 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 31 十月 2025 11:18:26 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts
---
Main/System/Battle/BattleEffectMgr.cs | 128 ++++++++++++++++++++++++++++++++++++++----
1 files changed, 114 insertions(+), 14 deletions(-)
diff --git a/Main/System/Battle/BattleEffectMgr.cs b/Main/System/Battle/BattleEffectMgr.cs
index 494d4d9..d6b4a5a 100644
--- a/Main/System/Battle/BattleEffectMgr.cs
+++ b/Main/System/Battle/BattleEffectMgr.cs
@@ -1,23 +1,44 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using UnityEngine;
public class BattleEffectMgr : MonoBehaviour
{
private BattleField battleField;
- private Dictionary<int, List<EffectPlayer>> effectDict = new Dictionary<int, List<EffectPlayer>>();
+ private Dictionary<int, List<BattleEffectPlayer>> effectDict = new Dictionary<int, List<BattleEffectPlayer>>();
public void Init(BattleField _battleField)
{
+ Release();
battleField = _battleField;
+ }
+
+ public void Run()
+ {
+ List<BattleEffectPlayer> runList = new List<BattleEffectPlayer>();
+
+ foreach (KeyValuePair<int, List<BattleEffectPlayer>> kvPair in effectDict)
+ {
+ runList.AddRange(kvPair.Value);
+ }
+
+ for (int i = runList.Count - 1; i >= 0; i--)
+ {
+ BattleEffectPlayer effectPlayer = runList[i];
+ if (effectPlayer != null)
+ {
+ effectPlayer.Run();
+ }
+ }
}
public void PauseGame()
{
- foreach (KeyValuePair<int, List<EffectPlayer>> kvPair in effectDict)
+ foreach (KeyValuePair<int, List<BattleEffectPlayer>> kvPair in effectDict)
{
- foreach (EffectPlayer effectPlayer in kvPair.Value)
+ foreach (BattleEffectPlayer effectPlayer in kvPair.Value)
{
if (effectPlayer != null)
{
@@ -29,9 +50,9 @@
public void ResumeGame()
{
- foreach (KeyValuePair<int, List<EffectPlayer>> kvPair in effectDict)
+ foreach (KeyValuePair<int, List<BattleEffectPlayer>> kvPair in effectDict)
{
- foreach (EffectPlayer effectPlayer in kvPair.Value)
+ foreach (BattleEffectPlayer effectPlayer in kvPair.Value)
{
if (effectPlayer != null)
{
@@ -41,26 +62,65 @@
}
}
- public EffectPlayer PlayEffect(int ObjID, int effectId, Transform parent)
+ public BattleEffectPlayer PlayEffect(BattleObject layerDepender, int effectId, Transform parent, BattleCamp camp)
{
- if (!effectDict.ContainsKey(effectId))
+ if (effectId <= 0)
{
- effectDict[effectId] = new List<EffectPlayer>();
+ Debug.LogError("effect id <= 0");
+ return null;
}
- EffectPlayer effectPlayer = EffectPlayer.Create(effectId, parent, true, false);
- effectPlayer.onDestroy = OnEffectDestroy;
+ var effectCfg = EffectConfig.Get(effectId);
+ if (null == effectCfg)
+ {
+ Debug.LogError("effect config is null, effectId : " + effectId);
+ return null;
+ }
+
+ if (!effectDict.ContainsKey(effectId))
+ {
+ effectDict[effectId] = new List<BattleEffectPlayer>();
+ }
+
+ bool isRedCamp = camp == BattleCamp.Red;
+
+ BattleEffectPlayer effectPlayer = BattleEffectPlayer.Create(effectId, battleField.battleRootNode.transform, isRedCamp);
+ // 璁剧疆鐗规晥缂╂斁鍜屾柟鍚�
+
+ effectPlayer.transform.position = parent.position;
+
+
+ BattleObject temp = layerDepender;
+ effectPlayer.onDestroy += (efPlayer) =>
+ {
+ OnEffectDestroy(efPlayer);
+ temp.layerMgr.RemoveEffect(efPlayer);
+ };
+
if (effectPlayer != null)
{
effectDict[effectId].Add(effectPlayer);
- effectPlayer.Play();
}
+ effectPlayer.SetSpeedRatio(battleField.speedRatio);
+
+ effectPlayer.Play(true);
+
+
+ var effectScale = effectPlayer.transform.localScale;
+ effectScale.x *= isRedCamp ? 1 : -1;
+ effectPlayer.transform.localScale = effectScale;
+
+ if (null != layerDepender)
+ {
+ layerDepender.layerMgr.AddEffect(effectPlayer);
+ }
+
return effectPlayer;
}
- public void RemoveEffect(int effectId, EffectPlayer effectPlayer)
+ public void RemoveEffect(int effectId, BattleEffectPlayer effectPlayer)
{
- List<EffectPlayer> effectPlayers = null;
+ List<BattleEffectPlayer> effectPlayers = null;
if (effectDict.TryGetValue(effectId, out effectPlayers))
{
@@ -74,7 +134,7 @@
}
}
- protected void OnEffectDestroy(EffectPlayer effectPlayer)
+ protected void OnEffectDestroy(BattleEffectPlayer effectPlayer)
{
if (effectDict.ContainsKey(effectPlayer.effectId))
{
@@ -85,4 +145,44 @@
}
}
}
+
+ public void HaveRest()
+ {
+ Release();
+ }
+
+ public void Release()
+ {
+ List<int> fKeys = effectDict.Keys.ToList();
+
+ for (int i = 0; i < fKeys.Count; i++)
+ {
+ List<BattleEffectPlayer> effectPlayers = effectDict[fKeys[i]];
+ while (effectPlayers.Count > 0)
+ {
+ var effectPlayer = effectPlayers[0];
+ if (effectPlayer != null)
+ {
+ GameObject.DestroyImmediate(effectPlayer.gameObject);
+ }
+ else
+ {
+ effectPlayers.RemoveAt(0);
+ }
+ }
+ }
+
+ effectDict.Clear();
+ }
+
+ public void SetSpeedRatio(float ratio)
+ {
+ foreach (var kvPair in effectDict)
+ {
+ foreach (var effectPlayer in kvPair.Value)
+ {
+ effectPlayer.SetSpeedRatio(ratio);
+ }
+ }
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0