Exemple #1
0
        public void EndEvent()
        {
            var player = Players[Players.Keys.ToList()[WhosTurn()]];

            EventCooldown.Keys.ToList().ForEach(k => EventCooldown[k]--);
            EventCooldown.Keys.ToList().ForEach(k =>
            {
                if (EventCooldown[k] == 0)
                {
                    EventCooldown.Remove(k);
                }
            });

            if (player.RepeatEvent <= 1)
            {
                if (player.CurrentEvent != null)
                {
                    if (player.CurrentEvent.NextEvent != null)
                    {
                        player.RepeatEvent = player.CurrentEvent.NextEvent.Repeat;
                    }
                    player.CurrentEvent = player.CurrentEvent.NextEvent;
                }
            }
            else
            {
                player.RepeatEvent--;
            }
        }
Exemple #2
0
 public SoundInformer()
 {
     _cooldown = new EventCooldown(TimeSpan.FromMilliseconds(5000), () =>
     {
         CheckForChanges();
         _cooldown.Accumulate();
     });
 }
Exemple #3
0
        public CommandsInformer(IManipulatorsManager manager, Logger logger)
        {
            _manager  = manager ?? throw new ArgumentNullException(nameof(manager));
            _logger   = logger ?? throw new ArgumentNullException(nameof(logger));
            _cooldown = new EventCooldown(
                TimeSpan.FromMilliseconds(250),
                () => Check(),
                TimeSpan.FromSeconds(1));

            _manager.ItemStateChanged += ManagerOnItemStateChanged;
        }
Exemple #4
0
        public MainWindow()
        {
            InitializeComponent();
            InitializeSingleTaskExecutor();

            _cooldown = new EventCooldown(
                TimeSpan.FromSeconds(2),
                Action,
                TimeSpan.FromSeconds(5));

            var i = 32;

            _runQueue = new RunQueue(() => DoNothing(i));
        }
Exemple #5
0
        // Check for running event or trigger a new event
        public bool CheckEvent()
        {
            var player       = Players[Players.Keys.ToList()[WhosTurn()]];
            var currentSpace = player.Space;

            if (Game.SetEvents.ContainsKey(currentSpace) &&
                !player.VisitedEvents.Contains(Game.SetEvents[currentSpace]))
            {
                player.CurrentEvent = Game.SetEvents[currentSpace];
                player.RepeatEvent  = 0;
                if (Game.SetEvents[currentSpace].HappensOnce)
                {
                    player.VisitedEvents.Add(Game.SetEvents[currentSpace]);
                }
                Game.SetEvents.Remove(currentSpace);
            }

            if (player.CurrentEvent == null && _random.Next(0, 100) < 80)
            {
                var evnts = Game.MiniEvents.Except(player.VisitedEvents).Where(e => !EventCooldown.ContainsKey(e.Name)).ToList();
                if (evnts.Count == 0)
                {
                    return(false);
                }

                var evnt = evnts[_random.Next(0, evnts.Count)];
                player.CurrentEvent = evnt;

                if (evnt.HappensOnce)
                {
                    player.VisitedEvents.Add(evnt);
                }
            }

            if (player.CurrentEvent == null)
            {
                return(false);
            }

            if (!EventCooldown.ContainsKey(player.CurrentEvent.Name))
            {
                EventCooldown.Add(player.CurrentEvent.Name, 5);
            }

            return(true);
        }