From 6ff19945b9f8efe519ae8904a74797ca8812ec23 Mon Sep 17 00:00:00 2001 From: Malachy Byrne Date: Fri, 14 Jun 2024 19:03:12 +0100 Subject: [PATCH 1/5] Add basic classes --- .gitignore | 400 ++++++++++++++++++ .../characters/PlayerCharacterTest.cs | 46 ++ pflib-net.Tests/pflib-net.Tests.csproj | 20 + pflib-net/characters/ICharacter.cs | 17 + pflib-net/characters/PlayerCharacter.cs | 29 ++ pflib-net/characters/internals/Stats.cs | 34 ++ .../proficiencies/ArmorProficiency.cs | 18 + .../internals/proficiencies/IProficiency.cs | 6 + .../proficiencies/ProficiencyTypes.cs | 35 ++ .../proficiencies/ProficiencyValues.cs | 10 + pflib-net/conditions/ICondition.cs | 6 + pflib-net/pflib-net.csproj | 10 + 12 files changed, 631 insertions(+) create mode 100644 .gitignore create mode 100644 pflib-net.Tests/characters/PlayerCharacterTest.cs create mode 100644 pflib-net.Tests/pflib-net.Tests.csproj create mode 100644 pflib-net/characters/ICharacter.cs create mode 100644 pflib-net/characters/PlayerCharacter.cs create mode 100644 pflib-net/characters/internals/Stats.cs create mode 100644 pflib-net/characters/internals/proficiencies/ArmorProficiency.cs create mode 100644 pflib-net/characters/internals/proficiencies/IProficiency.cs create mode 100644 pflib-net/characters/internals/proficiencies/ProficiencyTypes.cs create mode 100644 pflib-net/characters/internals/proficiencies/ProficiencyValues.cs create mode 100644 pflib-net/conditions/ICondition.cs create mode 100644 pflib-net/pflib-net.csproj diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7d3f840 --- /dev/null +++ b/.gitignore @@ -0,0 +1,400 @@ +### VisualStudio template +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml + diff --git a/pflib-net.Tests/characters/PlayerCharacterTest.cs b/pflib-net.Tests/characters/PlayerCharacterTest.cs new file mode 100644 index 0000000..8727e0a --- /dev/null +++ b/pflib-net.Tests/characters/PlayerCharacterTest.cs @@ -0,0 +1,46 @@ +using System.Collections.Generic; +using NUnit.Framework; +using pflib_net.characters.internals.characters; +using pflib_net.characters.internals.characters.internals.proficiencies; + +namespace pflib_net.characters.internals.Tests.characters; + +[TestFixture] +[TestOf(typeof(PlayerCharacter))] +public class PlayerCharacterTest +{ + + [Test] + public void DamageReducesHp() + { + var stats = new Stats(0, 0, 0, 0, 0, 0); + var armorValues = new Dictionary + { + { ProficiencyTypes.Unarmored, ProficiencyValues.Expert }, + { ProficiencyTypes.LightArmor, ProficiencyValues.None }, + { ProficiencyTypes.MediumArmor, ProficiencyValues.None }, + { ProficiencyTypes.HeavyArmor, ProficiencyValues.None } + }; + var armorProficiency = new ArmorProficiency(armorValues); + var creature = new PlayerCharacter(50, stats, 5, armorProficiency); + creature.ResolveAttack(20, 20); + Assert.That(creature.GetHp(), Is.LessThan(50)); + } + + [Test] + public void AttackFailsOnMiss() + { + var stats = new Stats(0, 0, 0, 0, 0, 0); + var armorValues = new Dictionary + { + { ProficiencyTypes.Unarmored, ProficiencyValues.Expert }, + { ProficiencyTypes.LightArmor, ProficiencyValues.None }, + { ProficiencyTypes.MediumArmor, ProficiencyValues.None }, + { ProficiencyTypes.HeavyArmor, ProficiencyValues.None } + }; + var armorProficiency = new ArmorProficiency(armorValues); + var creature = new PlayerCharacter(50, stats, 5, armorProficiency); + creature.ResolveAttack(0, 50); + Assert.That(creature.GetHp(), Is.EqualTo(50)); + } +} \ No newline at end of file diff --git a/pflib-net.Tests/pflib-net.Tests.csproj b/pflib-net.Tests/pflib-net.Tests.csproj new file mode 100644 index 0000000..652b646 --- /dev/null +++ b/pflib-net.Tests/pflib-net.Tests.csproj @@ -0,0 +1,20 @@ + + + + net8.0 + pflib_net.Tests + + false + + + + + + + + + + + + + \ No newline at end of file diff --git a/pflib-net/characters/ICharacter.cs b/pflib-net/characters/ICharacter.cs new file mode 100644 index 0000000..a77f63b --- /dev/null +++ b/pflib-net/characters/ICharacter.cs @@ -0,0 +1,17 @@ +namespace pflib_net.characters.internals.characters; + +public interface ICharacter +{ + /// + /// Resolve an attack against the character's AC and deal damage appropriately + /// + /// + /// + public void ResolveAttack(int roll, int damage); + + /// + /// Return the HP of the character + /// + /// + public int GetHp(); +} \ No newline at end of file diff --git a/pflib-net/characters/PlayerCharacter.cs b/pflib-net/characters/PlayerCharacter.cs new file mode 100644 index 0000000..736e5e4 --- /dev/null +++ b/pflib-net/characters/PlayerCharacter.cs @@ -0,0 +1,29 @@ +using pflib_net.characters.internals.characters.internals.proficiencies; + +namespace pflib_net.characters.internals.characters; + +public class PlayerCharacter(int hp, Stats stats, int level, ArmorProficiency armorProficiency) + : ICharacter +{ + private int Hp { get; set; } = hp; + private Stats Stats { get; set; } = stats; + private int Level { get; set; } = level; + private ArmorProficiency ArmorProficiency { get; set; } = armorProficiency; + private HashSet Conditions { get; set; } = []; + + public void ResolveAttack(int roll, int damage) + { + if (roll < GetAc()) return; + Hp -= damage; + } + + private int GetAc() + { + return 10 + Stats.GetDexterity() + ArmorProficiency.GetValue(ProficiencyTypes.Unarmored, Level); + } + + public int GetHp() + { + return Hp; + } +} \ No newline at end of file diff --git a/pflib-net/characters/internals/Stats.cs b/pflib-net/characters/internals/Stats.cs new file mode 100644 index 0000000..5074a72 --- /dev/null +++ b/pflib-net/characters/internals/Stats.cs @@ -0,0 +1,34 @@ +namespace pflib_net.characters.internals; + +public class Stats +{ + private int Strength { get; set; } + + private int Dexterity { get; set; } + + private int Constitution { get; set; } + + private int Intelligence { get; set; } + private int Wisdom { get; set; } + private int Charisma { get; set; } + + public Stats(int strength, int dexterity, int constitution, int intelligence, int wisdom, int charisma) + { + Strength = strength; + Dexterity = dexterity; + Constitution = constitution; + Intelligence = intelligence; + Wisdom = wisdom; + Charisma = charisma; + } + + public int GetStrength() + { + return Strength; + } + + public int GetDexterity() + { + return Dexterity; + } +} \ No newline at end of file diff --git a/pflib-net/characters/internals/proficiencies/ArmorProficiency.cs b/pflib-net/characters/internals/proficiencies/ArmorProficiency.cs new file mode 100644 index 0000000..d255c29 --- /dev/null +++ b/pflib-net/characters/internals/proficiencies/ArmorProficiency.cs @@ -0,0 +1,18 @@ +namespace pflib_net.characters.internals.characters.internals.proficiencies; + +public class ArmorProficiency(Dictionary values) : IProficiency +{ + private Dictionary Values { get; set; } = values; + + public int GetValue(ProficiencyTypes type, int level) + { + if (Values[type].Equals(ProficiencyValues.None)) + { + return 0; + } + else + { + return level + (int) Values[type]; + } + } +} \ No newline at end of file diff --git a/pflib-net/characters/internals/proficiencies/IProficiency.cs b/pflib-net/characters/internals/proficiencies/IProficiency.cs new file mode 100644 index 0000000..1439c98 --- /dev/null +++ b/pflib-net/characters/internals/proficiencies/IProficiency.cs @@ -0,0 +1,6 @@ +namespace pflib_net.characters.internals.characters.internals.proficiencies; + +public interface IProficiency +{ + public int GetValue(ProficiencyTypes type, int level); +} \ No newline at end of file diff --git a/pflib-net/characters/internals/proficiencies/ProficiencyTypes.cs b/pflib-net/characters/internals/proficiencies/ProficiencyTypes.cs new file mode 100644 index 0000000..ef4703a --- /dev/null +++ b/pflib-net/characters/internals/proficiencies/ProficiencyTypes.cs @@ -0,0 +1,35 @@ +namespace pflib_net.characters.internals.characters.internals.proficiencies; + +public enum ProficiencyTypes +{ + Unarmored, + LightArmor, + MediumArmor, + HeavyArmor, + + Unarmed, + SimpleWeapon, + MartialWeapon, + AdvancedWeapon, + + SkillAcrobatics, + SkillArcana, + SkillAthletics, + SkillCrafting, + SkillDeception, + SkillDiplomacy, + SkillIntimidation, + SkillMedicine, + SkillNature, + SkillOccultism, + SkillPerformance, + SkillReligion, + SkillSociety, + SkillStealth, + SkillSurvival, + SkillThievery, + + LoreBardic, + LoreLoremaster, + LoreOther +} \ No newline at end of file diff --git a/pflib-net/characters/internals/proficiencies/ProficiencyValues.cs b/pflib-net/characters/internals/proficiencies/ProficiencyValues.cs new file mode 100644 index 0000000..bd2c3fa --- /dev/null +++ b/pflib-net/characters/internals/proficiencies/ProficiencyValues.cs @@ -0,0 +1,10 @@ +namespace pflib_net.characters.internals.characters.internals.proficiencies; + +public enum ProficiencyValues: ushort +{ + None = 0, + Trainer = 2, + Expert = 4, + Master = 6, + Legendary = 8 +} \ No newline at end of file diff --git a/pflib-net/conditions/ICondition.cs b/pflib-net/conditions/ICondition.cs new file mode 100644 index 0000000..e3d7cad --- /dev/null +++ b/pflib-net/conditions/ICondition.cs @@ -0,0 +1,6 @@ +namespace pflib_net.characters.internals; + +public interface ICondition +{ + +} \ No newline at end of file diff --git a/pflib-net/pflib-net.csproj b/pflib-net/pflib-net.csproj new file mode 100644 index 0000000..ef04a4d --- /dev/null +++ b/pflib-net/pflib-net.csproj @@ -0,0 +1,10 @@ + + + + net8.0 + pflib_net + enable + enable + + + -- 2.47.2 From cde67d45e041e781a71975c2a587ef3687dbbbc3 Mon Sep 17 00:00:00 2001 From: Malachy Byrne Date: Fri, 14 Jun 2024 19:08:36 +0100 Subject: [PATCH 2/5] Fix gitignore and add sln file --- .gitignore | 393 +------------------------------------------------- pflib-net.sln | 22 +++ 2 files changed, 24 insertions(+), 391 deletions(-) create mode 100644 pflib-net.sln diff --git a/.gitignore b/.gitignore index 7d3f840..5109f3d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,400 +1,11 @@ -### VisualStudio template -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ [Bb]in/ [Oo]bj/ [Ll]og/ [Ll]ogs/ +.idea/ -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.tlog -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*.json -coverage*.xml -coverage*.info - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio 6 auto-generated project file (contains which files were open etc.) -*.vbp - -# Visual Studio 6 workspace and project file (working project files containing files to include in project) -*.dsw -*.dsp - -# Visual Studio 6 technical files -*.ncb -*.aps - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# Visual Studio History (VSHistory) files -.vshistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd - -# VS Code files for those working on multiple tools -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -*.code-workspace - -# Local History for Visual Studio Code -.history/ - -# Windows Installer files from build outputs -*.cab -*.msi -*.msix -*.msm -*.msp - -# JetBrains Rider -*.sln.iml - +*.user \ No newline at end of file diff --git a/pflib-net.sln b/pflib-net.sln new file mode 100644 index 0000000..ca1eeb2 --- /dev/null +++ b/pflib-net.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "pflib-net", "pflib-net\pflib-net.csproj", "{67894E72-B960-45B8-BE46-13B887EDE420}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "pflib-net.Tests", "pflib-net.Tests\pflib-net.Tests.csproj", "{C27B21AF-82FC-4AED-845E-DE27602063E0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {67894E72-B960-45B8-BE46-13B887EDE420}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {67894E72-B960-45B8-BE46-13B887EDE420}.Debug|Any CPU.Build.0 = Debug|Any CPU + {67894E72-B960-45B8-BE46-13B887EDE420}.Release|Any CPU.ActiveCfg = Release|Any CPU + {67894E72-B960-45B8-BE46-13B887EDE420}.Release|Any CPU.Build.0 = Release|Any CPU + {C27B21AF-82FC-4AED-845E-DE27602063E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C27B21AF-82FC-4AED-845E-DE27602063E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C27B21AF-82FC-4AED-845E-DE27602063E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C27B21AF-82FC-4AED-845E-DE27602063E0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal -- 2.47.2 From 5eadaa67fac5a77b750f76ab4c1c1520f2efee41 Mon Sep 17 00:00:00 2001 From: Malachy Byrne Date: Fri, 14 Jun 2024 23:22:19 +0100 Subject: [PATCH 3/5] Various additions and changes --- .../characters/PlayerCharacterTest.cs | 27 +++++++------ .../characters/internals/stats/StatsTest.cs | 40 +++++++++++++++++++ pflib-net.Tests/pflib-net.Tests.csproj | 2 +- pflib-net/characters/ICharacter.cs | 2 +- pflib-net/characters/PlayerCharacter.cs | 32 ++++++++++----- pflib-net/characters/internals/Stats.cs | 34 ---------------- .../proficiencies/ArmorProficiency.cs | 17 +++++--- .../internals/proficiencies/IProficiency.cs | 4 +- ...ProficiencyTypes.cs => ProficiencyType.cs} | 4 +- .../proficiencies/ProficiencyValue.cs | 10 +++++ .../proficiencies/ProficiencyValues.cs | 10 ----- .../characters/internals/stats/StatType.cs | 11 +++++ pflib-net/characters/internals/stats/Stats.cs | 23 +++++++++++ pflib-net/conditions/ICondition.cs | 2 +- pflib-net/pflib-net.csproj | 2 +- 15 files changed, 139 insertions(+), 81 deletions(-) create mode 100644 pflib-net.Tests/characters/internals/stats/StatsTest.cs delete mode 100644 pflib-net/characters/internals/Stats.cs rename pflib-net/characters/internals/proficiencies/{ProficiencyTypes.cs => ProficiencyType.cs} (82%) create mode 100644 pflib-net/characters/internals/proficiencies/ProficiencyValue.cs delete mode 100644 pflib-net/characters/internals/proficiencies/ProficiencyValues.cs create mode 100644 pflib-net/characters/internals/stats/StatType.cs create mode 100644 pflib-net/characters/internals/stats/Stats.cs diff --git a/pflib-net.Tests/characters/PlayerCharacterTest.cs b/pflib-net.Tests/characters/PlayerCharacterTest.cs index 8727e0a..0809a84 100644 --- a/pflib-net.Tests/characters/PlayerCharacterTest.cs +++ b/pflib-net.Tests/characters/PlayerCharacterTest.cs @@ -1,9 +1,10 @@ using System.Collections.Generic; using NUnit.Framework; -using pflib_net.characters.internals.characters; -using pflib_net.characters.internals.characters.internals.proficiencies; +using pflib_net.characters; +using pflib_net.characters.internals.proficiencies; +using pflib_net.characters.internals.stats; -namespace pflib_net.characters.internals.Tests.characters; +namespace pflib_net.Tests.characters; [TestFixture] [TestOf(typeof(PlayerCharacter))] @@ -14,12 +15,12 @@ public class PlayerCharacterTest public void DamageReducesHp() { var stats = new Stats(0, 0, 0, 0, 0, 0); - var armorValues = new Dictionary + var armorValues = new Dictionary { - { ProficiencyTypes.Unarmored, ProficiencyValues.Expert }, - { ProficiencyTypes.LightArmor, ProficiencyValues.None }, - { ProficiencyTypes.MediumArmor, ProficiencyValues.None }, - { ProficiencyTypes.HeavyArmor, ProficiencyValues.None } + { ProficiencyType.Unarmored, ProficiencyValue.Expert }, + { ProficiencyType.LightArmor, ProficiencyValue.None }, + { ProficiencyType.MediumArmor, ProficiencyValue.None }, + { ProficiencyType.HeavyArmor, ProficiencyValue.None } }; var armorProficiency = new ArmorProficiency(armorValues); var creature = new PlayerCharacter(50, stats, 5, armorProficiency); @@ -31,12 +32,12 @@ public class PlayerCharacterTest public void AttackFailsOnMiss() { var stats = new Stats(0, 0, 0, 0, 0, 0); - var armorValues = new Dictionary + var armorValues = new Dictionary { - { ProficiencyTypes.Unarmored, ProficiencyValues.Expert }, - { ProficiencyTypes.LightArmor, ProficiencyValues.None }, - { ProficiencyTypes.MediumArmor, ProficiencyValues.None }, - { ProficiencyTypes.HeavyArmor, ProficiencyValues.None } + { ProficiencyType.Unarmored, ProficiencyValue.Expert }, + { ProficiencyType.LightArmor, ProficiencyValue.None }, + { ProficiencyType.MediumArmor, ProficiencyValue.None }, + { ProficiencyType.HeavyArmor, ProficiencyValue.None } }; var armorProficiency = new ArmorProficiency(armorValues); var creature = new PlayerCharacter(50, stats, 5, armorProficiency); diff --git a/pflib-net.Tests/characters/internals/stats/StatsTest.cs b/pflib-net.Tests/characters/internals/stats/StatsTest.cs new file mode 100644 index 0000000..9563d92 --- /dev/null +++ b/pflib-net.Tests/characters/internals/stats/StatsTest.cs @@ -0,0 +1,40 @@ +using System.Collections.Generic; +using NUnit.Framework; +using pflib_net.characters.internals.stats; + +namespace pflib_net.Tests.characters.internals.stats; + +[TestFixture] +[TestOf(typeof(Stats))] +public class StatsTest +{ + private readonly Dictionary _values = new Dictionary() + { + { StatType.Strength, 1 }, + { StatType.Dexterity, 2 }, + { StatType.Constitution, 3 }, + { StatType.Intelligence, 4 }, + { StatType.Wisdom, 5 }, + { StatType.Charisma, 6 } + }; + + [Test] + [TestCase(StatType.Strength)] + [TestCase(StatType.Dexterity)] + [TestCase(StatType.Constitution)] + [TestCase(StatType.Intelligence)] + [TestCase(StatType.Wisdom)] + [TestCase(StatType.Charisma)] + public void GetStatsGivesCorrectValues(StatType type) + { + var stats = new Stats( + _values[StatType.Strength], + _values[StatType.Dexterity], + _values[StatType.Constitution], + _values[StatType.Intelligence], + _values[StatType.Wisdom], + _values[StatType.Charisma] + ); + Assert.That(stats.GetStat(type), Is.EqualTo(_values[type])); + } +} \ No newline at end of file diff --git a/pflib-net.Tests/pflib-net.Tests.csproj b/pflib-net.Tests/pflib-net.Tests.csproj index 652b646..c23782f 100644 --- a/pflib-net.Tests/pflib-net.Tests.csproj +++ b/pflib-net.Tests/pflib-net.Tests.csproj @@ -1,7 +1,7 @@ - net8.0 + net6.0 pflib_net.Tests false diff --git a/pflib-net/characters/ICharacter.cs b/pflib-net/characters/ICharacter.cs index a77f63b..a8fbaf0 100644 --- a/pflib-net/characters/ICharacter.cs +++ b/pflib-net/characters/ICharacter.cs @@ -1,4 +1,4 @@ -namespace pflib_net.characters.internals.characters; +namespace pflib_net.characters; public interface ICharacter { diff --git a/pflib-net/characters/PlayerCharacter.cs b/pflib-net/characters/PlayerCharacter.cs index 736e5e4..16c17a3 100644 --- a/pflib-net/characters/PlayerCharacter.cs +++ b/pflib-net/characters/PlayerCharacter.cs @@ -1,16 +1,26 @@ -using pflib_net.characters.internals.characters.internals.proficiencies; +using System.Collections.Generic; +using pflib_net.characters.internals.proficiencies; +using pflib_net.characters.internals.stats; +using pflib_net.conditions; -namespace pflib_net.characters.internals.characters; +namespace pflib_net.characters; -public class PlayerCharacter(int hp, Stats stats, int level, ArmorProficiency armorProficiency) - : ICharacter +public class PlayerCharacter : ICharacter { - private int Hp { get; set; } = hp; - private Stats Stats { get; set; } = stats; - private int Level { get; set; } = level; - private ArmorProficiency ArmorProficiency { get; set; } = armorProficiency; - private HashSet Conditions { get; set; } = []; - + private int Hp { get; set; } + private Stats Stats { get; set; } + private int Level { get; set; } + private ArmorProficiency ArmorProficiency { get; set; } + private HashSet Conditions { get; set; } = new HashSet(); + + public PlayerCharacter(int hp, Stats stats, int level, ArmorProficiency armorProficiency) + { + Hp = hp; + Stats = stats; + Level = level; + ArmorProficiency = armorProficiency; + } + public void ResolveAttack(int roll, int damage) { if (roll < GetAc()) return; @@ -19,7 +29,7 @@ public class PlayerCharacter(int hp, Stats stats, int level, ArmorProficiency ar private int GetAc() { - return 10 + Stats.GetDexterity() + ArmorProficiency.GetValue(ProficiencyTypes.Unarmored, Level); + return 10 + Stats.GetStat(StatType.Dexterity) + ArmorProficiency.GetValue(ProficiencyType.Unarmored, Level); } public int GetHp() diff --git a/pflib-net/characters/internals/Stats.cs b/pflib-net/characters/internals/Stats.cs deleted file mode 100644 index 5074a72..0000000 --- a/pflib-net/characters/internals/Stats.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace pflib_net.characters.internals; - -public class Stats -{ - private int Strength { get; set; } - - private int Dexterity { get; set; } - - private int Constitution { get; set; } - - private int Intelligence { get; set; } - private int Wisdom { get; set; } - private int Charisma { get; set; } - - public Stats(int strength, int dexterity, int constitution, int intelligence, int wisdom, int charisma) - { - Strength = strength; - Dexterity = dexterity; - Constitution = constitution; - Intelligence = intelligence; - Wisdom = wisdom; - Charisma = charisma; - } - - public int GetStrength() - { - return Strength; - } - - public int GetDexterity() - { - return Dexterity; - } -} \ No newline at end of file diff --git a/pflib-net/characters/internals/proficiencies/ArmorProficiency.cs b/pflib-net/characters/internals/proficiencies/ArmorProficiency.cs index d255c29..93cf5a2 100644 --- a/pflib-net/characters/internals/proficiencies/ArmorProficiency.cs +++ b/pflib-net/characters/internals/proficiencies/ArmorProficiency.cs @@ -1,12 +1,19 @@ -namespace pflib_net.characters.internals.characters.internals.proficiencies; +using System.Collections.Generic; -public class ArmorProficiency(Dictionary values) : IProficiency +namespace pflib_net.characters.internals.proficiencies; + +public class ArmorProficiency : IProficiency { - private Dictionary Values { get; set; } = values; + private Dictionary Values { get; set; } - public int GetValue(ProficiencyTypes type, int level) + public ArmorProficiency(Dictionary values) { - if (Values[type].Equals(ProficiencyValues.None)) + Values = values; + } + + public int GetValue(ProficiencyType type, int level) + { + if (Values[type].Equals(ProficiencyValue.None)) { return 0; } diff --git a/pflib-net/characters/internals/proficiencies/IProficiency.cs b/pflib-net/characters/internals/proficiencies/IProficiency.cs index 1439c98..f6966e9 100644 --- a/pflib-net/characters/internals/proficiencies/IProficiency.cs +++ b/pflib-net/characters/internals/proficiencies/IProficiency.cs @@ -1,6 +1,6 @@ -namespace pflib_net.characters.internals.characters.internals.proficiencies; +namespace pflib_net.characters.internals.proficiencies; public interface IProficiency { - public int GetValue(ProficiencyTypes type, int level); + public int GetValue(ProficiencyType type, int level); } \ No newline at end of file diff --git a/pflib-net/characters/internals/proficiencies/ProficiencyTypes.cs b/pflib-net/characters/internals/proficiencies/ProficiencyType.cs similarity index 82% rename from pflib-net/characters/internals/proficiencies/ProficiencyTypes.cs rename to pflib-net/characters/internals/proficiencies/ProficiencyType.cs index ef4703a..3de10e6 100644 --- a/pflib-net/characters/internals/proficiencies/ProficiencyTypes.cs +++ b/pflib-net/characters/internals/proficiencies/ProficiencyType.cs @@ -1,6 +1,6 @@ -namespace pflib_net.characters.internals.characters.internals.proficiencies; +namespace pflib_net.characters.internals.proficiencies; -public enum ProficiencyTypes +public enum ProficiencyType { Unarmored, LightArmor, diff --git a/pflib-net/characters/internals/proficiencies/ProficiencyValue.cs b/pflib-net/characters/internals/proficiencies/ProficiencyValue.cs new file mode 100644 index 0000000..dba91d4 --- /dev/null +++ b/pflib-net/characters/internals/proficiencies/ProficiencyValue.cs @@ -0,0 +1,10 @@ +namespace pflib_net.characters.internals.proficiencies; + +public enum ProficiencyValue: ushort +{ + None = 0, + Trained = 2, + Expert = 4, + Master = 6, + Legendary = 8 +} \ No newline at end of file diff --git a/pflib-net/characters/internals/proficiencies/ProficiencyValues.cs b/pflib-net/characters/internals/proficiencies/ProficiencyValues.cs deleted file mode 100644 index bd2c3fa..0000000 --- a/pflib-net/characters/internals/proficiencies/ProficiencyValues.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace pflib_net.characters.internals.characters.internals.proficiencies; - -public enum ProficiencyValues: ushort -{ - None = 0, - Trainer = 2, - Expert = 4, - Master = 6, - Legendary = 8 -} \ No newline at end of file diff --git a/pflib-net/characters/internals/stats/StatType.cs b/pflib-net/characters/internals/stats/StatType.cs new file mode 100644 index 0000000..82dbb64 --- /dev/null +++ b/pflib-net/characters/internals/stats/StatType.cs @@ -0,0 +1,11 @@ +namespace pflib_net.characters.internals.stats; + +public enum StatType +{ + Strength, + Dexterity, + Constitution, + Intelligence, + Wisdom, + Charisma +} \ No newline at end of file diff --git a/pflib-net/characters/internals/stats/Stats.cs b/pflib-net/characters/internals/stats/Stats.cs new file mode 100644 index 0000000..11ef3c6 --- /dev/null +++ b/pflib-net/characters/internals/stats/Stats.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; + +namespace pflib_net.characters.internals.stats; + +public class Stats +{ + private Dictionary StatDict { get; set; } = new(); + + public Stats(int strength, int dexterity, int constitution, int intelligence, int wisdom, int charisma) + { + StatDict[StatType.Strength] = strength; + StatDict[StatType.Dexterity] = dexterity; + StatDict[StatType.Constitution] = constitution; + StatDict[StatType.Intelligence] = intelligence; + StatDict[StatType.Wisdom] = wisdom; + StatDict[StatType.Charisma] = charisma; + } + + public int GetStat(StatType type) + { + return StatDict[type]; + } +} \ No newline at end of file diff --git a/pflib-net/conditions/ICondition.cs b/pflib-net/conditions/ICondition.cs index e3d7cad..d340ba5 100644 --- a/pflib-net/conditions/ICondition.cs +++ b/pflib-net/conditions/ICondition.cs @@ -1,4 +1,4 @@ -namespace pflib_net.characters.internals; +namespace pflib_net.conditions; public interface ICondition { diff --git a/pflib-net/pflib-net.csproj b/pflib-net/pflib-net.csproj index ef04a4d..43e5b13 100644 --- a/pflib-net/pflib-net.csproj +++ b/pflib-net/pflib-net.csproj @@ -1,7 +1,7 @@  - net8.0 + net6.0 pflib_net enable enable -- 2.47.2 From 7e0ddceb2c5e5f095da1557d26107187245c4cf9 Mon Sep 17 00:00:00 2001 From: Malachy Byrne Date: Fri, 14 Jun 2024 23:43:42 +0100 Subject: [PATCH 4/5] 100% test coverage baybee --- .../proficiencies/ArmorProficiencyTest.cs | 38 +++++++++++++++++++ pflib-net/characters/PlayerCharacter.cs | 4 +- pflib-net/characters/internals/stats/Stats.cs | 2 +- 3 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 pflib-net.Tests/characters/internals/proficiencies/ArmorProficiencyTest.cs diff --git a/pflib-net.Tests/characters/internals/proficiencies/ArmorProficiencyTest.cs b/pflib-net.Tests/characters/internals/proficiencies/ArmorProficiencyTest.cs new file mode 100644 index 0000000..a905a1e --- /dev/null +++ b/pflib-net.Tests/characters/internals/proficiencies/ArmorProficiencyTest.cs @@ -0,0 +1,38 @@ +using System.Collections.Generic; +using NUnit.Framework; +using pflib_net.characters.internals.proficiencies; + +namespace pflib_net.Tests.characters.internals.proficiencies; + +[TestFixture] +[TestOf(typeof(ArmorProficiency))] +public class ArmorProficiencyTest +{ + private Dictionary _values = new() + { + { ProficiencyType.Unarmored, 0}, + { ProficiencyType.LightArmor, 5 }, + { ProficiencyType.MediumArmor, 7 }, + { ProficiencyType.HeavyArmor, 9 } + }; + + private Dictionary _proficiencyValues = + new() + { + { ProficiencyType.Unarmored, ProficiencyValue.None }, + { ProficiencyType.LightArmor, ProficiencyValue.Trained }, + { ProficiencyType.MediumArmor, ProficiencyValue.Expert }, + { ProficiencyType.HeavyArmor, ProficiencyValue.Master } + }; + + [Test] + [TestCase(ProficiencyType.Unarmored)] + [TestCase(ProficiencyType.LightArmor)] + [TestCase(ProficiencyType.MediumArmor)] + [TestCase(ProficiencyType.HeavyArmor)] + public void GetValueReturnsCorrectAc(ProficiencyType type) + { + var armorProficiency = new ArmorProficiency(_proficiencyValues); + Assert.That(armorProficiency.GetValue(type, 3), Is.EqualTo(_values[type])); + } +} \ No newline at end of file diff --git a/pflib-net/characters/PlayerCharacter.cs b/pflib-net/characters/PlayerCharacter.cs index 16c17a3..7fd28ea 100644 --- a/pflib-net/characters/PlayerCharacter.cs +++ b/pflib-net/characters/PlayerCharacter.cs @@ -10,8 +10,8 @@ public class PlayerCharacter : ICharacter private int Hp { get; set; } private Stats Stats { get; set; } private int Level { get; set; } - private ArmorProficiency ArmorProficiency { get; set; } - private HashSet Conditions { get; set; } = new HashSet(); + private ArmorProficiency ArmorProficiency { get; } + private HashSet _conditions = new(); public PlayerCharacter(int hp, Stats stats, int level, ArmorProficiency armorProficiency) { diff --git a/pflib-net/characters/internals/stats/Stats.cs b/pflib-net/characters/internals/stats/Stats.cs index 11ef3c6..1939ad4 100644 --- a/pflib-net/characters/internals/stats/Stats.cs +++ b/pflib-net/characters/internals/stats/Stats.cs @@ -4,7 +4,7 @@ namespace pflib_net.characters.internals.stats; public class Stats { - private Dictionary StatDict { get; set; } = new(); + private Dictionary StatDict { get; } = new(); public Stats(int strength, int dexterity, int constitution, int intelligence, int wisdom, int charisma) { -- 2.47.2 From 9b3ef32b988f079f3ba128b0dbba88008d8b7693 Mon Sep 17 00:00:00 2001 From: Malachy Byrne Date: Sat, 15 Jun 2024 00:39:33 +0100 Subject: [PATCH 5/5] Remove unused interfaces --- pflib-net/characters/PlayerCharacter.cs | 2 -- pflib-net/conditions/ICondition.cs | 6 ------ pflib-net/pflib-net.csproj | 4 ++++ 3 files changed, 4 insertions(+), 8 deletions(-) delete mode 100644 pflib-net/conditions/ICondition.cs diff --git a/pflib-net/characters/PlayerCharacter.cs b/pflib-net/characters/PlayerCharacter.cs index 7fd28ea..0c169bf 100644 --- a/pflib-net/characters/PlayerCharacter.cs +++ b/pflib-net/characters/PlayerCharacter.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using pflib_net.characters.internals.proficiencies; using pflib_net.characters.internals.stats; -using pflib_net.conditions; namespace pflib_net.characters; @@ -11,7 +10,6 @@ public class PlayerCharacter : ICharacter private Stats Stats { get; set; } private int Level { get; set; } private ArmorProficiency ArmorProficiency { get; } - private HashSet _conditions = new(); public PlayerCharacter(int hp, Stats stats, int level, ArmorProficiency armorProficiency) { diff --git a/pflib-net/conditions/ICondition.cs b/pflib-net/conditions/ICondition.cs deleted file mode 100644 index d340ba5..0000000 --- a/pflib-net/conditions/ICondition.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace pflib_net.conditions; - -public interface ICondition -{ - -} \ No newline at end of file diff --git a/pflib-net/pflib-net.csproj b/pflib-net/pflib-net.csproj index 43e5b13..decb98f 100644 --- a/pflib-net/pflib-net.csproj +++ b/pflib-net/pflib-net.csproj @@ -7,4 +7,8 @@ enable + + + + -- 2.47.2