Example #1
0
        public void AddSpecialization(string name)
        {
            if (!CharacterObject.CanAffordSpecialization)
            {
                return;
            }


            int price = CharacterObject.Options.KarmaSpecialization;

            //If data file contains {4} this crashes but...
            string upgradetext =             //TODO WRONG
                                 $"{LanguageManager.Instance.GetString("String_ExpenseLearnSpecialization")} {DisplayName} ({name})";

            SkillSpecialization nspec = new SkillSpecialization(name, false);

            ExpenseLogEntry entry = new ExpenseLogEntry();

            entry.Create(price * -1, upgradetext, ExpenseType.Karma, DateTime.Now);
            entry.Undo = new ExpenseUndo().CreateKarma(KarmaExpenseType.AddSpecialization, nspec.InternalId);

            CharacterObject.ExpenseEntries.Add(entry);

            Specializations.Add(nspec);
            CharacterObject.Karma -= price;
        }
Example #2
0
        public void Upgrade()
        {
            if (!CanUpgradeCareer)
            {
                return;
            }

            int    price = UpgradeKarmaCost();
            int    intTotalBaseRating = TotalBaseRating;
            string strSkillType       = "String_ExpenseActiveSkill";

            if (IsKnowledgeSkill)
            {
                strSkillType = "String_ExpenseKnowledgeSkill";
            }
            //If data file contains {4} this crashes but...
            string upgradetext =
                $"{LanguageManager.GetString(strSkillType, GlobalOptions.Language)} {DisplayNameMethod(GlobalOptions.Language)} {intTotalBaseRating} 🡒 {(intTotalBaseRating + 1)}";

            ExpenseLogEntry entry = new ExpenseLogEntry(CharacterObject);

            entry.Create(price * -1, upgradetext, ExpenseType.Karma, DateTime.Now);
            entry.Undo = new ExpenseUndo().CreateKarma(intTotalBaseRating == 0 ? KarmaExpenseType.AddSkill : KarmaExpenseType.ImproveSkill, InternalId);

            CharacterObject.ExpenseEntries.Add(entry);

            Karma += 1;
            CharacterObject.Karma -= price;
        }
Example #3
0
        public void Upgrade()
        {
            if (!CanUpgradeCareer)
            {
                return;
            }

            int    price        = UpgradeKarmaCost();
            string strSkillType = "String_ExpenseActiveSkill";

            if (IsKnowledgeSkill)
            {
                strSkillType = "String_ExpenseKnowledgeSkill";
            }
            //If data file contains {4} this crashes but...
            string upgradetext =
                $"{LanguageManager.Instance.GetString(strSkillType)} {DisplayName} {LearnedRating} -> {(LearnedRating + 1)}";

            ExpenseLogEntry entry = new     ExpenseLogEntry();

            entry.Create(price * -1, upgradetext, ExpenseType.Karma, DateTime.Now);
            entry.Undo = new ExpenseUndo().CreateKarma(LearnedRating == 0 ? KarmaExpenseType.AddSkill : KarmaExpenseType.ImproveSkill, Id.ToString());

            CharacterObject.ExpenseEntries.Add(entry);

            Karma += 1;
            CharacterObject.Karma -= price;
        }
Example #4
0
        public async Task <ExpenseLogEntry> LogBill(Bill expense, string remarks = null)
        {
            var paymentToLog = expense.Payments
                               .OrderByDescending(e => e.EntryDateTime)
                               .FirstOrDefault();

            if (paymentToLog == null)
            {
                return(null);
            }

            var logEntry = new ExpenseLogEntry
            {
                Payment   = paymentToLog,
                ExpenseId = expense.Id
            };

            if (remarks != null)
            {
                logEntry.Remarks = remarks;
            }

            _logger.LogInformation("A new bill payment was logged.");

            await _expenseRepositry.Create(logEntry);

            return(logEntry);
        }
Example #5
0
        public void Upgrade()
        {
            if (CharacterObject.Created)
            {
                if (!CareerIncrease)
                {
                    return;
                }

                int intPrice = UpgradeKarmaCost();

                //If data file contains {4} this crashes but...
                string strUpgradetext =
                    $"{LanguageManager.GetString("String_ExpenseSkillGroup", GlobalOptions.Language)} {DisplayName} {Rating} 🡒 {(Rating + 1)}";

                ExpenseLogEntry objEntry = new ExpenseLogEntry(_objCharacter);
                objEntry.Create(intPrice * -1, strUpgradetext, ExpenseType.Karma, DateTime.Now);
                objEntry.Undo = new ExpenseUndo().CreateKarma(Rating == 0 ? KarmaExpenseType.AddSkill : KarmaExpenseType.ImproveSkill, Name);

                CharacterObject.ExpenseEntries.AddWithSort(objEntry);

                CharacterObject.Karma -= intPrice;
            }

            Karma += 1;
        }
Example #6
0
        public void AddSpecialization(string name)
        {
            int price = IsKnowledgeSkill ? CharacterObject.Options.KarmaKnowledgeSpecialization : CharacterObject.Options.KarmaSpecialization;

            int     intExtraSpecCost      = 0;
            int     intTotalBaseRating    = TotalBaseRating;
            decimal decSpecCostMultiplier = 1.0m;

            foreach (Improvement objLoopImprovement in CharacterObject.Improvements)
            {
                if (objLoopImprovement.Minimum <= intTotalBaseRating &&
                    (string.IsNullOrEmpty(objLoopImprovement.Condition) || (objLoopImprovement.Condition == "career") == CharacterObject.Created || (objLoopImprovement.Condition == "create") != CharacterObject.Created) && objLoopImprovement.Enabled)
                {
                    if (objLoopImprovement.ImprovedName == SkillCategory)
                    {
                        if (objLoopImprovement.ImproveType == Improvement.ImprovementType.SkillCategorySpecializationKarmaCost)
                        {
                            intExtraSpecCost += objLoopImprovement.Value;
                        }
                        else if (objLoopImprovement.ImproveType == Improvement.ImprovementType.SkillCategorySpecializationKarmaCostMultiplier)
                        {
                            decSpecCostMultiplier *= objLoopImprovement.Value / 100.0m;
                        }
                    }
                }
            }
            if (decSpecCostMultiplier != 1.0m)
            {
                price = decimal.ToInt32(decimal.Ceiling(price * decSpecCostMultiplier));
            }
            price += intExtraSpecCost; //Spec

            if (price > CharacterObject.Karma)
            {
                return;
            }

            //If data file contains {4} this crashes but...
            string upgradetext = //TODO WRONG
                                 $"{LanguageManager.GetString("String_ExpenseLearnSpecialization", GlobalOptions.Language)} {DisplayNameMethod(GlobalOptions.Language)} ({name})";

            SkillSpecialization nspec = new SkillSpecialization(name, false, this);

            ExpenseLogEntry entry = new ExpenseLogEntry(CharacterObject);

            entry.Create(price * -1, upgradetext, ExpenseType.Karma, DateTime.Now);
            entry.Undo = new ExpenseUndo().CreateKarma(KarmaExpenseType.AddSpecialization, nspec.InternalId);

            CharacterObject.ExpenseEntries.Add(entry);

            Specializations.Add(nspec);
            CharacterObject.Karma -= price;
        }
Example #7
0
        public async Task <ExpenseLogEntry> LogUnplannedExpense(UnplannedExpense expense)
        {
            var logEntry = new ExpenseLogEntry
            {
                Payment   = expense.Payment,
                ExpenseId = expense.Id,
                Remarks   = expense.Remarks
            };

            _logger.LogInformation("An unexpected expense payment was logged.");

            await _expenseRepositry.Create(logEntry);

            return(logEntry);
        }
Example #8
0
        public async Task <ExpenseLogEntry> LogExpense(ExpenseLogEntry expense)
        {
            await _context.ExpenseEntries.AddAsync(expense);

            try
            {
                await _context.SaveChangesAsync();

                _logger.LogInformation($"a new expense was logged");
                return(expense);
            }
            catch (DbUpdateConcurrencyException ex)
            {
                _logger.LogError("Concurrency exception.");
                throw;
            }
        }
Example #9
0
        public void Upgrade()
        {
            if (!CareerIncrease) return;

            int price = UpgradeKarmaCost();

            //If data file contains {4} this crashes but...
            string upgradetext =
                $"{LanguageManager.Instance.GetString("String_ExpenseSkillGroup")} {DisplayName} {Rating} -> {(Rating + 1)}";

            ExpenseLogEntry entry = new ExpenseLogEntry();
            entry.Create(price * -1, upgradetext, ExpenseType.Karma, DateTime.Now);
            entry.Undo = new ExpenseUndo().CreateKarma(Rating == 0 ? KarmaExpenseType.AddSkill : KarmaExpenseType.ImproveSkill, Name);

            Character.ExpenseEntries.Add(entry);

            Karma += 1;
            Character.Karma -= price;
        }
Example #10
0
        public async Task <ExpenseLogEntry> UpdateEntry(ExpenseLogEntry expense)
        {
            if (EntryExists(expense.Id))
            {
                _context.Entry(expense).State = EntityState.Modified;

                try
                {
                    await _context.SaveChangesAsync();

                    _logger.LogInformation($"An expense entry was updated.");
                    return(expense);
                }
                catch (DbUpdateConcurrencyException ex)
                {
                    _logger.LogError("Concurrency exception.");
                    throw;
                }
            }
            else
            {
                return(null);
            }
        }
Example #11
0
        public void Upgrade()
        {
            if (!CanUpgradeCareer) return;

            int price = UpgradeKarmaCost();

            //If data file contains {4} this crashes but...
            string upgradetext =
                $"{LanguageManager.Instance.GetString("String_ExpenseSkillGroup")} {DisplayName} {LearnedRating} -> {(LearnedRating + 1)}";

            ExpenseLogEntry entry = new	ExpenseLogEntry();
            entry.Create(price * -1, upgradetext, ExpenseType.Karma, DateTime.Now);
            entry.Undo = new ExpenseUndo().CreateKarma(LearnedRating == 0 ? KarmaExpenseType.AddSkill : KarmaExpenseType.ImproveSkill, Id.ToString());

            CharacterObject.ExpenseEntries.Add(entry);

            Karma += 1;
            CharacterObject.Karma -= price;
        }
Example #12
0
        public void AddSpecialization(string name)
        {
            if (!CharacterObject.CanAffordSpecialization) return;

            int price = CharacterObject.Options.KarmaSpecialization;

            //If data file contains {4} this crashes but...
            string upgradetext = //TODO WRONG
                $"{LanguageManager.Instance.GetString("String_ExpenseLearnSpecialization")} {DisplayName} ({name})";

            SkillSpecialization nspec = new SkillSpecialization(name, false);

            ExpenseLogEntry entry = new ExpenseLogEntry();
            entry.Create(price * -1, upgradetext, ExpenseType.Karma, DateTime.Now);
            entry.Undo = new ExpenseUndo().CreateKarma(KarmaExpenseType.AddSpecialization, nspec.InternalId);

            CharacterObject.ExpenseEntries.Add(entry);

            Specializations.Add(nspec);
            CharacterObject.Karma -= price;
        }