//-------------------------------------------------------------------------------------[] private void EventPreProcess( ICombatUpdatePack pack, ICombatEvent combatEvent) { switch (combatEvent.Type) { case CombatEventType.EndCombat: _matchId = combatEvent.Combat.Value; _queueFighters = new QueueFighters[0]; break; case CombatEventType.StartRound: { var newFighters = GetNewQueryFighters(pack, combatEvent.Fighters); _queueFighters = _queueFighters.Union( newFighters.Where( queueFighter => !_queueFighters.ExistsByProperty(f => f.FighterId, queueFighter. FighterId))). ToArray(); } break; case CombatEventType.Death: RemoveDeadGolemFromQueue(combatEvent.ActiveFighter); break; } Requirements.WriteToLogBeforeProcess(combatEvent, pack.OldModel); }
//-------------------------------------------------------------------------------------[] private IEnumerable <QueueFighters> GetNewQueryFighters( ICombatUpdatePack pack, IEnumerable <FighterId> fightersId) { var queryFightersList = new List <QueueFighters>(); foreach (var fighterId in fightersId) { var fighterInfo = GetFighter(fighterId); if (fighterInfo == null || !fighterInfo.FighterId.HasValue()) { fighterInfo = pack.NewModel.Fighters.FirstOrDefault(t => t.FighterId == fighterId); } queryFightersList.Add(new QueueFighters { Class = fighterInfo.Class, FighterId = fighterId, AuraColor = fighterInfo.AuraColor, IsGolem = fighterInfo.IsGolem }); } return(queryFightersList); }
//-------------------------------------------------------------------------------------[] private void EventPostProcess( ICombatUpdatePack pack, ICombatEvent combatEvent) { Requirements.WriteToLogAfterProcess(combatEvent, pack.OldModel); switch (combatEvent.Type) { case CombatEventType.GolemsAnimationEnded: Requirements.SendGolemsAnimationEnded(); break; case CombatEventType.StartCombat: _startCombatTime = DateTime.Now; break; case CombatEventType.EndCombat: _endCombatTime = DateTime.Now; if (OnEndCombat != null) { OnEndCombat(); } break; } }
//-------------------------------------------------------------------------------------[] private void UpdatePackPreProcess(ICombatUpdatePack pack) { pack.Events.ForEach(EventPreProcess, pack); }
//-------------------------------------------------------------------------------------[] private void UpdatePackPostProcess(ICombatUpdatePack pack) { pack.Events.ForEach(EventPostProcess, pack); CombatSituation = pack.NewModel; GetHexHelper().UpdateMapItems(CombatSituation.HexMapItems); }