public void TryCreateCharacterAndGenerateJson() { string characterName = characterNameField.text; Race race = raceDropdownController.SelectedOption; Class class_ = classDropdownController.SelectedOption; Alignment alignment = alignmentDropdownController.SelectedOption; int.TryParse(highestRollFromHitDiceText.text, out var highestRollFromHitDice); int.TryParse(charismaText.text, out var charisma); int.TryParse(constitutionText.text, out var constitution); int.TryParse(dexterityText.text, out var dexterity); int.TryParse(intelligenceText.text, out var intelligence); int.TryParse(strengthText.text, out var strength); int.TryParse(wisdomText.text, out var wisdom); // Check for any invalid data if (string.IsNullOrEmpty(characterName) || highestRollFromHitDice == 0 || charisma == 0 || constitution == 0 || dexterity == 0 || intelligence == 0 || strength == 0 || wisdom == 0) { jsonOutputField.text = EvaluationErrorMessage; return; } // Continue if everything is ok var characterModel = new CharacterSheetModel(characterName, race, class_, alignment, highestRollFromHitDice, charisma, constitution, dexterity, intelligence, strength, wisdom); jsonOutputField.text = characterModel.ToJson(); GameManager.Instance.SaveCharacterSheetModel(characterModel); }
/// <summary> /// Tries to load the character model from disk. /// </summary> /// <param name="characterModel">Contains the loaded model upon success.</param> /// <returns>Returns whether it successfully loaded the character</returns> private static bool TryLoadCharacterFromDisk(out CharacterSheetModel characterModel) { PersistenceModel gameData = PersistenceSystem.LoadGame(); characterModel = gameData?.CharacterSheetModel; return(characterModel != null); }
public void OnClassChanged(Class class_) { _dieType = CharacterSheetModel.GetHitDieTypeByClass(class_); dieAvailable.text = _dieType.ToString(); // Invalidate any previous rolls dieResult.text = InvalidDieResult; }
public void ToJson_ValidProperties_CorrectJson() { // Arrange var sut = new CharacterSheetModel("Kasper Dissing", Race.HalfElf, Class.Barbarian, Alignment.ChaoticEvil, 3, 0, 1, 2, 3, 4, 5); const string expected = @"{ ""CharacterName"": ""Kasper Dissing"", ""AbilityCharisma"": 2, ""AbilityConstitution"": 3, ""AbilityDexterity"": 4, ""AbilityIntelligence"": 5, ""AbilityStrength"": 6, ""AbilityWisdom"": 7, ""Race"": ""Half-Elf"", ""Class"": ""Barbarian"", ""Alignment"": ""Chaotic Evil"", ""ArmorClass"": 12, ""ExperiencePoints"": 0, ""CurrentHitPoints"": 5, ""MaxHitPoints"": 5, ""WalkingSpeed"": 12, ""RunningSpeed"": 25, ""RunningHighJump"": 9, ""StandingHighJump"": 4, ""Items"": [] }"; // Act var actual = sut.ToJson(); // Assert // Remove whitespace var cleanedActual = Regex.Replace(actual, @"\s+", ""); var cleanedExpected = Regex.Replace(expected, @"\s+", ""); Assert.That(cleanedActual, Is.EqualTo(cleanedExpected)); }
/// <summary> /// Sets the CharacterSheetModel property and tries to save the game to disc /// </summary> /// <param name="characterModel">The model to save</param> public void SaveCharacterSheetModel(CharacterSheetModel characterModel) { CharacterSheetModel = characterModel; //PersistenceSystem.SaveGame(new PersistenceModel(_characterSheetModel)); }
public CharacterSheetModel GenerateCharacterSheet(int characterID) { using (var ctx = new ApplicationDbContext()) { var detail = ctx.Characters.Single(e => e.CharacterID == characterID); var items = GetItemsByCharacterID(characterID); var weaponList = new List <CharacterItemListItem>(); var equippedWeaponList = new List <CharacterItemListItem>(); var armorList = new List <CharacterItemListItem>(); var equippedArmorList = new List <CharacterItemListItem>(); var gearList = new List <CharacterItemListItem>(); var strMod = CalculateAbilityModifier(detail.CharacterStr); var dexMod = CalculateAbilityModifier(detail.CharacterDex); var conMod = CalculateAbilityModifier(detail.CharacterCon); var intMod = CalculateAbilityModifier(detail.CharacterInt); var wisMod = CalculateAbilityModifier(detail.CharacterWis); var chaMod = CalculateAbilityModifier(detail.CharacterCha); short characterSpeed = 40; foreach (var item in items) { if (item.ItemType == ItemType.Weapon) { weaponList.Add(item); if (item.IsEquipped) { equippedWeaponList.Add(item); } } if (item.ItemType == ItemType.Armor || item.ItemType == ItemType.Shield) { armorList.Add(item); if (item.IsEquipped) { equippedArmorList.Add(item); if (item.ArmorType.Equals(ArmorType.Leather)) { characterSpeed = 30; } if (item.ArmorType.Equals(ArmorType.Chain)) { characterSpeed = 20; } if (item.ArmorType.Equals(ArmorType.Plate)) { characterSpeed = 20; } } } if (item.ItemType == ItemType.Gear) { gearList.Add(item); } } short characterAC = CalculateAC(equippedArmorList, dexMod); int attackBonus = Convert.ToInt32(detail.CharacterAttackBonus); foreach (var item in items) { if (item.ItemType == ItemType.Weapon) { item.AttackBonus += attackBonus; if (item.WeaponType == WeaponType.Melee) { item.AttackBonus += strMod; } if (item.WeaponType == WeaponType.Ranged) { item.AttackBonus += dexMod; if (detail.CharacterRace == CharacterRace.Halfling) { item.AttackBonus += 1; } } } } CharacterSheetModel characterSheet = new CharacterSheetModel() { OwnerID = detail.OwnerID, CharacterID = detail.CharacterID, CharacterName = detail.CharacterName, CharacterStr = detail.CharacterStr, StrMod = strMod, CharacterDex = detail.CharacterDex, DexMod = dexMod, CharacterCon = detail.CharacterCon, ConMod = conMod, CharacterInt = detail.CharacterInt, IntMod = intMod, CharacterWis = detail.CharacterWis, WisMod = wisMod, CharacterCha = detail.CharacterCha, ChaMod = chaMod, CharacterRace = detail.CharacterRace, CharacterClass = detail.CharacterClass, CharacterAbilities = detail.CharacterAbilities, CharacterXP = detail.CharacterXP, CharacterLevel = detail.CharacterLevel, CharacterAC = characterAC, CharacterHP = detail.CharacterHP, CharacterAttackBonus = detail.CharacterAttackBonus, CharacterSpeed = characterSpeed, CharacterNotes = detail.CharacterNotes, Items = items, Weapons = weaponList, EquippedWeapons = equippedWeaponList, Armor = armorList, EquippedArmor = equippedArmorList, Gear = gearList }; return(characterSheet); } }
private void Start() { // Arbitrarily chose Barbarian to be the default _dieType = CharacterSheetModel.GetHitDieTypeByClass(Class.Barbarian); dieAvailable.text = _dieType.ToString(); }