public static void DeductMagic(this ICharacterStateVariables state, int change, int?maxMagic = null) { var newValue = state.Magic() - change; if (maxMagic.HasValue) { state.EnsureMagicInBounds(newValue, maxMagic.Value); } else { state.Magic(newValue); } }
public static void DeductHealth(this ICharacterStateVariables state, int change, int?maxHealth = null) { var newValue = state.Health() - change; if (maxHealth == null) { state.Health(newValue); } else { state.EnsureHealthInBounds(newValue, maxHealth.Value); } }
public static void EnsureMagicInBounds(this ICharacterStateVariables state, int value, int maxMagic) { if (value > maxMagic) { state[CharacterStateVariableTypes.Magic] = maxMagic; } else if (value <= 0) { state[CharacterStateVariableTypes.Magic] = 0; } else { state[CharacterStateVariableTypes.Magic] = value; } }
public static void EnsureHealthInBounds(this ICharacterStateVariables state, int value, int maxHealth) { if (value > maxHealth) { state[CharacterStateVariableTypes.Health] = maxHealth; } else if (value <= 0) { state[CharacterStateVariableTypes.Health] = 0; } else { state[CharacterStateVariableTypes.Health] = value; } }
public static void Magic(this ICharacterStateVariables state, int value) => state[CharacterStateVariableTypes.Magic] = value;
public static int Magic(this ICharacterStateVariables state) => (int)state.Get(CharacterStateVariableTypes.Magic);
public static void Health(this ICharacterStateVariables state, int value) => state[CharacterStateVariableTypes.Health] = value;
public static int Health(this ICharacterStateVariables state) => (int)state.Get(CharacterStateVariableTypes.Health);