Merge branch 'dev' into SES-150
This commit is contained in:
commit
d146ea3b78
@ -127,3 +127,4 @@ namespace SessionCompanion.Database
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,985 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 4,
|
||||||
|
"Initiative": 2,
|
||||||
|
"HealthPoints": 8,
|
||||||
|
"CurrentHealthPoints": 8,
|
||||||
|
"ArmorClass": 5,
|
||||||
|
"Proficiency": 2
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Ulora",
|
||||||
|
"ClassId": 2,
|
||||||
|
"RaceId": 3,
|
||||||
|
"AlignmentId": "LawfulGood",
|
||||||
|
"BackgroundId": 2,
|
||||||
|
"Sex": "Female",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 11,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 12,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 44
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SpellId": 57
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 5,
|
||||||
|
"Modification": -2,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSavingThrows": false,
|
||||||
|
"Deception": 0,
|
||||||
|
"CanDeception": false,
|
||||||
|
"Intimidation": 0,
|
||||||
|
"CanIntimidation": false,
|
||||||
|
"Performance": 0,
|
||||||
|
"CanPerformance": false,
|
||||||
|
"Persuasion": 0,
|
||||||
|
"CanPersuasion": false
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 12,
|
||||||
|
"Modification": 2,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 15,
|
||||||
|
"Modification": 2,
|
||||||
|
"SavingThrows": 3,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Acrobatics": 3,
|
||||||
|
"CanAcrobatics": true,
|
||||||
|
"SleightOfHand": 2,
|
||||||
|
"CanSleightOfHand": true,
|
||||||
|
"Stealth": 3,
|
||||||
|
"canStealth": true
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 14,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"arcana": 2,
|
||||||
|
"canArcana": true,
|
||||||
|
"History": 4,
|
||||||
|
"CanHistory": true,
|
||||||
|
"Investigation": 3,
|
||||||
|
"CanInvestigation": true,
|
||||||
|
"Nature": 1,
|
||||||
|
"CanNature": true,
|
||||||
|
"Religion": 0,
|
||||||
|
"canReligion": false
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 8,
|
||||||
|
"Modification": -1,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"Athletics": 0,
|
||||||
|
"canAthletics": false
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 10,
|
||||||
|
"Modification": 0,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"AnimalHandling": 1,
|
||||||
|
"CanAnimalHandling": true,
|
||||||
|
"Insight": 0,
|
||||||
|
"canInsight": false,
|
||||||
|
"medicine": 0,
|
||||||
|
"CanMedicine": false,
|
||||||
|
"Perception": 2,
|
||||||
|
"CanPerception": true,
|
||||||
|
"Survival": 0,
|
||||||
|
"CanSurvival": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 3,
|
||||||
|
"Initiative": 5,
|
||||||
|
"HealthPoints": 12,
|
||||||
|
"CurrentHealthPoints": 11,
|
||||||
|
"ArmorClass": 4,
|
||||||
|
"Proficiency": 1
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Nucate",
|
||||||
|
"ClassId": 1,
|
||||||
|
"RaceId": 1,
|
||||||
|
"AlignmentId": "LawfulGood",
|
||||||
|
"BackgroundId": 1,
|
||||||
|
"Sex": "Male",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 30,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 25,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SpellId": 42
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 10,
|
||||||
|
"Modification": 3,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSavingThrows": false,
|
||||||
|
"Deception": 0,
|
||||||
|
"CanDeception": false,
|
||||||
|
"Intimidation": 1,
|
||||||
|
"CanIntimidation": true,
|
||||||
|
"Performance": 2,
|
||||||
|
"CanPerformance": true,
|
||||||
|
"Persuasion": 0,
|
||||||
|
"CanPersuasion": false
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 11,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 10,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 4,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Acrobatics": 3,
|
||||||
|
"CanAcrobatics": true,
|
||||||
|
"SleightOfHand": 1,
|
||||||
|
"CanSleightOfHand": true,
|
||||||
|
"Stealth": 2,
|
||||||
|
"canStealth": true
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 6,
|
||||||
|
"Modification": -2,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"arcana": 1,
|
||||||
|
"canArcana": true,
|
||||||
|
"History": 4,
|
||||||
|
"CanHistory": true,
|
||||||
|
"Investigation": 0,
|
||||||
|
"CanInvestigation": false,
|
||||||
|
"Nature": 1,
|
||||||
|
"CanNature": true,
|
||||||
|
"Religion": 3,
|
||||||
|
"canReligion": true
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 10,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"Athletics": 2,
|
||||||
|
"canAthletics": true
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 11,
|
||||||
|
"Modification": 3,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"AnimalHandling": 2,
|
||||||
|
"canAnimalHandling": true,
|
||||||
|
"Insight": 1,
|
||||||
|
"canInsight": true,
|
||||||
|
"medicine": 0,
|
||||||
|
"CanMedicine": false,
|
||||||
|
"Perception": 5,
|
||||||
|
"CanPerception": true,
|
||||||
|
"Survival": 2,
|
||||||
|
"CanSurvival": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 4,
|
||||||
|
"Initiative": 2,
|
||||||
|
"HealthPoints": 17,
|
||||||
|
"CurrentHealthPoints": 16,
|
||||||
|
"ArmorClass": 6,
|
||||||
|
"Proficiency": 3
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Muraraj",
|
||||||
|
"ClassId": 2,
|
||||||
|
"RaceId": 2,
|
||||||
|
"AlignmentId": "LawfulGood",
|
||||||
|
"BackgroundId": 1,
|
||||||
|
"Sex": "Male",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 1,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 2,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 10,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 42
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 15,
|
||||||
|
"Modification": 2,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Deception": 1,
|
||||||
|
"CanDeception": true,
|
||||||
|
"Intimidation": 4,
|
||||||
|
"CanIntimidation": true,
|
||||||
|
"Performance": 2,
|
||||||
|
"CanPerformance": true,
|
||||||
|
"Persuasion": 2,
|
||||||
|
"CanPersuasion": true
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 15,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 8,
|
||||||
|
"Modification": -1,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"Acrobatics": 0,
|
||||||
|
"CanAcrobatics": false,
|
||||||
|
"SleightOfHand": 0,
|
||||||
|
"CanSleightOfHand": false,
|
||||||
|
"Stealth": 0,
|
||||||
|
"canStealth": false
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 8,
|
||||||
|
"Modification": -1,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"arcana": 0,
|
||||||
|
"canArcana": false,
|
||||||
|
"History": 0,
|
||||||
|
"CanHistory": false,
|
||||||
|
"Investigation": 0,
|
||||||
|
"CanInvestigation": false,
|
||||||
|
"Nature": 0,
|
||||||
|
"CanNature": false,
|
||||||
|
"Religion": 0,
|
||||||
|
"canReligion": false
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 18,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 3,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Athletics": 5,
|
||||||
|
"canAthletics": true
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 6,
|
||||||
|
"Modification": -3,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"AnimalHandling": 0,
|
||||||
|
"CanAnimalHandling": false,
|
||||||
|
"Insight": 0,
|
||||||
|
"canInsight": false,
|
||||||
|
"medicine": 0,
|
||||||
|
"CanMedicine": false,
|
||||||
|
"Perception": 0,
|
||||||
|
"CanPerception": false,
|
||||||
|
"Survival": 0,
|
||||||
|
"CanSurvival": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 8,
|
||||||
|
"Initiative": 7,
|
||||||
|
"HealthPoints": 7,
|
||||||
|
"CurrentHealthPoints": 7,
|
||||||
|
"ArmorClass": 2,
|
||||||
|
"Proficiency": 3
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Amarena",
|
||||||
|
"ClassId": 2,
|
||||||
|
"RaceId": 1,
|
||||||
|
"AlignmentId": "LawfulGood",
|
||||||
|
"BackgroundId": 2,
|
||||||
|
"Sex": "Female",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 2,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 14,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 4,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 7,
|
||||||
|
"Modification": -2,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSavingThrows": false,
|
||||||
|
"Deception": 0,
|
||||||
|
"CanDeception": false,
|
||||||
|
"Intimidation": 0,
|
||||||
|
"CanIntimidation": false,
|
||||||
|
"Performance": 0,
|
||||||
|
"CanPerformance": false,
|
||||||
|
"Persuasion": 0,
|
||||||
|
"CanPersuasion": false
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 11,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 17,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 3,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Acrobatics": 4,
|
||||||
|
"CanAcrobatics": true,
|
||||||
|
"SleightOfHand": 2,
|
||||||
|
"CanSleightOfHand": true,
|
||||||
|
"Stealth": 5,
|
||||||
|
"canStealth": true
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 10,
|
||||||
|
"Modification": 0,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"arcana": 0,
|
||||||
|
"canArcana": false,
|
||||||
|
"History": 0,
|
||||||
|
"CanHistory": false,
|
||||||
|
"Investigation": 0,
|
||||||
|
"CanInvestigation": false,
|
||||||
|
"Nature": 0,
|
||||||
|
"CanNature": false,
|
||||||
|
"Religion": 0,
|
||||||
|
"canReligion": false
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 14,
|
||||||
|
"Modification": 2,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Athletics": 3,
|
||||||
|
"canAthletics": true
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 7,
|
||||||
|
"Modification": 0,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"AnimalHandling": 0,
|
||||||
|
"canAnimalHandling": false,
|
||||||
|
"Insight": 0,
|
||||||
|
"canInsight": false,
|
||||||
|
"medicine": 0,
|
||||||
|
"CanMedicine": false,
|
||||||
|
"Perception": 0,
|
||||||
|
"CanPerception": false,
|
||||||
|
"Survival": 0,
|
||||||
|
"CanSurvival": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 2,
|
||||||
|
"Initiative": 3,
|
||||||
|
"HealthPoints": 17,
|
||||||
|
"CurrentHealthPoints": 17,
|
||||||
|
"ArmorClass": 5,
|
||||||
|
"Proficiency": 1
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Yaz' uw Emul",
|
||||||
|
"ClassId": 1,
|
||||||
|
"RaceId": 3,
|
||||||
|
"AlignmentId": "LawfulGood",
|
||||||
|
"BackgroundId": 3,
|
||||||
|
"Sex": "Male",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 16,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 14,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SpellId": 65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SpellId": 44
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 10,
|
||||||
|
"Modification": 0,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSavingThrows": false,
|
||||||
|
"Deception": 1,
|
||||||
|
"CanDeception": true,
|
||||||
|
"Intimidation": 2,
|
||||||
|
"CanIntimidation": true,
|
||||||
|
"Performance": 0,
|
||||||
|
"CanPerformance": false,
|
||||||
|
"Persuasion": 0,
|
||||||
|
"CanPersuasion": false
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 14,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 6,
|
||||||
|
"Modification": -3,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"Acrobatics": 0,
|
||||||
|
"CanAcrobatics": false,
|
||||||
|
"SleightOfHand": 0,
|
||||||
|
"CanSleightOfHand": false,
|
||||||
|
"Stealth": 0,
|
||||||
|
"canStealth": false
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 11,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"arcana": 0,
|
||||||
|
"canArcana": false,
|
||||||
|
"History": 2,
|
||||||
|
"CanHistory": true,
|
||||||
|
"Investigation": 1,
|
||||||
|
"CanInvestigation": true,
|
||||||
|
"Nature": 0,
|
||||||
|
"CanNature": false,
|
||||||
|
"Religion": 4,
|
||||||
|
"canReligion": true
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 18,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Athletics": 4,
|
||||||
|
"canAthletics": true
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 9,
|
||||||
|
"Modification": -1,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"AnimalHandling": 0,
|
||||||
|
"canAnimalHandling": false,
|
||||||
|
"Insight": 0,
|
||||||
|
"canInsight": false,
|
||||||
|
"medicine": 0,
|
||||||
|
"CanMedicine": false,
|
||||||
|
"Perception": 0,
|
||||||
|
"CanPerception": false,
|
||||||
|
"Survival": 0,
|
||||||
|
"CanSurvival": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 5,
|
||||||
|
"Initiative": 4,
|
||||||
|
"HealthPoints": 13,
|
||||||
|
"CurrentHealthPoints": 13,
|
||||||
|
"ArmorClass": 2,
|
||||||
|
"Proficiency": 1
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Kamul",
|
||||||
|
"ClassId": 2,
|
||||||
|
"RaceId": 1,
|
||||||
|
"AlignmentId": "LawfulGood",
|
||||||
|
"BackgroundId": 1,
|
||||||
|
"Sex": "Female",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 18,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 1,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SpellId": 85
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SpellId": 94
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 10,
|
||||||
|
"Modification": 0,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSavingThrows": false,
|
||||||
|
"Deception": 2,
|
||||||
|
"CanDeception": true,
|
||||||
|
"Intimidation": 0,
|
||||||
|
"CanIntimidation": false,
|
||||||
|
"Performance": 1,
|
||||||
|
"CanPerformance": true,
|
||||||
|
"Persuasion": 2,
|
||||||
|
"CanPersuasion": true
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 8,
|
||||||
|
"Modification": -2,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 12,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Acrobatics": 2,
|
||||||
|
"CanAcrobatics": true,
|
||||||
|
"SleightOfHand": 1,
|
||||||
|
"CanSleightOfHand": true,
|
||||||
|
"Stealth": 0,
|
||||||
|
"canStealth": false
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 15,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"arcana": 4,
|
||||||
|
"canArcana": true,
|
||||||
|
"History": 1,
|
||||||
|
"CanHistory": true,
|
||||||
|
"Investigation": 1,
|
||||||
|
"CanInvestigation": true,
|
||||||
|
"Nature": 6,
|
||||||
|
"CanNature": true,
|
||||||
|
"Religion": 0,
|
||||||
|
"canReligion": false
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 13,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Athletics": 2,
|
||||||
|
"canAthletics": true
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 13,
|
||||||
|
"Modification": 2,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"AnimalHandling": 1,
|
||||||
|
"canAnimalHandling": true,
|
||||||
|
"Insight": 4,
|
||||||
|
"canInsight": true,
|
||||||
|
"medicine": 2,
|
||||||
|
"CanMedicine": true,
|
||||||
|
"Perception": 5,
|
||||||
|
"CanPerception": true,
|
||||||
|
"Survival": 2,
|
||||||
|
"CanSurvival": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 9,
|
||||||
|
"Initiative": 6,
|
||||||
|
"HealthPoints": 7,
|
||||||
|
"CurrentHealthPoints": 7,
|
||||||
|
"ArmorClass": 4,
|
||||||
|
"Proficiency": 1
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Mu",
|
||||||
|
"ClassId": 1,
|
||||||
|
"RaceId": 3,
|
||||||
|
"AlignmentId": "LawfulGood",
|
||||||
|
"BackgroundId": 2,
|
||||||
|
"Sex": "Male",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 1,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 17,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 27,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 11,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSavingThrows": true,
|
||||||
|
"Deception": 1,
|
||||||
|
"CanDeception": true,
|
||||||
|
"Intimidation": 0,
|
||||||
|
"CanIntimidation": false,
|
||||||
|
"Performance": 0,
|
||||||
|
"CanPerformance": false,
|
||||||
|
"Persuasion": 0,
|
||||||
|
"CanPersuasion": false
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 13,
|
||||||
|
"Modification": 2,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 17,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 3,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Acrobatics": 3,
|
||||||
|
"CanAcrobatics": true,
|
||||||
|
"SleightOfHand": 4,
|
||||||
|
"CanSleightOfHand": true,
|
||||||
|
"Stealth": 1,
|
||||||
|
"canStealth": true
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 8,
|
||||||
|
"Modification": -2,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"arcana": 0,
|
||||||
|
"canArcana": false,
|
||||||
|
"History": 0,
|
||||||
|
"CanHistory": false,
|
||||||
|
"Investigation": 0,
|
||||||
|
"CanInvestigation": false,
|
||||||
|
"Nature": 0,
|
||||||
|
"CanNature": false,
|
||||||
|
"Religion": 0,
|
||||||
|
"canReligion": false
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 18,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 3,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Athletics": 5,
|
||||||
|
"canAthletics": true
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 8,
|
||||||
|
"Modification": -2,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"AnimalHandling": 0,
|
||||||
|
"canAnimalHandling": false,
|
||||||
|
"Insight": 0,
|
||||||
|
"canInsight": false,
|
||||||
|
"medicine": 0,
|
||||||
|
"CanMedicine": false,
|
||||||
|
"Perception": 0,
|
||||||
|
"CanPerception": false,
|
||||||
|
"Survival": 0,
|
||||||
|
"CanSurvival": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
|
"userId": -1,
|
||||||
|
"statistics": {
|
||||||
|
"ExperiencePoints": 0,
|
||||||
|
"Level": 1,
|
||||||
|
"Speed": 4,
|
||||||
|
"Initiative": 3,
|
||||||
|
"HealthPoints": 12,
|
||||||
|
"CurrentHealthPoints": 12,
|
||||||
|
"ArmorClass": 3,
|
||||||
|
"Proficiency": 1
|
||||||
|
},
|
||||||
|
"biography": {
|
||||||
|
"Name": "Aarak",
|
||||||
|
"ClassId": 2,
|
||||||
|
"RaceId": 3,
|
||||||
|
"AlignmentId": "LawfulGood",
|
||||||
|
"BackgroundId": 2,
|
||||||
|
"Sex": "Female",
|
||||||
|
"Languages": "Common",
|
||||||
|
"background": {
|
||||||
|
"Origin": "No origin",
|
||||||
|
"History": "Nothing much"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"characterWeapons": [
|
||||||
|
{
|
||||||
|
"WeaponId": 4,
|
||||||
|
"InUse": true,
|
||||||
|
"HoldInRightHand": true,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"WeaponId": 7,
|
||||||
|
"InUse": false,
|
||||||
|
"HoldInRightHand": false,
|
||||||
|
"HoldInLeftHand": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"characterSpells": [
|
||||||
|
{
|
||||||
|
"SpellId": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"SpellId": 55
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"charisma": {
|
||||||
|
"Value": 12,
|
||||||
|
"Modification": 2,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSavingThrows": true,
|
||||||
|
"Deception": 0,
|
||||||
|
"CanDeception": false,
|
||||||
|
"Intimidation": 0,
|
||||||
|
"CanIntimidation": false,
|
||||||
|
"Performance": 0,
|
||||||
|
"CanPerformance": false,
|
||||||
|
"Persuasion": 3,
|
||||||
|
"CanPersuasion": true
|
||||||
|
},
|
||||||
|
"constitution": {
|
||||||
|
"Value": 11,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true
|
||||||
|
},
|
||||||
|
"dexterity": {
|
||||||
|
"Value": 15,
|
||||||
|
"Modification": 3,
|
||||||
|
"SavingThrows": 2,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Acrobatics": 2,
|
||||||
|
"CanAcrobatics": true,
|
||||||
|
"SleightOfHand": 1,
|
||||||
|
"CanSleightOfHand": true,
|
||||||
|
"Stealth": 4,
|
||||||
|
"canStealth": true
|
||||||
|
},
|
||||||
|
"intelligence": {
|
||||||
|
"Value": 12,
|
||||||
|
"Modification": 1,
|
||||||
|
"SavingThrows": 1,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"arcana": 0,
|
||||||
|
"canArcana": false,
|
||||||
|
"History": 0,
|
||||||
|
"CanHistory": false,
|
||||||
|
"Investigation": 0,
|
||||||
|
"CanInvestigation": false,
|
||||||
|
"Nature": 2,
|
||||||
|
"CanNature": true,
|
||||||
|
"Religion": 0,
|
||||||
|
"canReligion": false
|
||||||
|
},
|
||||||
|
"strength": {
|
||||||
|
"Value": 15,
|
||||||
|
"Modification": 4,
|
||||||
|
"SavingThrows": 3,
|
||||||
|
"CanSaveThrows": true,
|
||||||
|
"Athletics": 2,
|
||||||
|
"canAthletics": true
|
||||||
|
},
|
||||||
|
"wisdom": {
|
||||||
|
"Value": 6,
|
||||||
|
"Modification": -4,
|
||||||
|
"SavingThrows": 0,
|
||||||
|
"CanSaveThrows": false,
|
||||||
|
"AnimalHandling": 0,
|
||||||
|
"canAnimalHandling": false,
|
||||||
|
"Insight": 0,
|
||||||
|
"canInsight": false,
|
||||||
|
"medicine": 0,
|
||||||
|
"CanMedicine": false,
|
||||||
|
"Perception": 0,
|
||||||
|
"CanPerception": false,
|
||||||
|
"Survival": 0,
|
||||||
|
"CanSurvival": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class GameActionRepository : Repository<GameAction>, IRepository<GameAction>
|
||||||
|
{
|
||||||
|
public GameActionRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class LegendaryActionRepository : Repository<LegendaryAction>, IRepository<LegendaryAction>
|
||||||
|
{
|
||||||
|
public LegendaryActionRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class MonsterActionsRepository : Repository<MonsterAction>, IRepository<MonsterAction>
|
||||||
|
{
|
||||||
|
public MonsterActionsRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class MonsterLegendaryActionsRepository : Repository<MonsterLegendaryAction>, IRepository<MonsterLegendaryAction>
|
||||||
|
{
|
||||||
|
public MonsterLegendaryActionsRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class MonsterRepository : Repository<Monster>, IRepository<Monster>
|
||||||
|
{
|
||||||
|
public MonsterRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class MonsterSpecialAbilitiesRepository : Repository<MonsterSpecialAbility>, IRepository<MonsterSpecialAbility>
|
||||||
|
{
|
||||||
|
public MonsterSpecialAbilitiesRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
|
using SessionCompanion.Database.Tables;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Repositories
|
||||||
|
{
|
||||||
|
public class SpecialAbilityRepository : Repository<SpecialAbility>, IRepository<SpecialAbility>
|
||||||
|
{
|
||||||
|
public SpecialAbilityRepository(ApplicationDbContext _dbContext) : base(_dbContext)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
@ -21,8 +21,4 @@
|
|||||||
<ProjectReference Include="..\SessionCompanion.ViewModels\SessionCompanion.ViewModels.csproj" />
|
<ProjectReference Include="..\SessionCompanion.ViewModels\SessionCompanion.ViewModels.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="JsonData\" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class GameAction : BaseEntity
|
||||||
|
{
|
||||||
|
// <summary>
|
||||||
|
/// Nazwa akcji
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Opis akcji
|
||||||
|
/// </summary>
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
public int AttackBonus { get; set; }
|
||||||
|
|
||||||
|
public int? DamageDice { get; set; }
|
||||||
|
public int? DamageDiceAmount { get; set; }
|
||||||
|
|
||||||
|
public int? DamageBonus { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<MonsterAction> MonsterActions { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class LegendaryAction : BaseEntity
|
||||||
|
{
|
||||||
|
// <summary>
|
||||||
|
/// Nazwa legendarnej akcji
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Opis akcji
|
||||||
|
/// </summary>
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<MonsterLegendaryAction> MonsterLegendaryActions { get; set; }
|
||||||
|
}
|
||||||
|
}
|
162
SessionCompanion/SessionCompanion.Database/Tables/Monster.cs
Normal file
162
SessionCompanion/SessionCompanion.Database/Tables/Monster.cs
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class Monster : BaseEntity
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Nazwa potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Rozmiar potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Size { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Rodzaj potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Type { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Podtyp potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Subtype { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Charakter potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Alignment { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Poziom pancerza potwora
|
||||||
|
/// </summary>
|
||||||
|
public int ArmorClass { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Iloś punktów zycia potwora
|
||||||
|
/// </summary>
|
||||||
|
public int HitPoints { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Ilość kości określajacych punkty życia potwora
|
||||||
|
/// </summary>
|
||||||
|
public int HitDiceAmount { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Kość którą rzucamy aby określić punkty życia potwora
|
||||||
|
/// </summary>
|
||||||
|
public int HitDiceType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Szybkość chodzenia potwora
|
||||||
|
/// </summary>
|
||||||
|
public string WalkSpeed { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Szybkość pływania potwora
|
||||||
|
/// </summary>
|
||||||
|
public string SwimSpeed { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Szybkość latania potwora
|
||||||
|
/// </summary>
|
||||||
|
public string FlySpeed { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty zręczności potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Dexterity { get; set; }
|
||||||
|
public int? DexteritySave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty siły potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Strength { get; set; }
|
||||||
|
public int? StrengthSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty kondycji potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Constitution { get; set; }
|
||||||
|
public int? ConstitutionSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty inteligencji potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Intelligence { get; set; }
|
||||||
|
public int? IntelligenceSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty mądrości potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Wisdom { get; set; }
|
||||||
|
public int? WisdomSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty charyzmy potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Charisma { get; set; }
|
||||||
|
public int? CharismaSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Poziom trudności potwora
|
||||||
|
/// </summary>
|
||||||
|
public int ChallengeRating { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty doświadczenia za zabicie potwora
|
||||||
|
/// </summary>
|
||||||
|
public int ExperiencePoints { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą MonsterActions
|
||||||
|
/// </summary>
|
||||||
|
public virtual ICollection<MonsterAction> MonsterAction { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na jakie stany odporny jest potwor
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterConditionImmunities { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na jakie obrazenia odporny jest potwor
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterDamageImmunities { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na jakie obrazenia potwor ma zmniejszoną słabosc
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterDamageResistances { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na co potwor jest wrazliwy
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterDamageVulnerabilities { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Jezyki jakimi wlada potwor
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterLanguages { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą MonsterLegendaryActions
|
||||||
|
/// </summary>
|
||||||
|
public virtual ICollection<MonsterLegendaryAction> MonsterLegendaryAction { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą MonsterSenses
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterSenses { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą MonsterSpecialAbilities
|
||||||
|
/// </summary>
|
||||||
|
public virtual ICollection<MonsterSpecialAbility> MonsterSpecialAbility { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class MonsterAction : BaseEntity
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Id potwora
|
||||||
|
/// </summary>
|
||||||
|
public int MonsterId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą Monsters
|
||||||
|
/// </summary>
|
||||||
|
public virtual Monster Monster { get; set; }
|
||||||
|
|
||||||
|
public int GameActionId { get; set; }
|
||||||
|
public virtual GameAction GameAction { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class MonsterLegendaryAction : BaseEntity
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Id potwora
|
||||||
|
/// </summary>
|
||||||
|
public int MonsterId { get; set; }
|
||||||
|
public int LegendaryActionId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą Monster
|
||||||
|
/// </summary>
|
||||||
|
public virtual Monster Monster { get; set; }
|
||||||
|
|
||||||
|
public virtual LegendaryAction LegendaryActions { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class MonsterSpecialAbility : BaseEntity
|
||||||
|
{
|
||||||
|
public int SpecialAbilityId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public int? DamageDice { get; set; }
|
||||||
|
|
||||||
|
public int? DamageDiceAmount { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Id potwora
|
||||||
|
/// </summary>
|
||||||
|
public int? MonsterId { get; set; }
|
||||||
|
|
||||||
|
public virtual SpecialAbility SpecialAbility { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą Monster
|
||||||
|
/// </summary>
|
||||||
|
public virtual Monster Monster { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Database.Tables
|
||||||
|
{
|
||||||
|
public class SpecialAbility : BaseEntity
|
||||||
|
{
|
||||||
|
// <summary>
|
||||||
|
/// Nazwa umiejętności
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Opis umiejętności
|
||||||
|
/// </summary>
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
public int? DamageDice { get; set; }
|
||||||
|
|
||||||
|
public int? DamageDiceAmount { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<MonsterSpecialAbility> MonsterSpecialAbilities { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -12,5 +12,6 @@ namespace SessionCompanion.Services.Interfaces
|
|||||||
|
|
||||||
public interface ICharacterArmorService : IServiceBase<CharacterArmorViewModel, CharacterArmor>
|
public interface ICharacterArmorService : IServiceBase<CharacterArmorViewModel, CharacterArmor>
|
||||||
{
|
{
|
||||||
|
Task<List<CharacterArmorViewModelDetails>> GetCharacterArmorsTaskList(int characterId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,5 +12,6 @@ namespace SessionCompanion.Services.Interfaces
|
|||||||
|
|
||||||
public interface ICharacterOtherEquipmentService : IServiceBase<CharacterOtherEquipmentViewModel, CharacterOtherEquipment>
|
public interface ICharacterOtherEquipmentService : IServiceBase<CharacterOtherEquipmentViewModel, CharacterOtherEquipment>
|
||||||
{
|
{
|
||||||
|
Task<List<CharacterOtherEquipmentWithDetailsViewModel>> GetCharacterOtherEquipmentList(int characterId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
using SessionCompanion.Database.Tables;
|
using SessionCompanion.Database.Tables;
|
||||||
using SessionCompanion.Services.Base;
|
using SessionCompanion.Services.Base;
|
||||||
using SessionCompanion.ViewModels.CharacterViewModels;
|
using SessionCompanion.ViewModels.CharacterViewModels;
|
||||||
|
using SessionCompanion.ViewModels.ClassViewModels;
|
||||||
|
using SessionCompanion.ViewModels.RaceViewModels;
|
||||||
using SessionCompanion.ViewModels.UniversalModels;
|
using SessionCompanion.ViewModels.UniversalModels;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@ -15,5 +17,6 @@ namespace SessionCompanion.Services.Interfaces
|
|||||||
Task<IEnumerable<CharacterForLoginViewModel>> GetUserLoginCharacters(int userId);
|
Task<IEnumerable<CharacterForLoginViewModel>> GetUserLoginCharacters(int userId);
|
||||||
Task<List<UniversalStatisticViewModel>> GetCharacterStatistics(int characterId);
|
Task<List<UniversalStatisticViewModel>> GetCharacterStatistics(int characterId);
|
||||||
Task<CharacterBasicInfoViewModel> GetBasicCharacterbasicInfo(int characterId);
|
Task<CharacterBasicInfoViewModel> GetBasicCharacterbasicInfo(int characterId);
|
||||||
|
Task<IEnumerable<CharacterFromTemplatesSimpleViewModel>> GetCharactersFromTemplate(List<RaceViewModel> raceViewModels, List<ClassViewModel> classViewModels);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,11 @@ using SessionCompanion.ViewModels.CharacterWeaponViewModels;
|
|||||||
|
|
||||||
namespace SessionCompanion.Services.Interfaces
|
namespace SessionCompanion.Services.Interfaces
|
||||||
{
|
{
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
public interface ICharacterWeaponService : IServiceBase<CharacterWeaponViewModel, CharacterWeapon>
|
public interface ICharacterWeaponService : IServiceBase<CharacterWeaponViewModel, CharacterWeapon>
|
||||||
{
|
{
|
||||||
|
Task<List<CharacterWeaponWithWeaponDetailsViewModel>> GetCharacterWeaponsList(int characterId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,10 +16,24 @@ namespace SessionCompanion.Services.Services
|
|||||||
using SessionCompanion.Services.Base;
|
using SessionCompanion.Services.Base;
|
||||||
using SessionCompanion.Services.Interfaces;
|
using SessionCompanion.Services.Interfaces;
|
||||||
using SessionCompanion.ViewModels.CharacterArmorViewModels;
|
using SessionCompanion.ViewModels.CharacterArmorViewModels;
|
||||||
|
using SessionCompanion.ViewModels.CharacterOtherEquipmentViewModels;
|
||||||
|
|
||||||
public class CharacterArmorService : ServiceBase<CharacterArmorViewModel, CharacterArmor>, ICharacterArmorService
|
public class CharacterArmorService : ServiceBase<CharacterArmorViewModel, CharacterArmor>, ICharacterArmorService
|
||||||
{
|
{
|
||||||
public CharacterArmorService(IMapper mapper, IRepository<CharacterArmor> repository) : base(mapper, repository)
|
public CharacterArmorService(IMapper mapper, IRepository<CharacterArmor> repository) : base(mapper, repository)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Metoda pobiera listę pancerzy konkretnej postaci
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="characterId"> Id postaci </param>
|
||||||
|
/// <returns> Lista pancerzy posiadanych przez postać </returns>
|
||||||
|
public async Task<List<CharacterArmorViewModelDetails>> GetCharacterArmorsTaskList(int characterId)
|
||||||
|
{
|
||||||
|
var characterWeapons = await Repository.Get().Where(a => a.CharacterId.Equals(characterId)).Include(a => a.Armor).ToListAsync();
|
||||||
|
|
||||||
|
var result = Mapper.Map<List<CharacterArmorViewModelDetails>>(characterWeapons);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
namespace SessionCompanion.Services.Services
|
namespace SessionCompanion.Services.Services
|
||||||
{
|
{
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
using SessionCompanion.Database.Repositories.Base;
|
using SessionCompanion.Database.Repositories.Base;
|
||||||
using SessionCompanion.Database.Tables;
|
using SessionCompanion.Database.Tables;
|
||||||
using SessionCompanion.Services.Base;
|
using SessionCompanion.Services.Base;
|
||||||
@ -13,5 +17,17 @@
|
|||||||
public CharacterOtherEquipmentService(IMapper mapper, IRepository<CharacterOtherEquipment> repository) : base(mapper, repository)
|
public CharacterOtherEquipmentService(IMapper mapper, IRepository<CharacterOtherEquipment> repository) : base(mapper, repository)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Metoda pobiera listę pozostałego ekwipunku konkretnej postaci
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="characterId"> Id postaci </param>
|
||||||
|
/// <returns> Lista pozostałego ekwpinuku posiadanego przez postać </returns>
|
||||||
|
public async Task<List<CharacterOtherEquipmentWithDetailsViewModel>> GetCharacterOtherEquipmentList(int characterId)
|
||||||
|
{
|
||||||
|
var characterWeapons = await Repository.Get().Where(a => a.CharacterId.Equals(characterId)).Include(a => a.OtherEquipment).ToListAsync();
|
||||||
|
|
||||||
|
var result = Mapper.Map<List<CharacterOtherEquipmentWithDetailsViewModel>>(characterWeapons);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,12 +16,14 @@ using System.IO;
|
|||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using SessionCompanion.ViewModels.UniversalModels;
|
using SessionCompanion.ViewModels.UniversalModels;
|
||||||
using SessionCompanion.Services.Helpers;
|
using SessionCompanion.Services.Helpers;
|
||||||
|
using SessionCompanion.ViewModels.RaceViewModels;
|
||||||
|
using SessionCompanion.ViewModels.ClassViewModels;
|
||||||
|
|
||||||
namespace SessionCompanion.Services.Services
|
namespace SessionCompanion.Services.Services
|
||||||
{
|
{
|
||||||
public class CharacterService : ServiceBase<CharacterViewModel, Character>, ICharacterService
|
public class CharacterService : ServiceBase<CharacterViewModel, Character>, ICharacterService
|
||||||
{
|
{
|
||||||
public CharacterService(IMapper mapper, IRepository<Character> repository) : base(mapper, repository)
|
public CharacterService(IMapper mapper, IRepository<Character> repository, IRepository<Class> classRepository) : base(mapper, repository)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -111,5 +113,31 @@ namespace SessionCompanion.Services.Services
|
|||||||
var result = Mapper.Map<CharacterBasicInfoViewModel>(character);
|
var result = Mapper.Map<CharacterBasicInfoViewModel>(character);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Function returns basic stats from Characters in templates
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<IEnumerable<CharacterFromTemplatesSimpleViewModel>> GetCharactersFromTemplate(List<RaceViewModel> raceViewModels, List<ClassViewModel> classViewModels)
|
||||||
|
{
|
||||||
|
const string file = "../SessionCompanion.Database/JsonData/characters_templates.json";
|
||||||
|
List<CharacterFromTemplatesSimpleViewModel> basicStats = new List<CharacterFromTemplatesSimpleViewModel>();
|
||||||
|
using (StreamReader reader = new StreamReader(file))
|
||||||
|
{
|
||||||
|
var json = await reader.ReadToEndAsync();
|
||||||
|
foreach (var item in JArray.Parse(json))
|
||||||
|
{
|
||||||
|
CharacterFromTemplatesSimpleViewModel characterFromTemplatesSimpleViewModel = new CharacterFromTemplatesSimpleViewModel()
|
||||||
|
{
|
||||||
|
Id = (int)item["id"],
|
||||||
|
Class = classViewModels.Where(c => c.Id.Equals((int)item["biography"]["ClassId"])).Select(c => c.Name).Single(),
|
||||||
|
Race = raceViewModels.Where(r => r.Id.Equals((int)item["biography"]["RaceId"])).Select(r => r.Name).Single(),
|
||||||
|
Name = (string)item["biography"]["Name"]
|
||||||
|
};
|
||||||
|
basicStats.Add(characterFromTemplatesSimpleViewModel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return basicStats;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,9 +7,28 @@ using SessionCompanion.ViewModels.CharacterWeaponViewModels;
|
|||||||
|
|
||||||
namespace SessionCompanion.Services.Services
|
namespace SessionCompanion.Services.Services
|
||||||
{
|
{
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
public class CharacterWeaponService : ServiceBase<CharacterWeaponViewModel, CharacterWeapon>, ICharacterWeaponService
|
public class CharacterWeaponService : ServiceBase<CharacterWeaponViewModel, CharacterWeapon>, ICharacterWeaponService
|
||||||
{
|
{
|
||||||
public CharacterWeaponService(IMapper mapper, IRepository<CharacterWeapon> repository) : base(mapper, repository)
|
public CharacterWeaponService(IMapper mapper, IRepository<CharacterWeapon> repository) : base(mapper, repository)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Metoda pobiera listę broni konkretnej postaci
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="characterId"> Id postaci </param>
|
||||||
|
/// <returns> Lista broni posiadanych przez postać </returns>
|
||||||
|
public async Task<List<CharacterWeaponWithWeaponDetailsViewModel>> GetCharacterWeaponsList(int characterId)
|
||||||
|
{
|
||||||
|
var characterWeapons = await Repository.Get().Where(w => w.CharacterId.Equals(characterId)).Include(w => w.Weapon).ToListAsync();
|
||||||
|
|
||||||
|
var result = Mapper.Map<List<CharacterWeaponWithWeaponDetailsViewModel>>(characterWeapons);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.ViewModels.CharacterViewModels
|
||||||
|
{
|
||||||
|
public class CharacterFromTemplatesSimpleViewModel
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Id postaci
|
||||||
|
/// </summary>
|
||||||
|
public int Id { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Imie postaci
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Nazwa rasy postaci
|
||||||
|
/// </summary>
|
||||||
|
public string Race { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Nazwa Klasy postaci
|
||||||
|
/// </summary>
|
||||||
|
public string Class { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.ViewModels.GameActionViewModels
|
||||||
|
{
|
||||||
|
public class GameActionViewModel
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Opis akcji
|
||||||
|
/// </summary>
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
public int AttackBonus { get; set; }
|
||||||
|
|
||||||
|
public int? DamageDice { get; set; }
|
||||||
|
public int? DamageDiceAmount { get; set; }
|
||||||
|
|
||||||
|
public int? DamageBonus { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.ViewModels.LegendaryActionViewModels
|
||||||
|
{
|
||||||
|
public class LegendaryActionViewModel
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
// <summary>
|
||||||
|
/// Nazwa legendarnej akcji
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Opis akcji
|
||||||
|
/// </summary>
|
||||||
|
public string Description { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.ViewModels.MonsterActionsViewModels
|
||||||
|
{
|
||||||
|
public class MonsterActionsViewModel
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Id potwora
|
||||||
|
/// </summary>
|
||||||
|
public int MonsterId { get; set; }
|
||||||
|
|
||||||
|
public int GameActionId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.ViewModels.MonsterLegendaryActionsViewModels
|
||||||
|
{
|
||||||
|
public class MonsterLegendaryActionsViewModel
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public int MonsterId { get; set; }
|
||||||
|
public int LegendaryActionId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.ViewModels.MonsterSpecialAbilitiesViewModels
|
||||||
|
{
|
||||||
|
public class MonsterSpecialAbilitiesViewModel
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public int MonsterId { get; set; }
|
||||||
|
public int LegendaryActionId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,156 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.ViewModels.MonsterViewModels
|
||||||
|
{
|
||||||
|
using SessionCompanion.ViewModels.GameActionViewModels;
|
||||||
|
using SessionCompanion.ViewModels.LegendaryActionViewModels;
|
||||||
|
using SessionCompanion.ViewModels.SpecialAbilityViewModels;
|
||||||
|
|
||||||
|
public class MonsterAllInformationViewModel
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Nazwa potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Rozmiar potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Size { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Rodzaj potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Type { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Podtyp potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Subtype { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Charakter potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Alignment { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Poziom pancerza potwora
|
||||||
|
/// </summary>
|
||||||
|
public int ArmorClass { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Iloś punktów zycia potwora
|
||||||
|
/// </summary>
|
||||||
|
public int HitPoints { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Ilość kości określajacych punkty życia potwora
|
||||||
|
/// </summary>
|
||||||
|
public int HitDiceAmount { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Kość którą rzucamy aby określić punkty życia potwora
|
||||||
|
/// </summary>
|
||||||
|
public int HitDiceType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Szybkość chodzenia potwora
|
||||||
|
/// </summary>
|
||||||
|
public string WalkSpeed { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Szybkość pływania potwora
|
||||||
|
/// </summary>
|
||||||
|
public string SwimSpeed { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Szybkość latania potwora
|
||||||
|
/// </summary>
|
||||||
|
public string FlySpeed { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty zręczności potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Dexterity { get; set; }
|
||||||
|
public int? DexteritySave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty siły potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Strength { get; set; }
|
||||||
|
public int? StrengthSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty kondycji potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Constitution { get; set; }
|
||||||
|
public int? ConstitutionSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty inteligencji potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Intelligence { get; set; }
|
||||||
|
public int? IntelligenceSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty mądrości potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Wisdom { get; set; }
|
||||||
|
public int? WisdomSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty charyzmy potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Charisma { get; set; }
|
||||||
|
public int? CharismaSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Poziom trudności potwora
|
||||||
|
/// </summary>
|
||||||
|
public int ChallengeRating { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty doświadczenia za zabicie potwora
|
||||||
|
/// </summary>
|
||||||
|
public int ExperiencePoints { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na jakie stany odporny jest potwor
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterConditionImmunities { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na jakie obrazenia odporny jest potwor
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterDamageImmunities { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na jakie obrazenia potwor ma zmniejszoną słabosc
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterDamageResistances { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na co potwor jest wrazliwy
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterDamageVulnerabilities { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Jezyki jakimi wlada potwor
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterLanguages { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą MonsterSenses
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterSenses { get; set; }
|
||||||
|
|
||||||
|
public ICollection<GameActionViewModel> MonsterGameActions { get; set; }
|
||||||
|
|
||||||
|
public ICollection<LegendaryActionViewModel> MonsteLegendaryActions { get; set; }
|
||||||
|
|
||||||
|
public ICollection<SpecialAbilityViewModel> MonsterSpecialAbilities { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,146 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.ViewModels.MonsterViewModels
|
||||||
|
{
|
||||||
|
public class MonsterViewModel
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Nazwa potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Rozmiar potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Size { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Rodzaj potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Type { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Podtyp potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Subtype { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Charakter potwora
|
||||||
|
/// </summary>
|
||||||
|
public string Alignment { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Poziom pancerza potwora
|
||||||
|
/// </summary>
|
||||||
|
public int ArmorClass { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Iloś punktów zycia potwora
|
||||||
|
/// </summary>
|
||||||
|
public int HitPoints { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Ilość kości określajacych punkty życia potwora
|
||||||
|
/// </summary>
|
||||||
|
public int HitDiceAmount { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Kość którą rzucamy aby określić punkty życia potwora
|
||||||
|
/// </summary>
|
||||||
|
public int HitDiceType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Szybkość chodzenia potwora
|
||||||
|
/// </summary>
|
||||||
|
public string WalkSpeed { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Szybkość pływania potwora
|
||||||
|
/// </summary>
|
||||||
|
public string SwimSpeed { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Szybkość latania potwora
|
||||||
|
/// </summary>
|
||||||
|
public string FlySpeed { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty zręczności potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Dexterity { get; set; }
|
||||||
|
public int? DexteritySave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty siły potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Strength { get; set; }
|
||||||
|
public int? StrengthSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty kondycji potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Constitution { get; set; }
|
||||||
|
public int? ConstitutionSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty inteligencji potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Intelligence { get; set; }
|
||||||
|
public int? IntelligenceSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty mądrości potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Wisdom { get; set; }
|
||||||
|
public int? WisdomSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty charyzmy potwora
|
||||||
|
/// </summary>
|
||||||
|
public int Charisma { get; set; }
|
||||||
|
public int? CharismaSave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Poziom trudności potwora
|
||||||
|
/// </summary>
|
||||||
|
public int ChallengeRating { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Punkty doświadczenia za zabicie potwora
|
||||||
|
/// </summary>
|
||||||
|
public int ExperiencePoints { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na jakie stany odporny jest potwor
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterConditionImmunities { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na jakie obrazenia odporny jest potwor
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterDamageImmunities { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na jakie obrazenia potwor ma zmniejszoną słabosc
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterDamageResistances { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Na co potwor jest wrazliwy
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterDamageVulnerabilities { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Jezyki jakimi wlada potwor
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterLanguages { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Połączenie z tabelą MonsterSenses
|
||||||
|
/// </summary>
|
||||||
|
public string MonsterSenses { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SessionCompanion.ViewModels.SpecialAbilityViewModels
|
||||||
|
{
|
||||||
|
public class SpecialAbilityViewModel
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
// <summary>
|
||||||
|
/// Nazwa umiejętności
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Opis umiejętności
|
||||||
|
/// </summary>
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
public int? DamageDice { get; set; }
|
||||||
|
|
||||||
|
public int? DamageDiceAmount { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -26,6 +26,7 @@ import {
|
|||||||
MatTableModule,
|
MatTableModule,
|
||||||
MatSortModule,
|
MatSortModule,
|
||||||
MatDialogModule,
|
MatDialogModule,
|
||||||
|
MatTooltipModule,
|
||||||
} from '@angular/material';
|
} from '@angular/material';
|
||||||
import { UserService } from '../services/user.service';
|
import { UserService } from '../services/user.service';
|
||||||
import { StoreModule } from '@ngrx/store';
|
import { StoreModule } from '@ngrx/store';
|
||||||
@ -39,6 +40,10 @@ import { GameMasterArmorsTableComponent } from './components/game-master-armors-
|
|||||||
import { GameMasterCharacterActionsDialogComponent } from './components/game-master-character-actions-dialog/game-master-character-actions-dialog.component';
|
import { GameMasterCharacterActionsDialogComponent } from './components/game-master-character-actions-dialog/game-master-character-actions-dialog.component';
|
||||||
import { GameMasterWeaponsTableComponent } from './components/game-master-weapons-table/game-master-weapons-table.component';
|
import { GameMasterWeaponsTableComponent } from './components/game-master-weapons-table/game-master-weapons-table.component';
|
||||||
import { AbilitiesComponent } from './components/abilities/abilities.component';
|
import { AbilitiesComponent } from './components/abilities/abilities.component';
|
||||||
|
import { SpellService } from '../services/spell.service';
|
||||||
|
import { WeaponService } from '../services/weapon.service';
|
||||||
|
import { ArmorService } from '../services/armor.service';
|
||||||
|
import { OtherEquipmentService } from '../services/other-equipment.service';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
@ -81,8 +86,16 @@ import { AbilitiesComponent } from './components/abilities/abilities.component';
|
|||||||
}),
|
}),
|
||||||
MatTableModule,
|
MatTableModule,
|
||||||
MatSortModule,
|
MatSortModule,
|
||||||
|
MatTooltipModule,
|
||||||
|
],
|
||||||
|
providers: [
|
||||||
|
UserService,
|
||||||
|
CharacterService,
|
||||||
|
SpellService,
|
||||||
|
WeaponService,
|
||||||
|
ArmorService,
|
||||||
|
OtherEquipmentService,
|
||||||
],
|
],
|
||||||
providers: [UserService, CharacterService],
|
|
||||||
bootstrap: [AppComponent],
|
bootstrap: [AppComponent],
|
||||||
entryComponents: [
|
entryComponents: [
|
||||||
GameMasterSpellsTableComponent,
|
GameMasterSpellsTableComponent,
|
||||||
|
@ -1,38 +1,48 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import {CharacterStatsViewModel} from "../../../types/viewmodels/character-viewmodels/CharacterStatsViewModel";
|
import { CharacterStatsViewModel } from '../../../types/viewmodels/character-viewmodels/CharacterStatsViewModel';
|
||||||
import {Store} from "@ngrx/store";
|
import { Store } from '@ngrx/store';
|
||||||
import {AppState} from "../../store/models/app-state.model";
|
import { AppState } from '../../store/models/app-state.model';
|
||||||
import {CharacterService} from "../../../services/character.service";
|
import { CharacterService } from '../../../services/character.service';
|
||||||
import {first} from "rxjs/operators";
|
import { first } from 'rxjs/operators';
|
||||||
import {ErrorResponse} from "../../../types/ErrorResponse";
|
import { ErrorResponse } from '../../../types/ErrorResponse';
|
||||||
import {HttpErrorResponse} from "@angular/common/http";
|
import { HttpErrorResponse } from '@angular/common/http';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-abilities',
|
selector: 'app-abilities',
|
||||||
templateUrl: './abilities.component.html',
|
templateUrl: './abilities.component.html',
|
||||||
styleUrls: ['./abilities.component.css']
|
styleUrls: ['./abilities.component.css'],
|
||||||
})
|
})
|
||||||
export class AbilitiesComponent implements OnInit {
|
export class AbilitiesComponent implements OnInit {
|
||||||
characterStats: CharacterStatsViewModel[];
|
characterStats: CharacterStatsViewModel[];
|
||||||
|
|
||||||
constructor(private store: Store<AppState>, private characterService: CharacterService) {}
|
constructor(
|
||||||
|
private store: Store<AppState>,
|
||||||
|
private characterService: CharacterService
|
||||||
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.getCharacterStats();
|
this.getCharacterStats();
|
||||||
}
|
}
|
||||||
|
|
||||||
getCharacterStats() {
|
getCharacterStats() {
|
||||||
this.store.select( s => s.playerStore.characterId).pipe(first()).subscribe((characterId) => {
|
this.store
|
||||||
this.characterService.getCharacterStats(characterId).pipe(first()).subscribe((characterStats) => {
|
.select((s) => s.playerStore.characterId)
|
||||||
console.log(characterStats)
|
.pipe(first())
|
||||||
|
.subscribe((characterId) => {
|
||||||
|
this.characterService
|
||||||
|
.getCharacterStats(characterId)
|
||||||
|
.pipe(first())
|
||||||
|
.subscribe(
|
||||||
|
(characterStats) => {
|
||||||
this.characterStats = characterStats;
|
this.characterStats = characterStats;
|
||||||
}, (error: ErrorResponse | HttpErrorResponse) => {
|
},
|
||||||
|
(error: ErrorResponse | HttpErrorResponse) => {
|
||||||
if (error instanceof HttpErrorResponse) {
|
if (error instanceof HttpErrorResponse) {
|
||||||
error = error.error as ErrorResponse;
|
error = error.error as ErrorResponse;
|
||||||
}
|
}
|
||||||
console.error(error.message);
|
console.error(error.message);
|
||||||
});
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import { Component, Input, OnInit } from '@angular/core';
|
import { Component, Input, OnInit } from '@angular/core';
|
||||||
import { AbilityViewModel } from '../../../types/viewmodels/ability-viewmodels/AbilityViewModel';
|
import {CharacterStatsViewModel} from '../../../types/viewmodels/character-viewmodels/CharacterStatsViewModel';
|
||||||
import {CharacterStatsViewModel} from "../../../types/viewmodels/character-viewmodels/CharacterStatsViewModel";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-ability-card',
|
selector: 'app-ability-card',
|
||||||
@ -15,12 +14,14 @@ export class AbilityCardComponent implements OnInit {
|
|||||||
constructor() {}
|
constructor() {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
if (this.ability.skills != null) {
|
||||||
this.ability.skills.sort((a, b) => (a.name > b.name ? 1 : -1));
|
this.ability.skills.sort((a, b) => (a.name > b.name ? 1 : -1));
|
||||||
|
}
|
||||||
this.changeColors();
|
this.changeColors();
|
||||||
}
|
}
|
||||||
|
|
||||||
changeColors(){
|
changeColors() {
|
||||||
switch(this.ability.name){
|
switch (this.ability.name) {
|
||||||
case 'Charisma':
|
case 'Charisma':
|
||||||
this.headStyle.bgColor = '#FFEB85';
|
this.headStyle.bgColor = '#FFEB85';
|
||||||
break;
|
break;
|
||||||
@ -28,7 +29,7 @@ export class AbilityCardComponent implements OnInit {
|
|||||||
this.headStyle.bgColor = '#4BBE9C';
|
this.headStyle.bgColor = '#4BBE9C';
|
||||||
break;
|
break;
|
||||||
case 'Constitution':
|
case 'Constitution':
|
||||||
this.headStyle.bgColor = 'red';
|
this.headStyle.bgColor = '#e9cca7';
|
||||||
break;
|
break;
|
||||||
case 'Intelligence':
|
case 'Intelligence':
|
||||||
this.headStyle.bgColor = '#5AA9E6';
|
this.headStyle.bgColor = '#5AA9E6';
|
||||||
|
@ -3,6 +3,10 @@ import { MatTableDataSource } from '@angular/material/table';
|
|||||||
import { ArmorViewModel } from '../../../types/viewmodels/armor-viewmodels/ArmorViewModel';
|
import { ArmorViewModel } from '../../../types/viewmodels/armor-viewmodels/ArmorViewModel';
|
||||||
import { MatPaginator } from '@angular/material/paginator';
|
import { MatPaginator } from '@angular/material/paginator';
|
||||||
import { MatSort } from '@angular/material/sort';
|
import { MatSort } from '@angular/material/sort';
|
||||||
|
import { first } from 'rxjs/operators';
|
||||||
|
import { ErrorResponse } from '../../../types/ErrorResponse';
|
||||||
|
import { HttpErrorResponse } from '@angular/common/http';
|
||||||
|
import { ArmorService } from '../../../services/armor.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-game-master-armors-table',
|
selector: 'app-game-master-armors-table',
|
||||||
@ -22,29 +26,26 @@ export class GameMasterArmorsTableComponent implements OnInit {
|
|||||||
@ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
|
@ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
|
||||||
@ViewChild(MatSort, { static: true }) sort: MatSort;
|
@ViewChild(MatSort, { static: true }) sort: MatSort;
|
||||||
|
|
||||||
constructor() {
|
constructor(private armorService: ArmorService) {
|
||||||
const armors = [
|
armorService
|
||||||
{
|
.GetAllArmors()
|
||||||
id: 1,
|
.pipe(first())
|
||||||
name: 'Test',
|
.subscribe(
|
||||||
category: 'Testowa',
|
(result) => {
|
||||||
minimumStrength: 12,
|
this.dataSource = new MatTableDataSource(result);
|
||||||
weight: 98,
|
|
||||||
cost: 123,
|
|
||||||
armorClassBase: 10,
|
|
||||||
haveDexterityBonus: false,
|
|
||||||
haveStealthDisadvantage: false,
|
|
||||||
currencyType: 1,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
this.dataSource = new MatTableDataSource(armors);
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
this.dataSource.paginator = this.paginator;
|
this.dataSource.paginator = this.paginator;
|
||||||
this.dataSource.sort = this.sort;
|
this.dataSource.sort = this.sort;
|
||||||
|
},
|
||||||
|
(error: ErrorResponse | HttpErrorResponse) => {
|
||||||
|
if (error instanceof HttpErrorResponse) {
|
||||||
|
error = error.error as ErrorResponse;
|
||||||
}
|
}
|
||||||
|
console.log(error.message);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {}
|
||||||
|
|
||||||
applyFilter(event: Event) {
|
applyFilter(event: Event) {
|
||||||
const filterValue = (event.target as HTMLInputElement).value;
|
const filterValue = (event.target as HTMLInputElement).value;
|
||||||
|
@ -41,6 +41,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<mat-list-item (click)="onLogoutClick()">
|
||||||
|
<mat-icon matListIcon>exit_to_app</mat-icon>
|
||||||
|
<span [@animateText]="leftSidenavTextExpanded ? 'show' : 'hide'" class="mat-list-text" style="color: white">Log out</span>
|
||||||
|
</mat-list-item>
|
||||||
|
<mat-divider></mat-divider>
|
||||||
</mat-nav-list>
|
</mat-nav-list>
|
||||||
</mat-sidenav>
|
</mat-sidenav>
|
||||||
<mat-sidenav-content>
|
<mat-sidenav-content>
|
||||||
|
@ -16,6 +16,10 @@ import { GameMasterArmorsTableComponent } from '../game-master-armors-table/game
|
|||||||
import { MatDialog } from '@angular/material';
|
import { MatDialog } from '@angular/material';
|
||||||
import { GameMasterCharacterActionsDialogComponent } from '../game-master-character-actions-dialog/game-master-character-actions-dialog.component';
|
import { GameMasterCharacterActionsDialogComponent } from '../game-master-character-actions-dialog/game-master-character-actions-dialog.component';
|
||||||
import { GameMasterWeaponsTableComponent } from '../game-master-weapons-table/game-master-weapons-table.component';
|
import { GameMasterWeaponsTableComponent } from '../game-master-weapons-table/game-master-weapons-table.component';
|
||||||
|
import { ClearStore } from '../../store/actions/app.actions';
|
||||||
|
import { Store } from '@ngrx/store';
|
||||||
|
import { AppState } from '../../store/models/app-state.model';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-game-master-dashboard',
|
selector: 'app-game-master-dashboard',
|
||||||
@ -61,6 +65,8 @@ export class GameMasterDashboardComponent implements OnInit, OnDestroy {
|
|||||||
loggedCharacters: LoggedCharactersViewModel[];
|
loggedCharacters: LoggedCharactersViewModel[];
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
|
private store: Store<AppState>,
|
||||||
|
private router: Router,
|
||||||
private signalRService: GMSignalRService,
|
private signalRService: GMSignalRService,
|
||||||
private characterService: CharacterService,
|
private characterService: CharacterService,
|
||||||
public dialog: MatDialog
|
public dialog: MatDialog
|
||||||
@ -129,6 +135,11 @@ export class GameMasterDashboardComponent implements OnInit, OnDestroy {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onLogoutClick() {
|
||||||
|
this.store.dispatch(new ClearStore());
|
||||||
|
this.router.navigate(['/']);
|
||||||
|
}
|
||||||
|
|
||||||
private SubscribeToEvents(): void {
|
private SubscribeToEvents(): void {
|
||||||
this.signalRService.message.subscribe((message: string) => {
|
this.signalRService.message.subscribe((message: string) => {
|
||||||
if (
|
if (
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
<ng-container matColumnDef="Range">
|
<ng-container matColumnDef="Range">
|
||||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> Range </th>
|
<th mat-header-cell *matHeaderCellDef mat-sort-header> Range </th>
|
||||||
<td mat-cell *matCellDef="let row"> {{row.range}}% </td>
|
<td mat-cell *matCellDef="let row"> {{row.range}} </td>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<ng-container matColumnDef="Level">
|
<ng-container matColumnDef="Level">
|
||||||
|
@ -2,13 +2,11 @@ import { Component, OnInit, ViewChild } from '@angular/core';
|
|||||||
import { MatPaginator } from '@angular/material/paginator';
|
import { MatPaginator } from '@angular/material/paginator';
|
||||||
import { MatSort } from '@angular/material/sort';
|
import { MatSort } from '@angular/material/sort';
|
||||||
import { MatTableDataSource } from '@angular/material/table';
|
import { MatTableDataSource } from '@angular/material/table';
|
||||||
|
import { SpellViewModel } from '../../../types/viewmodels/spell-viewmodels/SpellViewModel';
|
||||||
export interface SpellData {
|
import { SpellService } from '../../../services/spell.service';
|
||||||
name: string;
|
import { first } from 'rxjs/operators';
|
||||||
range: string;
|
import { ErrorResponse } from '../../../types/ErrorResponse';
|
||||||
level: number;
|
import { HttpErrorResponse } from '@angular/common/http';
|
||||||
school: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-game-master-spells-table',
|
selector: 'app-game-master-spells-table',
|
||||||
@ -17,25 +15,31 @@ export interface SpellData {
|
|||||||
})
|
})
|
||||||
export class GameMasterSpellsTableComponent implements OnInit {
|
export class GameMasterSpellsTableComponent implements OnInit {
|
||||||
displayedColumns: string[] = ['Name', 'Range', 'Level', 'School'];
|
displayedColumns: string[] = ['Name', 'Range', 'Level', 'School'];
|
||||||
dataSource: MatTableDataSource<SpellData>;
|
dataSource: MatTableDataSource<SpellViewModel>;
|
||||||
|
|
||||||
@ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
|
@ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
|
||||||
@ViewChild(MatSort, { static: true }) sort: MatSort;
|
@ViewChild(MatSort, { static: true }) sort: MatSort;
|
||||||
|
|
||||||
constructor() {
|
constructor(private spellService: SpellService) {
|
||||||
const users = Array.from({ length: 100 }, (_, k) => this.createSepll());
|
spellService
|
||||||
|
.GetAllSpells()
|
||||||
this.dataSource = new MatTableDataSource(users);
|
.pipe(first())
|
||||||
}
|
.subscribe(
|
||||||
|
(result) => {
|
||||||
createSepll(): SpellData {
|
this.dataSource = new MatTableDataSource(result);
|
||||||
return { name: 'test', range: 'asd', level: 2, school: 'UAM!!!!' };
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
this.dataSource.paginator = this.paginator;
|
this.dataSource.paginator = this.paginator;
|
||||||
this.dataSource.sort = this.sort;
|
this.dataSource.sort = this.sort;
|
||||||
|
},
|
||||||
|
(error: ErrorResponse | HttpErrorResponse) => {
|
||||||
|
if (error instanceof HttpErrorResponse) {
|
||||||
|
error = error.error as ErrorResponse;
|
||||||
}
|
}
|
||||||
|
console.log(error.message);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {}
|
||||||
|
|
||||||
applyFilter(event: Event) {
|
applyFilter(event: Event) {
|
||||||
const filterValue = (event.target as HTMLInputElement).value;
|
const filterValue = (event.target as HTMLInputElement).value;
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
.description-weapon-column {
|
.text-cut {
|
||||||
|
max-width: 60px; /* feel free to include any other value */
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
width: 100%;
|
|
||||||
background-color: initial;
|
background-color: initial;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,5 +34,4 @@ mat-paginator {
|
|||||||
td,
|
td,
|
||||||
th {
|
th {
|
||||||
color: whitesmoke;
|
color: whitesmoke;
|
||||||
width: 25%;
|
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
|
|
||||||
<div class="mat-elevation-z8">
|
<div class="mat-elevation-z8">
|
||||||
<table mat-table [dataSource]="dataSource" matSort>
|
<table mat-table [dataSource]="dataSource" matSort class="w-100">
|
||||||
|
|
||||||
<ng-container matColumnDef="Name">
|
<ng-container matColumnDef="Name">
|
||||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> Name </th>
|
<th mat-header-cell *matHeaderCellDef mat-sort-header> Name </th>
|
||||||
@ -28,7 +28,9 @@
|
|||||||
|
|
||||||
<ng-container matColumnDef="Description">
|
<ng-container matColumnDef="Description">
|
||||||
<th mat-header-cell *matHeaderCellDef mat-sort-header> Description </th>
|
<th mat-header-cell *matHeaderCellDef mat-sort-header> Description </th>
|
||||||
<td mat-cell *matCellDef="let row" class="description-weapon-column"> {{row.description}} </td>
|
<td mat-cell *matCellDef="let row" class="text-cut" [matTooltip]="row.description">
|
||||||
|
{{row.description}}
|
||||||
|
</td>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||||
|
@ -3,6 +3,10 @@ import { MatTableDataSource } from '@angular/material/table';
|
|||||||
import { MatPaginator } from '@angular/material/paginator';
|
import { MatPaginator } from '@angular/material/paginator';
|
||||||
import { MatSort } from '@angular/material/sort';
|
import { MatSort } from '@angular/material/sort';
|
||||||
import { WeaponViewModel } from '../../../types/viewmodels/weapon-viewmodels/WeaponViewModel';
|
import { WeaponViewModel } from '../../../types/viewmodels/weapon-viewmodels/WeaponViewModel';
|
||||||
|
import { WeaponService } from '../../../services/weapon.service';
|
||||||
|
import { first } from 'rxjs/operators';
|
||||||
|
import { ErrorResponse } from '../../../types/ErrorResponse';
|
||||||
|
import { HttpErrorResponse } from '@angular/common/http';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-game-master-weapons-table',
|
selector: 'app-game-master-weapons-table',
|
||||||
@ -22,30 +26,26 @@ export class GameMasterWeaponsTableComponent implements OnInit {
|
|||||||
@ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
|
@ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
|
||||||
@ViewChild(MatSort, { static: true }) sort: MatSort;
|
@ViewChild(MatSort, { static: true }) sort: MatSort;
|
||||||
|
|
||||||
constructor() {
|
constructor(private weaponService: WeaponService) {
|
||||||
const weapons = [
|
weaponService
|
||||||
{
|
.GetAllWeapons()
|
||||||
id: 1,
|
.pipe(first())
|
||||||
name: 'Test',
|
.subscribe(
|
||||||
cost: 123,
|
(result) => {
|
||||||
weight: 98,
|
this.dataSource = new MatTableDataSource(result);
|
||||||
diceCount: 2,
|
|
||||||
diceValue: 20,
|
|
||||||
twoHandDamageType: 'Toxic',
|
|
||||||
description:
|
|
||||||
'A japanase battleaxe with a spike on the opposite side of the blade.',
|
|
||||||
weaponType: 'Two-Handed Melee Weapons',
|
|
||||||
rangeMeele: 50,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
this.dataSource = new MatTableDataSource(weapons);
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
this.dataSource.paginator = this.paginator;
|
this.dataSource.paginator = this.paginator;
|
||||||
this.dataSource.sort = this.sort;
|
this.dataSource.sort = this.sort;
|
||||||
|
},
|
||||||
|
(error: ErrorResponse | HttpErrorResponse) => {
|
||||||
|
if (error instanceof HttpErrorResponse) {
|
||||||
|
error = error.error as ErrorResponse;
|
||||||
}
|
}
|
||||||
|
console.log(error.message);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {}
|
||||||
|
|
||||||
applyFilter(event: Event) {
|
applyFilter(event: Event) {
|
||||||
const filterValue = (event.target as HTMLInputElement).value;
|
const filterValue = (event.target as HTMLInputElement).value;
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
<a matLine>Shop</a>
|
<a matLine>Shop</a>
|
||||||
</mat-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<mat-list-item [routerLink]="['/']" [routerLinkActive]="['active']">
|
<mat-list-item (click)="onLogoutClick()">
|
||||||
<mat-icon [class.active]="selected" matListIcon>exit_to_app</mat-icon>
|
<mat-icon [class.active]="selected" matListIcon>exit_to_app</mat-icon>
|
||||||
<a matLine>Log out</a>
|
<a matLine>Log out</a>
|
||||||
</mat-list-item>
|
</mat-list-item>
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { PlayerSignalRService } from "../../shared/signalR-service/player-signalR.service";
|
import { PlayerSignalRService } from '../../shared/signalR-service/player-signalR.service';
|
||||||
import { first } from "rxjs/operators";
|
import { first } from 'rxjs/operators';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { AppState } from 'src/app/store/models/app-state.model';
|
import { AppState } from 'src/app/store/models/app-state.model';
|
||||||
import { AbilitiesComponent } from '../abilities/abilities.component';
|
import { AbilitiesComponent } from '../abilities/abilities.component';
|
||||||
|
import {ClearStore, ClearUserId} from '../../store/actions/app.actions';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
import {ClearCharacterId} from "../../store/actions/player.action";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-player-dashboard',
|
selector: 'app-player-dashboard',
|
||||||
@ -15,13 +18,13 @@ export class PlayerDashboardComponent implements OnInit {
|
|||||||
isExpanded = false;
|
isExpanded = false;
|
||||||
selected = false;
|
selected = false;
|
||||||
|
|
||||||
constructor(private signalRService: PlayerSignalRService, private store: Store<AppState>) {}
|
constructor(private signalRService: PlayerSignalRService, private store: Store<AppState>, private router: Router) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.store.select(s => s.playerStore.characterId).pipe(first()).subscribe((id) => {
|
this.store.select(s => s.playerStore.characterId).pipe(first()).subscribe((id) => {
|
||||||
this.signalRService.Login(id);
|
this.signalRService.Login(id);
|
||||||
});
|
|
||||||
this.SwitchMiddleComponent('AbilitiesComponent');
|
this.SwitchMiddleComponent('AbilitiesComponent');
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
toggle() {
|
toggle() {
|
||||||
@ -29,9 +32,15 @@ export class PlayerDashboardComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
SwitchMiddleComponent(componentName: string) {
|
SwitchMiddleComponent(componentName: string) {
|
||||||
switch(componentName){
|
switch (componentName) {
|
||||||
case 'AbilitiesComponent':
|
case 'AbilitiesComponent':
|
||||||
this.middleComponent = AbilitiesComponent;
|
this.middleComponent = AbilitiesComponent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onLogoutClick() {
|
||||||
|
this.store.dispatch(new ClearCharacterId());
|
||||||
|
this.store.dispatch(new ClearStore());
|
||||||
|
this.router.navigate(['/']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,8 @@ import {Action} from '@ngrx/store';
|
|||||||
export enum AppActionTypes {
|
export enum AppActionTypes {
|
||||||
ADD_USER_ID = '[APP] Add user id',
|
ADD_USER_ID = '[APP] Add user id',
|
||||||
ADD_ROLE = '[APP] Add role',
|
ADD_ROLE = '[APP] Add role',
|
||||||
CLEAR_USER_ID = '[APP] Clear user id'
|
CLEAR_USER_ID = '[APP] Clear user id',
|
||||||
|
CLEAR_STORE = '[APP] Clear user id and user role'
|
||||||
}
|
}
|
||||||
|
|
||||||
export class AddUserId implements Action {
|
export class AddUserId implements Action {
|
||||||
@ -27,6 +28,12 @@ export class ClearUserId implements Action {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class ClearStore implements Action {
|
||||||
|
readonly type = AppActionTypes.CLEAR_STORE;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export type AppAction = AddUserId | AddRole | ClearUserId;
|
export type AppAction = AddUserId | AddRole | ClearUserId | ClearStore;
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import {Action} from "@ngrx/store";
|
import {Action} from '@ngrx/store';
|
||||||
|
|
||||||
export enum PlayerActionTypes {
|
export enum PlayerActionTypes {
|
||||||
ADD_CHARACTER_ID= '[PLAYER] Add character id'
|
ADD_CHARACTER_ID= '[PLAYER] Add character id',
|
||||||
|
CLEAR_CHARACTER_ID = '[PLAYER] Clear character id'
|
||||||
}
|
}
|
||||||
|
|
||||||
export class AddCharacterId implements Action {
|
export class AddCharacterId implements Action {
|
||||||
@ -12,4 +13,12 @@ export class AddCharacterId implements Action {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export type PlayerAction = AddCharacterId;
|
export class ClearCharacterId implements Action {
|
||||||
|
readonly type = PlayerActionTypes.CLEAR_CHARACTER_ID;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export type PlayerAction = AddCharacterId | ClearCharacterId;
|
||||||
|
@ -14,6 +14,8 @@ export function AppReducer(state: AppStoreModel = initialState, action: AppActio
|
|||||||
return {...state, role: action.payload.role};
|
return {...state, role: action.payload.role};
|
||||||
case AppActionTypes.CLEAR_USER_ID:
|
case AppActionTypes.CLEAR_USER_ID:
|
||||||
return {...state, userId: null};
|
return {...state, userId: null};
|
||||||
|
case AppActionTypes.CLEAR_STORE:
|
||||||
|
return {userId: null, role: null};
|
||||||
default:
|
default:
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,8 @@ export function PlayerReducer(state: PlayerStoreModel = initialState, action: Pl
|
|||||||
switch (action.type) {
|
switch (action.type) {
|
||||||
case PlayerActionTypes.ADD_CHARACTER_ID:
|
case PlayerActionTypes.ADD_CHARACTER_ID:
|
||||||
return {...state, characterId: action.payload.characterId};
|
return {...state, characterId: action.payload.characterId};
|
||||||
|
case PlayerActionTypes.CLEAR_CHARACTER_ID:
|
||||||
|
return { characterId: null};
|
||||||
default:
|
default:
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
import { Inject, Injectable } from '@angular/core';
|
||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
import { Observable, of, throwError } from 'rxjs';
|
||||||
|
import { WeaponViewModel } from '../types/viewmodels/weapon-viewmodels/WeaponViewModel';
|
||||||
|
import { Either } from '../types/Either';
|
||||||
|
import { ErrorResponse } from '../types/ErrorResponse';
|
||||||
|
import { switchMap } from 'rxjs/operators';
|
||||||
|
import { ArmorViewModel } from '../types/viewmodels/armor-viewmodels/ArmorViewModel';
|
||||||
|
|
||||||
|
Injectable({
|
||||||
|
providedIn: 'root',
|
||||||
|
});
|
||||||
|
export class ArmorService {
|
||||||
|
private baseUrl = 'api/armor/';
|
||||||
|
constructor(private http: HttpClient, @Inject('BASE_URL') baseUrl: string) {
|
||||||
|
this.baseUrl = baseUrl + this.baseUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetAllArmors(): Observable<ArmorViewModel[]> {
|
||||||
|
return this.http
|
||||||
|
.get<Either<ArmorViewModel[], ErrorResponse>>(
|
||||||
|
this.baseUrl + 'getAllArmor'
|
||||||
|
)
|
||||||
|
.pipe(
|
||||||
|
switchMap((response) => {
|
||||||
|
if (response.isLeft) {
|
||||||
|
return of(response.left);
|
||||||
|
} else {
|
||||||
|
return throwError(response.right);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
import { Inject, Injectable } from '@angular/core';
|
||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
|
||||||
|
Injectable({
|
||||||
|
providedIn: 'root',
|
||||||
|
});
|
||||||
|
export class OtherEquipmentService {
|
||||||
|
private baseUrl = 'api/otherEquipment/';
|
||||||
|
constructor(private http: HttpClient, @Inject('BASE_URL') baseUrl: string) {
|
||||||
|
this.baseUrl = baseUrl + this.baseUrl;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
import { Inject, Injectable } from '@angular/core';
|
||||||
|
import { HttpClient, HttpParams } from '@angular/common/http';
|
||||||
|
import { Observable, of, throwError } from 'rxjs';
|
||||||
|
import { SpellViewModel } from '../types/viewmodels/spell-viewmodels/SpellViewModel';
|
||||||
|
import { Either } from '../types/Either';
|
||||||
|
import { ErrorResponse } from '../types/ErrorResponse';
|
||||||
|
import { switchMap } from 'rxjs/operators';
|
||||||
|
|
||||||
|
Injectable({
|
||||||
|
providedIn: 'root',
|
||||||
|
});
|
||||||
|
export class SpellService {
|
||||||
|
private baseUrl = 'api/spell/';
|
||||||
|
constructor(private http: HttpClient, @Inject('BASE_URL') baseUrl: string) {
|
||||||
|
this.baseUrl = baseUrl + this.baseUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetAllSpells(): Observable<SpellViewModel[]> {
|
||||||
|
return this.http
|
||||||
|
.get<Either<SpellViewModel[], ErrorResponse>>(
|
||||||
|
this.baseUrl + 'getAllSpells'
|
||||||
|
)
|
||||||
|
.pipe(
|
||||||
|
switchMap((response) => {
|
||||||
|
if (response.isLeft) {
|
||||||
|
return of(response.left);
|
||||||
|
} else {
|
||||||
|
return throwError(response.right);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
import { Inject, Injectable } from '@angular/core';
|
||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
import { Observable, of, throwError } from 'rxjs';
|
||||||
|
import { SpellViewModel } from '../types/viewmodels/spell-viewmodels/SpellViewModel';
|
||||||
|
import { Either } from '../types/Either';
|
||||||
|
import { ErrorResponse } from '../types/ErrorResponse';
|
||||||
|
import { switchMap } from 'rxjs/operators';
|
||||||
|
import { WeaponViewModel } from '../types/viewmodels/weapon-viewmodels/WeaponViewModel';
|
||||||
|
|
||||||
|
Injectable({
|
||||||
|
providedIn: 'root',
|
||||||
|
});
|
||||||
|
export class WeaponService {
|
||||||
|
private baseUrl = 'api/weapon/';
|
||||||
|
constructor(private http: HttpClient, @Inject('BASE_URL') baseUrl: string) {
|
||||||
|
this.baseUrl = baseUrl + this.baseUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetAllWeapons(): Observable<WeaponViewModel[]> {
|
||||||
|
return this.http
|
||||||
|
.get<Either<WeaponViewModel[], ErrorResponse>>(
|
||||||
|
this.baseUrl + 'getAllWeapons'
|
||||||
|
)
|
||||||
|
.pipe(
|
||||||
|
switchMap((response) => {
|
||||||
|
if (response.isLeft) {
|
||||||
|
return of(response.left);
|
||||||
|
} else {
|
||||||
|
return throwError(response.right);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
export interface SpellViewModel {
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
descriptions: string[];
|
||||||
|
higherLevel: string[];
|
||||||
|
range: string;
|
||||||
|
components: string;
|
||||||
|
material: string;
|
||||||
|
ritual: boolean;
|
||||||
|
duration: string;
|
||||||
|
concentration: boolean;
|
||||||
|
castingTime: string;
|
||||||
|
level: number;
|
||||||
|
school: string;
|
||||||
|
classes: string;
|
||||||
|
subclasses: string;
|
||||||
|
}
|
@ -36,6 +36,13 @@ namespace SessionCompanion.Configurations
|
|||||||
services.AddScoped<IRepository<CharacterOtherEquipment>, CharacterOtherEquipmentRepository>();
|
services.AddScoped<IRepository<CharacterOtherEquipment>, CharacterOtherEquipmentRepository>();
|
||||||
services.AddScoped<IRepository<Weapon>, WeaponRepository>();
|
services.AddScoped<IRepository<Weapon>, WeaponRepository>();
|
||||||
services.AddScoped<IRepository<CharacterWeapon>, CharacterWeaponRepository>();
|
services.AddScoped<IRepository<CharacterWeapon>, CharacterWeaponRepository>();
|
||||||
|
services.AddScoped<IRepository<GameAction>, GameActionRepository>();
|
||||||
|
services.AddScoped<IRepository<LegendaryAction>, LegendaryActionRepository>();
|
||||||
|
services.AddScoped<IRepository<MonsterAction>, MonsterActionsRepository>();
|
||||||
|
services.AddScoped<IRepository<MonsterLegendaryAction>, MonsterLegendaryActionsRepository>();
|
||||||
|
services.AddScoped<IRepository<Monster>, MonsterRepository>();
|
||||||
|
services.AddScoped<IRepository<MonsterSpecialAbility>, MonsterSpecialAbilitiesRepository>();
|
||||||
|
services.AddScoped<IRepository<SpecialAbility>, SpecialAbilityRepository>();
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ namespace SessionCompanion.Controllers
|
|||||||
{
|
{
|
||||||
using SessionCompanion.Hubs;
|
using SessionCompanion.Hubs;
|
||||||
using SessionCompanion.ViewModels.UniversalModels;
|
using SessionCompanion.ViewModels.UniversalModels;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -19,11 +20,15 @@ namespace SessionCompanion.Controllers
|
|||||||
{
|
{
|
||||||
private readonly ICharacterService _service;
|
private readonly ICharacterService _service;
|
||||||
private readonly SessionHubData _sessionHubData;
|
private readonly SessionHubData _sessionHubData;
|
||||||
|
private readonly IRaceService _raceService;
|
||||||
|
private readonly IClassService _classService;
|
||||||
|
|
||||||
public CharacterController(ICharacterService service)
|
public CharacterController(ICharacterService service, IRaceService raceService, IClassService classService)
|
||||||
{
|
{
|
||||||
this._service = service;
|
this._service = service;
|
||||||
this._sessionHubData = new SessionHubData();
|
this._sessionHubData = new SessionHubData();
|
||||||
|
this._raceService = raceService;
|
||||||
|
this._classService = classService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -105,5 +110,29 @@ namespace SessionCompanion.Controllers
|
|||||||
};
|
};
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Metoda zwraca podstawowe informacje dla postaci z Templatek
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>liste podstawowych informacji o postaciach z templatki</returns>
|
||||||
|
[HttpGet("getTemplateCharacters")]
|
||||||
|
public async Task<Either<ErrorResponse, List<CharacterFromTemplatesSimpleViewModel>>> GetTemplateCharacters()
|
||||||
|
{
|
||||||
|
var races = _raceService.Get().ToList();
|
||||||
|
var classes = _classService.Get().ToList();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var templateCharacters = await _service.GetCharactersFromTemplate(races, classes);
|
||||||
|
return templateCharacters.ToList();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
return new ErrorResponse()
|
||||||
|
{
|
||||||
|
StatusCode = 500,
|
||||||
|
Message = e.Message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SessionCompanion.Controllers
|
||||||
|
{
|
||||||
|
using SessionCompanion.Extensions.EitherType;
|
||||||
|
using SessionCompanion.Services.Interfaces;
|
||||||
|
using SessionCompanion.ViewModels.ApiResponses;
|
||||||
|
using SessionCompanion.ViewModels.CharacterArmorViewModels;
|
||||||
|
using SessionCompanion.ViewModels.CharacterOtherEquipmentViewModels;
|
||||||
|
using SessionCompanion.ViewModels.CharacterWeaponViewModels;
|
||||||
|
|
||||||
|
[Route("api/character/equipment")]
|
||||||
|
[ApiController]
|
||||||
|
public class EquipmentController : Controller
|
||||||
|
{
|
||||||
|
private readonly ICharacterArmorService _characterArmorServic;
|
||||||
|
|
||||||
|
private readonly ICharacterOtherEquipmentService _characterOtherEquipmentService;
|
||||||
|
|
||||||
|
private readonly ICharacterWeaponService _characterWeaponService;
|
||||||
|
|
||||||
|
public EquipmentController(ICharacterArmorService characterArmorService,
|
||||||
|
ICharacterOtherEquipmentService characterOtherEquipmentService,
|
||||||
|
ICharacterWeaponService characterWeaponService)
|
||||||
|
{
|
||||||
|
this._characterArmorServic = characterArmorService;
|
||||||
|
this._characterOtherEquipmentService = characterOtherEquipmentService;
|
||||||
|
this._characterWeaponService = characterWeaponService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Zwraca listę pozostałego ekwipunku dla danej postaci
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="characterId"> Id postaci </param>
|
||||||
|
/// <returns> Lista pozostałego ekwipunku lub błąd </returns>
|
||||||
|
[HttpGet("getOtherEquipment")]
|
||||||
|
public async Task<Either<List<CharacterOtherEquipmentWithDetailsViewModel>, ErrorResponse>> GetCharacterOtherEquipment(int characterId)
|
||||||
|
{
|
||||||
|
return await this._characterOtherEquipmentService.GetCharacterOtherEquipmentList(characterId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Zwraca listę pancerzy posiadanych przez daną postać
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="characterId"> Id postaci </param>
|
||||||
|
/// <returns> Lista pozostałego ekwipunku lub błąd </returns>
|
||||||
|
[HttpGet("getArmors")]
|
||||||
|
public async Task<Either<List<CharacterArmorViewModelDetails>, ErrorResponse>> GetCharacterArmors(int characterId)
|
||||||
|
{
|
||||||
|
return await this._characterArmorServic.GetCharacterArmorsTaskList(characterId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Zwraca listę broni posiadanej przez daną postać
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="characterId"> Id postaci </param>
|
||||||
|
/// <returns> Lista broni lub błąd </returns>
|
||||||
|
[HttpGet("getWeapons")]
|
||||||
|
public async Task<Either<List<CharacterWeaponWithWeaponDetailsViewModel>, ErrorResponse>> GetCharacterWeapons(int characterId)
|
||||||
|
{
|
||||||
|
return await this._characterWeaponService.GetCharacterWeaponsList(characterId);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user