From ed98029a88cd89702980ac7c40b711afddc5aeb2 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期四, 20 十一月 2025 14:44:59 +0800
Subject: [PATCH] Merge branch 'master' of http://mobile.secondworld.net.cn:10010/r/Project_SG_scripts
---
Main/System/Battle/BattleObject/BattleObjMgr.cs | 126 ++++++++++++++++++++++++++++++++++++++---
1 files changed, 116 insertions(+), 10 deletions(-)
diff --git a/Main/System/Battle/BattleObject/BattleObjMgr.cs b/Main/System/Battle/BattleObject/BattleObjMgr.cs
index 0141bdc..446cc62 100644
--- a/Main/System/Battle/BattleObject/BattleObjMgr.cs
+++ b/Main/System/Battle/BattleObject/BattleObjMgr.cs
@@ -12,29 +12,44 @@
private Dictionary<int, BattleObject> redCampDict = new Dictionary<int, BattleObject>();
private Dictionary<int, BattleObject> blueCampDict = new Dictionary<int, BattleObject>();
- protected Dictionary<int, BattleObject> allBattleObjDict = new Dictionary<int, BattleObject>();
+ public Dictionary<int, BattleObject> allBattleObjDict = new Dictionary<int, BattleObject>();
protected BattleField battleField;
public void Init(BattleField _battleField, TeamBase _redTeam, TeamBase _blueTeam)
{
+ Release();
battleField = _battleField;
- CreateTeam(battleField.battleRootNode.redTeamNodeList, redCampDict, _redTeam, BattleCamp.Red);
- CreateTeam(battleField.battleRootNode.blueTeamNodeList, blueCampDict, _blueTeam, BattleCamp.Blue);
+ ReloadTeam(_redTeam, BattleCamp.Red);
+ ReloadTeam(_blueTeam, BattleCamp.Blue, false);
}
+ public void ReloadTeam(TeamBase teamBase, BattleCamp _camp, bool active = true)
+ {
+ var posNodeList = _camp == BattleCamp.Red ? battleField.battleRootNode.redTeamNodeList : battleField.battleRootNode.blueTeamNodeList;
+ var campDict = _camp == BattleCamp.Red ? redCampDict : blueCampDict;
+ CreateTeam(posNodeList, campDict, teamBase, _camp, active);
+ }
- protected void CreateTeam(List<GameObject> posNodeList, Dictionary<int, BattleObject> campDict, TeamBase teamBase, BattleCamp _Camp)
+ protected void CreateTeam(List<GameObject> posNodeList, Dictionary<int, BattleObject> campDict, TeamBase teamBase, BattleCamp _Camp, bool active)
{
DestroyTeam(campDict);
- for (int i = 0; i < teamBase.teamHeros.Length; i++)
+ if (teamBase == null)
{
- TeamHero teamHero = teamBase.teamHeros[i];
+ return;
+ }
+
+
+ for (int i = 0; i < teamBase.serverHeroes.Length; i++)
+ {
+ TeamHero teamHero = teamBase.serverHeroes[i];
if (teamHero != null)
{
BattleObject battleObj = BattleObjectFactory.CreateBattleObject(battleField, posNodeList, teamHero, _Camp);
+ battleObj.heroGo.SetActive(active);
allBattleObjDict.Add(battleObj.ObjID, battleObj);
campDict.Add(teamHero.positionNum, battleObj);
+ battleObj.SetSpeedRatio(battleField.speedRatio);
}
}
}
@@ -48,7 +63,19 @@
return null;
}
- public List<BattleObject> GetBattleObjList(H0604_tagUseSkillAttack tagUseSkillAttack)
+ public List<BattleObject> GetBattleObjList(BattleCamp _Camp)
+ {
+ if (_Camp == BattleCamp.Red)
+ {
+ return redCampList;
+ }
+ else
+ {
+ return blueCampList;
+ }
+ }
+
+ public List<BattleObject> GetBattleObjList(HB427_tagSCUseSkill tagUseSkillAttack)
{
List<BattleObject> retList = new List<BattleObject>();
foreach (var hurt in tagUseSkillAttack.HurtList)
@@ -63,25 +90,82 @@
return retList;
}
+ public void DestroyTeam(BattleCamp battleCamp)
+ {
+ Dictionary<int, BattleObject> campDict = battleCamp == BattleCamp.Red ? redCampDict : blueCampDict;
+ if (campDict == null)
+ {
+ return;
+ }
+
+ DestroyTeam(campDict);
+ }
+
+ public void DestroyObjIds(uint[] objIDs)
+ {
+ if (objIDs == null || objIDs.Length == 0)
+ {
+ return;
+ }
+
+ foreach (var objID in objIDs)
+ {
+ if (allBattleObjDict.TryGetValue((int)objID, out BattleObject battleObj))
+ {
+ if (battleObj.Camp == BattleCamp.Red)
+ {
+ redCampDict.Remove(battleObj.teamHero.positionNum);
+ }
+ else
+ {
+ blueCampDict.Remove(battleObj.teamHero.positionNum);
+ }
+ allBattleObjDict.Remove((int)objID);
+ BattleObjectFactory.DestroyBattleObject((int)objID, battleObj);
+ }
+ }
+ }
+
protected void DestroyTeam(Dictionary<int, BattleObject> campDict)
{
foreach (var item in campDict)
{
BattleObject battleObj = item.Value;
+ var positionNum = item.Key;
if (battleObj != null)
{
allBattleObjDict.Remove(battleObj.ObjID);
- BattleObjectFactory.DestroyBattleObject(item.Key, battleObj);
+ BattleObjectFactory.DestroyBattleObject(battleObj.ObjID, battleObj);
}
}
campDict.Clear();
-
}
- public void Release()
+ // 绌洪棽鐘舵��
+ public virtual void HaveRest(BattleCamp _Camp)
+ {
+ // 浼戞伅鐘舵��
+ if (_Camp == BattleCamp.Red)
+ {
+ foreach (var item in redCampDict.Values)
+ {
+ item.HaveRest();
+ }
+ }
+ else
+ {
+ foreach (var item in blueCampDict.Values)
+ {
+ item.HaveRest();
+ }
+ }
+ }
+
+ public virtual void Release()
{
DestroyTeam(redCampDict);
DestroyTeam(blueCampDict);
+ allBattleObjDict.Clear();
}
public void Run()
@@ -143,6 +227,28 @@
return blueCampList;
}
+ public BattleObject GetBattleObjectByIndex(BattleCamp camp, int selfIndex)
+ {
+ if (camp == BattleCamp.Red)
+ {
+ redCampDict.TryGetValue(selfIndex, out BattleObject battleObj);
+ return battleObj;
+ }
+ else
+ {
+ blueCampDict.TryGetValue(selfIndex, out BattleObject battleObj);
+ return battleObj;
+ }
+ }
+
+ public void SetSpeedRatio(float ratio)
+ {
+ foreach (var obj in allBattleObjDict.Values)
+ {
+ obj.SetSpeedRatio(ratio);
+ }
+ }
+
#if UNITY_EDITOR_STOP_USING
public void ReviveAll()
{
--
Gitblit v1.8.0