Esempio n. 1
0
 public void InitBuildManagerModules(BuildOrderProcessorData buildOrder, BuildOrderProcessorConfiguration config)
 {
     foreach (var module in this)
     {
         module.InitBuildOrder(buildOrder, config);
     }
 }
        public BuildMakerPresenter(IBuildMakerView view, IAddBuildItemListView addItemView, IEditBuildInfoView editBuildInfo, BuildOrderProcessorConfiguration config, IBuildOrdersManager boManager)
            : base(view)
        {
            mConfig = config;

            mBuildOrdersManager = boManager;

            mAddItemView      = addItemView;
            mAddItemPresenter = new AddBuildItemListPresenter(mAddItemView);

            mEditBuildInfoView      = editBuildInfo;
            mEditBuildInfoPresenter = new EditBuildInfoPresenter(mEditBuildInfoView, mBuildOrdersManager);

            mBuildManager = new BuildOrderProcessor(mConfig);

            view.ClearBuild       += ViewClearBuild;
            view.UndoItem         += ViewUndoItem;
            view.SaveBuild        += ViewSaveBuild;
            view.AddItemRequested += ViewAddItemRequested;
            view.BackRequested    += ViewBackRequested;

            mAddItemPresenter.ItemSelected += AddItemPresenterItemSelected;

            mEditBuildInfoPresenter.BuildSaved += EditBuildInfoPresenterBuildSaved;
        }
        public void LoadBuildOrder(BuildOrderEntity bo, BuildOrderProcessorConfiguration config)
        {
            mConfig = config;

            mBuildManager = new BuildOrderProcessor(mConfig);

            mBuildManager.LoadBuildOrder(bo);

            UpdateView();
        }
Esempio n. 4
0
        private void ProcessRequirementsForList(List <BuildItemInfo> list, BuildOrderProcessorConfiguration config)
        {
            var buildItems = config.BuildItemsDictionary.GetList();

            foreach (var item in list)
            {
                var buildItem = buildItems.First(p => p.Name == item.Name);

                if (!string.IsNullOrEmpty(buildItem.ProductionBuildingName))
                {
                    var prodBuildingName = buildItem.ProductionBuildingName;
                    if (prodBuildingName == "FreeGatewayForUnit" || prodBuildingName == "FreeWarpgateForUnit")
                    {
                        prodBuildingName = "Gateway";
                    }

                    var prodBuilding = buildItems.FirstOrDefault(p => p.Name == prodBuildingName);
                    if (prodBuilding != null)
                    {
                        item.Requirements.Add(ConvertEntityToInfo(prodBuilding));
                    }

                    if (buildItem.Name.Contains("WarpIn"))
                    {
                        var wargateUpgrade = buildItems.FirstOrDefault(p => p.Name == "WarpgateUpgrade");
                        if (wargateUpgrade != null)
                        {
                            item.Requirements.Add(ConvertEntityToInfo(wargateUpgrade));
                        }
                    }
                }

                foreach (var requirement in buildItem.ProduceRequirements)
                {
                    if (requirement is StatBiggerOrEqualThenValueRequirement)
                    {
                        var reqTarget = ((StatBiggerOrEqualThenValueRequirement)requirement).TargetStatName;
                        var reqItem   = item.Requirements.FirstOrDefault(p => p.Name == reqTarget);
                        if (reqItem == null)
                        {
                            var reqBuildItem = buildItems.FirstOrDefault(p => p.Name == reqTarget);
                            if (reqBuildItem != null)
                            {
                                item.Requirements.Add(ConvertEntityToInfo(reqBuildItem));
                            }
                        }
                    }
                }
            }
        }
Esempio n. 5
0
        private BuildOrderProcessorConfiguration GenerateBuildManagerConfig(string versionID, RaceEnum race)
        {
            var version = mManagersConfigurator.GetSC2VersionsManager().GetVersion(versionID);

            var raceSettings = version.RaceSettingsDictionary.GetRaceSettings(race);

            var boManagerConfig = new BuildOrderProcessorConfiguration
            {
                BuildItemsDictionary = raceSettings.ItemsDictionary,
                BuildManagerModules  = raceSettings.Modules,
                GlobalConstants      = version.GlobalConstants,
                Race          = race,
                RaceConstants = raceSettings.Constants,
                SC2VersionID  = version.VersionID
            };

            return(boManagerConfig);
        }
Esempio n. 6
0
        private List <BuildOrderItemInfo> GenerateBuildItems(BuildOrderProcessorData data, BuildOrderProcessorConfiguration config)
        {
            var result = new List <BuildOrderItemInfo>();

            var items = data.GetBuildOrderItemsClone();

            foreach (var item in items)
            {
                var itemData = config.BuildItemsDictionary.GetItem(item.ItemName);

                var infoItem = new BuildOrderItemInfo
                {
                    Limit          = item.StatisticsProvider.CurrentSupply,
                    Name           = itemData.Name,
                    DisplayName    = itemData.DisplayName,
                    StartedSecond  = item.SecondInTimeLine,
                    FinishedSecond = item.FinishedSecond,
                    MaxLimit       = item.StatisticsProvider.MaximumSupply,
                    ItemType       = itemData.ItemType.ToString()
                };

                foreach (var stat in item.StatisticsProvider.CloneItemsCountDictionary())
                {
                    infoItem.AdditionalValues.Add(stat.Key, stat.Value);
                }

                result.Add(infoItem);
            }

            return(result);
        }
 public BuildMakerViewModel(BuildOrderProcessorData model, BuildOrderProcessorConfiguration config)
     : base(model)
 {
     mConfig = config;
 }