Esempio n. 1
0
 public Engine(List <IWeapon> weapons, WeaponFactory weaponFactory, GemFactory gemFactory)
 {
     this.weapons       = weapons;
     this.weaponFactory = weaponFactory;
     this.gemFactory    = gemFactory;
     IsRunning          = true;
 }
Esempio n. 2
0
        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;
                }
            }
        }
Esempio n. 3
0
        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>();
 }
Esempio n. 5
0
    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);
    }
Esempio n. 6
0
 public Engine()
 {
     this.manager    = new WeaponManager();
     this.gemFactory = new GemFactory();
     this.reader     = new InputReader();
     this.writer     = new OutputWriter();
 }
Esempio n. 7
0
        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)
 {
 }
Esempio n. 9
0
 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;
 }
Esempio n. 14
0
 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);
 }
Esempio n. 16
0
        static void Main()
        {
            IRepository    repository    = new WeaponRepository();
            IWeaponFactory weaponFactory = new WeaponFactory();
            IGemFactory    gemFactory    = new GemFactory();

            Engine engine = new Engine(repository, weaponFactory, gemFactory);

            engine.Run();
        }
Esempio n. 17
0
    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();
    }
Esempio n. 18
0
        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();
        }
Esempio n. 19
0
        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;
 }
Esempio n. 21
0
        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();
        }
Esempio n. 22
0
    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();
        }
Esempio n. 24
0
        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();
    }
Esempio n. 26
0
        //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;
            }
        }
Esempio n. 27
0
        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);
            }
        }
Esempio n. 28
0
 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;
 }
Esempio n. 29
0
        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);
        }
Esempio n. 30
0
    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();
    }