public Engine(List <IWeapon> weapons, WeaponFactory weaponFactory, GemFactory gemFactory) { this.weapons = weapons; this.weaponFactory = weaponFactory; this.gemFactory = gemFactory; IsRunning = true; }
public static void Main(string[] args) { Axe axe = new Axe("BigFuckinAxe", RarityType.Epic); WeaponFactory weaponFactory = new WeaponFactory(); GemFactory gemFactory = new GemFactory(); List <Weapon> weapons = new List <Weapon>(); string command; while ((command = Console.ReadLine()) != "END") { string[] commTokens = command.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToArray(); string currentCommand = commTokens[0]; switch (currentCommand) { case "Create": string[] createItemTypeAndRarity = commTokens[1].Split(); string rarityType = createItemTypeAndRarity[0]; string weaponType = createItemTypeAndRarity[1]; string weaponName = commTokens[2]; Weapon weaponToAdd = weaponFactory.CreateWeapon(rarityType, weaponType, weaponName); weapons.Add(weaponToAdd); break; case "Add": string enhanceWeaponName = commTokens[1]; int enhanceSocketIndex = int.Parse(commTokens[2]); string[] gemArgs = commTokens[3].Split(); Gem currentGem = gemFactory.CreateGem(gemArgs); Weapon weaponToEnhance = weapons.FirstOrDefault(x => x.Name.Equals(enhanceWeaponName)); weaponToEnhance.EnhanceWithGem(enhanceSocketIndex, currentGem); break; case "Remove": string removeEnhanceWeaponName = commTokens[1]; int removeEnhanceSocketIndex = int.Parse(commTokens[2]); Weapon weaponToRemoveEnhance = weapons.FirstOrDefault(x => x.Name.Equals(removeEnhanceWeaponName)); weaponToRemoveEnhance.RemoveGem(removeEnhanceSocketIndex); break; case "Print": string printWeaponName = commTokens[1]; Weapon printWeapon = weapons.FirstOrDefault(x => x.Name.Equals(printWeaponName)); Console.WriteLine(printWeapon); break; default: break; } } }
public void Init() { var gemFactory = new GemFactory(); game = new Game(); map = new Map(Rules.TenCells); new BlockBuilder(map) .BuildSurface() .BuildWalls() .BuildEntrance() // core setup .BuildStore(game.Hub) .WithGem(new Point(6, 1), gemFactory.Get <Coal>()); mapVisualiser = map.WithRender() .Render <SurfaceTile>(' ') .Render <DirtTile>('#') .RenderItem <Store>('$') .RenderGem <Coal>('+') .WithDigger(); Console.WriteLine(mapVisualiser.Print()); game.SetMap(map); }
public WeaponsManager() { this.weapons = new List <IWeapon>(); this.gemFactory = new GemFactory(); this.weaponFactory = new WeaponFactory(); this.writer = new Writer <IWeapon>(); }
public void AddGemToWeapon(string weaponName, int socketIndex, string gemInfo) { GemFactory gemFactory = new GemFactory(); IGem newGem = gemFactory.CreateGem(gemInfo); weapons.First(x => x.Name.Equals(weaponName)).SocketWithGems.Insert(socketIndex, newGem); }
public Engine() { this.manager = new WeaponManager(); this.gemFactory = new GemFactory(); this.reader = new InputReader(); this.writer = new OutputWriter(); }
public override string Execute() { string[] gemArgs = CommandArgs[3].Split(); IGem gem = GemFactory.CreateGem(gemArgs[0], gemArgs[1]); this.WeaponRepository.AddGem(CommandArgs[1], int.Parse(CommandArgs[2]), gem); return(null); }
public PrintCommand( IDatabase <Weapon> repository, WeaponFactory weaponFactory, GemFactory gemFactory, string weaponName) : base(repository, weaponFactory, gemFactory, weaponName) { }
public Engine(IReader reader, IWriter writer) { this.reader = reader; this.writer = writer; this.weaponFactory = new WeaponFactory(); this.gemFactory = new GemFactory(); this.weapons = new Dictionary <string, IWeapon>(); }
public void Run() { while (true) { string userInput = Console.ReadLine(); string[] data = userInput.Split(";"); string commandName = data[0]; if (commandName == "Create") { string[] weaponInfo = data[1].Split(" "); string weaponRarity = weaponInfo[0]; string weaponType = weaponInfo[1]; string weaponName = data[2]; var weapon = WeaponFactory.CreateWeapon(weaponType, weaponRarity, weaponName); this.repository.AddWeapon(weapon); } else if (commandName == "Add") { string weaponName = data[1]; IWeapon weapon = this.repository.GetWeapon(weaponName); int gemSocketIndex = int.Parse(data[2]); string[] gemInfo = data[3].Split(" "); string gemClarity = gemInfo[0]; string gemType = gemInfo[1]; var gem = GemFactory.CreateGem(gemType, gemClarity); weapon.AddGem(gem, gemSocketIndex); } else if (commandName == "Remove") { string weaponName = data[1]; IWeapon weapon = this.repository.GetWeapon(weaponName); int socketToRemoveIndex = int.Parse(data[2]); weapon.RemoveGem(socketToRemoveIndex); } else if (commandName == "Print") { string weaponName = data[1]; var weapon = this.repository.GetWeapon(weaponName); Console.WriteLine(weapon.ToString()); } else if (commandName == "END") { break; } } }
public CommandDispatcher() { this.outHandler = new OutputHandler(); this.weapons = new List <IWeapon>(); this.inHandler = new InputHandler(); this.weaponFactory = new WeaponFactory(); this.gemFactory = new GemFactory(); this.weaponAttribute = (WeaponAttribute)typeof(Weapon).GetCustomAttributes(true).First(); }
public CommandInterpreter( IDatabase <Weapon> repository, WeaponFactory weaponFactory, GemFactory gemFactory) { this.repository = repository; this.weaponFactory = weaponFactory; this.gemFactory = gemFactory; }
public CommandInterpreter(Dictionary <string, IWeapon> weapons, ClarityFactory clarityFactory, GemFactory gemFactory, RarityFactory rarityFactory, WeaponFactory weaponFactory, ref List <string> printOrder) { this.weapons = weapons; this.clarityFactory = clarityFactory; this.gemFactory = gemFactory; this.rarityFactory = rarityFactory; this.weaponFactory = weaponFactory; this.printOrder = printOrder; }
public RemoveGemFromWeaponCommand( IDatabase <Weapon> repository, WeaponFactory weaponFactory, GemFactory gemFactory, string weaponName, int socketIndex) : base(repository, weaponFactory, gemFactory, weaponName) { this.socketIndex = socketIndex; }
public Engine(Dictionary <string, IWeapon> weapons, ClarityFactory clarityFactory, GemFactory gemFactory, RarityFactory rarityFactory, WeaponFactory weaponFactory, List <string> printOrder) { this.weapons = weapons; this.clarityFactory = clarityFactory; this.gemFactory = gemFactory; this.rarityFactory = rarityFactory; this.weaponFactory = weaponFactory; this.printOrder = printOrder; this.interpreter = new CommandInterpreter(weapons, clarityFactory, gemFactory, rarityFactory, weaponFactory, ref printOrder); }
static void Main() { IRepository repository = new WeaponRepository(); IWeaponFactory weaponFactory = new WeaponFactory(); IGemFactory gemFactory = new GemFactory(); Engine engine = new Engine(repository, weaponFactory, gemFactory); engine.Run(); }
public static void Main(string[] args) { var repository = new WeaponRepository(); var interpreter = new CommandInterpreter(); var weaponFactory = new WeaponFactory(); var gemFactory = new GemFactory(); IEngine engine = new Engine(gemFactory, weaponFactory, interpreter, repository); engine.Run(); }
public static void Main() { IGemFactory gemFactory = new GemFactory(); IWeaponFactory weaponFactory = new WeaponFactory(); IRepository weaponRepository = new WeaponRepository(); ICommandInterpreter commandInterpreter = new CommandInterpreter(weaponRepository, weaponFactory, gemFactory); IRunnable engine = new Engine(commandInterpreter); engine.Run(); }
static void Main(string[] args) { var weaponFactory = new WeaponFactory(); var gemfactory = new GemFactory(); var repository = new Repository(); var engine = new Engine(weaponFactory, gemfactory, repository); engine.Run(); }
protected Command( IDatabase <Weapon> repository, WeaponFactory weaponFactory, GemFactory gemFactory, string weaponName) { this.Repository = repository; this.WeaponFactory = weaponFactory; this.GemFactory = gemFactory; this.WeaponName = weaponName; }
static void Main(string[] args) { IWriter writer = new ConsoleWriter(); IRepository repository = new Repository(writer); IWeaponFactory weaponFactory = new WeaponFactory(); IGemFactory gemFactory = new GemFactory(); var engine = new Engine(repository, weaponFactory, gemFactory); engine.Run(); }
public static void Main() { IInputOutputManager inputOutputManager = new InputOutputManager(); ICommandDispatcher commandDispatcher = new CommandDispatcher(); IWeaponFactory weaponFactory = new WeaponFactory(); IGemFactory gemFactory = new GemFactory(); IEngine engine = new Engine(inputOutputManager, commandDispatcher, weaponFactory, gemFactory); engine.Run(); }
public static void Main() { var weaponRepository = new WeaponRepository(); var weaponFactory = new WeaponFactory(); var gemFactory = new GemFactory(); var commandInterpreter = new CommandInterpreter(weaponRepository, weaponFactory, gemFactory); var inputReader = new InputReader(commandInterpreter); inputReader.StartReadingCommands(); }
public static void Main() { Dictionary <string, IWeapon> weapons = new Dictionary <string, IWeapon>(); WeaponFactory weapongFactory = new WeaponFactory(); GemFactory gemFactory = new GemFactory(); ContributionAttribute contribAttribute = typeof(Weapon).GetCustomAttribute <ContributionAttribute>(); string inputLine; while ((inputLine = Console.ReadLine()) != "END") { string[] commandArgs = inputLine.Split(';'); string commandType = commandArgs[0]; switch (commandType) { case "Create": weapons.Add(commandArgs[2], weapongFactory.ProduceWeapon(commandArgs[1], commandArgs[2])); break; case "Add": IGem gem = gemFactory.ProduceGem(commandArgs[3]); IWeapon weаpon = weapons[commandArgs[1]]; weаpon.InsertGem(gem, int.Parse(commandArgs[2])); break; case "Remove": weаpon = weapons[commandArgs[1]]; weаpon.RemoveGem(int.Parse(commandArgs[2])); break; case "Print": weаpon = weapons[commandArgs[1]]; weаpon.Print(); break; case "Author": Console.WriteLine($"Author: {contribAttribute.Author}"); break; case "Revision": Console.WriteLine($"Revision: {contribAttribute.Revision}"); break; case "Description": Console.WriteLine($"Class description: {contribAttribute.Desctiption}"); break; case "Reviewers": Console.WriteLine($"Reviewers: {string.Join(", ", contribAttribute.Reviewers)}"); break; } } }
public static void Main() { WeaponRepository repository = new WeaponRepository(); CommandInterpreter interpreter = new CommandInterpreter(); WeaponFactory weaponFactory = new WeaponFactory(); GemFactory gemFactory = new GemFactory(); IRunnable engine = new Engine(gemFactory, weaponFactory, interpreter, repository); engine.Run(); }
//Refactor this to a separate class Command??? //Also the attribute can be moved in some other class may be, but I will leave them here for now //The Attributes part was added latter from different exercise and was not implemented in the best possible way private void ProcessTheCommand(string input) { var inputSplit = input.Split(';'); string command = inputSplit[0]; string name = String.Empty; int index = 0; // can think of making enum if (command != "Author" && command != "Revision" && command != "Description" && command != "Reviewers") { name = inputSplit[1]; } var attributes = typeof(Weapon).GetCustomAttributes(); CustomAttribute typeAttribute = attributes.ToArray()[0] as CustomAttribute; switch (command) { case "Create": Repository.Repository.AddWeapon(WeaponFactory.CreateWeapon(input)); break; case "Add": index = int.Parse(inputSplit[2]); string gem = inputSplit[3]; Repository.Repository.Weapons[name].AddGemInSocket(index, GemFactory.CreateGem(gem)); break; case "Remove": index = int.Parse(inputSplit[2]); Repository.Repository.Weapons[name].RemoveGemFromSocket(index); break; case "Print": WriteLine.Write(Repository.Repository.Weapons[name].ToString()); break; case "Author": WriteLine.Write($"Author: {typeAttribute.Author}"); break; case "Revision": WriteLine.Write($"Revision: {typeAttribute.Revision}"); break; case "Description": WriteLine.Write($"Class description: {typeAttribute.Description}"); break; case "Reviewers": WriteLine.Write($"Reviewers: {typeAttribute.Reviewers}"); break; } }
public void AddGem(string[] args) { string weaponName = args[0]; int index = int.Parse(args[1]); var gem = GemFactory.CreateGem(args.Skip(2).ToArray()); if (this.weapons.Any(x => x.Name == weaponName)) { this.weapons.FirstOrDefault(x => x.Name == weaponName).AddGem(index, gem); } }
public CreateWeaponCommand( IDatabase <Weapon> repository, WeaponFactory weaponFactory, GemFactory gemFactory, string weaponName, WeaponRarities weaponRarity, WeaponTypes weaponType) : base(repository, weaponFactory, gemFactory, weaponName) { this.weaponRarity = weaponRarity; this.weaponType = weaponType; }
public override void Execute() { string weaponName = this.Data[1]; int socketIndex = int.Parse(this.Data[2]); string clarity = this.Data[3].Split()[0]; string gemType = this.Data[3].Split()[1]; IWeapon weapon = this.Repository.Weapons.Find(x => x.Name == weaponName); IGem gem = GemFactory.CreateGem(clarity, gemType); weapon.AddGem(gem, socketIndex); }
static void Main(string[] args) { Dictionary <string, IWeapon> weapons = new Dictionary <string, IWeapon>(); ClarityFactory clarityFactory = new ClarityFactory(); GemFactory gemFactory = new GemFactory(); RarityFactory rarityFactory = new RarityFactory(); WeaponFactory weaponFactory = new WeaponFactory(); List <string> printOrder = new List <string>(); Engine engine = new Engine(weapons, clarityFactory, gemFactory, rarityFactory, weaponFactory, printOrder); engine.Execute(); }