コード例 #1
0
ファイル: CM_Allegiance.cs プロジェクト: OptimShi/aclogview
        public void contributeToTreeNode(TreeNode node)
        {
            node.Nodes.Add("packed_nodes = " + packed_nodes);
            node.Nodes.Add("m_oldVersion = " + m_oldVersion);
            TreeNode officersNode = node.Nodes.Add("m_AllegianceOfficers = ");

            m_AllegianceOfficers.contributeToTreeNode(officersNode);
            TreeNode officerTitlesNode = node.Nodes.Add("m_OfficerTitles = ");

            m_OfficerTitles.contributeToTreeNode(officerTitlesNode);
            node.Nodes.Add("m_monarchBroadcastTime = " + m_monarchBroadcastTime);
            node.Nodes.Add("m_monarchBroadcastsToday = " + m_monarchBroadcastsToday);
            node.Nodes.Add("m_spokesBroadcastTime = " + m_spokesBroadcastTime);
            node.Nodes.Add("m_spokesBroadcastsToday = " + m_spokesBroadcastsToday);
            node.Nodes.Add("m_motd = " + m_motd);
            node.Nodes.Add("m_motdSetBy = " + m_motdSetBy);
            node.Nodes.Add("m_chatRoomID = " + m_chatRoomID);
            TreeNode bindNode = node.Nodes.Add("m_BindPoint = ");

            m_BindPoint.contributeToTreeNode(bindNode);
            node.Nodes.Add("m_AllegianceName = " + m_AllegianceName);
            node.Nodes.Add("m_NameLastSetTime = " + m_NameLastSetTime);
            node.Nodes.Add("m_isLocked = " + m_isLocked);
            node.Nodes.Add("m_ApprovedVassal = " + Utility.FormatHex(m_ApprovedVassal));
            if (packed_nodes > 0)
            {
                m_pMonarch.contributeToTreeNode(node);
            }
        }
コード例 #2
0
ファイル: CM_Social.cs プロジェクト: spazmodica/aclogview
        public override void contributeToTreeView(TreeView treeView)
        {
            TreeNode rootNode = new TreeNode(this.GetType().Name);

            rootNode.Expand();
            TreeNode trackerTableNode = rootNode.Nodes.Add("_contractTrackerHash = ");

            _contractTrackerHash.contributeToTreeNode(trackerTableNode);
            treeView.Nodes.Add(rootNode);
        }
コード例 #3
0
ファイル: CM_Character.cs プロジェクト: OptimShi/aclogview
        public void contributeToTreeNode(TreeNode node)
        {
            TreeNode IntStatsNode = node.Nodes.Add("m_pIntStatsTable = ");

            m_pIntStatsTable.contributeToTreeNode(IntStatsNode);
            TreeNode BoolStatsNode = node.Nodes.Add("m_pBoolStatsTable = ");

            m_pBoolStatsTable.contributeToTreeNode(BoolStatsNode);
            TreeNode FloatStatsNode = node.Nodes.Add("m_pFloatStatsTable = ");

            m_pFloatStatsTable.contributeToTreeNode(FloatStatsNode);
            TreeNode StrStatsNode = node.Nodes.Add("m_pStrStatsTable = ");

            m_pStrStatsTable.contributeToTreeNode(StrStatsNode);
        }
コード例 #4
0
        public void contributeToTreeNode(TreeNode node)
        {
            node.Nodes.Add("header = " + header);
            node.Nodes.Add("success_flag = " + success_flag);
            TreeNode intStatsNode = node.Nodes.Add("_intStatsTable = ");

            _intStatsTable.contributeToTreeNode(intStatsNode);
            TreeNode int64StatsNode = node.Nodes.Add("_int64StatsTable = ");

            _int64StatsTable.contributeToTreeNode(int64StatsNode);
            TreeNode boolStatsNode = node.Nodes.Add("_boolStatsTable = ");

            _boolStatsTable.contributeToTreeNode(boolStatsNode);
            TreeNode floatStatsNode = node.Nodes.Add("_floatStatsTable = ");

            _floatStatsTable.contributeToTreeNode(floatStatsNode);
            TreeNode strStatsNode = node.Nodes.Add("_strStatsTable = ");

            _strStatsTable.contributeToTreeNode(strStatsNode);
            TreeNode didStatsNode = node.Nodes.Add("_didStatsTable = ");

            _didStatsTable.contributeToTreeNode(didStatsNode);
            // TODO: Lots more to read here
        }
コード例 #5
0
        public void contributeToTreeNode(TreeNode node)
        {
            TreeNode headerNode = node.Nodes.Add("header = " + Utility.FormatHex(header));

            for (int i = 0; i < packedItems.Count; i++)
            {
                headerNode.Nodes.Add(packedItems[i]);
            }
            node.Nodes.Add("_weenie_type = " + _weenie_type);

            TreeNode intStatsNode = node.Nodes.Add("_intStatsTable = ");

            if ((header & (uint)BaseQualitiesPackHeader.Packed_IntStats) != 0)
            {
                _intStatsTable.contributeToTreeNode(intStatsNode);
            }
            TreeNode int64StatsNode = node.Nodes.Add("_int64StatsTable = ");

            if ((header & (uint)BaseQualitiesPackHeader.Packed_Int64Stats) != 0)
            {
                _int64StatsTable.contributeToTreeNode(int64StatsNode);
            }
            TreeNode boolStatsNode = node.Nodes.Add("_boolStatsTable = ");

            if ((header & (uint)BaseQualitiesPackHeader.Packed_BoolStats) != 0)
            {
                _boolStatsTable.contributeToTreeNode(boolStatsNode);
            }
            TreeNode floatStatsNode = node.Nodes.Add("_floatStatsTable = ");

            if ((header & (uint)BaseQualitiesPackHeader.Packed_FloatStats) != 0)
            {
                _floatStatsTable.contributeToTreeNode(floatStatsNode);
            }
            TreeNode strStatsNode = node.Nodes.Add("_strStatsTable = ");

            if ((header & (uint)BaseQualitiesPackHeader.Packed_StringStats) != 0)
            {
                _strStatsTable.contributeToTreeNode(strStatsNode);
            }
            TreeNode didStatsNode = node.Nodes.Add("_didStatsTable = ");

            if ((header & (uint)BaseQualitiesPackHeader.Packed_DataIDStats) != 0)
            {
                foreach (KeyValuePair <STypeDID, uint> element in _didStatsTable.hashTable)
                {
                    didStatsNode.Nodes.Add(element.Key + " = " + Utility.FormatHex(element.Value));
                }
            }
            TreeNode iidStatsNode = node.Nodes.Add("_iidStatsTable = ");

            if ((header & (uint)BaseQualitiesPackHeader.Packed_IIDStats) != 0)
            {
                foreach (KeyValuePair <STypeIID, uint> element in _iidStatsTable.hashTable)
                {
                    iidStatsNode.Nodes.Add(element.Key + " = " + Utility.FormatHex(element.Value));
                }
            }
            TreeNode posStatsNode = node.Nodes.Add("_posStatsTable = ");

            if ((header & (uint)BaseQualitiesPackHeader.Packed_PositionHashTable) != 0)
            {
                foreach (KeyValuePair <STypePosition, Position> element in _posStatsTable.hashTable)
                {
                    TreeNode thisPosNode = posStatsNode.Nodes.Add(element.Key + " = ");
                    Position thisPos     = element.Value;
                    thisPos.contributeToTreeNode(thisPosNode);
                }
            }
        }
コード例 #6
0
        public void contributeToTreeNode(TreeNode node)
        {
            node.Nodes.Add("header = " + Utility.FormatHex(header));
            node.Nodes.Add("success_flag = " + success_flag);
            TreeNode intStatsNode = node.Nodes.Add("_intStatsTable = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_IntStats) != 0)
            {
                _intStatsTable.contributeToTreeNode(intStatsNode);
            }
            TreeNode int64StatsNode = node.Nodes.Add("_int64StatsTable = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_Int64Stats) != 0)
            {
                _int64StatsTable.contributeToTreeNode(int64StatsNode);
            }
            TreeNode boolStatsNode = node.Nodes.Add("_boolStatsTable = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_BoolStats) != 0)
            {
                _boolStatsTable.contributeToTreeNode(boolStatsNode);
            }
            TreeNode floatStatsNode = node.Nodes.Add("_floatStatsTable = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_FloatStats) != 0)
            {
                _floatStatsTable.contributeToTreeNode(floatStatsNode);
            }
            TreeNode strStatsNode = node.Nodes.Add("_strStatsTable = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_StringStats) != 0)
            {
                _strStatsTable.contributeToTreeNode(strStatsNode);
            }
            TreeNode didStatsNode = node.Nodes.Add("_didStatsTable = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_DataIDStats) != 0)
            {
                _didStatsTable.contributeToTreeNode(didStatsNode);
            }
            TreeNode spellsNode = node.Nodes.Add("_spellBook = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_SpellList) != 0)
            {
                for (int i = 0; i < _spellsTable.list.Count; i++)
                {
                    uint     i_spell_id       = _spellsTable.list[i] & 0x7FFFFFFF;
                    uint     enchantment_flag = _spellsTable.list[i] & 0x80000000;
                    TreeNode spellIDNode      = spellsNode.Nodes.Add($"({i_spell_id}) " + (SpellID)i_spell_id);
                    if (enchantment_flag != 0)
                    {
                        spellIDNode.Nodes.Add("enchantment_flag = On");
                    }
                    else
                    {
                        spellIDNode.Nodes.Add("enchantment_flag = Off");
                    }
                }
            }

            TreeNode armorProfileNode = node.Nodes.Add("_armorProfile = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_ArmorProfile) != 0)
            {
                _armorProfileTable.contributeToTreeNode(armorProfileNode);
            }
            TreeNode creatureProfileNode = node.Nodes.Add("_creatureProfile = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_CreatureProfile) != 0)
            {
                _creatureProfileTable.contributeToTreeNode(creatureProfileNode);
            }
            TreeNode weaponProfileNode = node.Nodes.Add("_weaponProfile = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_WeaponProfile) != 0)
            {
                _weaponProfileTable.contributeToTreeNode(weaponProfileNode);
            }
            TreeNode hooksNode = node.Nodes.Add("_hookProfile = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_HookProfile) != 0)
            {
                _hookProfileTable.contributeToTreeNode(hooksNode);
            }

            TreeNode armorEnchantmentNode = node.Nodes.Add("_armorEnchantments = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_ArmorEnchant) != 0)
            {
                armorEnchantmentNode.Nodes.Add("bitfield = " + Utility.FormatHex(_armorEnchantment));
                // Loop over the enum types and add all the applicable ones
                foreach (ArmorEnchantment_BFIndex armorEnchantmentType in Enum.GetValues(typeof(ArmorEnchantment_BFIndex)))
                {
                    if ((_armorEnchantment & (uint)armorEnchantmentType) != 0)
                    {
                        armorEnchantmentNode.Nodes.Add(Enum.GetName(typeof(ArmorEnchantment_BFIndex), armorEnchantmentType));
                    }
                }
            }

            TreeNode weaponEnchantmentNode = node.Nodes.Add("_weaponEnchanments = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_WeaponEnchant) != 0)
            {
                weaponEnchantmentNode.Nodes.Add("bitfield = " + Utility.FormatHex(_weaponEnchantment));
                // Loop over the enum types and add all the applicable ones
                foreach (WeaponEnchantment_BFIndex weaponEnchantmentType in Enum.GetValues(typeof(WeaponEnchantment_BFIndex)))
                {
                    if ((_weaponEnchantment & (uint)weaponEnchantmentType) != 0)
                    {
                        weaponEnchantmentNode.Nodes.Add(Enum.GetName(typeof(WeaponEnchantment_BFIndex), weaponEnchantmentType));
                    }
                }
            }

            TreeNode resistEnchantmentNode = node.Nodes.Add("_resistEnchantments = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_ResistEnchant) != 0)
            {
                resistEnchantmentNode.Nodes.Add("bitfield = " + Utility.FormatHex(_resistEnchantment));
                // Loop over the enum types and add all the applicable ones
                foreach (ResistanceEnchantment_BFIndex resistEnchantmentType in Enum.GetValues(typeof(ResistanceEnchantment_BFIndex)))
                {
                    if ((_resistEnchantment & (uint)resistEnchantmentType) != 0)
                    {
                        resistEnchantmentNode.Nodes.Add(Enum.GetName(typeof(ResistanceEnchantment_BFIndex), resistEnchantmentType));
                    }
                }
            }

            TreeNode armorLevelsNode = node.Nodes.Add("_armorLevels = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_ArmorLevels) != 0)
            {
                _armorLevelsTable.contributeToTreeNode(armorLevelsNode);
            }
        }
コード例 #7
0
ファイル: CM_Examine.cs プロジェクト: spazmodica/aclogview
        public void contributeToTreeNode(TreeNode node)
        {
            node.Nodes.Add("header = " + header);
            node.Nodes.Add("success_flag = " + success_flag);
            TreeNode intStatsNode = node.Nodes.Add("_intStatsTable = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_IntStats) != 0)
            {
                _intStatsTable.contributeToTreeNode(intStatsNode);
            }
            TreeNode int64StatsNode = node.Nodes.Add("_int64StatsTable = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_Int64Stats) != 0)
            {
                _int64StatsTable.contributeToTreeNode(int64StatsNode);
            }
            TreeNode boolStatsNode = node.Nodes.Add("_boolStatsTable = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_BoolStats) != 0)
            {
                _boolStatsTable.contributeToTreeNode(boolStatsNode);
            }
            TreeNode floatStatsNode = node.Nodes.Add("_floatStatsTable = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_FloatStats) != 0)
            {
                _floatStatsTable.contributeToTreeNode(floatStatsNode);
            }
            TreeNode strStatsNode = node.Nodes.Add("_strStatsTable = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_StringStats) != 0)
            {
                _strStatsTable.contributeToTreeNode(strStatsNode);
            }
            TreeNode didStatsNode = node.Nodes.Add("_didStatsTable = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_DataIDStats) != 0)
            {
                _didStatsTable.contributeToTreeNode(didStatsNode);
            }
            TreeNode spellsNode = node.Nodes.Add("_spellBook = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_SpellList) != 0)
            {
                _spellsTable.contributeToTreeNode(spellsNode);
            }

            TreeNode armorProfileNode = node.Nodes.Add("_armorProfile = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_ArmorProfile) != 0)
            {
                _armorProfileTable.contributeToTreeNode(armorProfileNode);
            }
            TreeNode creatureProfileNode = node.Nodes.Add("_creatureProfile = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_CreatureProfile) != 0)
            {
                _creatureProfileTable.contributeToTreeNode(creatureProfileNode);
            }
            TreeNode weaponProfileNode = node.Nodes.Add("_weaponProfile = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_WeaponProfile) != 0)
            {
                _weaponProfileTable.contributeToTreeNode(weaponProfileNode);
            }
            TreeNode hooksNode = node.Nodes.Add("_hookProfile = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_HookProfile) != 0)
            {
                _hookProfileTable.contributeToTreeNode(hooksNode);
            }

            TreeNode armorEnchantmentNode = node.Nodes.Add("_armorEnchantments = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_ArmorEnchant) != 0)
            {
                armorEnchantmentNode.Nodes.Add("bitfield = " + _armorEnchantment);
                // Loop over the enum types and add all the applicable ones
                foreach (ArmorEnchantment_BFIndex armorEnchantmentType in Enum.GetValues(typeof(ArmorEnchantment_BFIndex)))
                {
                    if ((_armorEnchantment & (uint)armorEnchantmentType) != 0)
                    {
                        armorEnchantmentNode.Nodes.Add(Enum.GetName(typeof(ArmorEnchantment_BFIndex), armorEnchantmentType));
                    }
                }
            }

            TreeNode weaponEnchantmentNode = node.Nodes.Add("_weaponEnchanments = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_WeaponEnchant) != 0)
            {
                weaponEnchantmentNode.Nodes.Add("bitfield = " + _weaponEnchantment);
                // Loop over the enum types and add all the applicable ones
                foreach (WeaponEnchantment_BFIndex weaponEnchantmentType in Enum.GetValues(typeof(WeaponEnchantment_BFIndex)))
                {
                    if ((_weaponEnchantment & (uint)weaponEnchantmentType) != 0)
                    {
                        weaponEnchantmentNode.Nodes.Add(Enum.GetName(typeof(WeaponEnchantment_BFIndex), weaponEnchantmentType));
                    }
                }
            }

            TreeNode resistEnchantmentNode = node.Nodes.Add("_resistEnchantments = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_ResistEnchant) != 0)
            {
                resistEnchantmentNode.Nodes.Add("bitfield = " + _resistEnchantment);
                // Loop over the enum types and add all the applicable ones
                foreach (ResistanceEnchantment_BFIndex resistEnchantmentType in Enum.GetValues(typeof(ResistanceEnchantment_BFIndex)))
                {
                    if ((_resistEnchantment & (uint)resistEnchantmentType) != 0)
                    {
                        resistEnchantmentNode.Nodes.Add(Enum.GetName(typeof(ResistanceEnchantment_BFIndex), resistEnchantmentType));
                    }
                }
            }

            TreeNode armorLevelsNode = node.Nodes.Add("_armorLevels = ");

            if ((header & (uint)AppraisalProfilePackHeader.Packed_ArmorLevels) != 0)
            {
                _armorLevelsTable.contributeToTreeNode(armorLevelsNode);
            }
        }
コード例 #8
0
ファイル: CM_Login.cs プロジェクト: fartwhif/aclogview
        public void contributeToTreeNode(TreeNode node)
        {
            TreeNode headerNode = node.Nodes.Add("header = " + Utility.FormatHex(header));

            ContextInfo.AddToList(new ContextInfo {
                Length = 4
            }, updateDataIndex: false);
            for (int i = 0; i < packedItems.Count; i++)
            {
                headerNode.Nodes.Add(packedItems[i]);
                ContextInfo.AddToList(new ContextInfo {
                    Length = 4
                }, updateDataIndex: false);
            }
            // Now skip over the header
            ContextInfo.DataIndex += 4;
            node.Nodes.Add("_weenie_type = " + _weenie_type);
            ContextInfo.AddToList(new ContextInfo {
                Length = 4
            });

            if ((header & (uint)BaseQualitiesPackHeader.Packed_IntStats) != 0)
            {
                TreeNode intStatsNode = node.Nodes.Add("_intStatsTable = ");
                ContextInfo.AddToList(new ContextInfo {
                    Length = _intStatsTable.Length
                }, updateDataIndex: false);
                _intStatsTable.contributeToTreeNode(intStatsNode);
                // Skip PackableHashTable count dword
                ContextInfo.DataIndex += 4;
                for (int i = 0; i < _intStatsTable.hashTable.Count; i++)
                {
                    ContextInfo.AddToList(new ContextInfo {
                        Length = sizeof(STypeInt) + sizeof(int)
                    });
                }
            }
            if ((header & (uint)BaseQualitiesPackHeader.Packed_Int64Stats) != 0)
            {
                TreeNode int64StatsNode = node.Nodes.Add("_int64StatsTable = ");
                ContextInfo.AddToList(new ContextInfo {
                    Length = _int64StatsTable.Length
                }, updateDataIndex: false);
                _int64StatsTable.contributeToTreeNode(int64StatsNode);
                // Skip PackableHashTable count dword
                ContextInfo.DataIndex += 4;
                for (int i = 0; i < _int64StatsTable.hashTable.Count; i++)
                {
                    ContextInfo.AddToList(new ContextInfo {
                        Length = sizeof(STypeInt64) + sizeof(long)
                    });
                }
            }
            if ((header & (uint)BaseQualitiesPackHeader.Packed_BoolStats) != 0)
            {
                TreeNode boolStatsNode = node.Nodes.Add("_boolStatsTable = ");
                ContextInfo.AddToList(new ContextInfo {
                    Length = _boolStatsTable.Length
                }, updateDataIndex: false);
                _boolStatsTable.contributeToTreeNode(boolStatsNode);
                // Skip PackableHashTable count dword
                ContextInfo.DataIndex += 4;
                for (int i = 0; i < _boolStatsTable.hashTable.Count; i++)
                {
                    ContextInfo.AddToList(new ContextInfo {
                        Length = sizeof(STypeBool) + sizeof(int)
                    });
                }
            }
            if ((header & (uint)BaseQualitiesPackHeader.Packed_FloatStats) != 0)
            {
                TreeNode floatStatsNode = node.Nodes.Add("_floatStatsTable = ");
                ContextInfo.AddToList(new ContextInfo {
                    Length = _floatStatsTable.Length
                }, updateDataIndex: false);
                _floatStatsTable.contributeToTreeNode(floatStatsNode);
                // Skip PackableHashTable count dword
                ContextInfo.DataIndex += 4;
                for (int i = 0; i < _floatStatsTable.hashTable.Count; i++)
                {
                    ContextInfo.AddToList(new ContextInfo {
                        Length = sizeof(STypeFloat) + sizeof(double)
                    });
                }
            }
            if ((header & (uint)BaseQualitiesPackHeader.Packed_StringStats) != 0)
            {
                // TODO: Possibly separate the string type and string into different tree nodes
                // so context info can be added to the string.
                TreeNode strStatsNode = node.Nodes.Add("_strStatsTable = ");
                ContextInfo.AddToList(new ContextInfo {
                    Length = _strStatsTable.Length
                }, updateDataIndex: false);
                _strStatsTable.contributeToTreeNode(strStatsNode);
                // Skip PackableHashTable count dword
                ContextInfo.DataIndex += 4;
                foreach (KeyValuePair <STypeString, PStringChar> element in _strStatsTable.hashTable)
                {
                    ContextInfo.AddToList(new ContextInfo {
                        Length = sizeof(STypeString) + element.Value.Length
                    });
                }
            }
            if ((header & (uint)BaseQualitiesPackHeader.Packed_DataIDStats) != 0)
            {
                TreeNode didStatsNode = node.Nodes.Add("_didStatsTable = ");
                ContextInfo.AddToList(new ContextInfo {
                    Length = _didStatsTable.Length
                }, updateDataIndex: false);
                // Skip PackableHashTable count dword
                ContextInfo.DataIndex += 4;
                foreach (KeyValuePair <STypeDID, uint> element in _didStatsTable.hashTable)
                {
                    didStatsNode.Nodes.Add(element.Key + " = " + Utility.FormatHex(element.Value));
                    ContextInfo.AddToList(new ContextInfo {
                        Length = sizeof(STypeDID) + sizeof(uint)
                    });
                }
            }
            if ((header & (uint)BaseQualitiesPackHeader.Packed_IIDStats) != 0)
            {
                TreeNode iidStatsNode = node.Nodes.Add("_iidStatsTable = ");
                ContextInfo.AddToList(new ContextInfo {
                    Length = _iidStatsTable.Length
                }, updateDataIndex: false);
                // Skip PackableHashTable count dword
                ContextInfo.DataIndex += 4;
                foreach (KeyValuePair <STypeIID, uint> element in _iidStatsTable.hashTable)
                {
                    iidStatsNode.Nodes.Add(element.Key + " = " + Utility.FormatHex(element.Value));
                    ContextInfo.AddToList(new ContextInfo {
                        Length = sizeof(STypeIID) + sizeof(uint)
                    });
                }
            }
            if ((header & (uint)BaseQualitiesPackHeader.Packed_PositionHashTable) != 0)
            {
                TreeNode posStatsNode = node.Nodes.Add("_posStatsTable = ");
                ContextInfo.AddToList(new ContextInfo {
                    Length = _posStatsTable.Length
                }, updateDataIndex: false);
                // Skip PackableHashTable count dword
                ContextInfo.DataIndex += 4;
                foreach (KeyValuePair <STypePosition, Position> element in _posStatsTable.hashTable)
                {
                    TreeNode thisPosNode = posStatsNode.Nodes.Add(element.Key + " = ");
                    Position thisPos     = element.Value;
                    ContextInfo.AddToList(new ContextInfo {
                        Length = sizeof(STypePosition) + thisPos.Length
                    }, updateDataIndex: false);
                    // Skip STypePosition count dword
                    ContextInfo.DataIndex += 4;
                    thisPos.contributeToTreeNode(thisPosNode);
                }
            }
        }