调整代码
parent
3283e6a19d
commit
517aae5ebc
File diff suppressed because one or more lines are too long
|
|
@ -16,7 +16,7 @@ namespace Code.Scripts.Gameplay.BT.Task
|
|||
|
||||
public override void OnStart()
|
||||
{
|
||||
_owner = GameUnitManager.instance.characterManager.Get(SharedBattleInfo.Value.ownerId);
|
||||
_owner = GameUnitManager.instance.infightUnits.Search(SharedBattleInfo.Value.ownerId) as Character;
|
||||
if (_owner != null)
|
||||
_bornCellIndex = LevelManager.Instance.CurrentLevel.Map.BlockPosition2TGSCellIndex(_owner.runtimeData.characterLevelData.BornPosition);
|
||||
SharedBattleInfo.Value.PartolPointIndex = -1;
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ namespace Gameplay.Character
|
|||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var bt = await AIManager.Instance.RegisterAI(Node.GameObject, AIBehavior);
|
||||
bt.SetVariable("battleInfo", new SharedBattleInfo()
|
||||
{
|
||||
|
|
@ -59,9 +59,9 @@ namespace Gameplay.Character
|
|||
{
|
||||
AIManager.Instance.UnRegisterAI(Node.GameObject);
|
||||
}
|
||||
|
||||
BuffManager.instance.RemoveCharacter(this);
|
||||
SkillManager.instance.RemoveCharacter(this);
|
||||
|
||||
BuffManager.instance?.RemoveCharacter(this);
|
||||
SkillManager.instance?.RemoveCharacter(this);
|
||||
}
|
||||
|
||||
protected override void _OnUseSkill(int cellIndex,
|
||||
|
|
|
|||
|
|
@ -4,31 +4,18 @@ using Gameplay.Unit;
|
|||
|
||||
namespace Gameplay.Character
|
||||
{
|
||||
public class CharacterManager : IDisposable
|
||||
public class CharacterManager
|
||||
{
|
||||
|
||||
private readonly List<Character> _characterList = new List<Character>();
|
||||
private readonly Dictionary<int, Troops> _troopDict = new Dictionary<int, Troops>();
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
foreach (var charactor in _characterList)
|
||||
{
|
||||
charactor.Dispose();
|
||||
}
|
||||
_characterList.Clear();
|
||||
}
|
||||
|
||||
public void AddCharacter(Character character)
|
||||
{
|
||||
_characterList.Add(character);
|
||||
_AddToTroop(character);
|
||||
}
|
||||
|
||||
public void RemoveCharacter(Character c)
|
||||
{
|
||||
var index = _characterList.IndexOf(c);
|
||||
_characterList.RemoveAt(index);
|
||||
_RemoveFromTroop(c);
|
||||
}
|
||||
|
||||
|
|
@ -56,6 +43,11 @@ namespace Gameplay.Character
|
|||
}
|
||||
}
|
||||
|
||||
public bool Contains(uint id)
|
||||
{
|
||||
return GameUnitManager.instance.infightUnits.Contains(id);
|
||||
}
|
||||
|
||||
public Character Get(uint id)
|
||||
{
|
||||
var c = GameUnitManager.instance.infightUnits.Search(id) as Character;
|
||||
|
|
@ -102,17 +94,22 @@ namespace Gameplay.Character
|
|||
|
||||
public void ForEach(Action<Character> action)
|
||||
{
|
||||
foreach (var charactor in _characterList)
|
||||
foreach (var unit in GameUnitManager.instance.infightUnits.unitList)
|
||||
{
|
||||
action(charactor);
|
||||
var charactor = unit as Character;
|
||||
if (charactor != null)
|
||||
{
|
||||
action(charactor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<Character> FindAll(Func<Character, bool> conditions)
|
||||
{
|
||||
List<Character> result = new List<Character>();
|
||||
foreach (var charactor in _characterList)
|
||||
foreach (var unit in GameUnitManager.instance.infightUnits.unitList)
|
||||
{
|
||||
var charactor = unit as Character;
|
||||
if (conditions(charactor))
|
||||
{
|
||||
result.Add(charactor);
|
||||
|
|
@ -124,8 +121,9 @@ namespace Gameplay.Character
|
|||
|
||||
public Character FindOne(Func<Character, bool> conditions)
|
||||
{
|
||||
foreach (var charactor in _characterList)
|
||||
foreach (var unit in GameUnitManager.instance.infightUnits.unitList)
|
||||
{
|
||||
var charactor = unit as Character;
|
||||
if (conditions(charactor))
|
||||
{
|
||||
return charactor;
|
||||
|
|
|
|||
|
|
@ -13,378 +13,381 @@ using Utils;
|
|||
using Constants = Framework.Constants;
|
||||
using Image = UnityEngine.UI.Image;
|
||||
|
||||
public class UIFightSceneController : UIWindow{
|
||||
public class UIFightSceneController : UIWindow
|
||||
{
|
||||
|
||||
//UI GameObj
|
||||
private GameObject GoBloods;
|
||||
private GameObject GoActionStates;
|
||||
private GameObject GoNumbers;
|
||||
//UI GameObj
|
||||
private GameObject GoBloods;
|
||||
private GameObject GoActionStates;
|
||||
private GameObject GoNumbers;
|
||||
|
||||
private List<uint> m_fightIDs = new List<uint>();
|
||||
private Dictionary<uint, GameObject> m_goBloodsMap = new Dictionary<uint, GameObject>();
|
||||
private Dictionary<uint, GameObject> m_goActionStatesMap = new Dictionary<uint, GameObject>();
|
||||
private Dictionary<uint, GameObject> m_goNumbersMap = new Dictionary<uint, GameObject>();
|
||||
private List<uint> m_fightIDs = new List<uint>();
|
||||
private Dictionary<uint, GameObject> m_goBloodsMap = new Dictionary<uint, GameObject>();
|
||||
private Dictionary<uint, GameObject> m_goActionStatesMap = new Dictionary<uint, GameObject>();
|
||||
private Dictionary<uint, GameObject> m_goNumbersMap = new Dictionary<uint, GameObject>();
|
||||
|
||||
private List<List<int>> _damageL = new List<List<int>>(10);
|
||||
private Dictionary<int, float> _numbersMap = new Dictionary<int, float>();
|
||||
private List<List<int>> _damageL = new List<List<int>>(10);
|
||||
private Dictionary<int, float> _numbersMap = new Dictionary<int, float>();
|
||||
|
||||
[Range(1, 2.5f)]
|
||||
public float bloodOffsetY = 1.8f;
|
||||
|
||||
[Range(0, 1.5f)]
|
||||
public float stateOffsetY = 1f;
|
||||
[Range(1, 2.5f)]
|
||||
public float bloodOffsetY = 1.8f;
|
||||
|
||||
[Range(-2.5f, 0)]
|
||||
public float stateOffsetX = -1f;
|
||||
|
||||
// Use this for initialization
|
||||
public override void OnAwake()
|
||||
{
|
||||
//bind UI GameObj
|
||||
GoBloods = transform.Find("Content/Bloods").gameObject;
|
||||
GoActionStates = transform.Find("Content/ActionStates").gameObject;
|
||||
GoNumbers = transform.Find("Content/Numbers").gameObject;
|
||||
}
|
||||
[Range(0, 1.5f)]
|
||||
public float stateOffsetY = 1f;
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (!LevelManager.Instance.CurrentLevel.IsInBattle())
|
||||
{
|
||||
foreach (var uid in m_fightIDs)
|
||||
{
|
||||
ClearGo(uid);
|
||||
}
|
||||
[Range(-2.5f, 0)]
|
||||
public float stateOffsetX = -1f;
|
||||
|
||||
return;
|
||||
}
|
||||
// Use this for initialization
|
||||
public override void OnAwake()
|
||||
{
|
||||
//bind UI GameObj
|
||||
GoBloods = transform.Find("Content/Bloods").gameObject;
|
||||
GoActionStates = transform.Find("Content/ActionStates").gameObject;
|
||||
GoNumbers = transform.Find("Content/Numbers").gameObject;
|
||||
}
|
||||
|
||||
foreach (var uid in TeamManager.Instance.GetDeadList())
|
||||
{
|
||||
ClearGo(uid);
|
||||
}
|
||||
private void Update()
|
||||
{
|
||||
if (!LevelManager.Instance.CurrentLevel.IsInBattle())
|
||||
{
|
||||
foreach (var uid in m_fightIDs)
|
||||
{
|
||||
ClearGo(uid);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (var uid in TeamManager.Instance.GetDeadList())
|
||||
{
|
||||
ClearGo(uid);
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD>Ѫ<EFBFBD><D1AA><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>˺<EFBFBD>Ʈ<EFBFBD><C6AE>
|
||||
foreach (var uid in m_fightIDs)
|
||||
{
|
||||
if (!m_goBloodsMap.ContainsKey(uid))
|
||||
{
|
||||
AddBloodGo(uid);
|
||||
}
|
||||
if (!m_goActionStatesMap.ContainsKey(uid))
|
||||
{
|
||||
AddActionStateImg(uid);
|
||||
}
|
||||
if (!m_goNumbersMap.ContainsKey(uid))
|
||||
{
|
||||
AddDamageGo(uid);
|
||||
}
|
||||
}
|
||||
{
|
||||
if (!m_goBloodsMap.ContainsKey(uid))
|
||||
{
|
||||
AddBloodGo(uid);
|
||||
}
|
||||
if (!m_goActionStatesMap.ContainsKey(uid))
|
||||
{
|
||||
AddActionStateImg(uid);
|
||||
}
|
||||
if (!m_goNumbersMap.ContainsKey(uid))
|
||||
{
|
||||
AddDamageGo(uid);
|
||||
}
|
||||
}
|
||||
|
||||
UpdateBloods();
|
||||
UpdateActionStates();
|
||||
}
|
||||
UpdateBloods();
|
||||
UpdateActionStates();
|
||||
}
|
||||
|
||||
//ˢ<><CBA2>Ѫ<EFBFBD><D1AA>
|
||||
void UpdateBloods()
|
||||
{
|
||||
foreach (var item in m_goBloodsMap)
|
||||
{
|
||||
var go = item.Value;
|
||||
uint uid = item.Key;
|
||||
//Character character = LevelManager.Instance.CurrentLevel.CharacterManager.Get(uid);
|
||||
GameUnit character = GameUnitManager.instance.totalUnits.Search(uid);
|
||||
if (character != null)
|
||||
{
|
||||
SetBloodPos(go, character);
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
foreach (var item in m_goBloodsMap)
|
||||
{
|
||||
var go = item.Value;
|
||||
uint uid = item.Key;
|
||||
//Character character = LevelManager.Instance.CurrentLevel.CharacterManager.Get(uid);
|
||||
GameUnit character = GameUnitManager.instance.totalUnits.Search(uid);
|
||||
if (character != null)
|
||||
{
|
||||
SetBloodPos(go, character);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//ˢ<><CBA2>״̬ͼ<CCAC><CDBC>
|
||||
void UpdateActionStates()
|
||||
{
|
||||
foreach (var item in m_goActionStatesMap)
|
||||
{
|
||||
var go = item.Value;
|
||||
uint uid = item.Key;
|
||||
if (TeamManager.Instance.IsCharacter(uid))
|
||||
{
|
||||
Character character = GameUnitManager.instance.characterManager.Get(uid);
|
||||
if (character != null)
|
||||
{
|
||||
var img = go.GetComponent<Image>();
|
||||
if (character.statusData.isRetreat)
|
||||
{
|
||||
img.sprite = AssetManager.Instance.LoadAsset<Sprite>(Constants.UI_RETREATE_STATE_MAP);
|
||||
SetActionStatesPos(go, character);
|
||||
go.SetActive(true);
|
||||
img.SetNativeSize();
|
||||
CommonUtils.SetScaleWithCameraOrgSize(go);
|
||||
}
|
||||
else if (character.runtimeData.isInSuppressed)
|
||||
{
|
||||
img.sprite = AssetManager.Instance.LoadAsset<Sprite>(Constants.UI_SUPPRESS_STATE_MAP);
|
||||
SetActionStatesPos(go, character);
|
||||
go.SetActive(true);
|
||||
img.SetNativeSize();
|
||||
CommonUtils.SetScaleWithCameraOrgSize(go);
|
||||
}
|
||||
else
|
||||
{
|
||||
go.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
void UpdateActionStates()
|
||||
{
|
||||
foreach (var item in m_goActionStatesMap)
|
||||
{
|
||||
var go = item.Value;
|
||||
uint uid = item.Key;
|
||||
if (TeamManager.Instance.IsCharacter(uid))
|
||||
{
|
||||
if (GameUnitManager.instance.characterManager.Contains(uid))
|
||||
{
|
||||
Character character = GameUnitManager.instance.characterManager.Get(uid);
|
||||
var img = go.GetComponent<Image>();
|
||||
if (character.statusData.isRetreat)
|
||||
{
|
||||
img.sprite = AssetManager.Instance.LoadAsset<Sprite>(Constants.UI_RETREATE_STATE_MAP);
|
||||
SetActionStatesPos(go, character);
|
||||
go.SetActive(true);
|
||||
img.SetNativeSize();
|
||||
CommonUtils.SetScaleWithCameraOrgSize(go);
|
||||
}
|
||||
else if (character.runtimeData.isInSuppressed)
|
||||
{
|
||||
img.sprite = AssetManager.Instance.LoadAsset<Sprite>(Constants.UI_SUPPRESS_STATE_MAP);
|
||||
SetActionStatesPos(go, character);
|
||||
go.SetActive(true);
|
||||
img.SetNativeSize();
|
||||
CommonUtils.SetScaleWithCameraOrgSize(go);
|
||||
}
|
||||
else
|
||||
{
|
||||
go.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async void AddBloodGo(uint uid)
|
||||
{
|
||||
var unit = GameUnitManager.instance.totalUnits.Search(uid);
|
||||
if (unit != null)
|
||||
{
|
||||
if (unit.statusData.isOnVehicle)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
List<uint> myFightIDs = TeamManager.Instance.GetFightList();
|
||||
GameObject prefab;
|
||||
if (myFightIDs.Contains(uid))
|
||||
{
|
||||
if (TeamManager.Instance.IsCharacter(uid))
|
||||
{
|
||||
prefab = AssetManager.Instance.LoadAsset<GameObject>("Assets/Art/UI/Prefab/LevelSceneUI/UI_CharacterState_Bar.prefab");
|
||||
}
|
||||
else
|
||||
{
|
||||
prefab = AssetManager.Instance.LoadAsset<GameObject>("Assets/Art/UI/Prefab/LevelSceneUI/UI_VehicleState_Bar.prefab");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
prefab = AssetManager.Instance.LoadAsset<GameObject>("Assets/Art/UI/Prefab/LevelSceneUI/UI_EnemyState_Bar.prefab");
|
||||
}
|
||||
var go = Instantiate(prefab, GoBloods.transform);
|
||||
var comp = go.GetComponent<UIUnitStateBar>();
|
||||
comp.SetUid(uid);
|
||||
GameUnit character = GameUnitManager.instance.infightUnits.Search(uid);
|
||||
if (character != null)
|
||||
{
|
||||
SetBloodPos(go, character);
|
||||
}
|
||||
m_goBloodsMap.Add(uid, go);
|
||||
}
|
||||
async void AddBloodGo(uint uid)
|
||||
{
|
||||
var unit = GameUnitManager.instance.totalUnits.Search(uid);
|
||||
if (unit != null)
|
||||
{
|
||||
if (unit.statusData.isOnVehicle)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void AddActionStateImg(uint uid)
|
||||
{
|
||||
var unit = GameUnitManager.instance.infightUnits.Search(uid);
|
||||
if (unit == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (unit.statusData.isOnVehicle)
|
||||
{
|
||||
return;
|
||||
}
|
||||
List<uint> myFightIDs = TeamManager.Instance.GetFightList();
|
||||
GameObject prefab;
|
||||
if (myFightIDs.Contains(uid))
|
||||
{
|
||||
if (TeamManager.Instance.IsCharacter(uid))
|
||||
{
|
||||
prefab = AssetManager.Instance.LoadAsset<GameObject>("Assets/Art/UI/Prefab/LevelSceneUI/UI_CharacterState_Bar.prefab");
|
||||
}
|
||||
else
|
||||
{
|
||||
prefab = AssetManager.Instance.LoadAsset<GameObject>("Assets/Art/UI/Prefab/LevelSceneUI/UI_VehicleState_Bar.prefab");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
prefab = AssetManager.Instance.LoadAsset<GameObject>("Assets/Art/UI/Prefab/LevelSceneUI/UI_EnemyState_Bar.prefab");
|
||||
}
|
||||
var go = Instantiate(prefab, GoBloods.transform);
|
||||
var comp = go.GetComponent<UIUnitStateBar>();
|
||||
comp.SetUid(uid);
|
||||
GameUnit character = GameUnitManager.instance.infightUnits.Search(uid);
|
||||
if (character != null)
|
||||
{
|
||||
SetBloodPos(go, character);
|
||||
}
|
||||
m_goBloodsMap.Add(uid, go);
|
||||
}
|
||||
|
||||
if (unit.statusData.isDead)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(GameUnitManager.instance.infightUnits.Search(uid).gameunitType == EGameUnitType.Character)
|
||||
{
|
||||
Character character = GameUnitManager.instance.characterManager.Get(uid);
|
||||
if (character != null)
|
||||
{
|
||||
GameObject Image_State = new GameObject("Image_State");
|
||||
RectTransform rect = Image_State.AddComponent<RectTransform>();
|
||||
Image_State.AddComponent<Image>();
|
||||
Image_State.SetActive(false);
|
||||
m_goActionStatesMap.Add(uid, Image_State);
|
||||
Image_State.transform.SetParent(GoActionStates.transform);
|
||||
}
|
||||
}
|
||||
}
|
||||
void AddActionStateImg(uint uid)
|
||||
{
|
||||
var unit = GameUnitManager.instance.infightUnits.Search(uid);
|
||||
if (unit == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (unit.statusData.isOnVehicle)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void AddDamageGo(uint uid)
|
||||
{
|
||||
var unit = GameUnitManager.instance.infightUnits.Search(uid);
|
||||
if (unit != null)
|
||||
{
|
||||
if (unit.statusData.isOnVehicle)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!m_goNumbersMap.ContainsKey(uid))
|
||||
{
|
||||
var prefab = AssetManager.Instance.LoadAsset<GameObject>("Assets/Art/UI/Prefab/LevelSceneUI/UICharacterDamage.prefab");
|
||||
var go = Instantiate(prefab);
|
||||
go.transform.SetParent(GoNumbers.transform);
|
||||
m_goNumbersMap.Add(uid, go);
|
||||
go.transform.localScale = new Vector3(1, 1, 1);
|
||||
}
|
||||
}
|
||||
if (unit.statusData.isDead)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void SetBloodPos(GameObject go, GameUnit character)
|
||||
{
|
||||
var charPos = character.Node.transform.position;//character.transData.pos;
|
||||
var originPos = new Vector3(charPos.x , charPos.y, charPos.z);
|
||||
originPos.y += bloodOffsetY;
|
||||
var pos = PhxhSDK.Utils.WorldPos2ScreenPos(originPos, CameraManager.Instance.MainCamera);
|
||||
if (GameUnitManager.instance.infightUnits.Search(uid).gameunitType == EGameUnitType.Character)
|
||||
{
|
||||
Character character = GameUnitManager.instance.characterManager.Get(uid);
|
||||
if (character != null)
|
||||
{
|
||||
GameObject Image_State = new GameObject("Image_State");
|
||||
RectTransform rect = Image_State.AddComponent<RectTransform>();
|
||||
Image_State.AddComponent<Image>();
|
||||
Image_State.SetActive(false);
|
||||
m_goActionStatesMap.Add(uid, Image_State);
|
||||
Image_State.transform.SetParent(GoActionStates.transform);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pos = PhxhSDK.Utils.ScreenPos2WorldPos(pos, CameraManager.Instance.UICamera);
|
||||
void AddDamageGo(uint uid)
|
||||
{
|
||||
var unit = GameUnitManager.instance.infightUnits.Search(uid);
|
||||
if (unit != null)
|
||||
{
|
||||
if (unit.statusData.isOnVehicle)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
pos = new Vector3(pos.x, pos.y, 0);
|
||||
if (!m_goNumbersMap.ContainsKey(uid))
|
||||
{
|
||||
var prefab = AssetManager.Instance.LoadAsset<GameObject>("Assets/Art/UI/Prefab/LevelSceneUI/UICharacterDamage.prefab");
|
||||
var go = Instantiate(prefab);
|
||||
go.transform.SetParent(GoNumbers.transform);
|
||||
m_goNumbersMap.Add(uid, go);
|
||||
go.transform.localScale = new Vector3(1, 1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
go.transform.position = pos;
|
||||
//go.transform.localScale = new Vector3(1, 1, 1);
|
||||
CommonUtils.SetScaleWithCameraOrgSize(go);
|
||||
}
|
||||
|
||||
void SetActionStatesPos(GameObject go, Character character)
|
||||
{
|
||||
var originPos = character.transData.pos;
|
||||
originPos.y += stateOffsetY;
|
||||
originPos.x += stateOffsetX;
|
||||
var pos = PhxhSDK.Utils.WorldPos2ScreenPos(originPos, CameraManager.Instance.MainCamera);
|
||||
void SetBloodPos(GameObject go,
|
||||
GameUnit character)
|
||||
{
|
||||
var charPos = character.Node.transform.position; //character.transData.pos;
|
||||
var originPos = new Vector3(charPos.x, charPos.y, charPos.z);
|
||||
originPos.y += bloodOffsetY;
|
||||
var pos = PhxhSDK.Utils.WorldPos2ScreenPos(originPos, CameraManager.Instance.MainCamera);
|
||||
|
||||
pos = PhxhSDK.Utils.ScreenPos2WorldPos(pos, CameraManager.Instance.UICamera);
|
||||
pos = PhxhSDK.Utils.ScreenPos2WorldPos(pos, CameraManager.Instance.UICamera);
|
||||
|
||||
pos = new Vector3(pos.x, pos.y, 0);
|
||||
pos = new Vector3(pos.x, pos.y, 0);
|
||||
|
||||
go.transform.position = pos;
|
||||
go.transform.localScale = new Vector3(1, 1, 1);
|
||||
}
|
||||
go.transform.position = pos;
|
||||
//go.transform.localScale = new Vector3(1, 1, 1);
|
||||
CommonUtils.SetScaleWithCameraOrgSize(go);
|
||||
}
|
||||
|
||||
//invoke when open window
|
||||
protected override void OnOpenWindow()
|
||||
{
|
||||
EventManager.Instance.Register(EventManager.EventName.INFIGHT_GET_DAMAGED, (Action<EventDataGetDamaged>)OnInjured);
|
||||
EventManager.Instance.Register(EventManager.EventName.LevelBattleBegin, OnBattleBegin);
|
||||
EventManager.Instance.Register(EventManager.EventName.INFIGHT_UNIT_REMOVE, (Action<Character>)OnBattleCharRemove);
|
||||
EventManager.Instance.Register(EventManager.EventName.INFIGHT_SKILL_START_PAUSE, OnSkillPutting);
|
||||
EventManager.Instance.Register(EventManager.EventName.INFIGHT_SKILL_END_PAUSE, OnSkillPutEnd);
|
||||
EventManager.Instance.Register(EventManager.EventName.INFIGHT_UP_VEHICLE, (Action<GameUnit>)OnUpVehicle);
|
||||
EventManager.Instance.Register(EventManager.EventName.LevelFightUIHPInit, (Action<GameUnit>)OnHPInit);
|
||||
}
|
||||
|
||||
//invoke when reload window
|
||||
protected override void OnReloadWindow()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//invoke when close window
|
||||
protected override void OnCloseWindow()
|
||||
{
|
||||
foreach (var uid in m_fightIDs)
|
||||
{
|
||||
ClearGo(uid);
|
||||
}
|
||||
void SetActionStatesPos(GameObject go,
|
||||
Character character)
|
||||
{
|
||||
var originPos = character.transData.pos;
|
||||
originPos.y += stateOffsetY;
|
||||
originPos.x += stateOffsetX;
|
||||
var pos = PhxhSDK.Utils.WorldPos2ScreenPos(originPos, CameraManager.Instance.MainCamera);
|
||||
|
||||
EventManager.Instance.Unregister(EventManager.EventName.INFIGHT_GET_DAMAGED, (Action<EventDataGetDamaged>)OnInjured);
|
||||
EventManager.Instance.Unregister(EventManager.EventName.LevelBattleBegin, OnBattleBegin);
|
||||
EventManager.Instance.Unregister(EventManager.EventName.INFIGHT_UNIT_REMOVE, (Action<Character>)OnBattleCharRemove);
|
||||
EventManager.Instance.Unregister(EventManager.EventName.INFIGHT_SKILL_START_PAUSE, OnSkillPutting);
|
||||
EventManager.Instance.Unregister(EventManager.EventName.INFIGHT_SKILL_END_PAUSE, OnSkillPutEnd);
|
||||
EventManager.Instance.Unregister(EventManager.EventName.INFIGHT_UP_VEHICLE, (Action<GameUnit>)OnUpVehicle);
|
||||
EventManager.Instance.Unregister(EventManager.EventName.LevelFightUIHPInit, (Action<GameUnit>)OnHPInit);
|
||||
}
|
||||
pos = PhxhSDK.Utils.ScreenPos2WorldPos(pos, CameraManager.Instance.UICamera);
|
||||
|
||||
pos = new Vector3(pos.x, pos.y, 0);
|
||||
|
||||
go.transform.position = pos;
|
||||
go.transform.localScale = new Vector3(1, 1, 1);
|
||||
}
|
||||
|
||||
//invoke when open window
|
||||
protected override void OnOpenWindow()
|
||||
{
|
||||
EventManager.Instance.Register(EventManager.EventName.INFIGHT_GET_DAMAGED, (Action<EventDataGetDamaged>)OnInjured);
|
||||
EventManager.Instance.Register(EventManager.EventName.LevelBattleBegin, OnBattleBegin);
|
||||
EventManager.Instance.Register(EventManager.EventName.INFIGHT_UNIT_REMOVE, (Action<Character>)OnBattleCharRemove);
|
||||
EventManager.Instance.Register(EventManager.EventName.INFIGHT_SKILL_START_PAUSE, OnSkillPutting);
|
||||
EventManager.Instance.Register(EventManager.EventName.INFIGHT_SKILL_END_PAUSE, OnSkillPutEnd);
|
||||
EventManager.Instance.Register(EventManager.EventName.INFIGHT_UP_VEHICLE, (Action<GameUnit>)OnUpVehicle);
|
||||
EventManager.Instance.Register(EventManager.EventName.LevelFightUIHPInit, (Action<GameUnit>)OnHPInit);
|
||||
}
|
||||
|
||||
//invoke when reload window
|
||||
protected override void OnReloadWindow()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//invoke when close window
|
||||
protected override void OnCloseWindow()
|
||||
{
|
||||
foreach (var uid in m_fightIDs)
|
||||
{
|
||||
ClearGo(uid);
|
||||
}
|
||||
|
||||
EventManager.Instance.Unregister(EventManager.EventName.INFIGHT_GET_DAMAGED, (Action<EventDataGetDamaged>)OnInjured);
|
||||
EventManager.Instance.Unregister(EventManager.EventName.LevelBattleBegin, OnBattleBegin);
|
||||
EventManager.Instance.Unregister(EventManager.EventName.INFIGHT_UNIT_REMOVE, (Action<Character>)OnBattleCharRemove);
|
||||
EventManager.Instance.Unregister(EventManager.EventName.INFIGHT_SKILL_START_PAUSE, OnSkillPutting);
|
||||
EventManager.Instance.Unregister(EventManager.EventName.INFIGHT_SKILL_END_PAUSE, OnSkillPutEnd);
|
||||
EventManager.Instance.Unregister(EventManager.EventName.INFIGHT_UP_VEHICLE, (Action<GameUnit>)OnUpVehicle);
|
||||
EventManager.Instance.Unregister(EventManager.EventName.LevelFightUIHPInit, (Action<GameUnit>)OnHPInit);
|
||||
}
|
||||
|
||||
/********** <20><><EFBFBD><EFBFBD> **********/
|
||||
private void OnInjured(EventDataGetDamaged damageData)
|
||||
{
|
||||
uint uid = damageData.owner.GetID();
|
||||
//Character character = GameUnitManager.instance.characterManager.Get(uid);
|
||||
GameUnit character = GameUnitManager.instance.infightUnits.Search(uid);
|
||||
|
||||
if (!m_goNumbersMap.ContainsKey(uid))
|
||||
{
|
||||
AddDamageGo(uid);
|
||||
}
|
||||
var go = m_goNumbersMap[uid];
|
||||
var comp = go.GetComponent<UICharacterDamage>();
|
||||
comp.Injured(damageData, character);
|
||||
}
|
||||
{
|
||||
uint uid = damageData.owner.GetID();
|
||||
//Character character = GameUnitManager.instance.characterManager.Get(uid);
|
||||
GameUnit character = GameUnitManager.instance.infightUnits.Search(uid);
|
||||
|
||||
private void OnBattleBegin()
|
||||
{
|
||||
var allCharac = GameUnitManager.instance.infightUnits;
|
||||
var waitIDs = TeamManager.Instance.GetWaitList();
|
||||
var fightIDs = TeamManager.Instance.GetFightList();
|
||||
for (int i = 0; i < fightIDs.Count; i++)
|
||||
{
|
||||
m_fightIDs.Add(fightIDs[i]);
|
||||
}
|
||||
for (var i = 0; i < allCharac.count; ++i)
|
||||
{
|
||||
var c = allCharac.GetByIndex(i);
|
||||
if (!fightIDs.Contains(c.GetID()) && !waitIDs.Contains(c.GetID()))
|
||||
{
|
||||
m_fightIDs.Add(c.GetID());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!m_goNumbersMap.ContainsKey(uid))
|
||||
{
|
||||
AddDamageGo(uid);
|
||||
}
|
||||
var go = m_goNumbersMap[uid];
|
||||
var comp = go.GetComponent<UICharacterDamage>();
|
||||
comp.Injured(damageData, character);
|
||||
}
|
||||
|
||||
private void OnBattleCharRemove(Character character)
|
||||
{
|
||||
m_fightIDs.Remove(character.GetID());
|
||||
ClearGo(character.GetID());
|
||||
}
|
||||
private void OnBattleBegin()
|
||||
{
|
||||
var allCharac = GameUnitManager.instance.infightUnits;
|
||||
var waitIDs = TeamManager.Instance.GetWaitList();
|
||||
var fightIDs = TeamManager.Instance.GetFightList();
|
||||
for (int i = 0; i < fightIDs.Count; i++)
|
||||
{
|
||||
m_fightIDs.Add(fightIDs[i]);
|
||||
}
|
||||
for (var i = 0; i < allCharac.count; ++i)
|
||||
{
|
||||
var c = allCharac.GetByIndex(i);
|
||||
if (!fightIDs.Contains(c.GetID()) && !waitIDs.Contains(c.GetID()))
|
||||
{
|
||||
m_fightIDs.Add(c.GetID());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnSkillPutting()
|
||||
{
|
||||
UITipsManager.ShowClickShield();
|
||||
}
|
||||
private void OnBattleCharRemove(Character character)
|
||||
{
|
||||
m_fightIDs.Remove(character.GetID());
|
||||
ClearGo(character.GetID());
|
||||
}
|
||||
|
||||
private void OnSkillPutEnd()
|
||||
{
|
||||
UITipsManager.CloseClickShield();
|
||||
}
|
||||
private void OnSkillPutting()
|
||||
{
|
||||
UITipsManager.ShowClickShield();
|
||||
}
|
||||
|
||||
private void ClearGo(uint uid)
|
||||
{
|
||||
if (m_goBloodsMap.ContainsKey(uid))
|
||||
{
|
||||
Destroy(m_goBloodsMap[uid]);
|
||||
m_goBloodsMap.Remove(uid);
|
||||
}
|
||||
|
||||
if (m_goActionStatesMap.ContainsKey(uid))
|
||||
{
|
||||
Destroy(m_goActionStatesMap[uid]);
|
||||
m_goActionStatesMap.Remove(uid);
|
||||
}
|
||||
|
||||
if (m_goNumbersMap.ContainsKey(uid))
|
||||
{
|
||||
Destroy(m_goNumbersMap[uid]);
|
||||
m_goNumbersMap.Remove(uid);
|
||||
}
|
||||
}
|
||||
private void OnSkillPutEnd()
|
||||
{
|
||||
UITipsManager.CloseClickShield();
|
||||
}
|
||||
|
||||
private void OnUpVehicle(GameUnit unit)
|
||||
{
|
||||
ClearGo(unit.GetID());
|
||||
}
|
||||
private void ClearGo(uint uid)
|
||||
{
|
||||
if (m_goBloodsMap.ContainsKey(uid))
|
||||
{
|
||||
Destroy(m_goBloodsMap[uid]);
|
||||
m_goBloodsMap.Remove(uid);
|
||||
}
|
||||
|
||||
private void OnHPInit(GameUnit character)
|
||||
{
|
||||
if (LevelManager.Instance.CurrentLevel.IsInBattle())
|
||||
{
|
||||
var fightIDs = TeamManager.Instance.GetFightList();
|
||||
for (int i = 0; i < fightIDs.Count; i++)
|
||||
{
|
||||
if (!m_fightIDs.Contains(fightIDs[i]))
|
||||
{
|
||||
m_fightIDs.Add(fightIDs[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (m_goActionStatesMap.ContainsKey(uid))
|
||||
{
|
||||
Destroy(m_goActionStatesMap[uid]);
|
||||
m_goActionStatesMap.Remove(uid);
|
||||
}
|
||||
|
||||
if (m_goNumbersMap.ContainsKey(uid))
|
||||
{
|
||||
Destroy(m_goNumbersMap[uid]);
|
||||
m_goNumbersMap.Remove(uid);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnUpVehicle(GameUnit unit)
|
||||
{
|
||||
ClearGo(unit.GetID());
|
||||
}
|
||||
|
||||
private void OnHPInit(GameUnit character)
|
||||
{
|
||||
if (LevelManager.Instance.CurrentLevel.IsInBattle())
|
||||
{
|
||||
var fightIDs = TeamManager.Instance.GetFightList();
|
||||
for (int i = 0; i < fightIDs.Count; i++)
|
||||
{
|
||||
if (!m_fightIDs.Contains(fightIDs[i]))
|
||||
{
|
||||
m_fightIDs.Add(fightIDs[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,14 @@ namespace Gameplay.Unit.Data
|
|||
private List<GameUnit> _unitList = new List<GameUnit>();
|
||||
private Dictionary<uint, GameUnit> _unitDict = new Dictionary<uint, GameUnit>();
|
||||
|
||||
public List<GameUnit> unitList
|
||||
{
|
||||
get
|
||||
{
|
||||
return _unitList;
|
||||
}
|
||||
}
|
||||
|
||||
public int count { get; private set; }
|
||||
|
||||
public void Add(GameUnit unit)
|
||||
|
|
@ -46,6 +54,11 @@ namespace Gameplay.Unit.Data
|
|||
count--;
|
||||
}
|
||||
|
||||
public bool Contains(uint guid)
|
||||
{
|
||||
return _unitDict.ContainsKey(guid);
|
||||
}
|
||||
|
||||
public GameUnit Search(uint guid)
|
||||
{
|
||||
if (_unitDict.TryGetValue(guid, out var unit))
|
||||
|
|
|
|||
|
|
@ -191,6 +191,14 @@ namespace Gameplay.Unit
|
|||
infightUnits.Remove(unit);
|
||||
prepareUnits.Add(unit);
|
||||
|
||||
switch (unit.gameunitType)
|
||||
{
|
||||
case EGameUnitType.Character:
|
||||
if (unit is Character.Character character)
|
||||
characterManager.RemoveCharacter(character);
|
||||
break;
|
||||
}
|
||||
|
||||
DebugUtil.LogG($"单位:{unit.GetID()} 从战斗列表回到备战席");
|
||||
}
|
||||
|
||||
|
|
@ -267,6 +275,14 @@ namespace Gameplay.Unit
|
|||
unit.ExitBattle();
|
||||
infightUnits.Remove(unit);
|
||||
deadUnits.Add(unit);
|
||||
|
||||
switch (unit.gameunitType)
|
||||
{
|
||||
case EGameUnitType.Character:
|
||||
if (unit is Character.Character character)
|
||||
characterManager.RemoveCharacter(character);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void _UpdateTargets()
|
||||
|
|
@ -295,8 +311,18 @@ namespace Gameplay.Unit
|
|||
{
|
||||
var unit = infightUnits.GetByIndex(i);
|
||||
unit.ExitBattle();
|
||||
unit.Dispose();
|
||||
}
|
||||
for (int i = 0; i < prepareUnits.count; i++)
|
||||
{
|
||||
var unit = prepareUnits.GetByIndex(i);
|
||||
unit.Dispose();
|
||||
}
|
||||
for (int i = 0; i < deadUnits.count; i++)
|
||||
{
|
||||
var unit = deadUnits.GetByIndex(i);
|
||||
unit.Dispose();
|
||||
}
|
||||
characterManager.Dispose();
|
||||
instance = null;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue