Exemplo n.º 1
0
        public Ui(List <List <UiModuleSettings> > layout)
        {
            this.layout              = layout;
            this.currentWindowWidth  = Console.WindowWidth;
            this.currentWindowHeight = Console.WindowHeight;
            this.canvas              = GenerateCanvas(layout);
            var dimensionsEventParameters = new Events.EventParameters(
                condition: () => {
                return(Console.WindowWidth != this.currentWindowWidth || Console.WindowHeight != this.currentWindowHeight);
            },
                subscribingMethod: this.UpdateDimensions);

            Events.EventManager.RegisterEvent(dimensionsEventParameters);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Register an event to be managed.
        /// </summary>
        /// <param name="eventParameters">A <see cref="EventParameters"/> object defining event information.</param>
        /// <returns>A <see cref="bool"/> value indicating if the event was registered.</returns>
        public static bool RegisterEvent(EventParameters eventParameters)
        {
            if (eventDictionary.Count == MaximumNumberOfEvents)
            {
                throw new OverflowException("Can not register another event. The maximum number of events possible to register was reached.");
            }

            if (!eventDictionary.TryAdd(eventParameters.GetHashCode(), eventParameters))
            {
                return(false);
            }

            if (eventTask.Status == TaskStatus.Created)
            {
                eventTask.Start();
            }
            else if (eventTask.IsCompleted)
            {
                eventTask = Task.Run(EventLoop);
            }

            return(true);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Unregisters an event from the event manager. The <see cref="EventParameters"/> instance must be the same instance as the event was registered with.
 /// </summary>
 /// <param name="eventParameters">A <see cref="EventParameters"/> object defining event information.</param>
 /// <returns>A <see cref="bool"/> value indicating if the event was unregistered.</returns>
 public static bool UnregisterEvent(EventParameters eventParameters)
 {
     return(eventDictionary.TryRemove(eventParameters.GetHashCode(), out eventParameters));
 }