C#
C#

help

Root Question Message

phattanuki
phattanuki9/25/2022
Should you assert input arguments ins

Why am I getting a null-reference error here?

namespace Joust_.Manager {
    public static class GenerateSkillList {
        public static List<ISkill> AllSkills { get; } = GenerateSkillList.Setup();
        private static List<ISkill> Setup() {
            //do I have a better way to do this?
            AllSkills.Add(new Skills.Attack());
            AllSkills.Add(new Skills.Defend());
            AllSkills.Add(new Skills.Warcry());
            AllSkills.Add(new Skills.ThrowSmellyCheese());
            return AllSkills;
        }
    }
}
Message Not Public

Sign In and Join Server To See

9/25/2022
phattanuki
phattanuki9/25/2022
it can not return...null? new Skills.Attack(), meaning create a new object from namespace from Skill from the class Attack
phattanuki
phattanuki9/25/2022
is this because the attack is a record? not a class?
phattanuki
phattanuki9/25/2022
example:
using Joust_.Interfaces;

namespace Joust_.Skills {
    internal record Attack : ISkill {
        public string SkillName { get; init; }
        public SkillTypes SkillType { get; init; }

        private const double CriticalChance = 0.7;

        private const double CriticalHit = 1.5;

        private const int NormalHit = 1;

        public Attack() {
            SkillName = nameof(Attack);
            SkillType = SkillTypes.Targeted;
        }

        public void Action(ref IContender Challanger, ref IContender Defender) {
            Random critChance = new();
            Double Multiplier = critChance.NextDouble() > CriticalChance ? CriticalHit : NormalHit;
            Defender.HP -= Convert.ToInt32((Challanger.Strength - Defender.Armor) * Multiplier);
        }
    }
}
Message Not Public

Sign In and Join Server To See

9/25/2022
phattanuki
phattanuki9/25/2022
huh, I need a backing field for this?
Message Not Public

Sign In and Join Server To See

9/25/2022
phattanuki
phattanuki9/25/2022
ah, hm
phattanuki
phattanuki9/25/2022
then can I write
phattanuki
phattanuki9/25/2022
AllSkills = new List<ISkill>() { GenerateSkillList.Setup() }
phattanuki
phattanuki9/25/2022
or something
Message Not Public

Sign In and Join Server To See

9/25/2022
phattanuki
phattanuki9/25/2022
Message Not Public

Sign In and Join Server To See

9/25/2022
Message Not Public

Sign In and Join Server To See

9/25/2022
Message Not Public

Sign In and Join Server To See

9/25/2022
Message Not Public

Sign In and Join Server To See

9/25/2022
phattanuki
phattanuki9/25/2022
how about a private static constructor?
ContactFrequently Asked QuestionsJoin The DiscordBugs & Feature RequestsTerms & Privacy