Esempio n. 1
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. 2
0
        private bool SearchFilter(ProtoEntityViewModel entityViewModel)
        {
            var searchTextLowCase = searchText.ToLower();

            return(entityViewModel.TypeLower.Contains(searchTextLowCase) ||
                   entityViewModel.TitleLower.Contains(searchTextLowCase));
        }
Esempio n. 3
0
 /// <summary>
 /// Information with single entity "Header: entity"
 /// </summary>
 /// <param name="header">header</param>
 /// <param name="protoEntityViewModel">entity</param>
 public ViewModelEntityInformation(string header, ProtoEntityViewModel protoEntityViewModel)
 {
     Header     = header;
     Collection = new ObservableCollection <ProtoEntityViewModel>()
     {
         protoEntityViewModel
     };
     CollectionVisibility = Visibility.Visible;
 }
Esempio n. 4
0
 public void AddConsumable([NotNull] ProtoEntityViewModel conumableViewModel, double intensity)
 {
     ConsumableList.Add(new ConsumableInfo()
     {
         ConsumableViewModel = conumableViewModel,
         Name      = conumableViewModel.Title,
         Intensity = intensity,
     });
     ConsumableList = ConsumableList.OrderByDescending(c => c.Intensity).ThenBy(c => c.Name).ToList();
     InputItemsList.Add(conumableViewModel);
 }
        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. 6
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. 7
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. 8
0
 /// <summary>
 /// Information with status effect "Header: effect icon with intensity"
 /// </summary>
 /// <param name="header">header</param>
 /// <param name="protoEntityViewModel">effect entity</param>
 /// <param name="intensity">intensity</param>
 public ViewModelEntityInformation(string header, ProtoEntityViewModel protoEntityViewModel, double intensity)
 {
     if (protoEntityViewModel is ProtoStatusEffectViewModel protoStatusEffectViewModel)
     {
         Header                  = header;
         StatusEffect            = protoStatusEffectViewModel;
         StatusEffectVisibility  = Visibility.Visible;
         ToolTipIntensityPercent = intensity * 100;
         //StatusEffectBackground = protoStatusEffectViewModel.GetBackgroundBrush(intensity);
     }
     else
     {
         Api.Logger.Error("CNEI: Wrong status effect in entity information " + protoEntityViewModel.ProtoEntity);
     }
 }
Esempio n. 9
0
        /// <summary>
        /// Constructor for various consumable providing specific status effect.
        /// Must be used only in InitEntityRelationships phase.
        /// </summary>
        /// <param name="statusEffectViewModel">View Model of status effect.</param>
        /// <param name="conumableViewModel">View Model of consumable.</param>
        /// <param name="intensity">Status effect intensity inflicted by this consumable.</param>
        public ConsumableEffectViewModel([NotNull] ProtoEntityViewModel statusEffectViewModel,
                                         [NotNull] ProtoEntityViewModel conumableViewModel,
                                         double intensity)
            : base(statusEffectViewModel.ProtoEntity)
        {
            if (!EntityViewModelsManager.EntityDictionaryCreated)
            {
                throw new Exception("CNEI: Consumable effect constructor used before all entity VMs sets.");
            }

            StatusEffectEntity = statusEffectViewModel;

            OutputItemsList.Add(statusEffectViewModel);

            AddConsumable(conumableViewModel, intensity);
        }
Esempio n. 10
0
        /// <summary>
        /// Constructor for entity with droplist.
        /// Must be used only in InitEntityRelationships phase.
        /// </summary>
        /// <param name="ammoViewModel">View Model of ammo.</param>
        /// <param name="gunViewModel">View Model of gun that uses that ammo.</param>
        public AmmoUsageViewModel([NotNull] ProtoEntityViewModel ammoViewModel,
                                  [NotNull] ProtoEntityViewModel gunViewModel)
            : base(ammoViewModel.ProtoEntity)
        {
            if (!EntityViewModelsManager.EntityDictonaryCreated)
            {
                throw new Exception("CNEI: Droplist constructor used before all entity VMs sets.");
            }

            AmmoEntity = ammoViewModel;

            InputItemsList.Add(ammoViewModel);

            //GunsVMList.Add(gunViewModel);
            GunsInformationList.Add(new ViewModelEntityWithCount(gunViewModel));
        }
Esempio n. 11
0
        public ViewModelEntityWithCount(ProtoEntityViewModel entityViewModel, int count, int countRandom,
                                        double probability) : this(entityViewModel, count)
        {
            if (countRandom > 0)
            {
                CountString = "(" + count + "-" + (count + countRandom) + ") x";
            }

            if (0 < probability && probability <= 1)
            {
                CountString += " " + (probability * 100) + "%";
            }
            else
            {
                Api.Logger.Warning("CNEI: Wrong probability (" + probability + ") for " + entityViewModel);
            }
        }
Esempio n. 12
0
        public void AddBaitUsage([NotNull] ProtoEntityViewModel fishViewModel, double weight)
        {
            if (fishViewModel.ProtoEntity is ProtoItemFish fish)
            {
                FishDetailsList.Add(new FishDetails()
                {
                    FishViewModel = fishViewModel,
                    Name          = fishViewModel.Title,
                    RequiredFishingKnowledgeLevel = fish.RequiredFishingKnowledgeLevel,
                    IsSaltwaterFish = fish.IsSaltwaterFish ? "Yes" : "No",
                    Weight          = weight
                });
                FishDetailsList.SortByDesc(e => e.Weight);
            }

            OutputItemsList.Add(fishViewModel);
        }
Esempio n. 13
0
        /// <summary>
        /// Constructor for entity with droplist.
        /// Must be used only in InitEntityRelationships phase.
        /// </summary>
        /// <param name="seedEntityViewModel">View Model of seed entity.</param>
        /// <param name="plantEntityViewModel">View Model of grown plant entity.</param>
        public PlantRecipeViewModel([NotNull] ProtoEntityViewModel seedEntityViewModel,
                                    [NotNull] ProtoEntityViewModel plantEntityViewModel)
            : base(seedEntityViewModel.ProtoEntity)
        {
            if (!EntityViewModelsManager.EntityDictionaryCreated)
            {
                throw new Exception("CNEI: Droplist constructor used before all entity VMs sets.");
            }

            InputItemsList.Add(seedEntityViewModel);

            SeedEntity = seedEntityViewModel;

            OutputItemsList.Add(plantEntityViewModel);

            PlantEntity = plantEntityViewModel;
        }
Esempio n. 14
0
        /// <summary>
        /// Constructor for fishing recipe.
        /// Must be used only in InitEntityRelationships phase.
        /// </summary>
        /// <param name="baitViewModel">View Model of fishing bait entity.</param>
        /// <param name="fishViewModel">View Model of fish entity.</param>
        /// <param name="chance">Chance for catching this fish with this bait.</param>
        public FishingViewModel([NotNull] ProtoEntityViewModel baitViewModel,
                                [NotNull] ProtoEntityViewModel fishViewModel,
                                double weight)
            : base(baitViewModel.ProtoEntity)
        {
            if (!EntityViewModelsManager.EntityDictionaryCreated)
            {
                throw new Exception("CNEI: Droplist constructor used before all entity VMs sets.");
            }

            BaitEntity = baitViewModel;

            InputItemsList.Add(baitViewModel);

            AddBaitUsage(fishViewModel, weight);

            StationsList = EntityViewModelsManager.GetAllEntityViewModelsByType <IProtoItemToolFishing>()
                           .ToList().AsReadOnly();
        }
Esempio n. 15
0
        public void Add(Type type, ProtoEntityViewModel entityViewModel)
        {
            if (GetNameWithoutGenericArity(type.ToString()) == FullName)
            {
                return;
            }

            var localNode = this;
            var tempType  = type.BaseType;

            while (GetNameWithoutGenericArity(type.BaseType?.ToString()) != localNode.FullName)
            {
                while (GetNameWithoutGenericArity(tempType?.BaseType?.ToString()) != localNode.FullName)
                {
                    tempType = tempType?.BaseType;
                }

                var tempNode = localNode.Derivatives
                               .FirstOrDefault(n => n.FullName == GetNameWithoutGenericArity(tempType?.ToString()));
                if (tempNode == null)
                {
                    tempNode = new TypeHierarchy(tempType, localNode);
                    localNode.Derivatives.Add(tempNode);
                    localNode.IsChild = false;
                }

                localNode = tempNode;
                tempType  = type.BaseType;
            }

            var newNode = new TypeHierarchy(type, localNode, entityViewModel);

            localNode.Derivatives.Add(newNode);
            localNode.IsChild = false;
            localNode.EntityViewModelsList.Add(entityViewModel);
            do
            {
                localNode.EntityViewModelsFullList.Add(entityViewModel);
                localNode = localNode.Parent;
            } while (localNode != null);
        }
Esempio n. 16
0
 public TypeHierarchy(Type type, TypeHierarchy parent, ProtoEntityViewModel entityViewModel)
     : this(type, parent)
 {
     EntityViewModel = entityViewModel;
 }
Esempio n. 17
0
 public ViewModelEntityWithCount(ProtoEntityViewModel entityViewModel)
 {
     EntityViewModel = entityViewModel;
     CountString     = "";
 }
Esempio n. 18
0
 public ViewModelEntityWithCount(ProtoEntityViewModel entityViewModel, int count) : this(entityViewModel)
 {
     CountString += count + " x";
 }
Esempio n. 19
0
 public ViewModelEntityWithCount(ProtoEntityViewModel entityViewModel, string text) : this(entityViewModel)
 {
     CountString = text;
 }
Esempio n. 20
0
 public void AddAmmoUsage([NotNull] ProtoEntityViewModel gunViewModel)
 {
     //GunsVMList.Add(gunViewModel);
     GunsInformationList.Add(new ViewModelEntityWithCount(gunViewModel));
 }