/// <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(); }
/// <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); } } } }
/// <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)); } } }
/// <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); } } } }
/// <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; }
/// <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; } }
/// <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; }
/// <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); } } }
/// <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(); }
/// <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))); } } }
/// <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)); } } }
public override void ClientInitialize() { ClientInputManager.RegisterButtonsEnum <CNEIbutton>(); EntityViewModelsManager.Init(); BootstrapperClientGame.InitEndCallback += GameInitHandler; BootstrapperClientGame.ResetCallback += ResetHandler; }
/// <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(); }
/// <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); } }
/// <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(); }
/// <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))); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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))); } }
/// <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); } }
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); }
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); }
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); }
/// <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); } }
/// <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))); } }
public override void ClientInitialize() { ClientInputManager.RegisterButtonsEnum <CNEIButton>(); UpdateChecker.CheckNewReleases( EntityViewModelsManager.ModId, EntityViewModelsManager.CurrentVersion, EntityViewModelsManager.RssFeed); EntityViewModelsManager.Init(); BootstrapperClientGame.InitEndCallback += GameInitHandler; BootstrapperClientGame.ResetCallback += ResetHandler; }
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); } } }