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(); } }
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); }
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()); }
public PartGenerator GetTreeGenerator() { if (treeGenerator == null) { treeGenerator = new PartGenerator(GetRandom()); } return(treeGenerator); }
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)); } }
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)); }
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")); }
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)); }
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")); }
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); }
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(); } } } }
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())); } }