zxl
/
CTT
forked from Cal/CTT
1
0
Fork 0
CTT/Server/Hotfix/Game/Event/Battle/BattleStartEvent.cs

78 lines
2.9 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00
using System;
using System.Collections.Generic;
using System.Text;
namespace ET
{
public class BattleStartEvent : AEvent<EventType.BattleStart>
{
public override async ETTask Run(EventType.BattleStart args)
{
var teamList = args.teamList;
var targetTeamList = args.targetTeamList;
int index = 0;
foreach (var unit in teamList)
{
unit.GetComponent<Position>().pos = index++;
var brocastComponent = unit.GetComponent<BrocastComponent>();
brocastComponent.ClearInternal();
brocastComponent.AddInternal(teamList);
if (args.isPvp)
brocastComponent.AddInternal(targetTeamList);
CheckState(unit);
}
index = 0;
foreach (var unit in targetTeamList)
{
unit.GetOrAddComponent<Position>().pos = index++;
var brocastComponent = unit.GetComponent<BrocastComponent>();
brocastComponent.ClearInternal();
brocastComponent.AddInternal(teamList);
if (args.isPvp)
{
brocastComponent.AddInternal(targetTeamList);
CheckState(unit);
}
}
await ETTask.CompletedTask;
}
private static void CheckState(Unit unit)
{
unit.Stop();
var num = unit.GetComponent<NumericComponent>();
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);
var skillAi = unit.GetComponent<SkillAI>();
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<SkillAI>(),
}).Coroutine();
if (unit.GetComponent<UnitEnermy>() == null)
unit.AddComponent<UnitEnermy>();
var modifierCatainarComponent = unit.GetComponent<ModifierContainerComponent>();
if (modifierCatainarComponent == null)
{
Log.Error($"modifierCatainarComponent == null where id ={unit.Id}");
}
modifierCatainarComponent.ClearState();
}
}
}