void OnSelectionChange(System.Collections.Generic.List <HexCellPlaceable> selectedPlacables)
    {
        PartGenerator selectedGenerator = null;

        foreach (HexCellPlaceable placable in selectedPlacables)
        {
            if (placable is PartGenerator)
            {
                if (selectedGenerator != null)
                {
                    selectedGenerator = null;
                    break;
                }
                selectedGenerator = placable as PartGenerator;
            }
        }

        SetPreviewedConstruction(
            selectedGenerator == null ? null : selectedGenerator.toGenerateConstruction,
            (construction) =>
        {
            Debug.LogWarning("encoding " + construction.name, this);
            ObjectPoolManager.DestroyObject(selectedGenerator.toGenerateConstruction);
            selectedGenerator.toGenerateConstruction = Construction.DecodeCopy(construction);
            selectedGenerator.toGenerateConstruction.ignoreCollisions = true;
        });

        _previewWindow.gameObject.SetActive(selectedGenerator != null);

        if (PreviewedConstruction == null)
        {
            ConstructionMaker.instance.CloseMaker();
        }
    }
Beispiel #2
0
        public override QuestResult GetResult(Party party)
        {
            int killedVictims =
                (int)((party.GetAverageStats().Speed / 3 + party.GetAverageStats().Strength / 4 - Difficulty));

            killedVictims = Math.Max(0, killedVictims);

            var qr = new QuestResult();

            qr.ReturnParty = party;
            DamageRandomParts(qr.ReturnParty, Difficulty / 100 + 4);
            // if (killedVictims <= 0) return qr;

            qr.Gold = killedVictims * party.GetAverageStats().Intelligence / 100;
            if (double.IsNaN(qr.Gold))
            {
                qr.Gold = 0;
            }

            for (var i = 0; i < 10 / 2; i++)
            {
                qr.Loot.Add(PartGenerator.GeneratePart());
            }

            qr.Report = $"You have slain {killedVictims} villagers!";

            return(qr);
        }
Beispiel #3
0
        public override QuestResult GetResult(Party party)
        {
            var killedChickens = (int)((party.GetAverageStats().Strength / 3) + party.GetAverageStats().Dexterity -
                                       Difficulty);

            var qr = new QuestResult {
                ReturnParty = party
            };

            DamageRandomParts(qr.ReturnParty, Difficulty / 100);
            qr.Report = $"Your party managed to kill {Math.Max(0, killedChickens)} chickens!";
            if (killedChickens <= 0)
            {
                return(qr);
            }
            if (killedChickens >= chickenCount)
            {
                qr.success = true;
            }

            qr.Gold = killedChickens;
            for (var i = 0; i < killedChickens / 2; i++)
            {
                qr.Loot.Add(PartGenerator.GeneratePart());
            }

            return(qr);
        }
 public RandomOrderDataConfigurator()
 {
     _credibleDatetimes     = new CredibleDatetimeGenerator();
     _clientsGenerator      = new ClientData();
     _mechaniciansGenerator = new MechanicianData();
     _logGenerator          = new TimeLogGenerator();
     _partsGenerator        = new PartGenerator(new PartTestDataHelper());
 }
Beispiel #5
0
 public PartGenerator GetTreeGenerator()
 {
     if (treeGenerator == null)
     {
         treeGenerator = new PartGenerator(GetRandom());
     }
     return(treeGenerator);
 }
Beispiel #6
0
 public void generateBodyPartVisual()
 {
     if (PartTypeOverride != PartType.TORSO)
     {
         AssignPart(PartGenerator.GeneratePart());
     }
     else
     {
         AssignPart(PartGenerator.GeneratePart(PartType.TORSO));
     }
 }
        public IEnumerable <IEncodable> Encode()
        {
            List <PartGenerator> movableGenerators = new List <PartGenerator>();
            List <IEncodable>    grabbers          = new List <IEncodable>();
            List <IEncodable>    weldingRigs       = new List <IEncodable>();

            foreach (HexCell hc in GridManager.instance.GetAllCells())
            {
                PartGenerator generator  = hc.placedMechanism as PartGenerator;
                Grabber       grabber    = hc.placedMechanism as Grabber;
                WeldingRig    weldingRig = hc.placedMechanism as WeldingRig;

                if (generator != null && generator.isSolutionMechanism)
                {
                    movableGenerators.Add(generator);
                }

                if (grabber != null)
                {
                    grabbers.Add(grabber);
                    grabber.encodingOverride = Mechanism.EncodingOverride.Solution;
                }

                if (weldingRig != null)
                {
                    weldingRigs.Add(weldingRig);
                    weldingRig.encodingOverride = Mechanism.EncodingOverride.Solution;
                }
            }


            yield return((EncodableInt)movableGenerators.Count);

            yield return(new EncodableSubGroup(movableGenerators.ConvertAll <IEncodable>(
                                                   (movableGenerator) => new EncodableSubGroup(new List <IEncodable>()
            {
                (EncodableInt)movableGenerator.Location.x,
                (EncodableInt)movableGenerator.Location.y,
                movableGenerator.toGenerateConstruction,
            })
                                                   )));


            foreach (List <IEncodable> list in new List <IEncodable> [] { grabbers, weldingRigs })
            {
                yield return((EncodableInt)list.Count);

                yield return(new EncodableSubGroup(list));
            }
        }
Beispiel #8
0
        public void GenerateMlCustomString()
        {
            IFwMetaDataCache mdc         = FwMetaDataCacheClass.Create();
            string           m_sTestPath = Path.Combine(DirectoryFinder.FwSourceDirectory,
                                                        @"DbAccess\Test\SampleCm.xml");

            mdc.InitXml(m_sTestPath, true);

            XmlDocument docSrc = new XmlDocument();

            docSrc.LoadXml(
                "<generate class=\"LexEntry\" fieldType=\"mlstring\" restrictions=\"customOnly\"> "
                + "<column label=\"$label\"> "
                + "<seq field=\"Senses\" sep=\"$delimiter:commaSpace\"> "
                + "<string field=\"$fieldName\" ws=\"$ws:analysis\" class=\"LexEntry\"/> "
                + "</seq> "
                + "</column> "
                + "</generate>");
            XmlNode source = TestXmlViewsUtils.GetRootNode(docSrc, "generate");

            Assert.IsNotNull(source);

            PartGenerator generator = new PartGenerator(mdc, source);

            string[] fields = generator.FieldNames;
            Assert.AreEqual(1, fields.Length);
            Assert.IsTrue(StringArrayIncludes(fields, "custom"));

            XmlNode[] results = generator.Generate();

            // SampleCm.xml has three ML attrs on LexEntry
            Assert.AreEqual(1, results.Length);

            XmlDocument docExpected3 = new XmlDocument();

            docExpected3.LoadXml(
                "<column label=\"Restrictions\" originalLabel=\"Restrictions\" > "
                + "<seq field=\"Senses\" sep=\"$delimiter:commaSpace\"> "
                + "<string field=\"custom\" ws=\"$ws:analysis\" class=\"LexEntry\"/> "
                + "</seq> "
                + "</column>");
            XmlNode expected3 = TestXmlViewsUtils.GetRootNode(docExpected3, "column");

            Assert.IsTrue(SomeNodeMatches(results, expected3));
        }
Beispiel #9
0
        public void GenerateParts()
        {
            IFwMetaDataCache mdc         = FwMetaDataCacheClass.Create();
            string           m_sTestPath = Path.Combine(DirectoryFinder.FwSourceDirectory,
                                                        @"DbAccess\Test\SampleCm.xml");

            mdc.InitXml(m_sTestPath, true);

            XmlDocument docSrc = new XmlDocument();

            docSrc.LoadXml(
                "<root> "
                + "<dummy1/> "
                + "<generate class=\"LexEntry\" fieldType=\"mlstring\" restrictions=\"none\"> "
                + "<column label=\"$fieldName\"> "
                + "<seq field=\"Senses\" sep=\"$delimiter:commaSpace\"> "
                + "<string field=\"$fieldName\" ws=\"$ws:analysis\"/> "
                + "</seq> "
                + "</column> "
                + "</generate> "
                + "<dummy2/> "
                + "<generate class=\"LexEntry\" fieldType=\"mlstring\" restrictions=\"none\"> "
                + "<dummyG label=\"$fieldName\"/> "
                + "</generate> "
                + "<dummy3/> "
                + "<dummy4/> "
                + "</root>");
            XmlNode source = TestXmlViewsUtils.GetRootNode(docSrc, "root");

            Assert.IsNotNull(source);

            List <XmlNode> nodes = PartGenerator.GetGeneratedChildren(source, mdc);

            Assert.AreEqual(1 + 3 + 1 + 3 + 2, nodes.Count);
            Assert.AreEqual("dummy1", nodes[0].Name);
            Assert.AreEqual("dummy2", nodes[4].Name);
            Assert.AreEqual("dummy3", nodes[8].Name);
            Assert.AreEqual("dummy4", nodes[9].Name);
            Assert.IsTrue(NameAndLabelOccur(nodes, 1, 4, "column", "CitationForm"));
            Assert.IsTrue(NameAndLabelOccur(nodes, 1, 4, "column", "Bibliography"));
            Assert.IsTrue(NameAndLabelOccur(nodes, 5, 8, "dummyG", "CitationForm"));
            Assert.IsTrue(NameAndLabelOccur(nodes, 5, 8, "dummyG", "custom"));
        }
Beispiel #10
0
        public void GenerateMlCustomString()
        {
            XmlDocument docSrc = new XmlDocument();

            docSrc.LoadXml(
                "<generate class=\"LexEntry\" fieldType=\"mlstring\" restrictions=\"customOnly\"> "
                + "<column label=\"$label\"> "
                + "<seq field=\"Senses\" sep=\"$delimiter:commaSpace\"> "
                + "<string field=\"$fieldName\" ws=\"$ws:analysis\" class=\"LexEntry\"/> "
                + "</seq> "
                + "</column> "
                + "</generate>");
            XmlNode source = TestXmlViewsUtils.GetRootNode(docSrc, "generate");

            Assert.IsNotNull(source);

            PartGenerator generator = new PartGenerator(Cache, source);

            string[] fields = generator.FieldNames;
            Assert.AreEqual(1, fields.Length);
            Assert.IsTrue(StringArrayIncludes(fields, "MyRestrictions"));

            XmlNode[] results = generator.Generate();

            // SampleCm.xml has three ML attrs on LexEntry
            Assert.AreEqual(1, results.Length);

            XmlDocument docExpected3 = new XmlDocument();

            docExpected3.LoadXml(
                "<column label=\"MyRestrictions\" originalLabel=\"MyRestrictions\" > "
                + "<seq field=\"Senses\" sep=\"$delimiter:commaSpace\"> "
                + "<string field=\"MyRestrictions\" ws=\"$ws:analysis\" class=\"LexEntry\"/> "
                + "</seq> "
                + "</column>");
            XmlNode expected3 = TestXmlViewsUtils.GetRootNode(docExpected3, "column");

            Assert.IsTrue(SomeNodeMatches(results, expected3));
        }
Beispiel #11
0
        public void GenerateParts()
        {
            XmlDocument docSrc = new XmlDocument();

            docSrc.LoadXml(
                "<root> "
                + "<dummy1/> "
                + "<generate class=\"LexEntry\" fieldType=\"mlstring\" restrictions=\"none\"> "
                + "<column label=\"$fieldName\"> "
                + "<seq field=\"Senses\" sep=\"$delimiter:commaSpace\"> "
                + "<string field=\"$fieldName\" ws=\"$ws:analysis\"/> "
                + "</seq> "
                + "</column> "
                + "</generate> "
                + "<dummy2/> "
                + "<generate class=\"LexEntry\" fieldType=\"mlstring\" restrictions=\"none\"> "
                + "<dummyG label=\"$fieldName\"/> "
                + "</generate> "
                + "<dummy3/> "
                + "<dummy4/> "
                + "</root>");
            XmlNode source = TestXmlViewsUtils.GetRootNode(docSrc, "root");

            Assert.IsNotNull(source);

            List <XmlNode> nodes = PartGenerator.GetGeneratedChildren(source, Cache);

            Assert.AreEqual(1 + 7 + 1 + 7 + 2, nodes.Count);
            Assert.AreEqual("dummy1", nodes[0].Name);
            Assert.AreEqual("dummy2", nodes[1 + 7].Name);
            Assert.AreEqual("dummy3", nodes[1 + 7 + 1 + 7].Name);
            Assert.AreEqual("dummy4", nodes[1 + 7 + 1 + 7 + 1].Name);
            Assert.IsTrue(NameAndLabelOccur(nodes, 1, 1 + 7, "column", "CitationForm"));
            Assert.IsTrue(NameAndLabelOccur(nodes, 1, 1 + 7, "column", "Bibliography"));
            Assert.IsTrue(NameAndLabelOccur(nodes, 1 + 7 + 1, 1 + 7 + 1 + 7, "dummyG", "CitationForm"));
            Assert.IsTrue(NameAndLabelOccur(nodes, 1 + 7 + 1, 1 + 7 + 1 + 7, "dummyG", "MyRestrictions"));
        }
Beispiel #12
0
        public void GenerateMlString()
        {
            XmlDocument docSrc = new XmlDocument();

            docSrc.LoadXml(
                "<generate class=\"LexEntry\" fieldType=\"mlstring\" restrictions=\"none\"> "
                + "<column label=\"$label\"> "
                + "<seq field=\"Senses\" sep=\"$delimiter:commaSpace\"> "
                + "<string field=\"$fieldName\" ws=\"$ws:analysis\"/> "
                + "</seq> "
                + "</column> "
                + "</generate>");
            XmlNode source = TestXmlViewsUtils.GetRootNode(docSrc, "generate");

            Assert.IsNotNull(source);

            PartGenerator generator = new PartGenerator(Cache, source);

            string[] fields = generator.FieldNames;
            Assert.AreEqual(7, fields.Length);
            Assert.IsTrue(StringArrayIncludes(fields, "CitationForm"));
            Assert.IsTrue(StringArrayIncludes(fields, "Bibliography"));
            Assert.IsTrue(StringArrayIncludes(fields, "Comment"));
            Assert.IsTrue(StringArrayIncludes(fields, "LiteralMeaning"));
            Assert.IsTrue(StringArrayIncludes(fields, "Restrictions"));
            Assert.IsTrue(StringArrayIncludes(fields, "SummaryDefinition"));
            Assert.IsTrue(StringArrayIncludes(fields, "MyRestrictions"));

            XmlNode[] results = generator.Generate();

            Assert.AreEqual(7, results.Length);

            XmlDocument docExpected = new XmlDocument();

            // LT-6956 : sense the test is calling Generate - add the "originalLabel" attribute.
            docExpected.LoadXml(
                "<column label=\"CitationForm\" originalLabel=\"CitationForm\" > "
                + "<seq field=\"Senses\" sep=\"$delimiter:commaSpace\"> "
                + "<string field=\"CitationForm\" ws=\"$ws:analysis\" class=\"LexEntry\"/> "
                + "</seq> "
                + "</column>");
            XmlNode expected = TestXmlViewsUtils.GetRootNode(docExpected, "column");

            Assert.IsTrue(SomeNodeMatches(results, expected), "CitationForm field is wrong");

            XmlDocument docExpected2 = new XmlDocument();

            docExpected2.LoadXml(
                "<column label=\"Bibliography\" originalLabel=\"Bibliography\"> "
                + "<seq field=\"Senses\" sep=\"$delimiter:commaSpace\"> "
                + "<string field=\"Bibliography\" ws=\"$ws:analysis\" class=\"LexEntry\"/> "
                + "</seq> "
                + "</column>");
            XmlNode expected2 = TestXmlViewsUtils.GetRootNode(docExpected2, "column");

            Assert.IsTrue(SomeNodeMatches(results, expected2), "Bibliography field is wrong");

            XmlDocument docExpected3 = new XmlDocument();

            docExpected3.LoadXml(
                "<column label=\"MyRestrictions\" originalLabel=\"MyRestrictions\"> "
                + "<seq field=\"Senses\" sep=\"$delimiter:commaSpace\"> "
                + "<string field=\"MyRestrictions\" ws=\"$ws:analysis\" class=\"LexEntry\"/> "
                + "</seq> "
                + "</column>");
            XmlNode expected3 = TestXmlViewsUtils.GetRootNode(docExpected3, "column");

            Assert.IsTrue(SomeNodeMatches(results, expected3), "generated MyRestrictions field is wrong");
        }
        public bool Decode(Encoding encodings)
        {
            Debug.Log("EncodableSolution Encoding Data\n" + encodings.DebugString());

            if (encodings.Count == 0)
            {
                return(true);
            }

            // find moveable grabbers in the level that match the save file
            List <PartGenerator> generators = new List <PartGenerator>();

            foreach (HexCell hc in GridManager.instance.GetAllCells())
            {
                PartGenerator generator = hc.placedMechanism as PartGenerator;
                if (generator != null && generator.isSolutionMechanism)
                {
                    generators.Add(generator);
                }
            }
            PartGenerator [] movableGenerators = new PartGenerator [encodings.Int(0)];
            for (int i = 0; i < movableGenerators.Length; i++)
            {
                Encoding movableGeneratorEncoding = encodings.SubEncoding(1).SubEncoding(i);

                PartGenerator moveableGenerator = generators.Find((con) => con.toGenerateConstruction.CompareTo(movableGeneratorEncoding.SubEncoding(2)) == 0);

                if (moveableGenerator != null)
                {
                    moveableGenerator.PlaceAtLocation(new IntVector2(movableGeneratorEncoding.Int(0), movableGeneratorEncoding.Int(1)));
                }
                else
                {
                    Debug.LogWarning("Couldn't find movable generator that was saved");
                }
            }

            int index = 2;

            foreach (MechanismType type in new MechanismType [] { MechanismType.Grabber, MechanismType.WeldingRig })
            {
                if (index >= encodings.Count)
                {
                    break;
                }

                Mechanism [] mechanisms = new Mechanism [encodings.Int(index)];
                index++;

                Encoding mechanismEncodingGroup = encodings.SubEncoding(index);
                index++;

                for (int i = 0; i < mechanisms.Length; i++)
                {
                    mechanisms[i] = ObjectPoolManager.GetObject <Mechanism>(GameSettings.instance.GetMechanism(type));
                    mechanisms[i].Decode(mechanismEncodingGroup.SubEncoding(i));
                }
            }


            return(true);
        }
Beispiel #14
0
        internal static void AddChildNodes(XmlNode layout, XmlDocConfigureDlg.LayoutTreeNode ltnParent, int iStart, ILayoutConverter converter)
        {
            bool           fMerging  = iStart < ltnParent.Nodes.Count;
            string         className = XmlUtils.GetMandatoryAttributeValue(layout, "class");
            List <XmlNode> nodes     = PartGenerator.GetGeneratedChildren(layout, converter.Cache,
                                                                          new[] { "ref", "label" });

            foreach (XmlNode node in nodes)
            {
                XmlNode subLayout;
                if (node.Name == "sublayout")
                {
                    Debug.Assert(!fMerging);
                    string subLayoutName = XmlUtils.GetOptionalAttributeValue(node, "name", null);
                    if (subLayoutName == null)
                    {
                        subLayout = node;                         // a sublayout lacking a name contains the part refs directly.
                    }
                    else
                    {
                        subLayout = converter.GetLayoutElement(className, subLayoutName);
                    }
                    if (subLayout != null)
                    {
                        AddChildNodes(subLayout, ltnParent, ltnParent.Nodes.Count, converter);
                    }
                }
                else if (node.Name == "part")
                {
                    // Check whether this node has already been added to this parent.  Don't add
                    // it if it's already there!
                    XmlDocConfigureDlg.LayoutTreeNode ltnOld = FindMatchingNode(ltnParent, node);
                    if (ltnOld != null)
                    {
                        continue;
                    }
                    string  sRef = XmlUtils.GetMandatoryAttributeValue(node, "ref");
                    XmlNode part = converter.GetPartElement(className, sRef);
                    if (part == null && sRef != "$child")
                    {
                        continue;
                    }
                    bool fHide = XmlUtils.GetOptionalBooleanAttributeValue(node, "hideConfig", false);
                    XmlDocConfigureDlg.LayoutTreeNode ltn;
                    var cOrig = 0;
                    if (!fHide)
                    {
                        ltn = new XmlDocConfigureDlg.LayoutTreeNode(node, converter, className)
                        {
                            OriginalIndex    = ltnParent.Nodes.Count,
                            ParentLayout     = layout,
                            HiddenNode       = converter.LayoutLevels.HiddenPartRef,
                            HiddenNodeLayout = converter.LayoutLevels.HiddenLayout
                        };
                        if (!String.IsNullOrEmpty(ltn.LexRelType))
                        {
                            converter.BuildRelationTypeList(ltn);
                        }
                        if (!String.IsNullOrEmpty(ltn.EntryType))
                        {
                            converter.BuildEntryTypeList(ltn, ltnParent.LayoutName);
                        }
                        //if (fMerging)
                        //((LayoutTreeNode)ltnParent.Nodes[iNode]).MergedNodes.Add(ltn);
                        //else
                        ltnParent.Nodes.Add(ltn);
                    }
                    else
                    {
                        Debug.Assert(!fMerging);
                        ltn   = ltnParent;
                        cOrig = ltn.Nodes.Count;
                        if (className == "StTxtPara")
                        {
                            ltnParent.HiddenChildLayout = layout;
                            ltnParent.HiddenChild       = node;
                        }
                    }
                    try
                    {
                        converter.LayoutLevels.Push(node, layout);
                        var fOldAdding = ltn.AddingSubnodes;
                        ltn.AddingSubnodes = true;
                        if (part != null)
                        {
                            ProcessChildNodes(part.ChildNodes, className, ltn, converter);
                        }
                        ltn.OriginalNumberOfSubnodes = ltn.Nodes.Count;
                        ltn.AddingSubnodes           = fOldAdding;
                        if (fHide)
                        {
                            var cNew = ltn.Nodes.Count - cOrig;
                            if (cNew > 1)
                            {
                                var msg = String.Format("{0} nodes for a hidden PartRef ({1})!", cNew, node.OuterXml);
                                converter.LogConversionError(msg);
                            }
                        }
                    }
                    finally
                    {
                        converter.LayoutLevels.Pop();
                    }
                }
            }
        }
Beispiel #15
0
    public void generateInventory()
    {
        Pair<Type, Company> temp;
        int temp2;
        rand = new System.Random();

        pg = new PartGenerator();
        moboInventory.Clear();
        temp = (Pair<Type, Company>)(pg.MOBO_PAIRS[rand.Next(pg.MOBO_PAIRS.Count)]);
        moboInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        temp2 = rand.Next(2);
        for (int i = 0; i < temp2; i++)
        {
            temp = (Pair<Type, Company>)(pg.MOBO_PAIRS[rand.Next(pg.MOBO_PAIRS.Count)]);
            moboInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        }

        cpuInventory.Clear();
        temp = (Pair<Type, Company>)(pg.CPU_PAIRS[rand.Next(pg.CPU_PAIRS.Count)]);
        cpuInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        temp2 = rand.Next(2);
        for (int i = 0; i < temp2; i++)
        {
            temp = (Pair<Type, Company>)(pg.CPU_PAIRS[rand.Next(pg.CPU_PAIRS.Count)]);
            cpuInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        }

        gpuInventory.Clear();
        temp = (Pair<Type, Company>)(pg.GPU_PAIRS[rand.Next(pg.GPU_PAIRS.Count)]);
        gpuInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        temp2 = rand.Next(2);
        for (int i = 0; i < temp2; i++)
        {
            temp = (Pair<Type, Company>)(pg.GPU_PAIRS[rand.Next(pg.GPU_PAIRS.Count)]);
            gpuInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        }

        hddInventory.Clear();
        temp = (Pair<Type, Company>)(pg.HDD_PAIRS[rand.Next(pg.HDD_PAIRS.Count)]);
        hddInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        temp2 = rand.Next(2);
        for (int i = 0; i < temp2; i++)
        {
            temp = (Pair<Type, Company>)(pg.HDD_PAIRS[rand.Next(pg.HDD_PAIRS.Count)]);
            hddInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        }

        ramInventory.Clear();
        temp = (Pair<Type, Company>)(pg.RAM_PAIRS[rand.Next(pg.RAM_PAIRS.Count)]);
        ramInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        temp2 = rand.Next(2);
        for (int i = 0; i < temp2; i++)
        {
            temp = (Pair<Type, Company>)(pg.RAM_PAIRS[rand.Next(pg.RAM_PAIRS.Count)]);
            ramInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        }

        inputInventory.Clear();
        temp = (Pair<Type, Company>)(pg.INPUT_PAIRS[rand.Next(pg.INPUT_PAIRS.Count)]);
        inputInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        temp2 = rand.Next(2);
        for (int i = 0; i < temp2; i++)
        {
        }

        outputInventory.Clear();
        temp = (Pair<Type, Company>)(pg.OUTPUT_PAIRS[rand.Next(pg.OUTPUT_PAIRS.Count)]);
        outputInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        temp2 = rand.Next(2);
        for (int i = 0; i < temp2; i++)
        {
            temp = (Pair<Type, Company>)(pg.OUTPUT_PAIRS[rand.Next(pg.OUTPUT_PAIRS.Count)]);
            outputInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        }

        networkInventory.Clear();
        temp = (Pair<Type, Company>)(pg.NETWORK_PAIRS[rand.Next(pg.NETWORK_PAIRS.Count)]);
        networkInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        temp2 = rand.Next(2);
        for (int i = 0; i < temp2; i++)
        {
            temp = (Pair<Type, Company>)(pg.NETWORK_PAIRS[rand.Next(pg.NETWORK_PAIRS.Count)]);
            networkInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        }

        pSupplyInventory.Clear();
        temp = (Pair<Type, Company>)(pg.PSU_PAIRS[rand.Next(pg.PSU_PAIRS.Count)]);
        pSupplyInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        temp2 = rand.Next(2);
        for (int i = 0; i < temp2; i++)
        {
            temp = (Pair<Type, Company>)(pg.PSU_PAIRS[rand.Next(pg.PSU_PAIRS.Count)]);
            pSupplyInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        }

        chassisInventory.Clear();
        temp = (Pair<Type, Company>)(pg.CHASSIS_PAIRS[rand.Next(pg.CHASSIS_PAIRS.Count)]);
        chassisInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        temp2 = rand.Next(2);
        for (int i = 0; i < temp2; i++)
        {
            temp = (Pair<Type, Company>)(pg.CHASSIS_PAIRS[rand.Next(pg.CHASSIS_PAIRS.Count)]);
            chassisInventory.Add(pg.generatePart(temp.getLeft(), temp.getRight()));
        }
    }