From ce60749092b34012b8739bb31aa4d849cd25f8d0 Mon Sep 17 00:00:00 2001 From: MaxED Date: Mon, 2 Jul 2012 23:20:56 +0000 Subject: [PATCH] GZDoom Builder 1.10: Finished Tag Explorer plugin. Added "ZDBSP - UDMF Normal (no reject)", "ZDBSP - UDMF Normal (zero reject)" and "ZDBSP - Compress nodes (UDMF)" nodebuilder configurations. --- Build/Compilers/Nodebuilders/zdbsp.cfg | 22 + .../Configurations/Includes/ZDoom_common.cfg | 4 + Help/gz_plug_tagexplorer.html | 7 +- Help/gz_plug_tagexplorer.jpg | Bin 0 -> 123498 bytes Source/Core/GZBuilder/GZDoom/MapinfoParser.cs | 13 - Source/Core/Resources/Splash3_trans.png | Bin 234654 -> 234480 bytes Source/Plugins/TagExplorer/BuilderPlug.cs | 25 +- .../Controls/TagExplorer.Designer.cs | 103 ++- .../TagExplorer/Controls/TagExplorer.cs | 618 ++++++++++-------- .../TagExplorer/Controls/TagExplorer.resx | 202 +++--- Source/Plugins/TagExplorer/NodeInfo.cs | 214 ++++++ Source/Plugins/TagExplorer/TagExplorer.csproj | 3 + 12 files changed, 775 insertions(+), 436 deletions(-) create mode 100644 Help/gz_plug_tagexplorer.jpg create mode 100644 Source/Plugins/TagExplorer/NodeInfo.cs diff --git a/Build/Compilers/Nodebuilders/zdbsp.cfg b/Build/Compilers/Nodebuilders/zdbsp.cfg index d3232929..106cc907 100644 --- a/Build/Compilers/Nodebuilders/zdbsp.cfg +++ b/Build/Compilers/Nodebuilders/zdbsp.cfg @@ -30,6 +30,14 @@ nodebuilders // -c adds comment indices in UDMF format. This is not documented in the ZDBSP usage. } + zdbsp_udmf_normal + { + title = "ZDBSP - UDMF Normal (no reject)"; + compiler = "zdbsp"; + parameters = "-c -X -o%FO %FI"; + // -c adds comment indices in UDMF format. This is not documented in the ZDBSP usage. + } + zdbsp_fast { title = "ZDBSP - Normal (zero reject)"; @@ -37,10 +45,24 @@ nodebuilders parameters = "-R -o%FO %FI"; } + zdbsp_udmf_fast + { + title = "ZDBSP - UDMF Normal (zero reject)"; + compiler = "zdbsp"; + parameters = "-R -X -o%FO %FI"; + } + zdbsp_compressed { title = "ZDBSP - Compress nodes"; compiler = "zdbsp"; parameters = "-z -o%FO %FI"; } + + zdbsp_udmf_compressed + { + title = "ZDBSP - Compress nodes (UDMF)"; + compiler = "zdbsp"; + parameters = "-z -X -o%FO %FI"; + } } diff --git a/Build/Configurations/Includes/ZDoom_common.cfg b/Build/Configurations/Includes/ZDoom_common.cfg index 1e3fb24b..0913a18e 100644 --- a/Build/Configurations/Includes/ZDoom_common.cfg +++ b/Build/Configurations/Includes/ZDoom_common.cfg @@ -283,6 +283,10 @@ mapformat_udmf // The format interface handles the map data format formatinterface = "UniversalMapSetIO"; + // Default nodebuilder configurations + defaultsavecompiler = "zdbsp_udmf_normal"; + defaulttestcompiler = "zdbsp_udmf_fast"; + engine = "zdoom"; // override that so that DB2 uses the correct namespace maplumpnames diff --git a/Help/gz_plug_tagexplorer.html b/Help/gz_plug_tagexplorer.html index 194d9641..b7cbeb56 100644 --- a/Help/gz_plug_tagexplorer.html +++ b/Help/gz_plug_tagexplorer.html @@ -16,10 +16,13 @@

Tag Explorer plugin

-

Tag Explorer plugin lets you view all things, sectors and linedefs, which have tags and/or actions/effects set. If current map is in UDMF map format, it also allows you to edit things, sectors and linedefs comments and search an item by a comment.

+

Tag Explorer plugin lets you view all things, sectors and linedefs, which have tags and/or actions/effects set. It allows you to filter by tag or effect number. If current map is in UDMF map format, it also allows you to edit comments of things, sectors and linedefs and search an item by a comment.

Usage:
Right-click an item to open appropriate Edit menu.
-Double-click an item to edit comment (UDMF-only). Remove comment text to clear comment. +Double-click an item to edit comment (UDMF-only). Remove comment text to clear comment.

+Special filter options:
+Enter # + tag number to show only elements with this tag. Example: enter "#12" to show elements with tag 12.
+Enter $ + effect or action number to show only elements with this effect or action. Example: enter "$9" to show elements with "Line Horizon" effect.

diff --git a/Help/gz_plug_tagexplorer.jpg b/Help/gz_plug_tagexplorer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6fc0f131a0cbe6def8aaf9b74e456aa8b14e0c8a GIT binary patch literal 123498 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

Hgsz)5GY;XSnpC+dC+!xqFCHX|T7_Y< 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

    ^U?7+)#Ac;@^p zrO@^NM^qj3-`t;oZKZV+*4C+~90`dheb?LH{&M!4J&fb0gBmX%fQB87!RuFpnD^Vb zpxr-$P1inrr@zbPC#Cj(KD9|0y|r=sRok!oyT2oKybux(_|<;^PN6;k?xW9dDpj0u zaod8anX&(I6WrE+_?H^lap?w!gvVad|KjD8$L=UvSuezp%M+ops%6Qf=duUJCuVyN z$g4fDd(%RHg{0=a43}nD^%yd7YzGhDtPlCFKHcd&X~0ddW}$hos9y8kg+yuD@bRS$ zuil-Kvfj4Q#7D~6lg=C9;Bh8ULwpV7jSV{Yus*V5l@X8W;Y4me-4kSplF9VqdLz%# zURfNL%&2y8vZWNSi~Aw!7J=$2yvWvEp3pkAi9^}6AWS`(r;N)$ck(N4?^`VB4+7%WM)i^GDFPF zmN{mK;k){`&b{Z{t#j_J-P)?HtyM`?Bh~v#qv`IM?wNj`t`$RK2c?_~m3r?P*Cx5e zwkPmL*$2knXVm3PO0gIiSZ0(;w;I+t<>vf3m;26d``Tg!*43H)vraM|sl9amzDJ3a zCNeLblPi#3hKU@8^EI`gN@{1bO&5o`omXoNpt}e4sjd{)8lw@ifnC#bm zPD%~uuOinSDJLqG>OiYjtQTT@C)J0KtX7|ao}mKW!vVWW5R)lCa>vzF3Cz8AQ)DZI zhA+x`%!A7hGO^Pc27?piycTH^fLYT+N`ph;x?!NE??fSo)Zbc1YlKU-x+S`u3`<^u z*F=iUF&81zyEjz^Hj6ND!aAAov;)2)*GR*j53zD}tBGRQp^B4nPFm?Q)$itd0T}Jf zmzb0Ge7>e#!<;J9Tkfs3hWz!|`jEP;_?nt>B7SjxRbpmb!tbbs(>&LiAUn6Fc6yyu zHc!~v6qZ;N@mdqBFP0mwh7BKg(kO6J<+4&rY;)->-FY8mV$=-h){bsJWOm-j*qnT$ zo52>ba^P=`kQ){z#2;j)HHw)ss1di)pu?&=D66!YB*`gjv}Azi#=(K*!oh(zNHOPz zW5^|U+LhzRL1=#@6zS)t+3N1>_f$(cdRsVU7{@pz$TkWQ#D37Vk2|?r7nrXtC|ZLd z$ow|kO|N@DQC;$8=dS41kskkYR<32p7&19JKvE_Huv{?s%0D|@%3WnEC#)34P+w7B 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 Q_szct;U6=>;y3a?0PT1DPXGV_ literal 0 HcmV?d00001 diff --git a/Source/Core/GZBuilder/GZDoom/MapinfoParser.cs b/Source/Core/GZBuilder/GZDoom/MapinfoParser.cs index f60223dc..5b1c1217 100644 --- a/Source/Core/GZBuilder/GZDoom/MapinfoParser.cs +++ b/Source/Core/GZBuilder/GZDoom/MapinfoParser.cs @@ -106,13 +106,6 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom { if (gotComma) { float scrollSpeed = 0; - /*if (!float.TryParse(token, NumberStyles.Float, CultureInfo.InvariantCulture, out scrollSpeed)) { - // Not numeric! - GZBuilder.GZGeneral.LogAndTraceWarning("Unexpected token found in '" + sourcename + "' at line " + GetCurrentLineNumber() + ": expected " + skyType + " scroll speed value, but got '" + token + "'"); - datastream.Seek(-token.Length - 1, SeekOrigin.Current); //step back and try parsing this token again - continue; - }*/ - if (!ReadSignedFloat(token, ref scrollSpeed)) { // Not numeric! GZBuilder.GZGeneral.LogAndTraceWarning("Unexpected token found in '" + sourcename + "' at line " + GetCurrentLineNumber() + ": expected " + skyType + " scroll speed value, but got '" + token + "'"); @@ -145,12 +138,6 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom { token = StripTokenQuotes(ReadToken()); float scrollSpeed = 0; - /*if (!float.TryParse(token, NumberStyles.Float, CultureInfo.InvariantCulture, out scrollSpeed)) { - // Not numeric! - GZBuilder.GZGeneral.LogAndTraceWarning("Unexpected token found in '" + sourcename + "' at line " + GetCurrentLineNumber() + ": expected " + skyType + " scroll speed value, but got '" + token + "'"); - datastream.Seek(-token.Length - 1, SeekOrigin.Current); //step back and try parsing this token again - continue; - }*/ if (!ReadSignedFloat(token, ref scrollSpeed)) { // Not numeric! GZBuilder.GZGeneral.LogAndTraceWarning("Unexpected token found in '" + sourcename + "' at line " + GetCurrentLineNumber() + ": expected " + skyType + " scroll speed value, but got '" + token + "'"); diff --git a/Source/Core/Resources/Splash3_trans.png b/Source/Core/Resources/Splash3_trans.png index ad04035d1159bd424a9e89db56f762ac89d028ab..0ea847a81c9b0c4f58599fc9814368f2cf708768 100644 GIT binary patch delta 21005 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 M07*qoM6N<$g1S?}vH$=8 delta 21167 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 Skf+`N0000 nodes = new List(); ICollection things = General.Map.Map.Things; foreach (Thing t in things) { - if ((t.Tag > 0 && showTags) || (t.Action > 0 && showActions)) { - TreeNode node = new TreeNode(getThingName(t, ref hasComment, ref comment), 1, 1); + if ((showTags && t.Tag > 0) || (showActions && t.Action > 0)) { + if (filteredTag != -1 && t.Tag != filteredTag) + continue; + if (filteredAction != -1 && t.Action != filteredAction) + continue; + + NodeInfo info = new NodeInfo(t); + string name = info.GetName(ref comment, currentSortMode); + hasComment = comment.Length > 0; - if (serachStr.Length == 0 || (hasComment && comment.ToLowerInvariant().IndexOf(serachStr) != -1)) { - node.Tag = new NodeInfo(t.Index, t.Action, t.Tag); + if (!hasComment && cbCommentsOnly.Checked) + continue; + + if (!GZBuilder.GZGeneral.UDMF || serachStr.Length == 0 || (hasComment && comment.ToLowerInvariant().IndexOf(serachStr) != -1)) { + TreeNode node = new TreeNode(name, 1, 1); + node.Tag = info; if (hasComment) node.ForeColor = commentColor; nodes.Add(node); + + if (info.Index == selection.Index && info.Type == selection.Type) + selectedNode = node; } } } //sort nodes - sort(ref nodes, cbSortMode.SelectedItem.ToString()); + sort(ref nodes, currentSortMode); - //add category + //add "things" category if (nodes.Count > 0) { - treeView.Nodes.Add(new TreeNode(CAT_THINGS, 0, 0, nodes.ToArray())); + if (currentSortMode == SortMode.SORT_BY_ACTION) { //create action categories + Dictionary categories = new Dictionary(); + TreeNode noAction = new TreeNode("No Action", 0, 0); + + foreach (TreeNode node in nodes) { + NodeInfo nodeInfo = node.Tag as NodeInfo; + + if (nodeInfo.Action == 0) { + noAction.Nodes.Add(node); + continue; + } + + LinedefActionInfo lai = General.Map.Config.GetLinedefActionInfo(nodeInfo.Action); + + if (!categories.ContainsKey(lai.Index)) + categories.Add(lai.Index, new TreeNode(lai.Index + " - " + lai.Name, 0, 0, new TreeNode[] { node })); + else + categories[lai.Index].Nodes.Add(node); + } + + TreeNode[] catNodes = new TreeNode[categories.Values.Count]; + categories.Values.CopyTo(catNodes, 0); + + TreeNode category = new TreeNode(CAT_THINGS, 0, 0, catNodes); + if (noAction.Nodes.Count > 0) + category.Nodes.Add(noAction); + + treeView.Nodes.Add(category); + + } else if (currentSortMode == SortMode.SORT_BY_INDEX) { //create thing categories + Dictionary categories = new Dictionary(); + foreach (TreeNode node in nodes) { + NodeInfo nodeInfo = node.Tag as NodeInfo; + ThingTypeInfo tti = General.Map.Data.GetThingInfoEx(General.Map.Map.GetThingByIndex(nodeInfo.Index).Type); + + if (!categories.ContainsKey(tti.Category.Title)) + categories.Add(tti.Category.Title, new TreeNode(tti.Category.Title, 0, 0, new TreeNode[] { node })); + else + categories[tti.Category.Title].Nodes.Add(node); + } + TreeNode[] catNodes = new TreeNode[categories.Values.Count]; + categories.Values.CopyTo(catNodes, 0); + + treeView.Nodes.Add(new TreeNode(CAT_THINGS, 0, 0, catNodes)); + + } else { //sort by tag. just add them as they are + treeView.Nodes.Add(new TreeNode(CAT_THINGS, 0, 0, nodes.ToArray())); + } } //add sectors nodes = new List(); ICollection sectors = General.Map.Map.Sectors; foreach (Sector s in sectors) { - if ((s.Tag > 0 && showTags) || (s.Effect > 0 && showActions)) { - TreeNode node = new TreeNode(getSectorName(s, ref hasComment, ref comment), 3, 3); + if ((showTags && s.Tag > 0) || (showActions && s.Effect > 0)) { + if (filteredTag != -1 && s.Tag != filteredTag) + continue; + if (filteredAction != -1 && s.Effect != filteredAction) + continue; + + NodeInfo info = new NodeInfo(s); + string name = info.GetName(ref comment, currentSortMode); + hasComment = comment.Length > 0; - if (serachStr.Length == 0 || (hasComment && comment.ToLowerInvariant().IndexOf(serachStr) != -1)) { - node.Tag = new NodeInfo(s.FixedIndex, s.Effect, s.Tag); + if (!hasComment && cbCommentsOnly.Checked) + continue; + + if (!GZBuilder.GZGeneral.UDMF || serachStr.Length == 0 || (hasComment && comment.ToLowerInvariant().IndexOf(serachStr) != -1)) { + TreeNode node = new TreeNode(name, 3, 3); + node.Tag = info; if (hasComment) node.ForeColor = commentColor; nodes.Add(node); + + if (info.Index == selection.Index && info.Type == selection.Type) + selectedNode = node; } } } //sort nodes - sort(ref nodes, cbSortMode.SelectedItem.ToString()); + sort(ref nodes, currentSortMode); //add category - if (nodes.Count > 0) - treeView.Nodes.Add(new TreeNode(CAT_SECTORS, 2, 2, nodes.ToArray())); + if (nodes.Count > 0) { + if (currentSortMode == SortMode.SORT_BY_ACTION) { + Dictionary categories = new Dictionary(); + TreeNode noAction = new TreeNode("No Effect", 2, 2); + + foreach (TreeNode node in nodes) { + NodeInfo nodeInfo = node.Tag as NodeInfo; + + if (nodeInfo.Action == 0) { + noAction.Nodes.Add(node); + continue; + } + + SectorEffectInfo sei = General.Map.Config.GetSectorEffectInfo(nodeInfo.Action); + + if (!categories.ContainsKey(sei.Index)) + categories.Add(sei.Index, new TreeNode(sei.Index + " - " + sei.Title, 2, 2, new TreeNode[] { node })); + else + categories[sei.Index].Nodes.Add(node); + } + TreeNode[] catNodes = new TreeNode[categories.Values.Count]; + categories.Values.CopyTo(catNodes, 0); + + TreeNode category = new TreeNode(CAT_SECTORS, 2, 2, catNodes); + if (noAction.Nodes.Count > 0) + category.Nodes.Add(noAction); + + treeView.Nodes.Add(category); + } else { //just add them as they are + treeView.Nodes.Add(new TreeNode(CAT_SECTORS, 2, 2, nodes.ToArray())); + } + } //add linedefs nodes = new List(); ICollection linedefs = General.Map.Map.Linedefs; foreach (Linedef l in linedefs) { - if ((l.Tag > 0 && showTags) || (l.Action > 0 && showActions)) { - TreeNode node = new TreeNode(getLinedefName(l, ref hasComment, ref comment), 5, 5); + if ((showTags && l.Tag > 0) || (showActions && l.Action > 0)) { + if (filteredTag != -1 && l.Tag != filteredTag) + continue; + if (filteredAction != -1 && l.Action != filteredAction) + continue; + + NodeInfo info = new NodeInfo(l); + string name = info.GetName(ref comment, currentSortMode); + hasComment = comment.Length > 0; - if (serachStr.Length == 0 || (hasComment && comment.ToLowerInvariant().IndexOf(serachStr) != -1)) { - node.Tag = new NodeInfo(l.Index, l.Action, l.Tag); + if (!hasComment && cbCommentsOnly.Checked) + continue; + + if (!GZBuilder.GZGeneral.UDMF || serachStr.Length == 0 || (hasComment && comment.ToLowerInvariant().IndexOf(serachStr) != -1)) { + TreeNode node = new TreeNode(name, 5, 5); + node.Tag = info; if (hasComment) node.ForeColor = commentColor; nodes.Add(node); + + if (info.Index == selection.Index && info.Type == selection.Type) + selectedNode = node; } } } //sort nodes - sort(ref nodes, cbSortMode.SelectedItem.ToString()); + sort(ref nodes, currentSortMode); //add category - if (nodes.Count > 0) - treeView.Nodes.Add(new TreeNode(CAT_LINEDEFS, 4, 4, nodes.ToArray())); + if (nodes.Count > 0) { + if (currentSortMode == SortMode.SORT_BY_ACTION) { + Dictionary categories = new Dictionary(); + TreeNode noAction = new TreeNode("No Action", 4, 4); - treeView.ExpandAll(); + foreach (TreeNode node in nodes) { + NodeInfo nodeInfo = node.Tag as NodeInfo; + + if (nodeInfo.Action == 0) { + noAction.Nodes.Add(node); + continue; + } + + LinedefActionInfo lai = General.Map.Config.GetLinedefActionInfo(nodeInfo.Action); + + if (!categories.ContainsKey(lai.Index)) + categories.Add(lai.Index, new TreeNode(lai.Index + " - " + lai.Name, 4, 4, new TreeNode[] { node })); + else + categories[lai.Index].Nodes.Add(node); + } + TreeNode[] catNodes = new TreeNode[categories.Values.Count]; + categories.Values.CopyTo(catNodes, 0); + + TreeNode category = new TreeNode(CAT_LINEDEFS, 4, 4, catNodes); + if (noAction.Nodes.Count > 0) + category.Nodes.Add(noAction); + + treeView.Nodes.Add(category); + + } else { //just add them as they are + treeView.Nodes.Add(new TreeNode(CAT_LINEDEFS, 4, 4, nodes.ToArray())); + } + } + + //expand top level nodes + foreach (TreeNode t in treeView.Nodes) + t.Expand(); + + if (selectedNode != null) + treeView.SelectedNode = selectedNode; + + //loose focus + General.Interface.FocusDisplay(); + } + +//tag/action search + private void getSpecialValues(string serachStr, ref int filteredTag, ref int filteredAction) { + if (serachStr.Length == 0) return; + + int pos = serachStr.IndexOf("#"); + if (pos != -1) + filteredTag = readNumber(serachStr, pos+1); + + pos = serachStr.IndexOf("$"); + if (pos != -1) + filteredAction = readNumber(serachStr, pos+1); + } + + private int readNumber(string serachStr, int startPoition) { + string token = ""; + int pos = startPoition; + + while (pos < serachStr.Length && "1234567890".IndexOf(serachStr[pos]) != -1) { + token += serachStr[pos]; + pos++; + } + + if (token != "") { + int result = -1; + int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out result); + return result; + } + + return -1; } //sorting private void sort(ref List nodes, string sortMode) { - switch (sortMode) { - case SORT_BY_ACTION: - nodes.Sort(sortByAction); - break; - - case SORT_BY_INDEX: - nodes.Sort(sortByIndex); - break; - - case SORT_BY_TAG: - nodes.Sort(sortByTag); - break; - - default://dbg - GZBuilder.GZGeneral.Trace("Got unknown sort mode: " + cbSortMode.SelectedItem.ToString()); - break; - } + if(sortMode == SortMode.SORT_BY_ACTION) + nodes.Sort(sortByAction); + else if (sortMode == SortMode.SORT_BY_TAG) + nodes.Sort(sortByTag); + else + nodes.Sort(sortByIndex); } private int sortByAction(TreeNode t1, TreeNode t2) { NodeInfo i1 = t1.Tag as NodeInfo; NodeInfo i2 = t2.Tag as NodeInfo; + if (i1.Action == i2.Action) return 0; + if (i1.Action == 0) return 1; //push items with no action to the end of the list + if (i2.Action == 0) return -1; //push items with no action to the end of the list if (i1.Action > i2.Action) return 1; - else if (i1.Action == i2.Action) return 0; - else if (i1.Action == 0) return 1; //push items with no action to the end of the list - else return -1; + return -1; //should be i1 < i2 } private int sortByTag(TreeNode t1, TreeNode t2) { NodeInfo i1 = t1.Tag as NodeInfo; NodeInfo i2 = t2.Tag as NodeInfo; + if (i1.Tag == i2.Tag) return 0; + if (i1.Tag == 0) return 1; //push items with no tag to the end of the list + if (i2.Tag == 0) return -1; //push items with no tag to the end of the list if (i1.Tag > i2.Tag) return 1; - else if (i1.Tag == i2.Tag) return 0; - else if (i1.Tag == 0) return 1; //push items with no tag to the end of the list - else return -1; + return -1; //should be i1 < i2 } private int sortByIndex(TreeNode t1, TreeNode t2) { @@ -194,181 +397,107 @@ namespace CodeImp.DoomBuilder.TagExplorer NodeInfo i2 = t2.Tag as NodeInfo; if (i1.Index > i2.Index) return 1; - else if (i1.Index == i2.Index) return 0; + if (i1.Index == i2.Index) return 0; return -1; } -//naming - private string getThingName(Thing t, ref bool hasComment, ref string comment) { - if(GZBuilder.GZGeneral.UDMF && t.Fields.ContainsKey("comment")){ - comment = t.Fields["comment"].Value.ToString(); - hasComment = true; - }else{ - comment = defaultThingName; - hasComment = false; - } - - return combineName(comment, t.Tag, t.Action, t.Index, cbSortMode.SelectedItem.ToString(), false, !hasComment); - } - - private string getSectorName(Sector s, ref bool hasComment, ref string comment) { - if(GZBuilder.GZGeneral.UDMF && s.Fields.ContainsKey("comment")){ - comment = s.Fields["comment"].Value.ToString(); - hasComment = true; - }else{ - comment = defaultSectorName; - hasComment = false; - } - return combineName(comment, s.Tag, s.Effect, s.FixedIndex, cbSortMode.SelectedItem.ToString(), true, !hasComment); - } - - private string getLinedefName(Linedef l, ref bool hasComment, ref string comment) { - if(GZBuilder.GZGeneral.UDMF && l.Fields.ContainsKey("comment")){ - comment = l.Fields["comment"].Value.ToString(); - hasComment = true; - }else{ - comment = defaultLinedefName; - hasComment = false; - } - return combineName(comment, l.Tag, l.Action, l.Index, cbSortMode.SelectedItem.ToString(), false, !hasComment); - } - - private string combineName(string name, int tag, int action, int index, string sortMode, bool isSector, bool isDefaultName) { - string combinedName = ""; - switch(sortMode){ - case SORT_BY_ACTION: - combinedName = (action > 0 ? (isSector ? "Effect:" : "Action:") + action + "; " : "") + (tag > 0 ? "Tag:" + tag + "; " : "") + name + (isDefaultName ? " " + index : ""); - break; - - case SORT_BY_INDEX: - combinedName = index + (tag > 0 ? ": Tag:" + tag + "; " : ": ") + (action > 0 ? (isSector ? "Effect:" : "Action:") + action + "; " : "") + name; - break; - - case SORT_BY_TAG: - combinedName = (tag > 0 ? "Tag:" + tag + "; " : "") + (action > 0 ? (isSector ? "Effect:" : "Action:") + action + "; " : "") + name + (isDefaultName ? " " + index : ""); - break; - - default: - combinedName = name; - break; - } - return combinedName; - } - - private void setComment(UniFields fields, string comment) { - if (!fields.ContainsKey("comment")) - fields.Add("comment", new UniValue((int)UniversalType.String, comment)); - else - fields["comment"].Value = comment; - } - - private string getComment(UniFields fields) { - if (!fields.ContainsKey("comment")) - return ""; - else - return fields["comment"].Value.ToString(); - } - //EVENTS private void cbDisplayMode_SelectedIndexChanged(object sender, EventArgs e) { + currentDisplayMode = cbDisplayMode.SelectedItem.ToString(); UpdateTree(); } private void cbSortMode_SelectedIndexChanged(object sender, EventArgs e) { + currentSortMode = cbSortMode.SelectedItem.ToString(); UpdateTree(); } private void treeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { - if (e.Node.Parent == null) return; - NodeInfo info = e.Node.Tag as NodeInfo; + if (info == null) return; + + //store selection + selection.Type = info.Type; + selection.Index = info.Index; if (e.Button == MouseButtons.Right) { //open element properties - switch (e.Node.Parent.Text) { - case CAT_THINGS: + switch (info.Type) { + case NodeInfoType.THING: Thing t = General.Map.Map.GetThingByIndex(info.Index); if (t != null) General.Interface.ShowEditThings(new List() { t }); break; - case CAT_SECTORS: + case NodeInfoType.SECTOR: Sector s = General.Map.Map.GetSectorByIndex(info.Index); if (s != null) General.Interface.ShowEditSectors(new List() { s }); break; - case CAT_LINEDEFS: + case NodeInfoType.LINEDEF: Linedef l = General.Map.Map.GetLinedefByIndex(info.Index); if (l != null) General.Interface.ShowEditLinedefs(new List() { l }); break; default: - GZBuilder.GZGeneral.Trace("Got unknown category: " + e.Node.Parent.Text); + GZBuilder.GZGeneral.Trace("Got unknown category: " + info.Type); break; } General.Map.Map.Update(); UpdateTree(); - } else { //focus on element - if (!cbCenterOnSelected.Checked) return; + } else { + //select element? + if (cbSelectOnClick.Checked) { + // Leave any volatile mode + General.Editing.CancelVolatileMode(); + General.Map.Map.ClearAllSelected(); - switch (e.Node.Parent.Text) { - case CAT_THINGS: + //make selection + if (info.Type == NodeInfoType.THING) { + General.Editing.ChangeMode("ThingsMode"); Thing t = General.Map.Map.GetThingByIndex(info.Index); - if (t != null) General.Map.Renderer2D.PositionView(t.Position.x, t.Position.y); - break; - - case CAT_SECTORS: - Sector s = General.Map.Map.GetSectorByIndex(info.Index); - if (s != null) General.Map.Renderer2D.PositionView(s.BBox.Location.X + s.BBox.Width / 2, s.BBox.Location.Y + s.BBox.Height / 2); - break; - - case CAT_LINEDEFS: + if (t != null) t.Selected = true; + } else if (info.Type == NodeInfoType.LINEDEF) { + General.Editing.ChangeMode("LinedefsMode"); Linedef l = General.Map.Map.GetLinedefByIndex(info.Index); - if (l != null) General.Map.Renderer2D.PositionView(l.Rect.Location.X + l.Rect.Width / 2, l.Rect.Location.Y + l.Rect.Height / 2); - break; - - default: - GZBuilder.GZGeneral.Trace("Got unknown category: " + e.Node.Parent.Text); - break; + if (l != null) l.Selected = true; + } else { + General.Editing.ChangeMode("SectorsMode"); + Sector s = General.Map.Map.GetSectorByIndex(info.Index); + if (s != null) { + foreach (Sidedef sd in s.Sidedefs) + sd.Line.Selected = true; + } + } } + + //focus on element? + if (cbCenterOnSelected.Checked) { + Vector2D pos = info.GetPosition(); + General.Map.Renderer2D.PositionView(pos.x, pos.y); + } + //update view General.Interface.RedrawDisplay(); } } private void treeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { - if (e.Node.Parent == null) return; - //edit comment if (GZBuilder.GZGeneral.UDMF) { - //store current label... NodeInfo info = e.Node.Tag as NodeInfo; - info.Label = e.Node.Text; + if (info == null) return; - //if we don't have comment - clear text - switch (e.Node.Parent.Text) { - case CAT_THINGS: - Thing t = General.Map.Map.GetThingByIndex(info.Index); - if (t != null) e.Node.Text = getComment(t.Fields); - break; + e.Node.Text = info.Comment; //set node text to comment + e.Node.BeginEdit(); //begin editing + } + } - case CAT_SECTORS: - Sector s = General.Map.Map.GetSectorByIndex(info.Index); - if (s != null) e.Node.Text = getComment(s.Fields); - break; - - case CAT_LINEDEFS: - Linedef l = General.Map.Map.GetLinedefByIndex(info.Index); - if (l != null) e.Node.Text = getComment(l.Fields); - break; - - default: - GZBuilder.GZGeneral.Trace("Got unknown category: " + e.Node.Parent.Text); - break; - } - - //begin editing - e.Node.BeginEdit(); + //we don't want to edit categories if we are in UDMF + private void treeView_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e) { + if (!GZBuilder.GZGeneral.UDMF || e.Node.Tag == null) { + e.CancelEdit = true; + return; } } @@ -377,110 +506,57 @@ namespace CodeImp.DoomBuilder.TagExplorer NodeInfo info = e.Node.Tag as NodeInfo; string comment = ""; + //to set comment manually we actually have to cancel edit... e.CancelEdit = true; e.Node.EndEdit(true); - //to set comment manually we actually have to cancel edit... if (e.Label != null && e.Label.Length > 1) { - bool hasComment = false; - //apply comment - switch (e.Node.Parent.Text) { - case CAT_THINGS: - Thing t = General.Map.Map.GetThingByIndex(info.Index); - if (t != null) { - setComment(t.Fields, e.Label); - e.Node.Text = getThingName(t, ref hasComment, ref comment); - e.Node.ForeColor = hasComment ? commentColor : Color.Black; - } - break; - - case CAT_SECTORS: - Sector s = General.Map.Map.GetSectorByIndex(info.Index); - if (s != null) { - setComment(s.Fields, e.Label); - e.Node.Text = getSectorName(s, ref hasComment, ref comment); - e.Node.ForeColor = hasComment ? commentColor : Color.Black; - } - break; - - case CAT_LINEDEFS: - Linedef l = General.Map.Map.GetLinedefByIndex(info.Index); - if (l != null) { - setComment(l.Fields, e.Label); - e.Node.Text = getLinedefName(l, ref hasComment, ref comment); - e.Node.ForeColor = hasComment ? commentColor : Color.Black; - } - break; - - default://dbg - GZBuilder.GZGeneral.Trace("Got unknown category: " + e.Node.Parent.Text); - break; - } - } else { //Edit cancelled. Remove comment - switch (e.Node.Parent.Text) { - case CAT_THINGS: - Thing t = General.Map.Map.GetThingByIndex(info.Index); - if (t != null) { - e.Node.Text = defaultThingName; - e.Node.ForeColor = Color.Black; - if (t.Fields.ContainsKey("comment")) t.Fields.Remove("comment"); - } - break; - - case CAT_SECTORS: - Sector s = General.Map.Map.GetSectorByIndex(info.Index); - if (s != null) { - e.Node.Text = defaultSectorName; - e.Node.ForeColor = Color.Black; - if (s.Fields.ContainsKey("comment")) s.Fields.Remove("comment"); - } - break; - - case CAT_LINEDEFS: - Linedef l = General.Map.Map.GetLinedefByIndex(info.Index); - if (l != null) { - e.Node.Text = defaultLinedefName; - e.Node.ForeColor = Color.Black; - if (l.Fields.ContainsKey("comment")) l.Fields.Remove("comment"); - } - break; - } + info.Comment = e.Label; + e.Node.Text = info.GetName(ref comment, currentSortMode); + //e.Node.ForeColor = (comment == "" ? Color.Black : commentColor); + e.Node.ForeColor = commentColor; + } else { //Edit cancelled. + info.Comment = ""; //Remove comment + e.Node.Text = info.GetName(ref comment, currentSortMode); + e.Node.ForeColor = Color.Black; } } + private void treeView_MouseLeave(object sender, EventArgs e) { + General.Interface.FocusDisplay(); + } + //it is called every time a dialog window closes. private void ParentForm_Activated(object sender, EventArgs e){ UpdateTree(); } private void btnClearSearch_Click(object sender, EventArgs e) { - if (tbSearch.Text != "") { - tbSearch.Clear(); - UpdateTree(); - } + tbSearch.Clear(); + General.Interface.FocusDisplay(); } private void tbSearch_TextChanged(object sender, EventArgs e) { - if(tbSearch.Text.Length > 2) UpdateTree(); + if (tbSearch.Text.Length > 1 || tbSearch.Text.Length == 0) UpdateTree(); + } + + private void cbCommentsOnly_CheckedChanged(object sender, EventArgs e) { + UpdateTree(); } } - internal class NodeInfo + internal struct SortMode { - private int index; - private int action; - private int tag; + public const string SORT_BY_INDEX = "By Index"; + public const string SORT_BY_TAG = "By Tag"; + public const string SORT_BY_ACTION = "By Action special"; + public static object[] SORT_MODES = new object[] { SORT_BY_INDEX, SORT_BY_TAG, SORT_BY_ACTION }; + } - public int Index { get { return index; } } - public int Tag { get { return tag; } } - public int Action { get { return action; } } - public string Label; //holds TreeNode text while it's edited - - public NodeInfo(int index, int action, int tag) { - this.index = index; - this.action = action; - this.tag = tag; - } + internal struct SelectedNode + { + public NodeInfoType Type; + public int Index; } } diff --git a/Source/Plugins/TagExplorer/Controls/TagExplorer.resx b/Source/Plugins/TagExplorer/Controls/TagExplorer.resx index 78e01f99..f92c4b48 100644 --- a/Source/Plugins/TagExplorer/Controls/TagExplorer.resx +++ b/Source/Plugins/TagExplorer/Controls/TagExplorer.resx @@ -124,107 +124,107 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABo - FwAAAk1TRnQBSQFMAgEBBgEAARgBAAEYAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwABIAMAAQEBAAEgBgABIBYAAxQBGQMUARkDFAEZNAADFAEZAxQBGQMUARmwAAMxAUwBBwFGAecB/wEH - ATIBoQH/AzEBTAMUARksAAMxAUwBswF0ASoB/wF+AU4BIAH/AzEBTAMUARmsAAEjAWMC/wEbAV0C/wEH - AT8BzgH/AQcBMgGhAf8DFAEZLAAB4AGHATIB/wHZAYYBMQH/AZ4BaAEnAf8BfgFOASAB/wMUARmsAAF3 - AZsC/wHoAe8C/wEbAV0C/wEHAUYB5wH/AxQBGSwAAf4BtAFvAv8B/QHlAf8B2QGGATEB/wGzAXQBKgH/ - AxQBGawAAzEBTAF3AZsC/wEjAWMC/wOJAf8DSwH/AyQBMygAAzEBTAH+AbQBbwH/AeABhwEyAf8BowGJ - AXQB/wNLAf8DJAEzsAADJAEzA7wB/wOBAf8DSwH/AyQBMwgAAyQBMwMkATMDJAEzGAADJAEzA7wB/wOB - Af8DSwH/AyQBMwgAAyQBMwMkATMDJAEznAADJAEzA80B/wOUAf8DSwH/AyQBMwMxAUwDSwH/A5QB/wMk - ATMcAAMkATMDzQH/A5QB/wNLAf8DJAEzAzEBTANLAf8DlAH/AyQBM6AAAyQBMwPNAf8DlAH/A0sB/wNL - Af8DlAH/AyQBMyQAAyQBMwPNAf8DlAH/A0sB/wNLAf8DlAH/AyQBM6gAAyQBMwO4Af8DlAH/A4EB/wMk - ATMsAAMkATMDuAH/A5QB/wOBAf8DJAEzsAADJAEzA88B/wOUAf8DSwH/AyQBMywAAyQBMwPPAf8DlAH/ - A0sB/wMkATOwAAMkATMDwwH/A5QB/wNLAf8DJAEzLAADJAEzA8MB/wOUAf8DSwH/AyQBM7AAAyQBMwO8 - Af8DlAH/A0sB/wMUARkDFAEZAxQBGSQAAyQBMwO8Af8DlAH/A0sB/wMUARkDFAEZAxQBGagAAyQBMwPZ - Af8DtwH/AQcBRgHnAf8BBwEyAaEB/wMxAUwDFAEZJAADJAEzA9kB/wHRAbcBnQH/AbMBdAEqAf8BfgFO - ASAB/wMxAUwDFAEZqAADJAEzASMBYwL/ARsBXQL/AQcBPwHOAf8BBwEyAaEB/wMUARkoAAMkATMB4AGH - ATIB/wHZAYYBMQH/AZ4BaAEnAf8BfgFOASAB/wMUARmsAAF3AZsC/wHoAe8C/wEbAV0C/wEHAUYB5wH/ - AxQBGSwAAf4BtAFvAv8B/QHlAf8B2QGGATEB/wGzAXQBKgH/AxQBGawAAzEBTAF3AZsC/wEjAWMC/wMx - AUwwAAMxAUwB/gG0AW8B/wHgAYcBMgH/AzEBTJgAAwoBCwMhAS0DKAE7AygBOwMoATsDHwErAxMBGAMT - ARggAAMKAQsDIQEtAygBOwMoATsDKAE7Ax8BKwMTARgDEwEYEAADFAEZAxQBGQMUARkgAAMUARkDFAEZ - AxQBGQgAAxQBGQMUARkDFAEZIAADFAEZAxQBGQMUARkUAAM5AVwCYAFqAegBKQExAYEB/wEjASoBdwH/ - ASIBKQF0Af8BIQEoAW0B/wFcAV0BYAHkAzkBXAMoATsDEwEYGAADOQFcAW4BZwFgAegBgQFcASkB/wF3 - AVQBIwH/AXQBUgEiAf8BbQFNASEB/wFiAV4BXAHkAzkBXAMoATsDEwEYCAADMQFMASsBOgGyAf8BIQEu - AX0B/wMxAUwDFAEZAxQBGQMUARkDFAEZAxQBGQMUARkDFAEZAzEBTAErAToBsgH/ASEBLgF9Af8DMQFM - AxQBGQMxAUwBsgF0ASsB/wF9AU4BIQH/AzEBTAMUARkDFAEZAxQBGQMUARkDFAEZAxQBGQMUARkDMQFM - AbIBdAErAf8BfQFOASEB/wMxAUwDFAEZDAACXAFeAcUBOQFFAbsB/wE3AUMBvAH/ATYBQgG6Af8BNQFB - AbcB/wEzAT0BtAH/ATEBPAGsAf8BLAE0AZQB/wEiASoBdwH/A1sBvQMoATsDEwEYEAACXgFcAcUBuwGD - ATkB/wG8AYIBNwH/AboBgQE2Af8BtwGBATUB/wG0AYEBMwH/AawBegExAf8BlAFsASwB/wF3AVMBIgH/ - A1sBvQMoATsDEwEYBAABNAFMAd8B/wEyAUYB2AH/AScBMwGdAf8BIQEuAX0B/wNEAf8DRAH/A0QB/wNE - Af8DRAH/A0QB/wNEAf8BNAFMAd8B/wEyAUYB2AH/AScBMwGdAf8BIQEuAX0B/wMUARkB3wGHATQB/wHY - AYYBMgH/AZ0BaAEnAf8BfQFOASEB/wNEAf8DRAH/A0QB/wNEAf8DRAH/A0QB/wNEAf8B3wGHATQB/wHY - AYYBMgH/AZ0BaAEnAf8BfQFOASEB/wMUARkIAANcAb4BPgFLAdMB/wFDAVIB6AH/AUcBVQHzAf8BRgFV - AfAB/wFFAVUB7wH/AUUBVQHvAf8BRAFSAe0B/wFBAVAB4gH/ATcBQwG7Af8BJwEuAYEB/wNbAb0DKAE7 - AxMBGAgAAlwBWgG+AdMBkwE+Af8B6AGhAUMB/wHzAaoBRwH/AfABpwFGAf8B7wGlAUUB/wHvAaUBRQH/ - Ae0BpQFEAf8B4gGcAUEB/wG7AYIBNwH/AYEBXgEnAf8DWwG9AygBOwMTARgBcAGBAf0B/wHsAeUC/wEy - AUYB2AH/ASsBOgGyAf8DuAH/A7gB/wO4Af8DuAH/A7gB/wOmAf8DmAH/AXABgQH9Af8B7AHlAv8BMgFG - AdgB/wErAToBsgH/AxQBGQH9AbQBcAL/Af0B5QH/AdgBhgEyAf8BsgF0ASsB/wO4Af8DuAH/A7gB/wO4 - Af8DuAH/A6YB/wOYAf8B/QG0AXAC/wH9AeUB/wHYAYYBMgH/AbIBdAErAf8DFAEZBAADOQFcAUcBVQHj - Af8BRgFUAfEB/wE2AUEBswH/ATQBPwGrAf8BRAFSAeoB/wFJAVkB+gH/AUgBVwH2Af8BRgFUAfEB/wFG - AVUB8AH/AUMBUQHqAf8BNgFBAb4B/wEmASwBgQH/AzkBXAMTARgEAAM5AVwB4wGgAUcB/wHxAagBRgH/ - AbMBgQE2Af8BqwF7ATQB/wHqAaMBRAH/AfoBrgFJAf8B9gGsAUgB/wHxAagBRgH/AfABpwFGAf8B6gGj - AUMB/wG+AYQBNgH/AYEBXQEmAf8DOQFcAxMBGAMxAUwBcAGBAf0B/wE0AUwB3wH/AzEBTAwAA7gB/wNP - AZkIAAMxAUwBcAGBAf0B/wE0AUwB3wH/AzEBTAQAAzEBTAH9AbQBcAH/Ad8BhwE0Af8DMQFMDAADuAH/ - A08BmQgAAzEBTAH9AbQBcAH/Ad8BhwE0Af8DMQFMCAACYQFoAdsBVgFkAfYB/wFQAV8C/wE2AUEBsQH/ - AwcB/wEPAREBKwH/ASQBKwF3Af8BOwFGAcIB/wFGAVYB8QH/AUkBWQH6Af8BRwFXAfQB/wFAAU4B5AH/ - ATEBPAGsAf8CXQFlAecDHwErBAABagFmAWEB2wH2AbEBVgL/AbQBUAH/AbEBfwE2Af8DBwH/ASsBIAEP - Af8BdwFUASQB/wHCAYgBOwH/AfEBpwFGAf8B+gGuAUkB/wH0AakBRwH/AeQBngFAAf8BrAF6ATEB/wFl - AWIBXQHnAx8BKwQAA5gB/wNLAf8DFAEZDAADpQH/A08BmQwAA5gB/wNEAf8DFAEZCAADmAH/A0sB/wMU - ARkMAAOlAf8DTwGZDAADmAH/A0QB/wMUARkIAAFTAWEC/wFrAXkC/wFaAWcB+wH/AUwBWgHoAf8BDwEQ - ASEB/wMHAf8DBwH/AwcB/wETARYBOgH/ASkBMQGEAf8BPQFJAc4B/wFFAVQB7wH/ATsBRwHMAf8BKgEz - AYoB/wMoATsEAAH/AbYBUwL/Ab4BawH/AfsBtwFaAf8B6AGlAUwB/wEhARoBDwH/AwcB/wMHAf8DBwH/ - AToBKgETAf8BhAFgASkB/wHOAZABPQH/Ae8BpgFFAf8BzAGOATsB/wGKAWQBKgH/AygBOwQAA6YB/wNL - Af8DFAEZIAADpgH/A0QB/wMUARkIAAOmAf8DSwH/AxQBGSAAA6YB/wNEAf8DFAEZBAADJAEzAWYBcwL/ - AXwBhAL/AWQBcAH5Af8BVgFlAfwB/wEnAS8BfAH/AwcB/wMHAf8DBwH/AQ0BDgEUAf8BIAEnAWYB/wEw - ATkBnQH/AUMBUAHkAf8BQAFPAeEB/wEtATYBnAH/AygBOwMkATMB/wG9AWYC/wHGAXwB/wH5AboBZAH/ - AfwBtAFWAf8BfAFYAScB/wMHAf8DBwH/AwcB/wEUAREBDQH/AWYBSAEgAf8BnQFyATAB/wHkAaABQwH/ - AeEBmwFAAf8BnAFwAS0B/wMoATsEAAOwAf8DSwH/A08BmQNPAZkUAANPAZkDTwGZA7AB/wNEAf8DFAEZ - CAADsAH/A0sB/wNPAZkDTwGZFAADTwGZA08BmQOwAf8DRAH/AxQBGQQAAyQBMwFwAX0C/wGBAYwC/wFl - AXMB+AH/AVQBZAH7Af8BPAFIAcsB/wIIAQoB/wMHAf8DBwH/ARkBHQFMAf8BSQFYAfkB/wFJAVkB+gH/ - AUYBVQHwAf8BQAFOAeMB/wEuATgBogH/AygBOwMkATMB/wHBAXAC/wHKAYEB/wH4AbgBZQH/AfsBsgFU - Af8BywGOATwB/wEKAQkBCAH/AwcB/wMHAf8BTAE3ARkB/wH5Aa4BSQH/AfoBrgFJAf8B8AGnAUYB/wHj - AZ0BQAH/AaIBdAEuAf8DKAE7BAADuAH/A7gB/wO4Af8DpQH/FAADpQH/A7gB/wO4Af8DRAH/AxQBGQgA - A7gB/wO4Af8DuAH/A6UB/xQAA6UB/wO4Af8DuAH/A0QB/wMUARkIAAFuAX0C/wGOAZcC/wFtAXgB/gH/ - AVYBZQH1Af8BTAFaAfgB/wEYAR0BTAH/AQoBCQELAf8BJQEtAXsB/wMHAf8BHAEiAVsB/wFGAVUB8AH/ - AUcBVQHzAf8BPgFMAdoB/wEwATkBnwH/AyMBMQQAAf8BvwFuAv8B0AGOAf8B/gHBAW0B/wH1AbABVgH/ - AfgBrwFMAf8BTAE2ARgB/wILAQkB/wF7AVYBJQH/AwcB/wFbAUABHAH/AfABpwFGAf8B8wGqAUcB/wHa - AZcBPgH/AZ8BdAEwAf8DIwExBAADuAH/A0sB/wMUARkgAAO4Af8DRAH/AxQBGQgAA7gB/wNLAf8DFAEZ - IAADuAH/A0QB/wMUARkIAAJmAWkB2wGWAaAC/wGGAZAC/wFuAXsB+QH/AVkBZwH+Af8BMQE7AZ0B/wEX - ARwBSAH/AUsBWwL/AS8BOAGYAf8DBwH/ARwBIgFbAf8BRQFUAe0B/wE+AUsB1QH/Al0BbwHqAw0BEAQA - AWoBZgFhAdsB/wHSAZYC/wHMAYYB/wH5AbwBbgH/Af4BuAFZAf8BnQFyATEB/wFIATMBFwL/AbIBSwH/ - AZgBbwEvAf8DBwH/AVsBQAEcAf8B7QGlAUUB/wHVAZQBPgH/AXABZwFbAeoDDQEQBAADuAH/A0sB/wMU - ARkgAAO4Af8DRAH/AxQBGQgAA7gB/wNLAf8DFAEZIAADuAH/A0QB/wMUARkIAAM5AVwBmAGiAv8BngGn - Av8BdwGBAv8BYwFwAfkB/wFOAVkB5AH/AT8BSgG+Af8BTwFfAfgB/wFRAV8B/QH/ATgBQAGcAf8DBwH/ - ATUBPwGxAf8BQQFOAd4B/wM5AVwIAAM5AVwB/wHTAZgC/wHWAZ4C/wHFAXcB/wH5AbkBYwH/AeQBpQFO - Af8BvgGHAT8B/wH4Aa4BTwH/Af0BtAFRAf8BnAF1ATgB/wMHAf8BsQGAATUB/wHeAZsBQQH/AzkBXAgA - A7gB/wNLAf8DFAEZDAADpQH/A08BmQwAA7gB/wNEAf8DFAEZCAADuAH/A0sB/wMUARkMAAOlAf8DTwGZ - DAADuAH/A0QB/wMUARkMAANYAbIBqAGxAv8BiQGTAv8BfQGDAv8BdAGAAfwB/wFpAXUB9gH/AWMBbwH2 - Af8BYgFuAfUB/wFeAWsB+wH/AUEBSwHCAf8BQgFQAeAB/wJcAV8BxhAAA1gBsgH/AdkBqAL/Ac4BiQL/ - AcgBfQH/AfwBwQF0Af8B9gG5AWkB/wH2AbcBYwH/AfUBtgFiAf8B+wG4AV4B/wHCAYsBQQH/AeABnAFC - Af8CXwFcAcYIAAMxAUwBKwE6AbIB/wEhAS4BfQH/AzEBTAMUARkDFAEZAxQBGQO4Af8DTwGZAxQBGQMU - ARkDMQFMASsBOgGyAf8BIQEuAX0B/wMxAUwDFAEZAzEBTAGyAXQBKwH/AX0BTgEhAf8DMQFMAxQBGQMU - ARkDFAEZA7gB/wNPAZkDFAEZAxQBGQMxAUwBsgF0ASsB/wF9AU4BIQH/AzEBTAMUARkMAANZAbEBnwGp - Av8BlwGiAv8BiwGVAv8BeAGCAv8BZgF1Af0B/wFcAWkB+QH/AVABXwH3Af8BSQFZAfoB/wFdAVsBXQG9 - GAADWQGxAf8B1QGfAv8B0QGXAv8BzwGLAv8BwwF4Af8B/QG6AWYB/wH5AbYBXAH/AfcBrwFQAf8B+gGt - AUkB/wJdAVsBvQwAATQBTAHfAf8BMgFGAdgB/wEnATMBnQH/ASEBLgF9Af8DSwH/A0sB/wNLAf8DuAH/ - A0sB/wNLAf8DSwH/ATQBTAHfAf8BMgFGAdgB/wEnATMBnQH/ASEBLgF9Af8DFAEZAd8BhwE0Af8B2AGG - ATIB/wGdAWgBJwH/AX0BTgEhAf8DSwH/A0sB/wNLAf8DuAH/A0sB/wNLAf8DSwH/Ad8BhwE0Af8B2AGG - ATIB/wGdAWgBJwH/AX0BTgEhAf8DFAEZEAADOQFcA2UB2AF/AYcC/wGDAY0C/wF4AYMC/wFjAXEC/wJg - AWUB2AM5AVwgAAM5AVwBZwFlAWMB2AH/AccBfwL/AcwBgwL/AcIBeAL/AbwBYwH/AmUBYAHYAzkBXBAA - AXABgQH9Af8B7AHlAv8BMgFGAdgB/wErAToBsgH/A7gB/wO4Af8DuAH/A7gB/wO4Af8DpgH/A5gB/wFw - AYEB/QH/AewB5QL/ATIBRgHYAf8BKwE6AbIB/wMUARkB/QG0AXAC/wH9AeUB/wHYAYYBMgH/AbIBdAEr - Af8DuAH/A7gB/wO4Af8DuAH/A7gB/wOmAf8DmAH/Af0BtAFwAv8B/QHlAf8B2AGGATIB/wGyAXQBKwH/ - AxQBGRwAAyQBMwMkATM4AAMkATMDJAEzHAADMQFMAXABgQH9Af8BNAFMAd8B/wMxAUwcAAMxAUwBcAGB - Af0B/wE0AUwB3wH/AzEBTAQAAzEBTAH9AbQBcAH/Ad8BhwE0Af8DMQFMHAADMQFMAf0BtAFwAf8B3wGH - ATQB/wMxAUwEAAFCAU0BPgcAAT4DAAEoAwABQAMAASADAAEBAQABAQYAAQEWAAP/AQABjwH/AY8B/wQA - AQcB/wEHAf8EAAEHAf8BBwH/BAABBwH/AQcB/wQAAQMB/wEDAf8EAAHBAY8BwQGPBAAB4AEPAeABDwQA - AfABHwHwAR8EAAH4AT8B+AE/BAAB/AEfAfwBHwQAAf4BDwH+AQ8EAAH/AQEB/wEBBAAB/wGAAf8BgAQA - Af8BwAH/AcAEAAH/AeAB/wHgBAAB/wHhAf8B4QQAAfgBBwH4AQcBjwHxAY8B8QHwAQMB8AEDBAAB4AEB - AeABAQQAAcABAAHABQABgAEAAYABAAEOAWEBDgFhAYABAAGAAQABjgFxAY4BcQGAAQABgAEAAY8B8QGP - AfEEAAGHAcEBhwHBBAABhwHBAYcBwQGAAQABgAEAAY8B8QGPAfEBgAEAAYABAAGPAfEBjwHxAYABAQGA - AQEBjgFxAY4BcQHAAQMBwAEDBAAB4AEHAeABBwQAAfABDwHwAQ8EAAH+AX8B/gF/AQ8B4QEPAeEL + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABA + FwAAAk1TRnQBSQFMAgEBBgEAAUABAAFAAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABIAMAAQEBAAEgBgABIBYAAxIBGQMSARkDEgEZNAADEgEZAxIBGQMSARmwAAMwAUwBAgFBAecB/wEC + AS0BoQH/AzABTAMSARksAAMwAUwBswFvASUB/wF5AUkBGwH/AzABTAMSARmsAAEeAV4C/wEWAVgC/wEC + AToBzgH/AQIBLQGhAf8DEgEZLAAB4AGHAS0B/wHZAYYBLAH/AZ4BYwEiAf8BeQFJARsB/wMSARmsAAFy + AZsC/wHoAe8C/wEWAVgC/wECAUEB5wH/AxIBGSwAAf4BtAFqAv8B/QHlAf8B2QGGASwB/wGzAW8BJQH/ + AxIBGawAAzABTAFyAZsC/wEeAV4C/wOJAf8DRgH/AyMBMygAAzABTAH+AbQBagH/AeABhwEtAf8BowGJ + AW8B/wNGAf8DIwEzsAADIwEzA7wB/wOBAf8DRgH/AyMBMwgAAyMBMwMjATMDIwEzGAADIwEzA7wB/wOB + Af8DRgH/AyMBMwgAAyMBMwMjATMDIwEznAADIwEzA80B/wOUAf8DRgH/AyMBMwMwAUwDRgH/A5QB/wMj + ATMcAAMjATMDzQH/A5QB/wNGAf8DIwEzAzABTANGAf8DlAH/AyMBM6AAAyMBMwPNAf8DlAH/A0YB/wNG + Af8DlAH/AyMBMyQAAyMBMwPNAf8DlAH/A0YB/wNGAf8DlAH/AyMBM6gAAyMBMwO4Af8DlAH/A4EB/wMj + ATMsAAMjATMDuAH/A5QB/wOBAf8DIwEzsAADIwEzA88B/wOUAf8DRgH/AyMBMywAAyMBMwPPAf8DlAH/ + A0YB/wMjATOwAAMjATMDwwH/A5QB/wNGAf8DIwEzLAADIwEzA8MB/wOUAf8DRgH/AyMBM7AAAyMBMwO8 + Af8DlAH/A0YB/wMSARkDEgEZAxIBGSQAAyMBMwO8Af8DlAH/A0YB/wMSARkDEgEZAxIBGagAAyMBMwPZ + Af8DtwH/AQIBQQHnAf8BAgEtAaEB/wMwAUwDEgEZJAADIwEzA9kB/wHRAbcBnQH/AbMBbwElAf8BeQFJ + ARsB/wMwAUwDEgEZqAADIwEzAR4BXgL/ARYBWAL/AQIBOgHOAf8BAgEtAaEB/wMSARkoAAMjATMB4AGH + AS0B/wHZAYYBLAH/AZ4BYwEiAf8BeQFJARsB/wMSARmsAAFyAZsC/wHoAe8C/wEWAVgC/wECAUEB5wH/ + AxIBGSwAAf4BtAFqAv8B/QHlAf8B2QGGASwB/wGzAW8BJQH/AxIBGawAAzABTAFyAZsC/wEeAV4C/wMw + AUwwAAMwAUwB/gG0AWoB/wHgAYcBLQH/AzABTJgAAwgBCwMfAS0DJwE7AycBOwMnATsDHgErAxIBGAMS + ARggAAMIAQsDHwEtAycBOwMnATsDJwE7Ax4BKwMSARgDEgEYEAADEgEZAxIBGQMSARkgAAMSARkDEgEZ + AxIBGQgAAxIBGQMSARkDEgEZIAADEgEZAxIBGQMSARkUAAM4AVwCXwFkAegBJAEsAYEB/wEeASUBcgH/ + AR0BJAFvAf8BHAEjAWgB/wJaAWAB5AM4AVwDJwE7AxIBGBgAAzgBXAFlAWEBXwHoAYEBVwEkAf8BcgFP + AR4B/wFvAU0BHQH/AWgBSAEcAf8BYQJaAeQDOAFcAycBOwMSARgIAAMwAUwBJgE1AbIB/wEcASkBeAH/ + AzABTAMSARkDEgEZAxIBGQMSARkDEgEZAxIBGQMSARkDMAFMASYBNQGyAf8BHAEpAXgB/wMwAUwDEgEZ + AzABTAGyAW8BJgH/AXgBSQEcAf8DMAFMAxIBGQMSARkDEgEZAxIBGQMSARkDEgEZAxIBGQMwAUwBsgFv + ASYB/wF4AUkBHAH/AzABTAMSARkMAANaAcUBNAFAAbsB/wEyAT4BvAH/ATEBPQG6Af8BMAE8AbcB/wEu + ATgBtAH/ASwBNwGsAf8BJwEvAZQB/wEdASUBcgH/A1oBvQMnATsDEgEYEAADWgHFAbsBgwE0Af8BvAGC + ATIB/wG6AYEBMQH/AbcBgQEwAf8BtAGBAS4B/wGsAXUBLAH/AZQBZwEnAf8BcgFOAR0B/wNaAb0DJwE7 + AxIBGAQAAS8BRwHfAf8BLQFBAdgB/wEiAS4BnQH/ARwBKQF4Af8DPwH/Az8B/wM/Af8DPwH/Az8B/wM/ + Af8DPwH/AS8BRwHfAf8BLQFBAdgB/wEiAS4BnQH/ARwBKQF4Af8DEgEZAd8BhwEvAf8B2AGGAS0B/wGd + AWMBIgH/AXgBSQEcAf8DPwH/Az8B/wM/Af8DPwH/Az8B/wM/Af8DPwH/Ad8BhwEvAf8B2AGGAS0B/wGd + AWMBIgH/AXgBSQEcAf8DEgEZCAADWQG+ATkBRgHTAf8BPgFNAegB/wFCAVAB8wH/AUEBUAHwAf8BQAFQ + Ae8B/wFAAVAB7wH/AT8BTQHtAf8BPAFLAeIB/wEyAT4BuwH/ASIBKQGBAf8DWgG9AycBOwMSARgIAANZ + Ab4B0wGTATkB/wHoAaEBPgH/AfMBqgFCAf8B8AGnAUEB/wHvAaUBQAH/Ae8BpQFAAf8B7QGlAT8B/wHi + AZwBPAH/AbsBggEyAf8BgQFZASIB/wNaAb0DJwE7AxIBGAFrAYEB/QH/AewB5QL/AS0BQQHYAf8BJgE1 + AbIB/wO4Af8DuAH/A7gB/wO4Af8DuAH/A6YB/wOYAf8BawGBAf0B/wHsAeUC/wEtAUEB2AH/ASYBNQGy + Af8DEgEZAf0BtAFrAv8B/QHlAf8B2AGGAS0B/wGyAW8BJgH/A7gB/wO4Af8DuAH/A7gB/wO4Af8DpgH/ + A5gB/wH9AbQBawL/Af0B5QH/AdgBhgEtAf8BsgFvASYB/wMSARkEAAM4AVwBQgFQAeMB/wFBAU8B8QH/ + ATEBPAGzAf8BLwE6AasB/wE/AU0B6gH/AUQBVAH6Af8BQwFSAfYB/wFBAU8B8QH/AUEBUAHwAf8BPgFM + AeoB/wExATwBvgH/ASEBJwGBAf8DOAFcAxIBGAQAAzgBXAHjAaABQgH/AfEBqAFBAf8BswGBATEB/wGr + AXYBLwH/AeoBowE/Af8B+gGuAUQB/wH2AawBQwH/AfEBqAFBAf8B8AGnAUEB/wHqAaMBPgH/Ab4BhAEx + Af8BgQFYASEB/wM4AVwDEgEYAzABTAFrAYEB/QH/AS8BRwHfAf8DMAFMDAADuAH/A04BmQgAAzABTAFr + AYEB/QH/AS8BRwHfAf8DMAFMBAADMAFMAf0BtAFrAf8B3wGHAS8B/wMwAUwMAAO4Af8DTgGZCAADMAFM + Af0BtAFrAf8B3wGHAS8B/wMwAUwIAANfAdsBUQFfAfYB/wFLAVoC/wExATwBsQH/AwIB/wEKAQwBJgH/ + AR8BJgFyAf8BNgFBAcIB/wFBAVEB8QH/AUQBVAH6Af8BQgFSAfQB/wE7AUkB5AH/ASwBNwGsAf8CXAFk + AecDHgErBAADXwHbAfYBsQFRAv8BtAFLAf8BsQF6ATEB/wMCAf8BJgEbAQoB/wFyAU8BHwH/AcIBiAE2 + Af8B8QGnAUEB/wH6Aa4BRAH/AfQBqQFCAf8B5AGeATsB/wGsAXUBLAH/AWQBYgFcAecDHgErBAADmAH/ + A0YB/wMSARkMAAOlAf8DTgGZDAADmAH/Az8B/wMSARkIAAOYAf8DRgH/AxIBGQwAA6UB/wNOAZkMAAOY + Af8DPwH/AxIBGQgAAU4BXAL/AWYBdAL/AVUBYgH7Af8BRwFVAegB/wEKAQsBHAH/AwIB/wMCAf8DAgH/ + AQ4BEQE1Af8BJAEsAYQB/wE4AUQBzgH/AUABTwHvAf8BNgFCAcwB/wElAS4BigH/AycBOwQAAf8BtgFO + Av8BvgFmAf8B+wG3AVUB/wHoAaUBRwH/ARwBFQEKAf8DAgH/AwIB/wMCAf8BNQElAQ4B/wGEAVsBJAH/ + Ac4BkAE4Af8B7wGmAUAB/wHMAY4BNgH/AYoBXwElAf8DJwE7BAADpgH/A0YB/wMSARkgAAOmAf8DPwH/ + AxIBGQgAA6YB/wNGAf8DEgEZIAADpgH/Az8B/wMSARkEAAMjATMBYQFuAv8BdwGEAv8BXwFrAfkB/wFR + AWAB/AH/ASIBKgF3Af8DAgH/AwIB/wMCAf8BCAEJAQ8B/wEbASIBYQH/ASsBNAGdAf8BPgFLAeQB/wE7 + AUoB4QH/ASgBMQGcAf8DJwE7AyMBMwH/Ab0BYQL/AcYBdwH/AfkBugFfAf8B/AG0AVEB/wF3AVMBIgH/ + AwIB/wMCAf8DAgH/AQ8BDAEIAf8BYQFDARsB/wGdAW0BKwH/AeQBoAE+Af8B4QGbATsB/wGcAWsBKAH/ + AycBOwQAA7AB/wNGAf8DTgGZA04BmRQAA04BmQNOAZkDsAH/Az8B/wMSARkIAAOwAf8DRgH/A04BmQNO + AZkUAANOAZkDTgGZA7AB/wM/Af8DEgEZBAADIwEzAWsBeAL/AYEBjAL/AWABbgH4Af8BTwFfAfsB/wE3 + AUMBywH/AgMBBQH/AwIB/wMCAf8BFAEYAUcB/wFEAVMB+QH/AUQBVAH6Af8BQQFQAfAB/wE7AUkB4wH/ + ASkBMwGiAf8DJwE7AyMBMwH/AcEBawL/AcoBgQH/AfgBuAFgAf8B+wGyAU8B/wHLAY4BNwH/AQUBBAED + Af8DAgH/AwIB/wFHATIBFAH/AfkBrgFEAf8B+gGuAUQB/wHwAacBQQH/AeMBnQE7Af8BogFvASkB/wMn + ATsEAAO4Af8DuAH/A7gB/wOlAf8UAAOlAf8DuAH/A7gB/wM/Af8DEgEZCAADuAH/A7gB/wO4Af8DpQH/ + FAADpQH/A7gB/wO4Af8DPwH/AxIBGQgAAWkBeAL/AY4BlwL/AWgBcwH+Af8BUQFgAfUB/wFHAVUB+AH/ + ARMBGAFHAf8BBQEEAQYB/wEgASgBdgH/AwIB/wEXAR0BVgH/AUEBUAHwAf8BQgFQAfMB/wE5AUcB2gH/ + ASsBNAGfAf8DIgExBAAB/wG/AWkC/wHQAY4B/wH+AcEBaAH/AfUBsAFRAf8B+AGvAUcB/wFHATEBEwH/ + AgYBBAH/AXYBUQEgAf8DAgH/AVYBOwEXAf8B8AGnAUEB/wHzAaoBQgH/AdoBlwE5Af8BnwFvASsB/wMi + ATEEAAO4Af8DRgH/AxIBGSAAA7gB/wM/Af8DEgEZCAADuAH/A0YB/wMSARkgAAO4Af8DPwH/AxIBGQgA + A18B2wGWAaAC/wGGAZAC/wFpAXYB+QH/AVQBYgH+Af8BLAE2AZ0B/wESARcBQwH/AUYBVgL/ASoBMwGY + Af8DAgH/ARcBHQFWAf8BQAFPAe0B/wE5AUYB1QH/AlwBZAHqAwwBEAQAA18B2wH/AdIBlgL/AcwBhgH/ + AfkBvAFpAf8B/gG4AVQB/wGdAW0BLAH/AUMBLgESAv8BsgFGAf8BmAFqASoB/wMCAf8BVgE7ARcB/wHt + AaUBQAH/AdUBlAE5Af8BZQFiAVwB6gMMARAEAAO4Af8DRgH/AxIBGSAAA7gB/wM/Af8DEgEZCAADuAH/ + A0YB/wMSARkgAAO4Af8DPwH/AxIBGQgAAzgBXAGYAaIC/wGeAacC/wFyAYEC/wFeAWsB+QH/AUkBVAHk + Af8BOgFFAb4B/wFKAVoB+AH/AUwBWgH9Af8BMwE7AZwB/wMCAf8BMAE6AbEB/wE8AUkB3gH/AzgBXAgA + AzgBXAH/AdMBmAL/AdYBngL/AcUBcgH/AfkBuQFeAf8B5AGlAUkB/wG+AYcBOgH/AfgBrgFKAf8B/QG0 + AUwB/wGcAXABMwH/AwIB/wGxAYABMAH/Ad4BmwE8Af8DOAFcCAADuAH/A0YB/wMSARkMAAOlAf8DTgGZ + DAADuAH/Az8B/wMSARkIAAO4Af8DRgH/AxIBGQwAA6UB/wNOAZkMAAO4Af8DPwH/AxIBGQwAA1UBsgGo + AbEC/wGJAZMC/wF4AYMC/wFvAYAB/AH/AWQBcAH2Af8BXgFqAfYB/wFdAWkB9QH/AVkBZgH7Af8BPAFG + AcIB/wE9AUsB4AH/A1sBxhAAA1UBsgH/AdkBqAL/Ac4BiQL/AcgBeAH/AfwBwQFvAf8B9gG5AWQB/wH2 + AbcBXgH/AfUBtgFdAf8B+wG4AVkB/wHCAYsBPAH/AeABnAE9Af8DWwHGCAADMAFMASYBNQGyAf8BHAEp + AXgB/wMwAUwDEgEZAxIBGQMSARkDuAH/A04BmQMSARkDEgEZAzABTAEmATUBsgH/ARwBKQF4Af8DMAFM + AxIBGQMwAUwBsgFvASYB/wF4AUkBHAH/AzABTAMSARkDEgEZAxIBGQO4Af8DTgGZAxIBGQMSARkDMAFM + AbIBbwEmAf8BeAFJARwB/wMwAUwDEgEZDAADVgGxAZ8BqQL/AZcBogL/AYsBlQL/AXMBggL/AWEBcAH9 + Af8BVwFkAfkB/wFLAVoB9wH/AUQBVAH6Af8DWgG9GAADVgGxAf8B1QGfAv8B0QGXAv8BzwGLAv8BwwFz + Af8B/QG6AWEB/wH5AbYBVwH/AfcBrwFLAf8B+gGtAUQB/wNaAb0MAAEvAUcB3wH/AS0BQQHYAf8BIgEu + AZ0B/wEcASkBeAH/A0YB/wNGAf8DRgH/A7gB/wNGAf8DRgH/A0YB/wEvAUcB3wH/AS0BQQHYAf8BIgEu + AZ0B/wEcASkBeAH/AxIBGQHfAYcBLwH/AdgBhgEtAf8BnQFjASIB/wF4AUkBHAH/A0YB/wNGAf8DRgH/ + A7gB/wNGAf8DRgH/A0YB/wHfAYcBLwH/AdgBhgEtAf8BnQFjASIB/wF4AUkBHAH/AxIBGRAAAzgBXANe + AdgBegGHAv8BgwGNAv8BcwGDAv8BXgFsAv8DXgHYAzgBXCAAAzgBXANeAdgB/wHHAXoC/wHMAYMC/wHC + AXMC/wG8AV4B/wNeAdgDOAFcEAABawGBAf0B/wHsAeUC/wEtAUEB2AH/ASYBNQGyAf8DuAH/A7gB/wO4 + Af8DuAH/A7gB/wOmAf8DmAH/AWsBgQH9Af8B7AHlAv8BLQFBAdgB/wEmATUBsgH/AxIBGQH9AbQBawL/ + Af0B5QH/AdgBhgEtAf8BsgFvASYB/wO4Af8DuAH/A7gB/wO4Af8DuAH/A6YB/wOYAf8B/QG0AWsC/wH9 + AeUB/wHYAYYBLQH/AbIBbwEmAf8DEgEZHAADIwEzAyMBMzgAAyMBMwMjATMcAAMwAUwBawGBAf0B/wEv + AUcB3wH/AzABTBwAAzABTAFrAYEB/QH/AS8BRwHfAf8DMAFMBAADMAFMAf0BtAFrAf8B3wGHAS8B/wMw + AUwcAAMwAUwB/QG0AWsB/wHfAYcBLwH/AzABTAQAAUIBTQE+BwABPgMAASgDAAFAAwABIAMAAQEBAAEB + BgABARYAA/8BAAGPAf8BjwH/BAABBwH/AQcB/wQAAQcB/wEHAf8EAAEHAf8BBwH/BAABAwH/AQMB/wQA + AcEBjwHBAY8EAAHgAQ8B4AEPBAAB8AEfAfABHwQAAfgBPwH4AT8EAAH8AR8B/AEfBAAB/gEPAf4BDwQA + Af8BAQH/AQEEAAH/AYAB/wGABAAB/wHAAf8BwAQAAf8B4AH/AeAEAAH/AeEB/wHhBAAB+AEHAfgBBwGP + AfEBjwHxAfABAwHwAQMEAAHgAQEB4AEBBAABwAEAAcAFAAGAAQABgAEAAQ4BYQEOAWEBgAEAAYABAAGO + AXEBjgFxAYABAAGAAQABjwHxAY8B8QQAAYcBwQGHAcEEAAGHAcEBhwHBAYABAAGAAQABjwHxAY8B8QGA + AQABgAEAAY8B8QGPAfEBgAEBAYABAQGOAXEBjgFxAcABAwHAAQMEAAHgAQcB4AEHBAAB8AEPAfABDwQA + Af4BfwH+AX8BDwHhAQ8B4Qs= diff --git a/Source/Plugins/TagExplorer/NodeInfo.cs b/Source/Plugins/TagExplorer/NodeInfo.cs new file mode 100644 index 00000000..7d9769da --- /dev/null +++ b/Source/Plugins/TagExplorer/NodeInfo.cs @@ -0,0 +1,214 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using CodeImp.DoomBuilder.Config; +using CodeImp.DoomBuilder.Map; +using CodeImp.DoomBuilder.Geometry; +using CodeImp.DoomBuilder.Types; + +namespace CodeImp.DoomBuilder.TagExplorer +{ + internal sealed class NodeInfo + { + private NodeInfoType type; + + private int index; + private int action; + private int tag; + private int thingType; + private string defaultName; + + public int Index { get { return index; } } + public int Tag { get { return tag; } } + public int Action { get { return action; } } + public int ThingType { + get { + if (type != NodeInfoType.THING) + throw new Exception("Error: ThingType property accessed in " + type.ToString() + " node!"); + return thingType; + } + } + public NodeInfoType Type { get { return type; } } + public string Comment { get { return getComment(); } set { setComment(value); } } + public string DefaultName { get { return defaultName; } } + + //constructor + public NodeInfo(Thing t) { + type = NodeInfoType.THING; + index = t.Index; + action = t.Action; + tag = t.Tag; + thingType = t.Type; + ThingTypeInfo tti = General.Map.Data.GetThingInfoEx(t.Type); + defaultName = (tti != null ? tti.Title : NodeInfoDefaultName.THING); + } + + public NodeInfo(Sector s) { + type = NodeInfoType.SECTOR; + index = s.FixedIndex; + action = s.Effect; + tag = s.Tag; + } + + public NodeInfo(Linedef l) { + type = NodeInfoType.LINEDEF; + index = l.Index; + action = l.Action; + tag = l.Tag; + } + + //methods + private UniFields getFields() { + if (type == NodeInfoType.THING) { + Thing t = General.Map.Map.GetThingByIndex(index); + if (t == null) return null; + return t.Fields; + } + + if (type == NodeInfoType.SECTOR) { + Sector s = General.Map.Map.GetSectorByIndex(index); + if (s == null) return null; + return s.Fields; + } + + Linedef l = General.Map.Map.GetLinedefByIndex(index); + if (l == null) return null; + return l.Fields; + } + + public Vector2D GetPosition() { + switch (type){ + case NodeInfoType.THING: + Thing t = General.Map.Map.GetThingByIndex(index); + if (t != null) return new Vector2D(t.Position.x, t.Position.y); + return new Vector2D(); + break; + + case NodeInfoType.SECTOR: + Sector s = General.Map.Map.GetSectorByIndex(index); + if (s != null) return new Vector2D(s.BBox.Location.X + s.BBox.Width / 2, s.BBox.Location.Y + s.BBox.Height / 2); + return new Vector2D(); + break; + + case NodeInfoType.LINEDEF: + Linedef l = General.Map.Map.GetLinedefByIndex(index); + if (l != null) return new Vector2D(l.Rect.Location.X + l.Rect.Width / 2, l.Rect.Location.Y + l.Rect.Height / 2); + return new Vector2D(); + break; + + default: + return new Vector2D(); + break; + } + } + +//comment + private void setComment(string comment) { + UniFields fields = getFields(); + + if (comment == "") { + if (fields.ContainsKey("comment")) fields.Remove("comment"); + return; + } + + if (!fields.ContainsKey("comment")) + fields.Add("comment", new UniValue((int)UniversalType.String, comment)); + else + fields["comment"].Value = comment; + } + + private string getComment() { + UniFields fields = getFields(); + if (fields == null) return ""; + if (!fields.ContainsKey("comment")) return ""; + return fields["comment"].Value.ToString(); + } + +//naming + public string GetName(ref string comment, string sortMode) { + if (type == NodeInfoType.THING) { + Thing t = General.Map.Map.GetThingByIndex(index); + if (t == null) return ""; + return getThingName(t, ref comment, sortMode); + } + + if (type == NodeInfoType.SECTOR) { + Sector s = General.Map.Map.GetSectorByIndex(index); + if (s == null) return ""; + return getSectorName(s, ref comment, sortMode); + } + + Linedef l = General.Map.Map.GetLinedefByIndex(index); + if (l == null) return ""; + return getLinedefName(l, ref comment, sortMode); + } + + private string getThingName(Thing t, ref string comment, string sortMode) { + bool isDefaultName = true; + comment = ""; + if (GZBuilder.GZGeneral.UDMF && t.Fields.ContainsKey("comment")) { + comment = t.Fields["comment"].Value.ToString(); + isDefaultName = false; + } + return combineName(comment == "" ? defaultName : comment, t.Tag, t.Action, t.Index, sortMode, isDefaultName); + } + + private string getSectorName(Sector s, ref string comment, string sortMode) { + bool isDefaultName = true; + comment = ""; + if (GZBuilder.GZGeneral.UDMF && s.Fields.ContainsKey("comment")) { + comment = s.Fields["comment"].Value.ToString(); + isDefaultName = false; + } + return combineName(comment == "" ? NodeInfoDefaultName.SECTOR : comment, s.Tag, s.Effect, s.FixedIndex, sortMode, isDefaultName); + } + + private string getLinedefName(Linedef l, ref string comment, string sortMode) { + bool isDefaultName = true; + comment = ""; + if (GZBuilder.GZGeneral.UDMF && l.Fields.ContainsKey("comment")) { + comment = l.Fields["comment"].Value.ToString(); + isDefaultName = false; + } + return combineName(comment == "" ? NodeInfoDefaultName.LINEDEF : comment, l.Tag, l.Action, l.Index, sortMode, isDefaultName); + } + + private string combineName(string name, int tag, int action, int index, string sortMode, bool isDefaultName) { + string combinedName = ""; + switch (sortMode) { + case SortMode.SORT_BY_ACTION: + combinedName = (action > 0 ? "Action:" + action + "; " : "") + (tag > 0 ? "Tag:" + tag + "; " : "") + name + (isDefaultName ? " " + index : ""); + break; + + case SortMode.SORT_BY_INDEX: + combinedName = index + (tag > 0 ? ": Tag:" + tag + "; " : ": ") + (action > 0 ? "Action:" + action + "; " : "") + name; + break; + + case SortMode.SORT_BY_TAG: + combinedName = (tag > 0 ? "Tag:" + tag + "; " : "") + (action > 0 ? "Action:" + action + "; " : "") + name + (isDefaultName ? " " + index : ""); + break; + + default: + combinedName = name; + break; + } + return combinedName; + } + } + + internal enum NodeInfoType + { + THING, + SECTOR, + LINEDEF + } + + internal struct NodeInfoDefaultName + { + public const string THING = "Thing"; + public const string SECTOR = "Sector"; + public const string LINEDEF = "Linedef"; + } + +} diff --git a/Source/Plugins/TagExplorer/TagExplorer.csproj b/Source/Plugins/TagExplorer/TagExplorer.csproj index fe78d362..12f8f9a0 100644 --- a/Source/Plugins/TagExplorer/TagExplorer.csproj +++ b/Source/Plugins/TagExplorer/TagExplorer.csproj @@ -35,8 +35,10 @@ 3.5 + + @@ -46,6 +48,7 @@ TagExplorer.cs + True