public ChanceTree Extract(ChanceTree ct, int position) { if (position >= ct.PlayersCount) { throw new ArgumentOutOfRangeException( string.Format("Position {0} is out of range (players count: {1})", position, ct.PlayersCount)); } _position = position; WalkUFTreePP <ChanceTree, Context> wt = new WalkUFTreePP <ChanceTree, Context>(); wt.OnNodeBegin = OnNodeBegin; _nodeCount = 0; _tempRoot = new TempNode { Card = -1, Probab = 1 }; wt.Walk(ct); ChanceTree newTree = new ChanceTree(_nodeCount + 1); // Reset memory to clear results. newTree.SetNodesMemory(0); _nodeCount = 0; CopyFromTemp(newTree, _tempRoot, 0); // Overwrite root position newTree.Nodes[0].Position = 1; newTree.Version.Description = String.Format("Player {0} chance tree from {1}", position, ct.Version.Description); return(newTree); }
private void treeView1_DoubleClick(object sender, EventArgs e) { TempNode tempNode = (TempNode)this.treeView1.SelectedNode; if (tempNode == null) { return; } string arg_1B_0 = tempNode.NodeID; string arg_22_0 = tempNode.Text; string filePath = tempNode.FilePath; string nodeType = tempNode.NodeType; string a; if ((a = nodeType) != null && (a == "tt" || a == "cmt" || a == "vb" || a == "aspx" || a == "cs")) { if (filePath.Trim() != "") { string text = filePath.Replace(this.TemplateFolder + "\\", ""); if (!this.hasTheFile(text)) { this.listBoxTemplate.Items.Add(text); } } else { MessageBox.Show("所选文件已经不存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } this.CheckTemplate(); }
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e) { try { TempNode SelNode = (TempNode)this.treeView1.SelectedNode; string selstr = SelNode.Text; string filepath = SelNode.FilePath; if (filepath.Trim() != "") { CodeTemplate codetempfrm = (CodeTemplate)Application.OpenForms["CodeTemplate"]; if (codetempfrm != null) { codetempfrm.SettxtTemplate(filepath); } else { MessageBox.Show("尚未打开模版代码生成编辑器!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { MessageBox.Show("所选文件已经不存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (System.Exception ex) { MessageBox.Show(ex.Message); } }
void OnNodeBegin(ChanceTree tree, Context[] stack, int depth) { Context context = stack[depth]; Int64 n = context.NodeIdx; if (depth == 0) { stack[depth].CurTempNode = _tempRoot; } else { stack[depth].CurTempNode = stack[depth - 1].CurTempNode; } if (tree.Nodes[n].Position == _position) { int card = tree.Nodes[n].Card; TempNode childTempNode; if (!stack[depth].CurTempNode.Children.TryGetValue(card, out childTempNode)) { childTempNode = new TempNode { Card = card }; stack[depth].CurTempNode.Children.Add(card, childTempNode); _nodeCount++; } childTempNode.Probab += tree.Nodes[n].Probab; stack[depth].CurTempNode = childTempNode; } }
/// ----------------------------------------------------------------------------- /// <summary> /// /// </summary> /// <param name="writer"></param> /// <remarks> /// </remarks> /// <history> /// [jbrinkman] 5/6/2004 Created /// </history> /// ----------------------------------------------------------------------------- protected override void RenderChildren(HtmlTextWriter writer) { foreach (MenuNode TempNode in m_objMenu.MenuNodes) { TempNode.Render(writer); } }
//邦定任意节点 public void CreateNode(int parentid, TreeNode parentnode, DataTable dt) { DataRow[] drs = dt.Select("ParentID= " + parentid); //选出所有子节点 foreach (DataRow r in drs) { string nodeid = r["NodeID"].ToString(); string text = r["Text"].ToString(); string filepath = r["FilePath"].ToString(); string nodetype = r["NodeType"].ToString(); TempNode node = new TempNode(text); node.NodeID = nodeid; node.NodeType = nodetype; node.FilePath = filepath; if (nodetype == "folder") { node.ImageIndex = 0; node.SelectedImageIndex = 1; } else { node.ImageIndex = 2; node.SelectedImageIndex = 2; } parentnode.Nodes.Add(node); int sonparentid = int.Parse(nodeid);// or =location CreateNode(sonparentid, node, dt); }//endforeach }
private void 除ToolStripMenuItem_Click(object sender, EventArgs e) { try { TempNode tempNode = (TempNode)this.treeView1.SelectedNode; string arg_17_0 = tempNode.NodeID; string arg_1E_0 = tempNode.Text; string filePath = tempNode.FilePath; string nodeType = tempNode.NodeType; if ((nodeType == "tt" || nodeType == "cmt" || nodeType == "aspx" || nodeType == "cs" || nodeType == "vb") && File.Exists(filePath)) { File.Delete(filePath); } if (nodeType == "folder") { DirectoryInfo directoryInfo = new DirectoryInfo(filePath); if (directoryInfo.Exists) { directoryInfo.Delete(); } } this.treeView1.Nodes.Remove(tempNode); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public void CommitResult() { TempNode tempNode = File.TempNodes[memberName]; TempValue tempValue = tempNode?[$"{path}/{index}"]; tempValue?.Commit(Result); }
private void 模版ToolStripMenuItem_Click(object sender, EventArgs e) { try { TempNode tempNode = (TempNode)this.treeView1.SelectedNode; string text = tempNode.FilePath + "\\新建模板.cmt"; string text2 = "新建模板"; text = this.GetFileName(tempNode.FilePath, text2, out text2); StreamWriter streamWriter = new StreamWriter(text, false, Encoding.UTF8); streamWriter.Close(); TempNode tempNode2 = new TempNode(text2 + ".cmt"); tempNode2.FilePath = text; tempNode2.NodeType = "cmt"; tempNode2.ImageIndex = 2; tempNode2.SelectedImageIndex = 2; tempNode.Nodes.Add(tempNode2); this.treeView1.SelectedNode = tempNode2; this.treeView1.LabelEdit = true; if (!tempNode2.IsEditing) { tempNode2.BeginEdit(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void 文件夹ToolStripMenuItem_Click(object sender, EventArgs e) { try { TempNode tempNode = (TempNode)this.treeView1.SelectedNode; string text = tempNode.FilePath + "\\新文件夹"; if (!Directory.Exists(text)) { Directory.CreateDirectory(text); } TempNode tempNode2 = new TempNode("新文件夹"); tempNode2.FilePath = text; tempNode2.NodeType = "folder"; tempNode2.ImageIndex = 0; tempNode2.SelectedImageIndex = 1; tempNode.Nodes.Add(tempNode2); tempNode.Expand(); this.treeView1.SelectedNode = tempNode2; this.treeView1.LabelEdit = true; if (!tempNode2.IsEditing) { tempNode2.BeginEdit(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void 编辑查看ToolStripMenuItem_Click(object sender, EventArgs e) { try { TempNode tempNode = (TempNode)this.treeView1.SelectedNode; string arg_17_0 = tempNode.NodeID; string text = tempNode.Text; string filePath = tempNode.FilePath; string nodeType = tempNode.NodeType; if (filePath.Trim() != "" && nodeType != "folder") { if (File.Exists(filePath)) { this.mainfrm.AddTabPage(text, new CodeEditor(filePath, nodeType, false)); } } else { MessageBox.Show("所选文件已经不存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
/// ----------------------------------------------------------------------------- /// <summary> /// /// </summary> /// <param name="writer"></param> /// <remarks> /// </remarks> /// <history> /// [jbrinkman] 5/6/2004 Created /// </history> /// ----------------------------------------------------------------------------- protected override void RenderChildren(HtmlTextWriter writer) { foreach (TreeNode TempNode in _tree.TreeNodes) { TempNode.Render(writer); } }
private void 除ToolStripMenuItem_Click(object sender, EventArgs e) { try { TempNode SelNode = (TempNode)this.treeView1.SelectedNode; string nodeid = SelNode.NodeID; string text = SelNode.Text; string filepath = SelNode.FilePath; string nodetype = SelNode.NodeType; //从ds删除一条数据 foreach (DataRow row in ds.Tables[0].Select("NodeID='" + nodeid + "'")) { ds.Tables[0].Rows.Remove(row); } ds.Tables[0].AcceptChanges(); ds.WriteXml(tempfilepath); if (nodetype == "file") { if (File.Exists(filepath)) { File.Delete(filepath); } } //删除节点 treeView1.Nodes.Remove(SelNode); } catch (System.Exception ex) { MessageBox.Show(ex.Message); } }
//新建模版文件 private void 模版ToolStripMenuItem_Click(object sender, EventArgs e) { try { TempNode SelNode = (TempNode)this.treeView1.SelectedNode; string nodeid = SelNode.NodeID; int orderid = 1; if (SelNode != null) { orderid = SelNode.Nodes.Count + 1; } string newNodeid = GetMaxNodeID(ds.Tables[0]); //向ds增加一条数据 DataRow newRow = ds.Tables[0].NewRow(); newRow["NodeID"] = newNodeid; newRow["Text"] = "新建模版"; string filepath = "新建模版.cmt"; if ((settings.TemplateFolder != null) && (settings.TemplateFolder != "")) { filepath = settings.TemplateFolder + "\\" + filepath; } else { filepath = "Template\\新建模版.cmt"; } // 是否已经存在 //while (File.Exists(filepath)) //{ //} newRow["FilePath"] = filepath; newRow["NodeType"] = "file"; newRow["ParentID"] = nodeid; newRow["OrderID"] = orderid; ds.Tables[0].Rows.Add(newRow); ds.Tables[0].AcceptChanges(); ds.WriteXml(tempfilepath); File.Create(filepath); //在treeview上增加一个节点 TempNode node = new TempNode("新建模版"); node.NodeID = newNodeid; node.ParentID = nodeid; node.FilePath = filepath; node.NodeType = "file"; node.ImageIndex = 2; node.SelectedImageIndex = 2; SelNode.Nodes.Add(node); SelNode.Expand(); } catch (System.Exception ex) { MessageBox.Show(ex.Message); } }
private void Btn_ClassSetting_Click(object sender, RoutedEventArgs e) { if (CurrentResourceInfo.BaseType == null) { EditorCommon.MessageBox.Show("找不到当前Macross的基类"); return; } if (mClassSettingPropertiesClassInstance == null) { var atts = CurrentResourceInfo.BaseType.GetCustomAttributes(typeof(EngineNS.Editor.Editor_MacrossClassAttribute), true); var att = atts[0] as EngineNS.Editor.Editor_MacrossClassAttribute; var csType = att.CSType; List <CodeGenerateSystem.Base.CustomPropertyInfo> cpInfos = new List <CodeGenerateSystem.Base.CustomPropertyInfo>(); var baseTypeCPInfo = new CodeGenerateSystem.Base.CustomPropertyInfo() { PropertyName = "BaseType", PropertyType = typeof(Type), DefaultValue = CurrentResourceInfo.BaseType, CurrentValue = CurrentResourceInfo.BaseType, }; // Editor.Editor_BaseTypeDefine 限定类型基类 baseTypeCPInfo.PropertyAttributes.Add(new EngineNS.Editor.Editor_TypeFilterAttribute(EngineNS.Editor.Editor_TypeFilterAttribute.enTypeFilter.Class, EngineNS.Editor.Editor_MacrossClassAttribute.enMacrossType.Inheritable)); cpInfos.Add(baseTypeCPInfo); var initParam = new CodeGenerateSystem.Base.ConstructionParams() { CSType = csType, }; var tempNode = new TempNode(initParam); mClassSettingPropertiesClassInstance = CodeGenerateSystem.Base.PropertyClassGenerator.CreateClassInstanceFromCustomPropertys(cpInfos, tempNode, "MCSetting_" + EngineNS.Editor.Assist.GetValuedGUIDString(Guid.NewGuid()), false); var classType = mClassSettingPropertiesClassInstance.GetType(); //var classType = CodeGenerateSystem.Base.PropertyClassGenerator.CreateTypeFromCustomPropertys(cpInfos, "MacrossClassSettingDynamicAssembly", ); //mClassSettingPropertiesClassInstance = System.Activator.CreateInstance(classType) as CodeGenerateSystem.Base.GeneratorClassBase; //mClassSettingPropertiesClassInstance.CSType = csType; foreach (var cpInfo in cpInfos) { var pro = classType.GetProperty(cpInfo.PropertyName); pro.SetValue(mClassSettingPropertiesClassInstance, cpInfo.CurrentValue, null); } mClassSettingPropertiesClassInstance.OnPropertyChangedAction = (propertyName, newValue, oldValue) => { switch (propertyName) { case "BaseType": CurrentResourceInfo.ResetBaseType((Type)newValue); break; } }; } var ctrl = LinksTabControl.SelectedContent as MacrossLinkControl; ctrl.PG.Instance = mClassSettingPropertiesClassInstance; }
public void CanDetermineIfHierarchyContainsANodeType() { TempNode node = new TempNode("Child"); ApplicationNode.AddNode(node); node.AddNode(new TestNode("Child2")); node.Nodes[0].AddNode(new TempNode("Child")); Assert.IsTrue(Hierarchy.ContainsNodeType(typeof(TempNode))); }
public void CreatingHierarchyWithPopulatedRootNodeSetsSites() { ConfigurationApplicationNode node1 = new ConfigurationApplicationNode(ConfigurationApplicationFile.FromCurrentAppDomain()); TempNode node2 = new TempNode("2"); node1.AddNode(node2); ConfigurationUIHierarchy hierarchy = new ConfigurationUIHierarchy(node1, ServiceProvider); Assert.IsNotNull(node2.Site); }
public void FindGrandChildNodeByType() { TempNode node = new TempNode("Child"); ApplicationNode.AddNode(node); node.AddNode(new TempNode("Child")); IList <ConfigurationNode> foundNodes = Hierarchy.FindNodesByType(typeof(TempNode)); Assert.AreEqual(2, foundNodes.Count); }
/// <summary> /// /// </summary> /// <param name="writer"></param> /// <remarks> /// </remarks> /// <history> /// [jbrinkman] 5/6/2004 Created /// </history> protected override void RenderChildren(HtmlTextWriter writer) { MenuNode TempNode; foreach (MenuNode tempLoopVar_TempNode in m_objMenu.MenuNodes) { TempNode = tempLoopVar_TempNode; TempNode.Render(writer); } }
public void CanDetermineIfAParentInTheHierarchyContainsANodeType() { TempNode node = new TempNode("Child"); ApplicationNode.AddNode(node); node.AddNode(new TestNode("Child2")); node.Nodes[0].AddNode(new TempNode("Child")); Assert.IsTrue(Hierarchy.ContainsNodeType(node, typeof(TempNode))); }
public void TempNodeGet() { TempNode n1, n2; n1 = new TempNode(71, 111); n2 = new TempNode(7.1, 21.1); Assert.IsTrue(n1.GetTemperature() == (byte)111); Assert.IsTrue(n2.GetTemperature() == (byte)111); Assert.IsTrue(n2.GetTime() == (byte)71); }
public void TempNodeCompareTo() { TempNode n1, n2, n3; n1 = new TempNode(71, 111); n2 = new TempNode(7.1, 21.1); n3 = new TempNode(17.4, 25.5); Assert.IsTrue(n1.CompareTo(n2) == 0); Assert.IsTrue(n1.CompareTo(n3) < 0); Assert.IsTrue(n3.CompareTo(n2) > 0); }
public void FindByTypeGrandGrandChildTest() { TempNode node = new TempNode("Child"); ApplicationNode.AddNode(node); TempNode deepNode = new TempNode("Child"); node.AddNode(deepNode); deepNode.AddNode(new AnotherNode("Another")); IList <ConfigurationNode> foundNodes = Hierarchy.FindNodesByType(typeof(AnotherNode)); Assert.AreEqual(1, foundNodes.Count); }
private void CreateFolderTree(string templateFolder) { this.treeView1.Nodes.Clear(); TempNode tempNode = new TempNode("代码模版"); tempNode.NodeType = "root"; tempNode.FilePath = templateFolder; tempNode.ImageIndex = 0; tempNode.SelectedImageIndex = 0; tempNode.Expand(); this.treeView1.Nodes.Add(tempNode); this.LoadFolderTree(tempNode, templateFolder); }
public override bool Equals(Object obj) { //Check for null and compare run-time types. if ((obj == null) || !this.GetType().Equals(obj.GetType())) { return(false); } else { TempNode other = (TempNode)obj; return((x == other.x) && (y == other.y) && (z == other.z)); } }
private void AddNode(List <TempNode> children, TempNode node) { foreach (var root in children) { if (IsChild(root, node)) { AddNode(root.Children, node); return; } } children.Add(node); }
public async Task MigrateToLowestThenHighest() { using (var ipfs = new TempNode()) { var migrator = new MigrationManager(ipfs); await migrator.MirgrateToVersionAsync(0); Assert.AreEqual(0, migrator.CurrentVersion); await migrator.MirgrateToVersionAsync(migrator.LatestVersion); Assert.AreEqual(migrator.LatestVersion, migrator.CurrentVersion); } }
void CopyFromTemp(ChanceTree newTree, TempNode tempNode, int depth) { newTree.SetDepth(_nodeCount, (byte)depth); newTree.Nodes[_nodeCount].Card = tempNode.Card; newTree.Nodes[_nodeCount].Probab = tempNode.Probab; newTree.Nodes[_nodeCount].Position = 0; _nodeCount++; List <int> cards = new List <int>(tempNode.Children.Keys.ToArray()); cards.Sort(); foreach (int card in cards) { CopyFromTemp(newTree, tempNode.Children[card], depth + 1); } }
public void TempNodeEquals() { TempNode n1, n2, n3, n4; n1 = new TempNode(71, 111); n2 = new TempNode(7.1, 21.1); n3 = new TempNode(71, 200); n4 = new TempNode(n1); Assert.AreEqual(n1, n2); Assert.AreEqual(n1, n3); Assert.AreEqual(n3, n2); Assert.AreEqual(n1, n4); Assert.IsTrue(n1.GetTemperature() == n2.GetTemperature()); Assert.IsFalse(n3.GetTemperature() == n2.GetTemperature()); }
private void treeView1_DoubleClick(object sender, EventArgs e) { TempNode tempNode = (TempNode)this.treeView1.SelectedNode; string arg_17_0 = tempNode.NodeID; string nodeType = tempNode.NodeType; string a; if ((a = nodeType) != null) { if (!(a == "tt") && !(a == "cmt") && !(a == "vb") && !(a == "aspx") && !(a == "cs")) { return; } this.打开生成ToolStripMenuItem_Click(sender, e); } }
public void FindByTypeTwoTopSearchFromOneLowerChildTest() { TempNode node = new TempNode("Child"); ApplicationNode.AddNode(node); TempNode node2 = new TempNode("Child"); TempNode node3 = new TempNode("Child"); ApplicationNode.AddNode(node2); node2.AddNode(node3); node3.AddNode(new AnotherNode("Child")); node3.AddNode(new AnotherNode("Another")); IList <ConfigurationNode> foundNodes = Hierarchy.FindNodesByType(typeof(AnotherNode)); Assert.AreEqual(2, foundNodes.Count); }
public void FindGrandChildNodeByType() { TempNode node = new TempNode("Child"); ApplicationNode.AddNode(node); node.AddNode(new TempNode("Child")); IList<ConfigurationNode> foundNodes = Hierarchy.FindNodesByType(typeof(TempNode)); Assert.AreEqual(2, foundNodes.Count); }
public void FindByTypeGrandGrandChildTest() { TempNode node = new TempNode("Child"); ApplicationNode.AddNode(node); TempNode deepNode = new TempNode("Child"); node.AddNode(deepNode); deepNode.AddNode(new AnotherNode("Another")); IList<ConfigurationNode> foundNodes = Hierarchy.FindNodesByType(typeof(AnotherNode)); Assert.AreEqual(1, foundNodes.Count); }
public void FindByTypeTwoTopSearchFromOneLowerChildTest() { TempNode node = new TempNode("Child"); ApplicationNode.AddNode(node); TempNode node2 = new TempNode("Child"); TempNode node3 = new TempNode("Child"); ApplicationNode.AddNode(node2); node2.AddNode(node3); node3.AddNode(new AnotherNode("Child")); node3.AddNode(new AnotherNode("Another")); IList<ConfigurationNode> foundNodes = Hierarchy.FindNodesByType(typeof(AnotherNode)); Assert.AreEqual(2, foundNodes.Count); }
public static int Add(ref TempNode newNode, TempNode* tempNodes, ref int count) { tempNodes[count] = newNode; return count++; }
unsafe void CollapseTree(int depthRemaining, TempNode* tempNodes, int tempNodeIndex, int* nodeChildren, ref int childCount, BoundingBox* nodeBounds, int* leafCounts) { var tempNode = tempNodes + tempNodeIndex; if (tempNode->A >= 0) { //Internal node. if (depthRemaining > 0) { depthRemaining -= 1; CollapseTree(depthRemaining, tempNodes, tempNode->A, nodeChildren, ref childCount, nodeBounds, leafCounts); CollapseTree(depthRemaining, tempNodes, tempNode->B, nodeChildren, ref childCount, nodeBounds, leafCounts); } else { //Reached the bottom of the recursion. Add the collected children. int a = childCount++; int b = childCount++; nodeBounds[a] = tempNodes[tempNode->A].BoundingBox; nodeBounds[b] = tempNodes[tempNode->B].BoundingBox; //If the child is a leaf, collapse it. Slightly less annoying to handle it here than later. //This is a byproduct of the awkward data layout for tempnodes... if (tempNodes[tempNode->A].A >= 0) nodeChildren[a] = tempNode->A; else nodeChildren[a] = tempNodes[tempNode->A].A; //It's a leaf. if (tempNodes[tempNode->B].A >= 0) nodeChildren[b] = tempNode->B; else nodeChildren[b] = tempNodes[tempNode->B].A; //It's a leaf. Leaf index is always stored in A... leafCounts[a] = tempNodes[tempNode->A].LeafCount; leafCounts[b] = tempNodes[tempNode->B].LeafCount; } } else { //Leaf node. var index = childCount++; nodeBounds[index] = tempNode->BoundingBox; nodeChildren[index] = tempNode->A; leafCounts[index] = tempNode->LeafCount; } }
unsafe int BuildStagingChild(int parent, int indexInParent, TempNode* tempNodes, int tempNodeIndex, int collapseCount, Node* stagingNodes, ref int stagingNodeCount, out float treeletCost) { //Get ready to build a staging node out of this. var internalNodeIndex = stagingNodeCount++; var internalNode = stagingNodes + internalNodeIndex; internalNode->Parent = parent; internalNode->IndexInParent = indexInParent; internalNode->ChildCount = 0; var internalNodeChildren = &internalNode->ChildA; var internalNodeBounds = &internalNode->A; CollapseTree(collapseCount, tempNodes, tempNodeIndex, internalNodeChildren, ref internalNode->ChildCount, internalNodeBounds, &internalNode->LeafCountA); treeletCost = 0; //ValidateLeafNodeIndices(); //The node now contains valid bounding boxes, but the children indices are not yet valid. They're pointing into the tempnodes. //Reify each one in sequence. for (int i = 0; i < internalNode->ChildCount; ++i) { treeletCost += ComputeBoundsMetric(ref internalNodeBounds[i]); //The internalNodeChildren[i] can be negative, as a result of a subtree being encountered in CollapseTree. //tempNodes[internalNodeChildren[i]].A is never negative for any internal node (internalNodeChildren[i] >= 0), //because we pre-collapsed that reference in CollapseTree for convenience. if (internalNodeChildren[i] >= 0) { //It's still an internal node. float childTreeletCost; var childIndex = BuildStagingChild(internalNodeIndex, i, tempNodes, internalNodeChildren[i], collapseCount, stagingNodes, ref stagingNodeCount, out childTreeletCost); treeletCost += childTreeletCost; internalNodeChildren[i] = childIndex; } //If it's a subtree, then we don't need to change it at all. } return internalNodeIndex; }