Esempio n. 1
0
        /// <summary>
        /// Initilize entity reletionships with each other - invoked after all entity view Models created,
        /// so you can access them by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitAdditionalRecipes()
        {
            if (!(ProtoEntity is Recipe recipe))
            {
                return;
            }

            InputItemsList = recipe.InputItems
                             .Select(i => EntityViewModelsManager.GetEntityViewModel(i.ProtoItem))
                             .ToList();

            InputItemsVMList = recipe.InputItems
                               .Select(i =>
                                       new ViewModelEntityWithCount(EntityViewModelsManager.GetEntityViewModel(i.ProtoItem), i.Count))
                               .ToList().AsReadOnly();

            OutputItemsList = recipe.OutputItems.Items
                              .Select(i => EntityViewModelsManager.GetEntityViewModel(i.ProtoItem))
                              .ToList();

            OutputItemsVMList = recipe.OutputItems.Items
                                .Select(i => new ViewModelEntityWithCount(EntityViewModelsManager.GetEntityViewModel(i.ProtoItem),
                                                                          i.Count, i.CountRandom, i.Probability))
                                .ToList().AsReadOnly();

            ListedInTechNodes = recipe.ListedInTechNodes
                                .Select(EntityViewModelsManager.GetEntityViewModel)
                                .ToList().AsReadOnly();
        }
Esempio n. 2
0
        /// <summary>
        /// Initialize entity relationships with each other - invoked after all entity view Models created,
        /// so you can access them by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitAdditionalRecipes()
        {
            base.InitAdditionalRecipes();

            if (!(ProtoEntity is IProtoItemFish fish))
            {
                return;
            }

            if (fish.DropItemsList != null &&
                fish.DropItemsList.EnumerateAllItems().Any())
            {
                Droplist = new DroplistRecipeViewModel(this, fish.DropItemsList.EnumerateAllItems());
                EntityViewModelsManager.AddRecipe(Droplist);
            }

            if (fish.BaitWeightList.Entries.Count > 0)
            {
                foreach (var baitWithWeight in fish.BaitWeightList.Entries)
                {
                    var baitVM = EntityViewModelsManager.GetEntityViewModel(baitWithWeight.Value);
                    if (baitVM is ProtoItemFishingBaitViewModel baitViewModel)
                    {
                        baitViewModel.AddRelatedFish(this, baitWithWeight.Weight);
                    }
                    else
                    {
                        Api.Logger.Error("CNEI: Wrong bait veiw model " + baitVM);
                    }
                }
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Initialize information about entity - invoked after all entity view Models created,
        /// so you can use links to other entity by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitInformation()
        {
            base.InitInformation();

            if (ProtoEntity is IProtoItemFood food)
            {
                EntityInformation.Add(new ViewModelEntityInformation("Stay fresh",
                                                                     food.FreshnessDuration == TimeSpan.Zero
                        ? "forever"
                        : ClientTimeFormatHelper.FormatTimeDuration(food.FreshnessDuration)));
                if (Math.Abs(food.FoodRestore) > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Food restore", food.FoodRestore));
                }
                if (Math.Abs(food.WaterRestore) > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Water restore", food.WaterRestore));
                }
                if (Math.Abs(food.StaminaRestore) > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Stamina restore", food.StaminaRestore));
                }
                foreach (EffectAction effect in food.Effects)
                {
                    EntityInformation.Add(new ViewModelEntityInformation(effect.Intensity > 0 ? "Add effect" : "Remove effect",
                                                                         EntityViewModelsManager.GetEntityViewModel(effect.ProtoStatusEffect), effect.Intensity));
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Initilize entity reletionships with each other - invoked after all entity view Models created,
        /// so you can access them by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitAdditionalRecipes()
        {
            base.InitAdditionalRecipes();

            if (!(ProtoEntity is IProtoItemWeapon itemWeapon))
            {
                return;
            }

            if (itemWeapon.AmmoCapacity > 0)
            {
                foreach (var compatibleAmmoProto in itemWeapon.CompatibleAmmoProtos)
                {
                    var ammoVM = EntityViewModelsManager.GetEntityViewModel(compatibleAmmoProto);
                    CompatibleAmmo.Add(ammoVM);
                    if (ammoVM is ProtoItemAmmoViewModel ammoViewModel)
                    {
                        ammoViewModel.AddCompatibleGun(this);
                    }
                    else
                    {
                        Api.Logger.Error("CNEI: Gun using something else as ammo (not IProtoItemAmmo) " + ammoVM);
                    }
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Constructor for vehicle creation recipe.
        /// Must be used only in InitEntityRelationships phase.
        /// </summary>
        /// <param name="vehicleViewModel">View Model of IProtoVehicle.</param>
        /// <param name="vehicle"></param>
        public VehicleBuildRecipeViewModel([NotNull] ProtoVehicleViewModel vehicleViewModel, IProtoVehicle vehicle)
            : base(vehicleViewModel.ProtoEntity)
        {
            if (!EntityViewModelsManager.EntityDictionaryCreated)
            {
                throw new Exception("CNEI: Build constructor used before all entity VMs sets.");
            }

            InputItemsList = vehicle.BuildRequiredItems
                             .Select(item => EntityViewModelsManager.GetEntityViewModel(item.ProtoItem))
                             .ToList();

            InputItemsVMList = vehicle.BuildRequiredItems
                               .Select(item => new ViewModelEntityWithCount(EntityViewModelsManager.GetEntityViewModel(item.ProtoItem),
                                                                            item.Count))
                               .ToList().AsReadOnly();

            BuildRequiredElectricityAmount = vehicle.BuildRequiredElectricityAmount;

            OutputItemsList.Add(vehicleViewModel);

            VehicleVM = vehicleViewModel;

            StationsList = EntityViewModelsManager.GetAllEntityViewModelsByType <IProtoVehicleAssemblyBay>()
                           .AsReadOnly();
            ListedInTechNodes = vehicleViewModel.ListedInTechNodes;
        }
Esempio n. 6
0
        /// <summary>
        /// Constructor for entity with droplist.
        /// Must be used only in InitEntityRelationships phase.
        /// </summary>
        /// <param name="entityViewModel">View Model of entity with droplist.</param>
        /// <param name="droplist">Droplist</param>
        public DroplistRecipeViewModel([NotNull] ProtoEntityViewModel entityViewModel,
                                       [NotNull] IEnumerable <IProtoItem> droplist)
            : base(entityViewModel.ProtoEntity)
        {
            if (!EntityViewModelsManager.EntityDictionaryCreated)
            {
                throw new Exception("CNEI: Droplist constructor used before all entity VMs sets.");
            }

            InputItemsList.Add(entityViewModel);

            TargetEntity = entityViewModel;

            HashSet <IProtoItem> uniqueDroplist = new HashSet <IProtoItem>(droplist);

            OutputItemsList = uniqueDroplist.Select(EntityViewModelsManager.GetEntityViewModel).ToList();

            OutputItemsVMList = uniqueDroplist
                                .Select(item => new ViewModelEntityWithCount(EntityViewModelsManager.GetEntityViewModel(item)))
                                .ToList().AsReadOnly();

            if (entityViewModel is ProtoCharacterMobViewModel protoCharacterMobViewModel)
            {
                icon = protoCharacterMobViewModel.Icon;
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Constructor for build recipe for IProtoStructure.
        /// Must be used only in InitEntityRelationships phase.
        /// </summary>
        /// <param name="structureViewModel">View Model of IProtoStructure.</param>
        /// <param name="config">Building config.</param>
        public RecipeViewModel([NotNull] ProtoObjectStructureViewModel structureViewModel,
                               [NotNull] IConstructionStageConfigReadOnly config)
            : base(structureViewModel.ProtoEntity)
        {
            if (!EntityViewModelsManager.EntityDictonaryCreated)
            {
                throw new Exception("CNEI: Build constructor used before all entity VMs sets.");
            }

            InputItemsVMList = config.StageRequiredItems
                               .Select(item => new ViewModelEntityWithCount(EntityViewModelsManager.GetEntityViewModel(item.ProtoItem),
                                                                            item.Count * config.StagesCount))
                               .ToList().AsReadOnly();

            OutputItemsVMList =
                new List <BaseViewModel>()
            {
                new ViewModelEntityWithCount(structureViewModel)
            }.AsReadOnly();

            OriginText        = "Build by:";
            IsStationCraft    = Visibility.Visible;
            StationsList      = EntityViewModelsManager.GetAllEntityViewModelsByType <IProtoItemToolToolbox>().AsReadOnly();
            ListedInTechNodes = structureViewModel.ListedInTechNodes;

            IsAutoUnlocked = structureViewModel.IsAutoUnlocked;
        }
Esempio n. 8
0
        /// <summary>
        /// Initialize entity relationships with each other - invoked after all entity view Models created,
        /// so you can access them by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitAdditionalRecipes()
        {
            base.InitAdditionalRecipes();

            if (!(ProtoEntity is ProtoItemMedical medical))
            {
                return;
            }

            foreach (EffectAction effect in medical.Effects)
            {
                var statusEffectVM = EntityViewModelsManager.GetEntityViewModel(effect.ProtoStatusEffect);
                if (statusEffectVM is ProtoStatusEffectViewModel statusEffectViewModel)
                {
                    statusEffectViewModel.AddConsumable(this, effect.Intensity);
                }
                else
                {
                    Api.Logger.Error("CNEI: It's not a status effect " + statusEffectVM + " in " + this);
                }
            }

            if (medical.MedicalToxicity > 0)
            {
                var medicineOveruseVM =
                    EntityViewModelsManager.GetEntityViewModelByType <StatusEffectMedicineOveruse>();
                if (medicineOveruseVM is ProtoStatusEffectViewModel medicineOveruseViewModel)
                {
                    medicineOveruseViewModel.AddConsumable(this, medical.MedicalToxicity);
                }
            }
        }
Esempio n. 9
0
        /// <summary>
        /// Initilize information about entity - invoked after all entity view Models created,
        /// so you can use links to other entity by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitInformation()
        {
            base.InitInformation();

            if (ProtoEntity is ProtoItemMedical medical)
            {
                //EntityInformation.Add(new ViewModelEntityInformation("Medical toxicity", medical.MedicalToxicity));
                if (Math.Abs(medical.FoodRestore) > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Food restore", medical.FoodRestore));
                }
                if (Math.Abs(medical.WaterRestore) > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Water restore", medical.WaterRestore));
                }
                if (Math.Abs(medical.HealthRestore) > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Health restore", medical.HealthRestore));
                }
                if (Math.Abs(medical.StaminaRestore) > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Stamina restore", medical.StaminaRestore));
                }
                if (medical.MedicalToxicity > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                         EntityViewModelsManager.GetEntityViewModelByType <StatusEffectMedicineOveruse>(),
                                                                         medical.MedicalToxicity));
                }
            }

            // TODO: Rework this.
            // Hardcoded information
            AddStatusEffectsInformation();
        }
Esempio n. 10
0
        /// <summary>
        /// Initilize information about entity - invoked after all entity view Models created,
        /// so you can use links to other entity by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitInformation()
        {
            base.InitInformation();

            if (ProtoEntity is TechGroup techGroup)
            {
                EntityInformation.Add(new ViewModelEntityInformation("Tier", techGroup.Tier.ToString()));
                EntityInformation.Add(new ViewModelEntityInformation("LP to unlock", techGroup.LearningPointsPrice));
                if (techGroup.GroupRequirements?.Count > 0)
                {
                    foreach (BaseTechGroupRequirement groupRequirement in techGroup.GroupRequirements)
                    {
                        switch (groupRequirement)
                        {
                        case BaseTechGroupRequirementGroupUnlocked requirementGroup:
                            EntityInformation.Add(new ViewModelEntityInformation(
                                                      "Require " + (requirementGroup.GroupNodesUnlockedPercent * 100) + "%",
                                                      EntityViewModelsManager.GetEntityViewModel(requirementGroup.Group)));
                            break;
                        }
                    }
                }
                if (techGroup.AllNodes?.Count > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Contains nodes",
                                                                         techGroup.AllNodes.Select(EntityViewModelsManager.GetEntityViewModel)));
                }
            }
        }
Esempio n. 11
0
        /// <summary>
        /// Initialize information about entity - invoked after all entity view Models created,
        /// so you can use links to other entity by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitInformation()
        {
            base.InitInformation();

            if (ProtoEntity is TechNode techNode)
            {
                EntityInformation.Add(new ViewModelEntityInformation("Tier", techNode.Group.Tier.ToString()));
                EntityInformation.Add(new ViewModelEntityInformation("LP to unlock", techNode.LearningPointsPrice));
                EntityInformation.Add(new ViewModelEntityInformation("Tech group",
                                                                     EntityViewModelsManager.GetEntityViewModel(techNode.Group)));
                if (techNode.RequiredNode != null)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Required node",
                                                                         EntityViewModelsManager.GetEntityViewModel(techNode.RequiredNode)));
                }
                if (techNode.DependentNodes?.Count > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Dependent nodes",
                                                                         techNode.DependentNodes.Select(EntityViewModelsManager.GetEntityViewModel)));
                }
                if (techNode.NodeEffects?.Count > 0)
                {
                    List <ProtoEntityViewModel> tempList = new List <ProtoEntityViewModel>();
                    foreach (BaseTechNodeEffect nodeEffect in techNode.NodeEffects)
                    {
                        switch (nodeEffect)
                        {
                        case TechNodeEffectPerkUnlock techNodeEffectPerkUnlock:
                            tempList.Add(
                                EntityViewModelsManager.GetEntityViewModel(techNodeEffectPerkUnlock.Perk));
                            break;

                        case TechNodeEffectRecipeUnlock techNodeEffectRecipeUnlock:
                            tempList.Add(
                                EntityViewModelsManager.GetEntityViewModel(techNodeEffectRecipeUnlock.Recipe));
                            break;

                        case TechNodeEffectStructureUnlock techNodeEffectStructureUnlock:
                            tempList.Add(
                                EntityViewModelsManager.GetEntityViewModel(techNodeEffectStructureUnlock
                                                                           .Structure));
                            break;

                        case TechNodeEffectVehicleUnlock techNodeEffectVehicleUnlock:
                            tempList.Add(
                                EntityViewModelsManager.GetEntityViewModel(techNodeEffectVehicleUnlock
                                                                           .Vehicle));
                            break;

                        default:
                            Api.Logger.Error("CNEI: Unknown TechNodeEffect " + nodeEffect);
                            break;
                        }
                    }
                    EntityInformation.Add(new ViewModelEntityInformation("Unlocks", tempList));
                }
            }
        }
Esempio n. 12
0
        public override void ClientInitialize()
        {
            ClientInputManager.RegisterButtonsEnum <CNEIbutton>();

            EntityViewModelsManager.Init();

            BootstrapperClientGame.InitEndCallback += GameInitHandler;

            BootstrapperClientGame.ResetCallback += ResetHandler;
        }
Esempio n. 13
0
        /// <summary>
        /// Initilize entity reletionships with each other - invoked after all entity view Models created,
        /// so you can access them by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitAdditionalRecipes()
        {
            base.InitAdditionalRecipes();

            InputItemsList = EntityViewModelsManager.GetAllEntityViewModelsByType <IProtoItemOrganic>();

            InputItemsVMList = EntityViewModelsManager.GetAllEntityViewModelsByType <IProtoItemOrganic>()
                               .Select(item => new ViewModelEntityWithCount(item))
                               .ToList().AsReadOnly();
        }
Esempio n. 14
0
 /// <summary>
 /// Initialize entity relationships with each other - invoked after all entity view Models created,
 /// so you can access them by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
 /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
 /// </summary>
 public override void InitAdditionalRecipes()
 {
     if (ProtoEntity is ProtoObjectHackableContainer hackableContainer &&
         hackableContainer.LootDroplist != null &&
         hackableContainer.LootDroplist.EnumerateAllItems().Any())
     {
         Droplist = new DroplistRecipeViewModel(this, hackableContainer.LootDroplist.EnumerateAllItems());
         EntityViewModelsManager.AddRecipe(Droplist);
     }
 }
Esempio n. 15
0
        /// <summary>
        /// Save changes in IsChecked state for every node in TypeHierarchy.
        /// </summary>
        public static void SaveChanges()
        {
            foreach (TypeHierarchy node in EntityViewModelsManager.TypeHierarchyPlaneCollection)
            {
                node.IsCheckedSavedState = node.IsChecked;
            }

            EntityViewModelsManager.SaveViewPreset();
            TypeHierarchySelectView.Close();
        }
Esempio n. 16
0
        /// <summary>
        /// Initilize information about entity - invoked after all entity view Models created,
        /// so you can use links to other entity by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitInformation()
        {
            base.InitInformation();

            if (ProtoEntity is IProtoItemSeed seed)
            {
                EntityInformation.Add(new ViewModelEntityInformation("Will grow into",
                                                                     EntityViewModelsManager.GetEntityViewModel(seed.ObjectPlantProto)));
            }
        }
Esempio n. 17
0
 /// <summary>
 /// Initilize entity reletionships with each other - invoked after all entity view Models created,
 /// so you can access them by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
 /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
 /// </summary>
 public override void InitAdditionalRecipes()
 {
     if (ProtoEntity is IProtoObjectVegetation vegetation &&
         vegetation.DroplistOnDestroy != null &&
         vegetation.DroplistOnDestroy.EnumerateAllItems().Any())
     {
         DroplistOnDestroy = new DroplistRecipeViewModel(this, vegetation.DroplistOnDestroy.EnumerateAllItems());
         EntityViewModelsManager.AddRecipe(DroplistOnDestroy);
     }
 }
Esempio n. 18
0
 /// <summary>
 /// Initialize entity relationships with each other - invoked after all entity view Models created,
 /// so you can access them by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
 /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
 /// </summary>
 public override void InitAdditionalRecipes()
 {
     if (ProtoEntity is IProtoCharacterMob creature &&
         creature.LootDroplist != null &&
         creature.LootDroplist.EnumerateAllItems().Any())
     {
         Droplist = new DroplistRecipeViewModel(this, creature.LootDroplist.EnumerateAllItems());
         EntityViewModelsManager.AddRecipe(Droplist);
     }
 }
Esempio n. 19
0
 /// <summary>
 /// Initilize entity reletionships with each other - invoked after all entity view Models created,
 /// so you can access them by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
 /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
 /// </summary>
 public override void InitAdditionalRecipes()
 {
     if (ProtoEntity is IProtoObjectLoot loot &&
         loot.LootDroplist != null &&
         loot.LootDroplist.EnumerateAllItems().Any())
     {
         Droplist = new DroplistRecipeViewModel(this, loot.LootDroplist.EnumerateAllItems());
         EntityViewModelsManager.AddRecipe(Droplist);
     }
 }
Esempio n. 20
0
        /// <summary>
        /// Initilize entity reletionships with each other - invoked after all entity view Models created,
        /// so you can access them by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitAdditionalRecipes()
        {
            base.InitAdditionalRecipes();

            if (ProtoEntity is IProtoItemSeed seed)
            {
                PlantRecipe = new PlantRecipeViewModel(this,
                                                       EntityViewModelsManager.GetEntityViewModel(seed.ObjectPlantProto));
                EntityViewModelsManager.AddRecipe(PlantRecipe);
            }
        }
Esempio n. 21
0
 /// <summary>
 /// Initilize entity reletionships with each other - invoked after all entity view Models created,
 /// so you can access them by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
 /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
 /// </summary>
 public override void InitAdditionalRecipes()
 {
     if (ProtoEntity is IProtoObjectLoot lootContainer &&
         lootContainer.LootDroplist != null &&
         lootContainer.LootDroplist.EnumerateAllItems().Any())
     {
         Droplist           = new RecipeViewModel(this, lootContainer.LootDroplist.EnumerateAllItems());
         DroplistVisibility = Visibility.Visible;
         EntityViewModelsManager.AddRecipe(Droplist);
     }
 }
Esempio n. 22
0
        /// <summary>
        /// Initilize information about entity - invoked after all entity view Models created,
        /// so you can use links to other entity by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitInformation()
        {
            base.InitInformation();

            if (ProtoEntity is IProtoObjectLight light)
            {
                EntityInformation.Add(new ViewModelEntityInformation("Fuel capacity",
                                                                     light.FuelCapacity));
                EntityInformation.Add(new ViewModelEntityInformation("Compatible fuel",
                                                                     EntityViewModelsManager.GetEntityViewModelByInterface(light.FuelItemsContainerPrototype.FuelType)));
            }
        }
Esempio n. 23
0
        /// <summary>
        /// Initilize entity reletionships with each other - invoked after all entity view Models created,
        /// so you can access them by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitAdditionalRecipes()
        {
            base.InitAdditionalRecipes();

            if (ProtoEntity is IProtoObjectGatherableVegetation gatherableVegetation &&
                gatherableVegetation.GatherDroplist != null &&
                gatherableVegetation.GatherDroplist.EnumerateAllItems().Any())
            {
                GatherDroplist = new DroplistRecipeViewModel(this,
                                                             gatherableVegetation.GatherDroplist.EnumerateAllItems());
                EntityViewModelsManager.AddRecipe(GatherDroplist);
            }
        }
Esempio n. 24
0
        public void AddRelatedFish([NotNull] ProtoEntityViewModel fishViewModel, double chance)
        {
            if (RelatedFish.Count == 0)
            {
                BaitUsage = new FishingViewModel(this, fishViewModel, chance);
                EntityViewModelsManager.AddRecipe(BaitUsage);
            }
            else
            {
                BaitUsage.AddBaitUsage(fishViewModel, chance);
            }

            RelatedFish.Add(fishViewModel);
        }
Esempio n. 25
0
        public void AddConsumable([NotNull] ProtoEntityViewModel consumableViewModel, double intensity)
        {
            if (Consumables.Count == 0)
            {
                ConsumableEffect = new ConsumableEffectViewModel(this, consumableViewModel, intensity);
                EntityViewModelsManager.AddRecipe(ConsumableEffect);
            }
            else
            {
                ConsumableEffect.AddConsumable(consumableViewModel, intensity);
            }

            Consumables.Add(consumableViewModel);
        }
Esempio n. 26
0
        public void AddCompatibleGun([NotNull] ProtoEntityViewModel gunViewModel)
        {
            if (CompatibleGuns.Count == 0)
            {
                AmmoUsage = new AmmoUsageViewModel(this, gunViewModel);
                EntityViewModelsManager.AddRecipe(AmmoUsage);
            }
            else
            {
                AmmoUsage.AddAmmoUsage(gunViewModel);
            }

            CompatibleGuns.Add(gunViewModel);
        }
Esempio n. 27
0
        /// <summary>
        /// Initialize entity relationships with each other - invoked after all entity view Models created,
        /// so you can access them by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitAdditionalRecipes()
        {
            if (ProtoEntity is IProtoVehicle vehicle)
            {
                ListedInTechNodes = vehicle.ListedInTechNodes
                                    .Select(EntityViewModelsManager.GetEntityViewModel)
                                    .ToList().AsReadOnly();

                EntityViewModelsManager.AddRecipe(new VehicleBuildRecipeViewModel(this, vehicle));

                RepairRecipeVM = new VehicleRepairRecipeViewModel(this, vehicle);
                EntityViewModelsManager.AddRecipe(RepairRecipeVM);
            }
        }
Esempio n. 28
0
        /// <summary>
        /// Initialize information about entity - invoked after all entity view Models created,
        /// so you can use links to other entity by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitInformation()
        {
            base.InitInformation();

            if (ProtoEntity is IProtoDrone drone)
            {
                EntityInformation.Add(new ViewModelEntityInformation("Move speed",
                                                                     drone.StatMoveSpeed));
                EntityInformation.Add(new ViewModelEntityInformation("Drone as item",
                                                                     EntityViewModelsManager.GetEntityViewModel(drone.ProtoItemDrone)));
                EntityInformation.Add(new ViewModelEntityInformation("Mining tool",
                                                                     EntityViewModelsManager.GetEntityViewModel(drone.ProtoItemMiningTool)));
            }
        }
Esempio n. 29
0
        public override void ClientInitialize()
        {
            ClientInputManager.RegisterButtonsEnum <CNEIButton>();

            UpdateChecker.CheckNewReleases(
                EntityViewModelsManager.ModId,
                EntityViewModelsManager.CurrentVersion,
                EntityViewModelsManager.RssFeed);

            EntityViewModelsManager.Init();

            BootstrapperClientGame.InitEndCallback += GameInitHandler;

            BootstrapperClientGame.ResetCallback += ResetHandler;
        }
Esempio n. 30
0
        private static void ShowContextDetails()
        {
            var hitTestResult = Api.Client.UI.GetVisualInPointedPosition();

            if (hitTestResult == null)
            {
                return;
            }

            if (VisualTreeHelperExtension.FindParentOfType(
                    hitTestResult, typeof(ItemSlotControl)) is ItemSlotControl itemSlotControl)
            {
                if (itemSlotControl.Item != null)
                {
                    WindowCNEIdetails.Open(
                        EntityViewModelsManager.GetEntityViewModel(itemSlotControl.Item.ProtoItem));
                }

                return;
            }

            if (VisualTreeHelperExtension.FindParentOfType(
                    hitTestResult, typeof(RequiredItemControl)) is RequiredItemControl requiredItemControl)
            {
                if (requiredItemControl.ProtoItemWithCount != null)
                {
                    WindowCNEIdetails.Open(
                        EntityViewModelsManager.GetEntityViewModel(requiredItemControl.ProtoItemWithCount.ProtoItem));
                }

                return;
            }

            if (VisualTreeHelperExtension.FindParentOfType(
                    hitTestResult, typeof(EntitySlotControl)) is EntitySlotControl entitySlotControl)
            {
                if (entitySlotControl.DataContext is ProtoEntityViewModel entityViewModel)
                {
                    WindowCNEIdetails.Open(entityViewModel);
                }
                else
                {
                    Api.Logger.Error("CNEI: Wrong view model for details window " + entitySlotControl.DataContext);
                }
            }
        }