using System; using System.Collections.Generic; using System.Text; namespace ET { public class BattleStartEvent : AEvent { public override async ETTask Run(EventType.BattleStart args) { IEnumerable teamList = args.teamList; IEnumerable targetTeamList = args.targetTeamList; int index = 0; foreach (Unit unit in teamList) { unit.GetComponent().pos = index++; BrocastComponent brocastComponent = unit.GetComponent(); brocastComponent.ClearInternal(); brocastComponent.AddInternal(teamList); if (args.isPvp) brocastComponent.AddInternal(targetTeamList); CheckState(unit); } index = 0; foreach (Unit unit in targetTeamList) { unit.GetOrAddComponent().pos = index++; BrocastComponent brocastComponent = unit.GetComponent(); brocastComponent.ClearInternal(); brocastComponent.AddInternal(teamList); if (args.isPvp) { brocastComponent.AddInternal(targetTeamList); CheckState(unit); } } await ETTask.CompletedTask; } private static void CheckState(Unit unit) { unit.Stop(); NumericComponent num = unit.GetComponent(); if (!unit.IsAlive) { Log.Error($"玩家{unit.Id} name={ UserComponent.Instance.Get(unit.Id)?.NickName}已经死亡"); unit.Live(num); } if (num.GetAsInt(NumericType.Hp) <= 0) { Log.Error($"玩家{unit.Id} name={ UserComponent.Instance.Get(unit.Id)?.NickName}生命值小于等于0"); num.Set(NumericType.Hp, 1); } if (unit.UnitType == UnitType.Player) CharacterHelper.ResetAddNumeric(unit, num); SkillAI skillAi = unit.GetComponent(); skillAi.roundCD = CharacterHelper.GetSkillCD(num.Get(NumericType.Spd)); if (AppConfig.inst.showBattleSkillInfo) Log.Info($"【{ UserComponent.Instance.Get(unit.Id)?.NickName} ({ unit.Id})】cd = {skillAi.roundCD}"); Game.EventSystem.Publish(new ET.EventType.UpdateAutoSkillList { skillAI = unit.GetComponent(), }).Coroutine(); if (unit.GetComponent() == null) unit.AddComponent(); ModifierContainerComponent modifierCatainarComponent = unit.GetComponent(); if (modifierCatainarComponent == null) { Log.Error($"modifierCatainarComponent == null where id ={unit.Id}"); } modifierCatainarComponent.ClearState(); } } }