Exemplo n.º 1
0
        private async Task LoadDataAsync()
        {
            await EnsureDownloadedAsync();

            // this has to be loaded first
            LoadMetaZones();

            // these can be loaded in parallel
            var actions = new Action[]
            {
                LoadZoneCountries,
                LoadZoneAliases,
                LoadWindowsMappings,
                LoadLanguages
            };
            await Task.WhenAll(actions.Select(Task.Run));
        }
Exemplo n.º 2
0
        public override ActionDescriptor OnTick(Action[] soloActions, Dictionary<Character, Action[]> characterActions)
        {
            Character[] allCharacters = CurrentRoom.GetCharacters(this).ToArray();
            bool[] characterEnables = allCharacters.Select(c => characterActions.ContainsKey(c)).ToArray();
            Character[] characters = characterActions.Keys.ToArray();
            BothButton view = new BothButton(this, allCharacters, characterEnables, soloActions.Select(a => a.Label).ToArray(), null, notificator);
            main.LaunchView(view);

            if (!view.SelectedTop)
                return new ActionDescriptor(soloActions[view.SelectedIndex], this, null);

            Character selectedCharacter = allCharacters[view.SelectedIndex];

            //Player selected a character.
            TextTopBottomButton secondView = new TextTopBottomButton(new Character[] { selectedCharacter }, this, "What would you like to do with " + selectedCharacter.Fullname, characterActions[selectedCharacter].Select(a => a.Label).ToArray(), null, notificator);
            main.LaunchView(secondView);
            return new ActionDescriptor(characterActions[selectedCharacter][secondView.SelectedIndex], this, selectedCharacter);
        }
Exemplo n.º 3
0
        private void ExitApplication()
        {
            var shutDownActions = new Action[]
            {
                () => _kataFilesMonitor?.Stop(),
                () => _playerNotifier?.Dispose(),
                () => _gameMonitor?.Dispose(),
                () => _reminderTimer?.Stop(),
                () => _monitorTimer?.Stop(),
            };
            var cancellationTokenSource = new CancellationTokenSource(5000);
            var tasks = shutDownActions
                        .Select(action => Task.Run(() => TryDo(action), cancellationTokenSource.Token))
                        .ToArray();

            Task.WaitAll(tasks);

            System.Windows.Application.Current.Shutdown();
        }
        public static bool IsConform(IEquationBuilder subject)
        {
            var callingTests = new Action<IEquationBuilder>[] {
                s => s.Value(0),
                s => s.Literal("x"),
                s => s.Add(),
                s => s.Divide(),
                s => s.Divide(b => { }),
                s => s.Parentheses(b => { })
            };

            Func<Action<IEquationBuilder>, bool> callingTestWrapper = test => {
                var passed = true;
                try
                {
                    test(subject);
                }
                catch (RuntimeBinderException)
                {
                    passed = false;
                }
                return passed;
            };

            var searchingTest = new Func<IEquationBuilder, MethodInfo>[]
                {
                    s => s.GetType().GetMethod("CreateItem", new Type[] { typeof(IIdentifier) }),
                    s => s.GetType().GetMethod("CreateItem", new Type[] { typeof(IIdentifier), typeof(IItem).MakeByRefType() })
                };

            Func<Func<IEquationBuilder, MethodInfo>, bool> searchingTestWrapper = test => test(subject) != null;

            return callingTests.Select(callingTestWrapper)
                .Concat(searchingTest.Select(searchingTestWrapper))
                .All(result => result == true);
        }