Пример #1
0
        /// <summary>
        /// </summary>
        /// <param name="eventType"> </param>
        /// <param name="eventArgs"> </param>
        public void PublishTimelineEvent(TimelineEventType eventType, params object[] eventArgs)
        {
            var args = (eventArgs != null && eventArgs.Any()) ? eventArgs[0] : "(no args)";

            Logging.Log(Logger, String.Format("TimelineEvent : {0} {1}", eventType, args));
            if (eventArgs != null)
            {
                var monsterName = eventArgs.First() as String;
                switch (eventType)
                {
                case TimelineEventType.PartyJoin:
                case TimelineEventType.PartyDisband:
                case TimelineEventType.PartyLeave:
                    break;

                case TimelineEventType.PartyMonsterFighting:
                case TimelineEventType.AllianceMonsterFighting:
                case TimelineEventType.OtherMonsterFighting:
                    DeathFound = false;
                    if (monsterName != null && (monsterName.ToLower()
                                                .Contains("target") || monsterName == ""))
                    {
                        break;
                    }
                    Fight fighting;
                    if (!Fights.TryGet(monsterName, out fighting))
                    {
                        fighting = new Fight(monsterName);
                        Fights.Add(fighting);
                    }
                    Controller.Timeline.LastEngaged = monsterName;
                    break;

                case TimelineEventType.PartyMonsterKilled:
                case TimelineEventType.AllianceMonsterKilled:
                case TimelineEventType.OtherMonsterKilled:
                    DeathFound = true;
                    if (monsterName != null && (monsterName.ToLower()
                                                .Contains("target") || monsterName == ""))
                    {
                        break;
                    }
                    Fight killed;
                    if (!Fights.TryGet(monsterName, out killed))
                    {
                        killed = new Fight(monsterName);
                        Fights.Add(killed);
                    }
                    switch (eventType)
                    {
                    case TimelineEventType.PartyMonsterKilled:
                        GetSetMonster(monsterName)
                        .SetKill(killed);
                        break;

                    case TimelineEventType.AllianceMonsterKilled:
                        GetSetMonster(monsterName)
                        .SetKill(killed);
                        break;

                    case TimelineEventType.OtherMonsterKilled:
                        GetSetMonster(monsterName)
                        .SetKill(killed);
                        break;
                    }
                    Controller.Timeline.LastKilled = monsterName;
                    break;
                }
            }
            RaiseTimelineChangedEvent(this, new TimelineChangedEvent(eventType, eventArgs));
        }