public abstract void Excute(战斗结果 结果);
public List<战斗结果> 战斗结算() { if (!teamA战场.IsEnd) throw new Exception("战斗还没结束"); 战斗结果 teamA战斗结果 = new 战斗结果(); 战斗结果 teamB战斗结果 = new 战斗结果(); bool isTeamA团灭 = true; bool isTeamB团灭 = true; bool isTeamAWin = false; foreach (var item in teamA战场.己方角色List) { if (!item.是否败走) { isTeamA团灭 = false; break; } } foreach (var item in teamA战场.敌方角色List) { if (!item.是否败走) { isTeamB团灭 = false; break; } } if (isTeamA团灭) isTeamAWin = false; else if (isTeamB团灭) isTeamAWin = true; else isTeamAWin = teamA战场.战果 > 0; teamA战斗结果.角色List = teamA战场.己方角色List; teamB战斗结果.角色List = teamA战场.敌方角色List; teamA战斗结果.回复兵力List = new List<int>(); teamB战斗结果.回复兵力List = new List<int>(); teamA战斗结果.Win = isTeamAWin; teamA战斗结果.角色List = teamA战场.己方角色List; foreach (var 角色 in teamA战场.己方角色List) { if (角色.是否败走) { teamA战斗结果.回复兵力List.Add(0); continue; } else { int value = Convert.ToInt32(角色.最大兵力 * 常量.战斗后回复系数 / 100m); if (value + 角色.兵力 > 角色.最大兵力) value = 角色.最大兵力 - 角色.兵力; teamA战斗结果.回复兵力List.Add(value); } } foreach (var 角色 in teamA战场.己方角色List) { if (!角色.是否败走) { if (角色.被动技能 != null && 角色.被动技能 is 战斗结束被动技能) { 战斗结束被动技能 战斗结束被动技能 = (战斗结束被动技能)角色.被动技能; 战斗结束被动技能.Excute(teamA战斗结果); } if (角色.特殊技能 != null && 角色.特殊技能 is 战斗结束被动技能) { 战斗结束被动技能 战斗结束被动技能 = (战斗结束被动技能)角色.被动技能; 战斗结束被动技能.Excute(teamA战斗结果); } } } teamB战斗结果.Win = !isTeamAWin; teamB战斗结果.角色List = teamA战场.敌方角色List; foreach (var 角色 in teamA战场.敌方角色List) { if (角色.是否败走) { teamB战斗结果.回复兵力List.Add(0); continue; } else { int value = Convert.ToInt32(角色.最大兵力 * 常量.战斗后回复系数 / 100m); if (value + 角色.兵力 > 角色.最大兵力) value = 角色.最大兵力 - 角色.兵力; teamB战斗结果.回复兵力List.Add(value); } } foreach (var 角色 in teamA战场.敌方角色List) { if (!角色.是否败走) { if (角色.被动技能 != null && 角色.被动技能 is 战斗结束被动技能) { 战斗结束被动技能 战斗结束被动技能 = (战斗结束被动技能)角色.被动技能; 战斗结束被动技能.Excute(teamB战斗结果); } if (角色.特殊技能 != null && 角色.特殊技能 is 战斗结束被动技能) { 战斗结束被动技能 战斗结束被动技能 = (战斗结束被动技能)角色.被动技能; 战斗结束被动技能.Excute(teamB战斗结果); } } } for (int i = 0; i < teamA战场.己方角色List.Count; i++) teamA战场.己方角色List[i].兵力 += teamA战斗结果.回复兵力List[i]; for (int i = 0; i < teamA战场.敌方角色List.Count; i++) teamA战场.敌方角色List[i].兵力 += teamB战斗结果.回复兵力List[i]; return new List<战斗结果>() { teamA战斗结果, teamB战斗结果 }; }