public void BuildForTranslatedControllerAndUntranslatedActionRoutesReturnsCorrectRouteSelector()
        {
            IRouteSelector routeSelector = new UntranslatedRoutesRouteSelector()
            {
                Culture   = TranslatedRoutesRouteSelectorBuilderTest.Culture,
                Localizer = GetLocalizer(),
            };

            ApplicationModel applicationModel = TestApplicationModel.Instance;

            ControllerModel translatedController = applicationModel.Controller1()
                                                   .CreateLocalizedControllerModel(GetLocalizer(), TranslatedRoutesRouteSelectorBuilderTest.Culture);

            foreach (SelectorModel selectorModel in translatedController.GetOriginalModel(GetLocalizer()).Selectors)
            {
                translatedController.Selectors.Add(selectorModel);
            }

            applicationModel.Controllers.Add(translatedController);

            ICollection <RouteSelection> routeSelections = routeSelector.Select(applicationModel);

            RouteSelection routeSelection =
                routeSelections.Single(selection => selection.ControllerModel.ControllerName == "Controller1");

            Assert.IsTrue(routeSelection.ActionModels.Count == 3);
        }
Exemplo n.º 2
0
 void CommitRoute(RouteSelection route)
 {
     uiCancelRoute.SetActive(false);
     route.fromStation.AddRoute(new Route(route, routePrefabMap));
     players[currentPlayer].cash -= route.routeType.routeCost;
     NewTurn(false);
 }
        public void BuildForTranslatedControllerAndTranslatedActionRoutesReturnsCorrectRouteSelector()
        {
            IRouteSelector routeSelector = new TranslatedRoutesRouteSelector()
            {
                Cultures  = new[] { UntranslatedRoutesRouteSelectorBuilderTest.Culture, UntranslatedRoutesRouteSelectorBuilderTest.Culture2 },
                Localizer = GetLocalizer(),
            };

            ApplicationModel applicationModel   = TestApplicationModel.Instance;
            ControllerModel  originalController = applicationModel.Controller1();

            ControllerModel translatedController = originalController
                                                   .CreateLocalizedControllerModel(GetLocalizer(),
                                                                                   UntranslatedRoutesRouteSelectorBuilderTest.Culture);

            foreach (ActionModel translatedAction in translatedController.Actions.Take(2))
            {
                foreach (SelectorModel selectorModel in translatedAction.GetOriginalModel(GetLocalizer()).Selectors)
                {
                    translatedAction.Selectors.Add(selectorModel);
                }
            }

            foreach (SelectorModel selectorModel in translatedController.GetOriginalModel(GetLocalizer()).Selectors)
            {
                translatedController.Selectors.Add(selectorModel);
            }

            applicationModel.Controllers.Add(translatedController);

            translatedController = originalController
                                   .CreateLocalizedControllerModel(GetLocalizer(),
                                                                   UntranslatedRoutesRouteSelectorBuilderTest.Culture2);

            foreach (ActionModel translatedAction in translatedController.Actions.Skip(1).Take(2))
            {
                foreach (SelectorModel selectorModel in translatedAction.GetOriginalModel(GetLocalizer()).Selectors)
                {
                    translatedAction.Selectors.Add(selectorModel);
                }
            }

            foreach (SelectorModel selectorModel in translatedController.GetOriginalModel(GetLocalizer()).Selectors)
            {
                translatedController.Selectors.Add(selectorModel);
            }

            applicationModel.Controllers.Add(translatedController);

            ICollection <RouteSelection> routeSelections = routeSelector.Select(applicationModel);

            RouteSelection routeSelection = routeSelections.Single(selection => selection.ControllerModel.ControllerName == "Controller1");

            Assert.IsTrue(routeSelection.ActionModels.Count == 1);
        }
Exemplo n.º 4
0
    void StartRouteSelection(Card card)
    {
        selectionMode = SelectionMode.RouteFromStation;

        currentRoute           = new RouteSelection();
        currentRoute.routeType = card;
        currentRoute.player    = players[currentPlayer];

        uiCancelRoute.SetActive(true);
        uiCardList.SetActive(false);
        UpdateInstructions();
    }
        public override void Process(ICollection <RouteSelection> routeSelections)
        {
            // Expect single ControllerModel with ActionModels selection
            routeSelections.ThrowIfNotSingleControllerWithActionsSelection(RouteTranslationConfiguration.Localizer);

            RouteSelection            routeSelection          = routeSelections.Single();
            ControllerModel           originalControllerModel = routeSelection.ControllerModel;
            ICollection <ActionModel> originalActionModels    = routeSelection.ActionModels;

            // Expect original ControllerModel & attribute routed action routes
            originalControllerModel.ThrowIfNotOriginalModel(RouteTranslationConfiguration.Localizer);
            originalActionModels.ThrowIfNotPartOfModel(originalControllerModel);
            originalActionModels.ThrowIfNotModelsWithAttributeRoutes(RouteTranslationConfiguration.Localizer);

            ControllerModel translatedControllerModel = EnsureAndGetLocalizedControllerModel(originalControllerModel, Culture);

            if (originalControllerModel.HasAttributeRoutes() &&
                !translatedControllerModel.IsCompletelyTranslated(RouteTranslationConfiguration.Localizer))
            {
                Logger.LogWarning("Action was translated before Controller. Don't forget to translate on controller level.");
            }

            IList <ActionModel> translatedActionModels = originalActionModels
                                                         .Select(action => action.GetLocalizedModelFor(RouteTranslationConfiguration.Localizer, Culture))
                                                         .ToList();

            System.Threading.Thread.Sleep(5000);

            // Expect at least one untranslated attribute route with the same template for each ActionModel
            translatedActionModels.ThrowIfAnyCompletelyTranslated(RouteTranslationConfiguration.Localizer);
            originalActionModels.ThrowIfAnyUntranslatedTemplateDiffer(RouteTranslationConfiguration.Localizer, Culture);

            // Translate
            foreach (var originalActionModel in originalActionModels.Select((model, index) => new
            {
                Model = model,
                Index = index,
            }))
            {
                ActionModel translatedActionModel = translatedActionModels[originalActionModel.Index];

                TranslateActionRoute(translatedActionModel,
                                     originalActionModel.Model.Selectors[translatedActionModel.Selectors.Count], Template, Culture);
            }
        }
        public override void Process(ICollection <RouteSelection> routeSelections)
        {
            // Expect single ControllerModel selection
            routeSelections.ThrowIfNotSingleControllerWithoutActionsSelection(RouteTranslationConfiguration.Localizer);

            RouteSelection  routeSelection          = routeSelections.Single();
            ControllerModel originalControllerModel = routeSelection.ControllerModel;

            // Expect original ControllerModel & attribute routed controller routes
            originalControllerModel.ThrowIfNotOriginalModel(RouteTranslationConfiguration.Localizer);
            originalControllerModel.ThrowIfNotModelWithAttributeRoutes(RouteTranslationConfiguration.Localizer);

            ControllerModel translatedControllerModel = EnsureAndGetLocalizedControllerModel(originalControllerModel, Culture);

            // Expect at least one untranslated attribute route for ControllerModel
            translatedControllerModel.ThrowIfCompletelyTranslated(RouteTranslationConfiguration.Localizer);

            TranslateControllerRoute(translatedControllerModel,
                                     originalControllerModel.Selectors[translatedControllerModel.Selectors.Count], Template, Culture);
        }
        public void BuildForUntranslatedControllerRoutesReturnsCorrectRouteSelector()
        {
            IRouteSelector routeSelector = new UntranslatedRoutesRouteSelector()
            {
                Culture   = TranslatedRoutesRouteSelectorBuilderTest.Culture,
                Localizer = GetLocalizer(),
            };

            ApplicationModel applicationModel = TestApplicationModel.Instance;

            ControllerModel translatedController = applicationModel.Controller3()
                                                   .CreateLocalizedControllerModel(GetLocalizer(), TranslatedRoutesRouteSelectorBuilderTest.Culture);

            applicationModel.Controllers.Add(translatedController);

            ICollection <RouteSelection> routeSelections = routeSelector.Select(applicationModel);

            RouteSelection routeSelection =
                routeSelections.Single(selection => selection.ControllerModel.ControllerName == "Controller3");

            Assert.IsTrue(routeSelection.ActionModels.Count == 0);
        }
Exemplo n.º 8
0
    void AiTurn()
    {
        uiCardList.SetActive(false);
        uiInstructions.SetActive(false);
        selectionMode = SelectionMode.CPUMove;

        var      player    = players[currentPlayer];
        int      cash      = player.cash;
        CardType routeType = CardType.Train;

        if (cash < 5)
        {
            PassTurn();
            return;
        }

        if (cash >= 50)
        {
            routeType = CardType.Hyperloop;
        }
        else if (cash >= 25)
        {
            routeType = CardType.Rocket;
        }
        else if (cash >= 10)
        {
            routeType = CardType.Plane;
        }

        bool           found     = false;
        int            bestPeeps = int.MinValue;
        RouteSelection bestRoute = new RouteSelection();

        bestRoute.player = player;

        foreach (var fromStation in stations)
        {
            foreach (var toStation in stations)
            {
                if (fromStation != toStation && !RouteExists(fromStation, toStation))
                {
                    if (fromStation.peeps[toStation.id] > bestPeeps)
                    {
                        bestRoute.fromStation = fromStation;
                        bestRoute.toStation   = toStation;
                        bestPeeps             = fromStation.peeps[toStation.id];
                        found = true;
                    }
                }
            }
        }

        if (found)
        {
            foreach (var card in allCards)
            {
                if (card.cardType == routeType)
                {
                    bestRoute.routeType = card;
                }
            }

            CommitRoute(bestRoute);
        }
        else
        {
            PassTurn();
        }
    }
Exemplo n.º 9
0
 public Route(RouteSelection route, Dictionary <CardType, GameObject> prefabMap)
 {
     CreateRoute(route.player, route.fromStation, route.toStation, route.routeType, prefabMap);
 }