示例#1
0
 public static void Postfix(CharacterVM __instance, int currentFocusAmount, ref bool __result)
 {
     if (Settings.Instance.Enabled && Settings.Instance.CharacterUpgrades)
     {
         __result = currentFocusAmount < 5 && __instance.UnspentCharacterPoints > 0;
     }
 }
        public ActionResult EditCharacter(CharacterVM model)
        {
            if (ModelState.IsValid)
            {
                if (IsNameAvailable(model.Name))
                {
                    #region Update character info
                    try
                    {
                        UpdateInfo(model);
                        return(RedirectToAction("Index", "Character"));
                    }
                    catch (Exception e)
                    {
                        ViewBag.ErrorMessage = e.Message;
                        return(View("Error"));
                    }
                    #endregion
                }
                else
                {
                    //Add custom error to the ModelState if the character already exists
                    ModelState.AddModelError("Name", "That name already exists");
                }
            }

            return(View("EditCharacter", model));
        }
        async Task SaveCharacter()
        {
            var isInsert = false;

            if (string.IsNullOrWhiteSpace(CharacterVM._id))
            {
                CharacterVM._id = Guid.NewGuid().ToString();
                isInsert        = true;
            }

            var hpCharacter = CharacterVM.GetCharacter();

            var success         = 0;
            var useLocalStorage = Preferences.Get("UsingLocalStorage", true);

            if (useLocalStorage)
            {
                success = await App.Context.SaveItemAsync <HPCharacter>(hpCharacter, isInsert);
            }
            else
            {
                // TODO: Call REST Service here
            }

            await UserDialogs.Instance.AlertAsync((success > 0)? "Success!" : "Error!", "Saving...", "OK");
        }
        private void GetBlankPrimaryTab(CharacterVM vm)
        {
            PrimaryTabVM primaryTab = new PrimaryTabVM();

            GetSelectableRaces(primaryTab);

            ClassRowCM[] selectedClasses = new ClassRowCM[1];
            selectedClasses[0] = new ClassRowCM
            {
                Index = 1
            };

            GetSelectableClasses(selectedClasses);
            primaryTab.Classes = new ClassesCM
            {
                SelectedClasses = selectedClasses
            };
            primaryTab.Stats = new StatsCM
            {
                Bonus = new StatBonusCM()
            };
            primaryTab.Saves  = new SavesCM();
            primaryTab.Combat = new CombatCM();
            primaryTab.Skills = new ProficiencyCM
            {
                isProficient = new IsProficientCM(),
                TotalBonus   = new SkillBonusCM()
            };

            vm.PrimaryTab = primaryTab;
        }
        async Task DeleteCharacter()
        {
            var confirm = await UserDialogs.Instance.ConfirmAsync("Are you sure?", "Delete?", "Yes", "No");

            if (confirm)
            {
                var hpCharacter = CharacterVM.GetCharacter();

                var success         = 0;
                var useLocalStorage = Preferences.Get("UsingLocalStorage", true);

                if (useLocalStorage)
                {
                    success = await App.Context.DeleteItemAsync <HPCharacter>(hpCharacter);
                }
                else
                {
                    var service = new RESTService();
                    var result  = await service.DeleteCharacter(hpCharacter._id);

                    success = result ? 2 : 0;
                }

                await UserDialogs.Instance.AlertAsync((success > 0)? "Success!" : "Error!", "Deleting...", "OK");
            }
        }
 public CharacterVM CreateCharacterINVALID(CharacterVM vm)
 {
     //The reference sets won't be subimitted by the user - and even if they were, they may have been tampered with.
     //make sure we reset the reference sets to ensure accurate information is displayed.
     GetSelectableRaces(vm.PrimaryTab);
     GetSelectableClasses(vm.PrimaryTab.Classes.SelectedClasses);
     return(vm);
 }
        private void GetBlankSpellsTab(CharacterVM vm)
        {
            SpellsTabVM spellsTab = new SpellsTabVM();

            KnownSpellRowCM[] KnownSpells = new KnownSpellRowCM[0];
            spellsTab.KnownSpells = KnownSpells;

            vm.SpellsTab = spellsTab;
        }
        public CharacterVM CreateCharacterGET()
        {
            CharacterVM vm = new CharacterVM();

            GetBlankPrimaryTab(vm);
            GetBlankNotesTab(vm);
            GetBlankInventoryTab(vm);
            GetBlankSpellsTab(vm);
            return(vm);
        }
示例#9
0
 public static void Update(CharacterVM character)
 {
     try
     {
         _dal.Update(MapToCharacter(character));
     }
     catch (Exception e)
     {
         throw new NotImplementedException(e.Message);
     }
 }
示例#10
0
 static Character MapToCharacter(CharacterVM characterModel)
 {
     return(new Character()
     {
         Id = characterModel.Id,
         Name = characterModel.Name,
         Region = characterModel.Region,
         Vision = characterModel.Vision,
         CanWield = characterModel.Weapon,
     });
 }
        private void GetBlankNotesTab(CharacterVM vm)
        {
            NoteCM[] noteCollection = new NoteCM[1];
            NoteCM   blankNote      = new NoteCM();

            noteCollection[0] = blankNote;

            NoteTabVM noteTab = new NoteTabVM();

            noteTab.Notes = noteCollection;
            vm.NotesTab   = noteTab;
        }
        private void GetBlankInventoryTab(CharacterVM vm)
        {
            MoneyCM money = new MoneyCM();

            HeldItemRowCM[] heldItems = new HeldItemRowCM[0];

            InventoryTabVM inventoryTab = new InventoryTabVM();

            inventoryTab.Items = heldItems;
            inventoryTab.Money = money;
            vm.InventoryTab    = inventoryTab;
        }
        static void Postfix(SkillVM __instance, ref int ____fullLearningRateLevel, CharacterVM ____developerVM)
        {
            int attr = ____developerVM.GetCurrentAttributePoint(__instance.Skill.CharacterAttributesEnum);

            ____fullLearningRateLevel = (int)(__instance.Level + __instance.CurrentFocusLevel * Reworked_SkillsSubModule.__FOCUS_VALUE + attr * Reworked_SkillsSubModule.__ATTR_VALUE);
            TextObject attrname = CharacterAttributes.GetCharacterAttribute(__instance.Skill.CharacterAttributeEnum).Name;

            __instance.LearningRateTooltip  = new BasicTooltipViewModel(() => GetLearningRateTooltip(attr, __instance.CurrentFocusLevel, __instance.Level, ____developerVM.Hero.CharacterObject.Level, attrname));
            __instance.LearningLimitTooltip = new BasicTooltipViewModel(() => {
                Patch4.SKILLLEVEL = __instance.Level;
                return(GetLearningLimitTooltip(attr, __instance.CurrentFocusLevel, attrname));
            });
        }
        public void UpdateInfo(CharacterVM character)
        {
            var model = new CharacterVM()
            {
                Id     = character.Id,
                Name   = character.Name,
                Region = character.Region,
                Weapon = character.Weapon,
                Vision = character.Vision
            };

            CharacterDALMapper.Update(model);
        }
        public ActionResult CharacterDetails(int id, string viewName)
        {
            CharacterVM model = CharacterDALMapper.FindById(id);

            if (model == null)
            {
                return(HttpNotFound());
            }

            //Get actual name and save it in a temporary state object
            TempData[ACTUAL_NAME_KEY] = model.Name;

            return(View(viewName, model));
        }
示例#16
0
        public static SkillVM CurrentSkill(SkillVM __result, CharacterVM __instance)
        {
            if (__result == null)
            {
                return(__result);
            }
            var bonuses     = new CharacterAttributeBonuses(__instance.Hero.CharacterObject);
            var lerningRate = __result.LearningRate;
            var bonus       = lerningRate * bonuses.XPMultiplier;

            __result.CurrentLearningRateText = "Learning Rate: x " + (lerningRate + bonus).ToString("F2");

            return(__result);
        }
        public void CreateCharacterPOST(Guid user_id, CharacterVM vm)
        {
            Guid character_id = Guid.NewGuid();
            CreateModelMapper <PrimaryTabVM, CharacterDM> characterMapper = new CreateModelMapper <PrimaryTabVM, CharacterDM>();
            CreateModelMapper <CombatCM, CharacterDM>     combatMapper    = new CreateModelMapper <CombatCM, CharacterDM>();
            CharacterDM character = characterMapper.mapViewModelToDataModel(vm.PrimaryTab);

            if (_commons.raceExists(vm.PrimaryTab.Race) == true)
            {
                character.Race_id = vm.PrimaryTab.Race;
            }
            ;
            combatMapper.mapViewModelToDataModel(vm.PrimaryTab.Combat, character);


            character.Character_id = character_id;
            Health       health = CharacterMapper.mapCombatCMToNewHealthEntity(vm.PrimaryTab.Combat);
            IsProficient skills = mapIsProficient(vm.PrimaryTab.Skills.isProficient);
            CreateModelMapper <SavesCM, IsProficient> mapSaves = new CreateModelMapper <SavesCM, IsProficient>();

            mapSaves.mapViewModelToDataModel(vm.PrimaryTab.Saves, skills);
            Stats    stats = CharacterMapper.mapStatsCMToNewEntity(vm.PrimaryTab.Stats);
            Currency money = CharacterMapper.mapCurrencyCMToNewEntity(vm.InventoryTab.Money);

            character.Character_id = character_id;
            character.User_id      = user_id;
            health.Character_id    = character_id;
            stats.Character_id     = character_id;
            skills.Character_id    = character_id;
            money.Character_id     = character_id;

            _userAccess.AddCharacter(character);
            _userAccess.AddHealthRecord(health);
            _userAccess.AddStatsRecord(stats);
            _userAccess.AddProficiencyRecord(skills);
            _userAccess.AddCurrencyRecord(money);
            LearnSpells(vm.SpellsTab.KnownSpells, character_id);
            SetInventory(vm.InventoryTab.Items, character_id);
            SetNotes(vm.NotesTab.Notes, character_id);
            SetClasses(vm.PrimaryTab.Classes.SelectedClasses, character_id);
            _userAccess.SaveChanges();
        }
 public void UpdateCharacterPOST(Guid user_id, CharacterVM vm)
 {
     throw new NotImplementedException();
 }
示例#19
0
 public static void Add(CharacterVM character)
 {
     _dal.Add(MapToCharacter(character));
 }
示例#20
0
 public SearchCommand(CharacterVM vm)
 {
     VM = vm;
 }
        public void CreateCharacter_GET_ReturnNonNullCharacterVM()
        {
            //Arrange
            PrimaryTabVM primaryTab = new PrimaryTabVM
            {
                Races   = CreateTestData.GetRacesListModels(),
                Classes = CreateTestData.GetNonNullClassesCM(),
                Stats   = new StatsCM
                {
                    Bonus = new StatBonusCM()
                },
                Saves  = new SavesCM(),
                Combat = new CombatCM(),
                Skills = new ProficiencyCM
                {
                    isProficient = new IsProficientCM(),
                    TotalBonus   = new SkillBonusCM()
                }
            };

            NoteCM blankNote = new NoteCM();

            NoteCM[] noteArray = new NoteCM[1];
            noteArray[0] = blankNote;
            NoteTabVM notesTab = new NoteTabVM
            {
                Notes = noteArray
            };

            InventoryTabVM inventory = new InventoryTabVM
            {
                Money = new MoneyCM(),
                Items = new HeldItemRowCM[0]
            };
            SpellsTabVM spells = new SpellsTabVM
            {
                KnownSpells = new KnownSpellRowCM[0]
            };

            CharacterVM expected = new CharacterVM
            {
                PrimaryTab   = primaryTab,
                NotesTab     = notesTab,
                InventoryTab = inventory,
                SpellsTab    = spells
            };

            using (var mocks = AutoMock.GetLoose())
            {
                mocks.Mock <IBaseUserAccess>()
                .Setup(x => x.GetAllRaces()).Returns(CreateTestData.GetListOfRace());
                mocks.Mock <IBaseUserAccess>()
                .Setup(x => x.GetAllPlayableClasses()).Returns(CreateTestData.GetPlayableClasses());

                mocks.Mock <ICharacterCommonFunctions>()
                .Setup(x => x.itemExists(Guid.NewGuid())).Returns(false);

                var access  = mocks.Create <IBaseUserAccess>();
                var commons = mocks.Create <ICharacterCommonFunctions>();

                //Act
                var toTest = ProcessorFactory.getCreateCharacterProcessor(access, commons);
                var actual = toTest.CreateCharacterGET();

                //Assert
                actual.Should().BeEquivalentTo(expected);
            }
        }
        public static void Postfix(CharacterAttributeItemVM __instance, Hero hero, CharacterAttributesEnum currAtt, CharacterVM developerVM, Action <CharacterAttributeItemVM> onInpectAttribute, Action <CharacterAttributeItemVM> onAddAttributePoint)
        {
            var bonuses = new CharacterAttributeBonuses(hero.CharacterObject);
            var text    = "";

            switch (currAtt)
            {
            case CharacterAttributesEnum.Vigor:
                text += bonuses.MeleeDamageMultiplier > 0
                        ? "Increases melee damage by " + bonuses.MeleeDamageMultiplier.ToString("P") + "\n"
                        : "";
                text += bonuses.MeleeSpeedMultiplier > 0
                        ? "Increases melee atack speed by " + bonuses.MeleeSpeedMultiplier.ToString("P") + "\n"
                        : "";
                text += bonuses.PositiveMoraleMultiplier > 0
                        ? "Increases morale gain by " + bonuses.PositiveMoraleMultiplier.ToString("P") + "\n"
                        : "";
                break;

            case CharacterAttributesEnum.Control:
                text += bonuses.RangeDamageMultiplier > 0
                        ? "Increases range damage by " + bonuses.RangeDamageMultiplier.ToString("P") + "\n"
                        : "";
                text += bonuses.RangeSpeedMultiplier > 0
                        ? "Increases range atack speed by " + bonuses.RangeSpeedMultiplier.ToString("P") + "\n"
                        : "";
                text += bonuses.NegativeMoraleMultiplier < 0
                        ? "Decrease morale loss by " + (-bonuses.NegativeMoraleMultiplier).ToString("P") + "\n"
                        : "";
                break;

            case CharacterAttributesEnum.Endurance:
                text += bonuses.HPMultiplier > 0
                        ? "Increases HP by " + bonuses.HPMultiplier.ToString("P") + "\n"
                        : "";
                text += bonuses.MoveSpeedMultiplier > 0
                        ? "Increases move speed by " + bonuses.MoveSpeedMultiplier.ToString("P") + "\n"
                        : "";
                break;

            case CharacterAttributesEnum.Cunning:
                text += bonuses.AttributeEffectMultiplier > 0
                        ? "Increases effect of other attributes by " + (bonuses.AttributeEffectMultiplier - 1).ToString("P") + "\n"
                        : "";
                break;

            case CharacterAttributesEnum.Social:
                text += bonuses.PartySizeMultiplier > 0
                        ? "Increases party size limit by " + bonuses.PartySizeMultiplier.ToString("P") + "\n"
                        : "";
                text += bonuses.PersuadeAddition > 0
                        ? "Increases persuade chance by " + bonuses.PersuadeAddition.ToString("P") + "\n"
                        : "";
                text += bonuses.RenownMultiplier > 0
                        ? "Increases renown gain by " + bonuses.RenownMultiplier.ToString("P") + "\n"
                        : "";
                text += bonuses.InfluenceMultiplier > 0
                        ? "Increases influnce gain by " + bonuses.InfluenceMultiplier.ToString("P") + "\n"
                        : "";
                text += bonuses.RenownAddition > 0
                        ? "Increases renown by " + bonuses.RenownAddition.ToString("F2") + " when you meet somebody at first\n"
                        : "";
                break;

            case CharacterAttributesEnum.Intelligence:
                text += bonuses.XPMultiplier > 0
                        ? "Increases learning rate for all skills by " + bonuses.XPMultiplier.ToString("P") + "\n"
                        : "";
                text += bonuses.IncomeMultiplier > 0
                        ? "Increases clan income by " + bonuses.IncomeMultiplier.ToString("P") + "\n"
                        : "";
                text += bonuses.ExpensesMultiplier < 0
                        ? "Decrease clan spendings by " + (-bonuses.ExpensesMultiplier).ToString("P") + "\n"
                        : "";
                break;
            }
            __instance.IncreaseHelpText = text + __instance.IncreaseHelpText;
        }
示例#23
0
 private static bool Prefix(CharacterVM __instance, ref bool __result, int currentFocusAmount)
 {
     __result = currentFocusAmount < 5 && __instance.UnspentCharacterPoints > 0;
     return(false);
 }
 public void UpdateCharacterINVALID(CharacterVM vm)
 {
     throw new NotImplementedException();
 }
        private CharacterVM buildPOSTArgument()
        {
            ClassesCM postedClasses = new ClassesCM
            {
                SelectedClasses = new ClassRowCM[1]
            };

            postedClasses.SelectedClasses[0] = new ClassRowCM
            {
                Index               = 1,
                Level               = 12,
                RemainingHitDice    = 12,
                SelectedClass_id    = Guid.Parse("4e82620a-0496-4ecc-b6d4-05faa064310b"),
                SelectedSubclass_id = Guid.Parse("c8d2e23a-a193-4e06-8814-9180d4830732")
            };
            PrimaryTabVM primaryTab = new PrimaryTabVM
            {
                Name       = "Caleb Widowgast",
                Alignment  = "Chaotic Good",
                Background = "blah",
                isInspired = false,
                Exp        = 0,
                Race       = Guid.Parse("14f91515-0107-4c79-a3da-be3cf48d7a26"),
                Classes    = postedClasses,
                Stats      = new StatsCM
                {
                    Strength     = 10,
                    Dexterity    = 12,
                    Constitution = 14,
                    Intelligence = 20,
                    Wisdom       = 16,
                    Charisma     = 16
                },
                Combat = new CombatCM
                {
                    MaxHP              = 15,
                    CurrentHP          = 15,
                    TempHP             = 0,
                    DeathSaveFails     = 0,
                    DeathSaveSuccesses = 0,
                    ArmorClass         = 14,
                    MovementSpeed      = 30
                },
                Skills = new ProficiencyCM
                {
                    isProficient = new IsProficientCM
                    {
                        Acrobatics     = false,
                        AnimalHandling = false,
                        Arcana         = true,
                        Athletics      = false,
                        Deception      = true,
                        History        = true,
                        Intimidation   = false,
                        Investigation  = true,
                        Medicine       = false,
                        Nature         = false,
                        Perception     = false,
                        Performance    = false,
                        Persuasion     = false,
                        Religion       = true,
                        SleightOfHand  = false,
                        Stealth        = false,
                        Survival       = true
                    }
                },
                Saves = new SavesCM
                {
                    StrengthSave     = false,
                    DexteritySave    = false,
                    ConstitutionSave = true,
                    IntelligenceSave = true,
                    WisdomSave       = false,
                    CharismaSave     = false,
                }
            };

            NoteTabVM noteTab = new NoteTabVM
            {
                Notes = new NoteCM[1]
            };

            noteTab.Notes[0] = new NoteCM
            {
                Name     = "The Cat Prince",
                Contents = "A children's picture book. The text is in Zemnian"
            };

            InventoryTabVM inventoryTab = new InventoryTabVM
            {
                Money = new MoneyCM
                {
                    GoldPieces   = 3,
                    SilverPieces = 50
                },
                Items = new HeldItemRowCM[1]
            };

            inventoryTab.Items[0] = new HeldItemRowCM
            {
                Item_id    = Guid.Parse("2caa23dc-15e6-4a57-9bb6-62f6d8636ff7"),
                isAttuned  = false,
                isEquipped = false,
                Count      = 1
            };

            SpellsTabVM spellsTab = new SpellsTabVM
            {
                KnownSpells = new KnownSpellRowCM[1]
            };

            spellsTab.KnownSpells[0] = new KnownSpellRowCM
            {
                Spell_id   = Guid.Parse("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"),
                isPrepared = true
            };

            CharacterVM Argument = new CharacterVM
            {
                PrimaryTab   = primaryTab,
                NotesTab     = noteTab,
                InventoryTab = inventoryTab,
                SpellsTab    = spellsTab
            };

            return(Argument);
        }
 public void CreateCharacterPOST(Guid user_id, CharacterVM vm)
 {
     _creator.CreateCharacterPOST(user_id, vm);
 }
            static void Postfix(SkillVM __instance, ref int ____fullLearningRateLevel, CharacterVM ____developerVM)
            {
                int attr = ____developerVM.GetCurrentAttributePoint(__instance.Skill.CharacterAttributeEnum);

                ____fullLearningRateLevel = (int)(__instance.Level + __instance.CurrentFocusLevel * Reworked_SkillsSubModule.__FOCUS_VALUE + attr * Reworked_SkillsSubModule.__ATTR_VALUE);
                __instance.OnPropertyChanged(nameof(__instance.FullLearningRateLevel));

                __instance.SkillEffects.Clear();
                int skillValue = (int)(__instance.Level + __instance.CurrentFocusLevel * Reworked_SkillsSubModule.__FOCUS_VALUE + attr * Reworked_SkillsSubModule.__ATTR_VALUE);

                foreach (SkillEffect effect in DefaultSkillEffects.GetAllSkillEffects().Where <SkillEffect>((Func <SkillEffect, bool>)(x => ((IEnumerable <SkillObject>)x.EffectedSkills).Contains <SkillObject>(__instance.Skill))))
                {
                    __instance.SkillEffects.Add(new BindingListStringItem(CampaignUIHelper.GetSkillEffectText(effect, skillValue)));
                }
            }
        //Create
        public static CharacterDM mapCharacterVMToNewEntity(CharacterVM vm)
        {
            ICreateModelMapper <CharacterVM, CharacterDM> mapper = new CreateModelMapper <CharacterVM, CharacterDM>();

            return(mapper.mapViewModelToDataModel(vm));
        }