コード例 #1
0
        public static void Menu()
        {
            int offset = 3;
            int select;

            do
            {
                Console.WriteLine("╔═╤═╤═╡ MATERIAL MENU ╞═════╗");
                Console.WriteLine("║0├─┤ Exit                  ║");
                Console.WriteLine("║1├─┤ Insert                ║");
                Console.WriteLine("║2├─┤ Reset                 ║");
                Console.WriteLine("╚═╧═╧═══════════════════════╝");
                ShowAll(offset);

                Console.Write("> ");
                select = Formations.GetInt(Console.ReadLine());
                Console.Clear();

                if (select == 0)
                {
                    return;
                }
                else if (select == 2)
                {
                    Material.ResetAll();
                }
                else if (select >= offset && select < Material.Count + offset)
                {
                    Select(Material.Materials[select - offset]);
                }
                else if (select > 0)
                {
                    Select(new Material {
                        Id = Material.NextId
                    });
                }
                else
                {
                    Formations.NotFound("Action");
                }
            }while (true);
        }
コード例 #2
0
        public static void Menu()
        {
            int offset = 2;
            int select;

            do
            {
                Console.WriteLine("╔═╤═╤═╡ BUILDING MENU ╞═════╗");
                Console.WriteLine("║0├─┤Exit                   ║");
                Console.WriteLine("║1├─┤Insert                 ║");
                Console.WriteLine("╚═╧═╧═══════════════════════╝");
                ShowAll(offset);

                Console.Write("> ");
                select = Formations.GetInt(Console.ReadLine());
                Console.Clear();

                if (select == 0)
                {
                    return;
                }
                else if (select >= offset && select < General.Count + offset)
                {
                    Update(General.Generals[select - offset].Id);
                }
                else if (select > 0)
                {
                    string id = General.NextId;
                    ManageGeneral.Update(new General {
                        Id = id
                    });
                    Update(id);
                }
                else
                {
                    Formations.NotFound("Action");
                }
            }while (true);
        }
コード例 #3
0
        private static void Select(Material material)
        {
            char select;

            do
            {
                Console.WriteLine("╔═╤═╤═══╡ {0}. {1} ╞════════", material.Id, material.Name.ToUpper());
                Console.WriteLine("║0├─┤ Exit");
                Console.WriteLine("║1├─┤ Change name");
                Console.WriteLine("║2├─┤ Type: {0}", material.GetTypeMaterial);
                Console.WriteLine("║3├─┤ Mod: {0}", material.GetMod);
                Console.WriteLine("║4├─┤ Color: {0}", material.Color);

                string ProducedIn = string.Join(", ", General.Generals.Where(gen => InputOutput.InputsOutputs.Count(io => io.Outputs != null && io.GeneralId == gen.Id && io.Outputs.Count(it => it.Id == material.Id) != 0) != 0).Select(sel => sel.Name));
                Console.WriteLine("║ ├─┤ Produced in: {0}", ProducedIn);

                string RequiredFor = string.Join(", ", General.Generals.Where(gen => InputOutput.InputsOutputs.Count(io => io.Inputs != null && io.GeneralId == gen.Id && io.Inputs.Count(it => it.Id == material.Id) != 0) != 0).Select(sel => sel.Name));
                Console.WriteLine("║ ├─┤ Required for: {0}", RequiredFor);

                string UsedToBuild = string.Join(", ", General.Generals.Where(gen => gen.BuildCosts.Count(item => item.Id == material.Id) != 0).Select(sel => sel.Name));
                Console.WriteLine("║ ├─┤ Used to build: {0}", UsedToBuild);
                Console.WriteLine("║8├─┤ Delete");
                Console.WriteLine("║9├─┤ Save");
                Console.WriteLine("╚═╧═╧═════════════════{0}", "═".PadRight(material.Id.Length + material.Name.Length, '═'));

                Console.Write("> ");
                select = Console.ReadKey().KeyChar;
                Console.Clear();

                if (select == '0')
                {
                    return;
                }
                else if (select == '1')
                {
                    material.Name = Formations.GetValue("Name", "string");
                }
                else if (select == '2')
                {
                    string type = ManageType.SetType("Item");
                    if (type != null)
                    {
                        material.Type = type;
                    }
                }
                else if (select == '3')
                {
                    string mod = ManageMod.SetMod();
                    if (mod != null)
                    {
                        material.Mod = mod;
                    }
                }
                else if (select == '4')
                {
                    material.Color = Formations.GetValue("Color", "string");
                }
                else if (select == '8')
                {
                    Console.WriteLine("═════════╡ TO DELETE {0}? (Y - YES)╞═════════", material.Name.ToUpper());
                    Console.Write("> ");
                    select = Console.ReadKey().KeyChar;
                    Console.Clear();

                    if (select.ToString().ToLower() == "y")
                    {
                        material.Delete();
                        return;
                    }
                }
                else if (select == '9')
                {
                    material.Save(); return;
                }
                else
                {
                    Formations.NotFound("Action");
                }
            }while (true);
        }
コード例 #4
0
        public static void Update(General general)
        {
            char select;

            do
            {
                Console.WriteLine("═════════╡ GENERAL ╞═════════");
                Console.WriteLine("ID: {0}", general.Id);
                Console.WriteLine("[1] Name: {0}", general.Name);
                Console.WriteLine("[2] Type: {0}", general.GetTypeMaterial);
                Console.WriteLine("[3] Description: {0}", general.Description);
                Console.WriteLine("[4] Health: {0}", general.Health);
                Console.WriteLine("[5] Size: {0}", general.Size);
                Console.WriteLine("[6] Build Time: {0}", general.BuildTime);
                Console.WriteLine("[7] Build Cost: {0}", general.BuildCosts);
                Console.WriteLine("[8] Mod: {0}", general.GetMod);
                Console.WriteLine("Weight: {0}", general.Weight);
                Console.WriteLine("[9] Save");
                Console.WriteLine("[0] Exit");

                Console.Write("> ");
                select = Console.ReadKey().KeyChar;
                Console.Clear();

                if (select == '0')
                {
                    bool allCorrect = true;

                    General targetGeneral = General.GetGeneral(general.Id);

                    if (targetGeneral != null && general.Name != targetGeneral.Name || general.Type != targetGeneral.Type || general.BuildCosts != targetGeneral.BuildCosts || general.Mod != targetGeneral.Mod)
                    {
                        allCorrect = false;
                    }
                    else if (general.Name != null || general.Type != null || general.BuildCosts != null || general.Mod != null)
                    {
                        allCorrect = false;
                    }

                    if (allCorrect)
                    {
                        return;
                    }
                    else
                    {
                        Console.WriteLine("═════════╡ YOU ARE SURE WANT TO EXIT? (Y - YES)╞═════════");
                        Console.Write("> ");
                        select = Console.ReadKey().KeyChar;
                        Console.Clear();

                        if (select.ToString().ToLower() == "y")
                        {
                            return;
                        }
                    }
                }
                else if (select == '1')
                {
                    string name = Formations.GetValue("name", "string");
                    if (name == null)
                    {
                        Formations.NotCorrect("Name");
                        continue;
                    }

                    if (General.Generals.Count(gen => gen.Name == name) != 0)
                    {
                        Console.WriteLine("═════════╡ THIS BUILDING ALREADY EXIST ╞═════════");
                        Console.WriteLine("1. Go to edit");
                        Console.WriteLine("0. Exit");

                        Console.Write("> ");
                        select = Console.ReadKey().KeyChar;
                        Console.Clear();

                        if (select == '1')
                        {
                            Update(General.Generals.Where(gen => gen.Name == name).First());
                            return;
                        }
                    }

                    general.Name = name;
                }
                else if (select == '2')
                {
                    string type = ManageType.SetType("Block");
                    if (type != null)
                    {
                        general.Type = type;
                    }
                }
                else if (select == '3')
                {
                    general.Description = Formations.GetValue("description", "string");
                }
                else if (select == '4')
                {
                    general.Health = Formations.GetValue("health", "int");
                }
                else if (select == '5')
                {
                    general.Size = Formations.GetValue("size", "size");
                }
                else if (select == '6')
                {
                    general.BuildTime = Formations.GetValue("build Time", "double");
                }
                else if (select == '7')
                {
                    Item[] buildCost = ManageMaterial.SetItems();
                    if (buildCost != null)
                    {
                        general.BuildCost = string.Join(";", buildCost.Select(inp => inp.Id + " " + inp.Amount));
                    }
                }
                else if (select == '8')
                {
                    string mod = ManageMod.SetMod();
                    if (mod != null)
                    {
                        general.Mod = mod;
                    }
                }
                else if (select == '9')
                {
                    bool allCorrect = true;

                    if (general.Name == null)
                    {
                        allCorrect = false;
                        Formations.NotCorrect("Name");
                    }
                    if (general.Type == null)
                    {
                        allCorrect = false;
                        Formations.NotCorrect("Type");
                    }
                    if (general.BuildCosts == null)
                    {
                        allCorrect = false;
                        Formations.NotCorrect("Build Cost");
                    }
                    if (general.Mod == null)
                    {
                        allCorrect = false;
                        Formations.NotCorrect("Mod");
                    }

                    if (allCorrect)
                    {
                        general.Save();
                        return;
                    }
                }
                else
                {
                    Formations.NotFound("Action");
                }
            }while (true);
        }
コード例 #5
0
        private static void FindItem()
        {
            Item           targetItem = ManageMaterial.SetItems(true).First();   //TODO заменить функцию выбора предмета.
            List <Summary> summaries  = new List <Summary> {
                new Summary
                {
                    Id      = targetItem.Id,
                    Outcome = targetItem.Amount,
                    Name    = Material.GetMaterial(targetItem.Id).Name          //TODO добавить в Item функцию получения материала.
                }
            };

            List <Factory> factories = new List <Factory>();

            bool repeat;

            do
            {
                repeat = false;

                for (int s = 0; s < summaries.Count; s++)
                {
                    if (summaries[s].Blocked || summaries[s].Conveyor)
                    {
                        continue;
                    }

                    Summary summary = summaries[s];
                    double  ratio   = summary.Income - summary.Outcome;

                    if (ratio < 0)
                    {
                        repeat = true;

                        //===== INPUT/OUTPUT BLOCK =====//
                        int           inputOutputsIndex = 0;
                        InputOutput[] inputOutputs      = InputOutput.InputsOutputs.Where(io => io.Outputs != null && io.Outputs.Count(it => it.Id == summary.Id) != 0).ToArray();

                        if (inputOutputs.Length == 0)
                        {
                            inputOutputsIndex = -1;
                        }
                        else if (inputOutputs.Length > 0)
                        {
                            int offset = 2;
                            int select;

                            do
                            {
                                Console.WriteLine("╔═╤═╤═╡ SELECT FACTORY ({0}) ╞═════", summary.Name.ToUpper());
                                Console.WriteLine("║0├─┤ Exit");
                                Console.WriteLine("║1├─┤ Conveyor");
                                for (int io = 0; io < inputOutputs.Length; io++)
                                {
                                    Console.WriteLine("║{0}├─┤ {1}", io + offset, inputOutputs[io].ToString());
                                }
                                Console.WriteLine("╚═╧═╧════════════════════════");
                                Console.Write("> ");
                                select = Formations.GetInt(Console.ReadKey().KeyChar.ToString());
                                Console.Clear();

                                if (select == 0)
                                {
                                    return;
                                }
                                else if (select == 1)
                                {
                                    inputOutputsIndex = -1;
                                    break;
                                }
                                else if (select >= offset && select <= inputOutputs.Length + offset)
                                {
                                    inputOutputsIndex = select - offset;
                                    break;
                                }
                                else
                                {
                                    Formations.NotFound("Action");
                                }
                            }while (true);
                        }

                        if (inputOutputsIndex == -1)
                        {
                            double select = 0;

                            Console.WriteLine("═════╡ ENTER AMOUNT OF {0} ╞═════", summary.Name.ToUpper());
                            Console.Write("> ");
                            select = Formations.GetDouble(Console.ReadLine());
                            Console.Clear();

                            if (select <= 0)
                            {
                                return;
                            }

                            summary.Income   = select;
                            summary.Conveyor = true;

                            continue;
                        }

                        InputOutput inputOutput = inputOutputs[inputOutputsIndex];
                        General     general     = inputOutput.GetGeneral;

                        //===== FACTORY BLOCK =====//
                        Factory factory = new Factory {
                            Id     = general.Id,
                            Name   = general.Name,
                            Amount = Math.Ceiling(Math.Abs(ratio) / inputOutput.OutputsPerSecond.Where(ops => ops.Id == summary.Id).First().Amount),
                            Input  = inputOutput.InputsPerSecond,
                            Output = inputOutput.OutputsPerSecond,
                            Ratio  = 1
                        };

                        summaries = EditSummaries(summaries, factory);

                        if (factories.Count(fc => fc.Id == factory.Id) != 0)
                        {
                            Factory existFactory = factories.Where(fc => fc.Id == factory.Id).First();

                            existFactory.Amount += factory.Amount;
                        }
                        else
                        {
                            factories.Add(factory);
                        }
                    }
                }
            }while (repeat);

            CorrectSchematic(summaries, factories);
        }
コード例 #6
0
        static void Main(string[] args)
        {
            SqliteDataAccess.DataAccess();

            bool isAdministrator = false;
            char select;

            do
            {
                Console.WriteLine("╔════════╡ MENU ╞════════╗");
                Console.WriteLine("╟─┐ ┌────────────────────╢");
                Console.WriteLine("║0├─┤Exit                ║");
                Console.WriteLine("║1├─┤Calculator          ║");
                if (isAdministrator)
                {
                    Console.WriteLine("║2├─┤Manager Building    ║");
                    Console.WriteLine("║3├─┤Manager Material    ║");
                    Console.WriteLine("║4├─┤Log Out             ║");
                }
                else
                {
                    Console.WriteLine("║2├─┤Administrator       ║");
                }
                Console.WriteLine("╟─┘ └────────────────────╢");
                Console.WriteLine("╚════════════════════════╝");
                Console.Write("> ");
                select = Console.ReadKey().KeyChar;
                Console.Clear();

                if (select == '0')
                {
                    return;
                }
                else if (select == '1')
                {
                    ManageCalculator.Menu();
                }
                else if (isAdministrator)
                {
                    if (select == '2')
                    {
                        ManageBuilding.Menu();
                    }
                    else if (select == '3')
                    {
                        ManageMaterial.Menu();
                    }
                    else if (select == '4')
                    {
                        isAdministrator = false;
                    }
                    else
                    {
                        Formations.NotFound("Action");
                    }
                }
                else
                {
                    if (select == '2')
                    {
                        isAdministrator = EnterPassword();
                    }
                    else
                    {
                        Formations.NotFound("Action");
                    }
                }
            }while (true);
        }
コード例 #7
0
        private static void Update(string id)
        {
            string[] select;

            do
            {
                General general = General.GetGeneral(id);
                if (general == null)
                {
                    return;
                }

                InputOutput[] inputsOutputs = general.GetInputOutputs;
                Power[]       powers        = general.GetPowers;

                ShowInfo(id);

                Console.WriteLine("╔═══╤╤╡ UPDATE BUILDING ╞═════╗");
                Console.WriteLine("║ 0 ├┤ Exit                   ║");
                Console.WriteLine("║ 1 ├┤ Edit general           ║");
                Console.WriteLine("╠═══╪╪════════════════════════╝");

                //Power
                Console.WriteLine("║2 0├┤ Add Power");
                for (int i = 0; i < powers.Length; i++)
                {
                    Console.WriteLine("║2 {0}├┤ Edit {1}", i + 1, powers[i]);
                }

                //Input/Output
                Console.WriteLine("║5 0├┤ Add Input/Output");
                for (int i = 0; i < inputsOutputs.Length; i++)
                {
                    Console.WriteLine("║5 {0}├┤ Edit {1}", i + 1, inputsOutputs[i]);
                }

                Console.WriteLine("╠═══╪╪════════════════════════╗");
                Console.WriteLine("║ 8 ├┤ Delete                 ║");
                Console.WriteLine("╚═══╧╧════════════════════════╝");

                Console.Write("> ");
                select = Console.ReadLine().Split(' ');
                Console.Clear();

                if (select.First() == "0")
                {
                    return;
                }
                else if (select.First() == "1")
                {
                    ManageGeneral.Update(general);
                }
                else if (select.First() == "2")
                {
                    if (select.Length == 2)
                    {
                        int subaction = Formations.GetInt(select[1]) - 1;

                        if (subaction >= 0 && subaction < inputsOutputs.Length)
                        {
                            ManagePower.Update(powers[subaction]);
                        }
                        else if (subaction == -1)
                        {
                            ManagePower.Update(new Power {
                                Id = Power.NextId, GeneralId = general.Id
                            });
                        }
                        else
                        {
                            Formations.NotFound("SubAction");
                        }
                    }
                    else
                    {
                        Formations.NotFound("SubAction");
                    }
                }
                else if (select.First() == "5")
                {
                    if (select.Length == 2)
                    {
                        int subaction = Formations.GetInt(select[1]) - 1;

                        if (subaction >= 0 && subaction < inputsOutputs.Length)
                        {
                            ManageInputOutput.Update(inputsOutputs[subaction]);
                        }
                        else if (subaction == -1)
                        {
                            ManageInputOutput.Update(new InputOutput(general.Id));
                        }
                        else
                        {
                            Formations.NotFound("SubAction");
                        }
                    }
                    else
                    {
                        Formations.NotFound("SubAction");
                    }
                }
                else if (select.First() == "8")
                {
                    Delete(id);
                }
                else
                {
                    Formations.NotFound("Action");
                }
            }while (true);
        }
コード例 #8
0
        public static void Update(InputOutput inputOutput)
        {
            char select;

            do
            {
                Console.WriteLine("═════════╡ INPUT/OUTPUT ╞═════════");
                Console.WriteLine("ID: {0}", inputOutput.Id);
                Console.WriteLine("Owner: {0}", General.Generals.Where(gen => gen.Id == inputOutput.GeneralId).First().Name);
                Console.WriteLine("[1] Input: {0}", inputOutput.Inputs == null ? "null" : string.Join(", ", inputOutput.Inputs.Select(sel => sel.ToString())));
                Console.WriteLine("[2] Output: {0}", inputOutput.Outputs == null ? "null" : string.Join(", ", inputOutput.Outputs.Select(sel => sel.ToString())));
                Console.WriteLine("[3] Production Time: {0}", inputOutput.ProductionTime);
                Console.WriteLine("Weight: {0}", inputOutput.Weight);
                Console.WriteLine("[8] Delete");
                Console.WriteLine("[9] Save");
                Console.WriteLine("[0] Exit");

                Console.Write("> ");
                select = Console.ReadKey().KeyChar;
                Console.Clear();

                if (select == '0')
                {
                    bool allCorrect = true;

                    if (inputOutput.ProductionTime != null || inputOutput.Inputs != null || inputOutput.Outputs != null)
                    {
                        allCorrect = false;
                    }

                    if (allCorrect)
                    {
                        return;
                    }
                    else
                    {
                        Console.WriteLine("═════════╡ YOU ARE SURE WANT TO EXIT? (Y - YES)╞═════════");
                        Console.Write("> ");
                        select = Console.ReadKey().KeyChar;
                        Console.Clear();

                        if (select.ToString().ToLower() == "y")
                        {
                            return;
                        }
                    }
                }
                else if (select == '1')
                {
                    Item[] input = ManageMaterial.SetItems();
                    if (input != null)
                    {
                        inputOutput.Input = string.Join(";", input.Select(inp => inp.Id + " " + inp.Amount));
                    }
                }
                else if (select == '2')
                {
                    Item[] output = ManageMaterial.SetItems(true);
                    if (output != null)
                    {
                        inputOutput.Output = string.Join(";", output.Select(inp => inp.Id + " " + inp.Amount));
                    }
                }
                else if (select == '3')
                {
                    inputOutput.ProductionTime = Formations.GetValue("Production Time", "double");
                }
                else if (select == '8')
                {
                    Console.WriteLine("═════════╡ TO DELETE {0}? (Y - YES)╞═════════", inputOutput.ToString().ToUpper());
                    Console.Write("> ");
                    select = Console.ReadKey().KeyChar;
                    Console.Clear();

                    if (select.ToString().ToLower() == "y")
                    {
                        inputOutput.Delete();
                        return;
                    }
                }
                else if (select == '9')
                {
                    bool allCorrect = true;

                    if (inputOutput.ProductionTime == null)
                    {
                        allCorrect = false;
                        Formations.NotCorrect("Production Time");
                    }
                    if (inputOutput.Inputs == null && inputOutput.Outputs == null)
                    {
                        allCorrect = false;
                        Formations.NotCorrect("Input or Output");
                    }

                    if (allCorrect)
                    {
                        inputOutput.Save();
                        return;
                    }
                }
                else
                {
                    Formations.NotFound("Action");
                }
            }while (true);
        }
コード例 #9
0
        public static void Update(Power power)
        {
            char select;

            do
            {
                Console.WriteLine("═════════╡ UPDATE POWER ╞═════════");
                Console.WriteLine("ID: {0}", power.Id);
                Console.WriteLine("General: {0}", power.GetGeneral.Name);
                Console.WriteLine("[1] Input Output: {0}", power.InputOutputId);
                Console.WriteLine("[2] Power Use: {0}", power.PowerUse);
                Console.WriteLine("[3] Power Capacity: {0}", power.PowerCapacity);
                Console.WriteLine("[4] Power Generation: {0}", power.PowerGeneration);
                Console.WriteLine("[8] Delete");
                Console.WriteLine("[9] Save");
                Console.WriteLine("[0] Exit");

                Console.Write("> ");
                select = Console.ReadKey().KeyChar;
                Console.Clear();

                if (select == '0')
                {
                    bool allCorrect = true;

                    if (power.PowerUse != null || power.PowerCapacity != null || power.PowerGeneration != null)
                    {
                        allCorrect = false;
                    }

                    if (allCorrect)
                    {
                        return;
                    }
                    else
                    {
                        Console.WriteLine("═════════╡ YOU ARE SURE WANT TO EXIT? (Y - YES)╞═════════");
                        Console.Write("> ");
                        select = Console.ReadKey().KeyChar;
                        Console.Clear();

                        if (select.ToString().ToLower() == "y")
                        {
                            return;
                        }
                    }
                }
                else if (select == '1')
                {
                    string id = SetInputOutput(power.GetGeneral.GetInputOutputs);

                    if (id != "")
                    {
                        power.InputOutputId = id;
                    }
                }
                else if (select == '2')
                {
                    power.PowerUse = Formations.GetValue("Power Use", "double");
                }
                else if (select == '3')
                {
                    power.PowerCapacity = Formations.GetValue("Power Capacity", "double");
                }
                else if (select == '4')
                {
                    power.PowerGeneration = Formations.GetValue("Power Generation", "double");
                }
                else if (select == '8' && Delete(power))
                {
                    return;
                }
                else if (select == '9')
                {
                    bool allCorrect = true;

                    if (power.PowerUse == null && power.PowerCapacity == null && power.PowerGeneration == null)
                    {
                        allCorrect = false;
                        Formations.NotCorrect("Power Use or Capacity or Generation");
                    }

                    if (allCorrect)
                    {
                        power.Save();
                        return;
                    }
                }
                else
                {
                    Formations.NotFound("Action");
                }
            }while (true);
        }