コード例 #1
0
        //-------------------------------------------------------------------------------------[]
        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);
        }
コード例 #2
0
        //-------------------------------------------------------------------------------------[]
        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);
        }
コード例 #3
0
        //-------------------------------------------------------------------------------------[]
        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;
            }
        }
コード例 #4
0
 //-------------------------------------------------------------------------------------[]
 private void UpdatePackPreProcess(ICombatUpdatePack pack)
 {
     pack.Events.ForEach(EventPreProcess, pack);
 }
コード例 #5
0
 //-------------------------------------------------------------------------------------[]
 private void UpdatePackPostProcess(ICombatUpdatePack pack)
 {
     pack.Events.ForEach(EventPostProcess, pack);
     CombatSituation = pack.NewModel;
     GetHexHelper().UpdateMapItems(CombatSituation.HexMapItems);
 }