title: Single Responsibility Principle(SRP) and class structure of my rpg looks "weird"
body: <p>I'm making a role playing game just for fun and to learn more about the SOLID principles. One of the first things I'm focusing on is SRP. I have a "Character" class that represents a character in the game. It has things like Name, Health, Mana, AbilityScores, etc.</p>
  
  <p>Now, normally I would also put methods in my Character class so it would look something like this...</p>
  
  <pre><code>   public class Character
     {
        public string Name { get; set; }
        public int Health { get; set; }
        public int Mana { get; set; }
        public Dictionary&lt;AbilityScoreEnum, int&gt;AbilityScores { get; set; }
  
        // base attack bonus depends on character level, attribute bonuses, etc
        public static void GetBaseAttackBonus();  
        public static int RollDamage();
        public static TakeDamage(int amount);
     }
  </code></pre>
  
  <p>But because of SRP I've decided to move all the methods out into a separate class. I named that class "CharacterActions" and now the method signatures look like this...</p>
  
  <pre><code>public class CharacterActions
  {
      public static void GetBaseAttackBonus(Character character);
      public static int RollDamage(Character character);
      public static TakeDamage(Character character, int amount);
  }
  </code></pre>
  
  <p>Notice that I now have to include the Character object I am using in all my CharacterActions methods. Is this the right way to go about leveraging SRP? It seems to go completely against the OOP concept of encapsulation. </p>
  
  <p>Or am I doing something completely wrong here?</p>
  
  <p>ONE thing I do like about this is that my Character class is very clear on what it does, it simply represents a Character object.</p>