コード例 #1
0
ファイル: NavigatorState.cs プロジェクト: Mefodei/UniMob
        private Task ProcessCommand([NotNull] NavigatorCommand command)
        {
            if (command == null)
            {
                throw new ArgumentNullException(nameof(command));
            }

            switch (command)
            {
            case NavigatorCommand.Pop _:
                return(BackInternal());

            case NavigatorCommand.PopTo backTo:
                return(BackToInternal(backTo));

            case NavigatorCommand.Push forward:
                return(ForwardScreenInternal(forward));

            case NavigatorCommand.Replace replace:
                return(ReplaceScreenInternal(replace));
            }

            Debug.LogWarning($"Unexpected navigator command: {command.GetType().Name}");
            return(Task.CompletedTask);
        }
コード例 #2
0
        static void Main(string[] args)
        {
            System.Console.WriteLine("Assumindo uma posição original (x,y), a aplicação irá receber vetores de coordenadas na seguinte forma:");
            System.Console.WriteLine("[Direção, Intensidade], sendo que Direção pode ser N,S,L,O (Norte, Sul, Leste e Oeste) e intensidade é um inteiro.");

            Coordinate          coordinate          = new Coordinate(1, 1);
            CoordinateNavigator navigator           = new CoordinateNavigator(coordinate);
            CoordinateNavigatorCommandParser parser = new CoordinateNavigatorCommandParser();

            while (true)
            {
                System.Console.WriteLine($"A coordenada atual é {navigator.Coordinate.ToString()}, digite o comando [Direção, Intensidade] na linha abaixo: ");

                string command = System.Console.ReadLine();

                try
                {
                    NavigatorCommand navigatorCommand = parser.Parse(command);
                    navigator.Navigate(navigatorCommand);
                }
                catch (Exception ex)
                {
                    System.Console.WriteLine(ex.Message);
                }
            }
        }
コード例 #3
0
        private ICommand EnsureCommand(ECommandId idCommand)
        {
            NavigatorCommand command = null;

            lock (mSyncRoot)
            {
                command = mCachedCommands[(int)idCommand];
                if (command == null)
                {
                    switch (idCommand)
                    {
                    case ECommandId.NullRecord:
                        break;

                    case ECommandId.NextRecord:
                        command = new NextItemCommand(mViewDataManipulator);
                        break;

                    case ECommandId.PreviousRecord:
                        command = new PrevItemCommand(mViewDataManipulator);
                        break;

                    case ECommandId.FirstRecord:
                        command = new FirstItemCommand(mViewDataManipulator);
                        break;

                    case ECommandId.LastRecord:
                        command = new LastItemCommand(mViewDataManipulator);
                        break;

                    case ECommandId.GoToRecord:
                        break;

                    case ECommandId.AddRecord:
                        command = new AddItemCommand(mViewDataManipulator);
                        break;

                    case ECommandId.Save:
                        command = new SaveItemCommand(mViewDataManipulator);
                        break;

                    case ECommandId.DeleteRecord:
                        command = new DeleteItemCommand(mViewDataManipulator);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException(nameof(idCommand), idCommand, null);
                    }

                    if (command != null)
                    {
                        mCachedCommands[(int)idCommand] = command;
                    }
                }
            }

            return(command);
        }