示例#1
0
 internal LegacyFilters(StaminaFilter staminaFilter, LightObserver lightObserver, WeatherObserver weatherObserver, SoundObserver soundObserver, ShapeshiftingFilter shapeShifter)
 {
     Stamina      = staminaFilter;
     Light        = lightObserver;
     Weather      = weatherObserver;
     Sound        = soundObserver;
     ShapeShifter = shapeShifter;
 }
示例#2
0
 public void RemoveFilter(StaminaFilter filter, float delay = 0f)
 {
     if (delay > 0)
     {
         StartCoroutine(RemoveFilterAfterDelay(filter, delay));
     }
     else
     {
         filters.Remove(filter);
     }
 }
示例#3
0
    //</temp>

    #endregion     // Unity Functions

    #region Public Functions

    public void AddFilter(StaminaFilter filter)
    {
        for (LinkedListNode <StaminaFilter> node = filters.First; node != null; node = node.Next)
        {
            if (node.Value.priority > filter.priority)
            {
                filters.AddBefore(node, filter);
                return;
            }
        }
        filters.AddLast(filter);
    }
示例#4
0
        internal Legacy(Configuration configuration, CommandHandler commandHandler,
                        UltimaServer ultimaServer, UltimaClient ultimaClient, ILogger logger)
        {
            Trace = new GlobalTrace(logger);

            cancellation       = new Cancellation(() => CancellationToken);
            eventJournalSource = new EventJournalSource();
            Me = new Player(() => GameObjects.OfType <Item>().OnLayer(Layer.Mount).FirstOrDefault() != null,
                            ultimaServer, this, eventJournalSource);
            gumpObservers       = new GumpObservers(ultimaServer, ultimaClient, eventJournalSource, cancellation);
            GameObjects         = new GameObjectCollection(Me);
            Items               = new ItemCollection(GameObjects);
            Mobiles             = new MobileCollection(GameObjects);
            Corpses             = new CorpseCollection(GameObjects);
            itemsObserver       = new ItemsObservers(GameObjects, ultimaServer, ultimaClient, this, eventJournalSource);
            Me.LocationChanged += itemsObserver.OnPlayerPositionChanged;
            journalSource       = new SpeechJournalSource();
            journalSource.NewMessageReceived +=
                (sender, entry) => eventJournalSource.Publish(new SpeechReceivedEvent(entry));
            Journal          = new SpeechJournal(journalSource, cancellation, () => DefaultTimeout, Trace.JournalTrace);
            journalObservers = new JournalObservers(journalSource, ultimaServer);
            targeting        = new Targeting(ultimaServer, ultimaClient, cancellation, eventJournalSource);

            blockedPacketsFilters = new BlockedClientPacketsFilters(ultimaClient);
            lightObserver         = new LightObserver(ultimaServer, ultimaClient, Me, this);
            weatherObserver       = new WeatherObserver(ultimaServer, ultimaClient, this);
            soundObserver         = new SoundObserver(ultimaServer, eventJournalSource);
            questArrowObserver    = new QuestArrowObserver(ultimaServer, eventJournalSource);
            shapeShifter          = new ShapeshiftingFilter(ultimaServer, ultimaClient);
            var speechRequestObserver = new SpeechRequestObserver(ultimaClient, commandHandler, eventJournalSource, logger);
            var staminaFilter         = new StaminaFilter(ultimaServer, ultimaClient);

            dialogBoxObervers = new DialogBoxObservers(ultimaServer, eventJournalSource);

            playerObservers = new PlayerObservers(Me, ultimaClient, ultimaServer, logger, this, GameObjects, eventJournalSource);
            playerObservers.WalkRequestDequeued += Me.OnWalkRequestDequeued;

            this.logger = logger;
            Server      = ultimaServer;
            Client      = ultimaClient;

            CommandHandler = commandHandler;
            CommandHandler.CancellationTokenCreated += (sender, token) => CancellationToken = token;

            Configuration      = configuration;
            legacyEventJournal = CreateEventJournal();

            ClientFilters = new LegacyFilters(staminaFilter, lightObserver, weatherObserver, soundObserver, shapeShifter);
            RegisterDefaultCommands();
        }
示例#5
0
    private IEnumerator RemoveFilterAfterDelay(StaminaFilter filter, float delay)
    {
        yield return(new WaitForSeconds(delay));

        filters.Remove(filter);
    }