public override void Execute(List <Weapon> weapons, string[] args) { string type = args[1]; string[] typeArgs = type.Split(); string levelOfRearityAsString = typeArgs[0]; string typeOfWeapon = typeArgs[1]; string name = args[2]; LevelOfRearity levelOfRerity = (LevelOfRearity)Enum.Parse(typeof(LevelOfRearity), levelOfRearityAsString); var weaponType = Assembly .GetExecutingAssembly() .GetTypes() .FirstOrDefault(x => x.Name == typeOfWeapon); var constructor = weaponType .GetConstructor(BindingFlags.Instance | BindingFlags.Public, null, new Type[] { typeof(string), typeof(Stats), typeof(LevelOfRearity), typeof(List <Gem>) }, null); var weapon = constructor.Invoke(new object[] { name, new Stats(), levelOfRerity, new List <Gem>() }); weapons.Add((Weapon)weapon); }
public Knife(string name, Stats stats, LevelOfRearity levelOfRearity, List <Gem> gems) : base(name, stats, levelOfRearity, gems) { this.Stats.MinDamage = 3 * (int)LevelOfRearity; this.Stats.MaxDamage = 4 * (int)LevelOfRearity; this.Stats.NumberOfSockets = 2 * (int)LevelOfRearity; }
protected Weapon(string name, Stats stats, LevelOfRearity levelOfRearity, List <Gem> gems) { this.Name = name; this.Stats = stats; this.LevelOfRearity = levelOfRearity; this.Gems = gems; this.GemPlacement = new Dictionary <int, Gem>(); }