当前位置: 首页>>代码示例>>C#>>正文


C# IPluginVisitor.VisitDataReference方法代码示例

本文整理汇总了C#中IPluginVisitor.VisitDataReference方法的典型用法代码示例。如果您正苦于以下问题:C# IPluginVisitor.VisitDataReference方法的具体用法?C# IPluginVisitor.VisitDataReference怎么用?C# IPluginVisitor.VisitDataReference使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IPluginVisitor的用法示例。


在下文中一共展示了IPluginVisitor.VisitDataReference方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: HandleValueElement


//.........这里部分代码省略.........
                    visitor.VisitFloat32(name, offset, visible, pluginLine);
                    break;
                case "undefined":
                    visitor.VisitUndefined(name, offset, visible, pluginLine);
                    break;
                case "vector3":
                    visitor.VisitVector3(name, offset, visible, pluginLine);
                    break;
                case "degree":
                    visitor.VisitDegree(name, offset, visible, pluginLine);
                    break;
                case "stringid":
                    visitor.VisitStringID(name, offset, visible, pluginLine);
                    break;
                case "tagref":
                    ReadTagRef(reader, name, offset, visible, visitor, pluginLine);
                    break;

                case "range":
                    ReadRange(reader, name, offset, visible, visitor, pluginLine);
                    break;

                case "ascii":
                    ReadAscii(reader, name, offset, visible, visitor, pluginLine);
                    break;

                case "utf16":
                    ReadUtf16(reader, name, offset, visible, visitor, pluginLine);
                    break;

                case "bitfield8":
                    if (visitor.EnterBitfield8(name, offset, visible, pluginLine))
                        ReadBits(reader, visitor);
                    else
                        reader.Skip();
                    break;
                case "bitfield16":
                    if (visitor.EnterBitfield16(name, offset, visible, pluginLine))
                        ReadBits(reader, visitor);
                    else
                        reader.Skip();
                    break;
                case "bitfield32":
                    if (visitor.EnterBitfield32(name, offset, visible, pluginLine))
                        ReadBits(reader, visitor);
                    else
                        reader.Skip();
                    break;

                case "enum8":
                    if (visitor.EnterEnum8(name, offset, visible, pluginLine))
                        ReadOptions(reader, visitor);
                    else
                        reader.Skip();
                    break;
                case "enum16":
                    if (visitor.EnterEnum16(name, offset, visible, pluginLine))
                        ReadOptions(reader, visitor);
                    else
                        reader.Skip();
                    break;
                case "enum32":
                    if (visitor.EnterEnum32(name, offset, visible, pluginLine))
                        ReadOptions(reader, visitor);
                    else
                        reader.Skip();
                    break;

                    //case "color8": case "colour8":
                    //case "color16": case "colour16":
                case "color":
                case "colour":
                    visitor.VisitColorInt(name, offset, visible, ReadColorFormat(reader), pluginLine);
                    break;
                case "color24": case "colour24":
                    visitor.VisitColorInt(name, offset, visible, "rgb", pluginLine);
                    break;
                case "color32": case "colour32":
                    visitor.VisitColorInt(name, offset, visible, "argb", pluginLine);
                    break;
                case "colorf": case "colourf":
                    visitor.VisitColorF(name, offset, visible, ReadColorFormat(reader), pluginLine);
                    break;

                case "dataref":
                    visitor.VisitDataReference(name, offset, ReadDataRef(reader), visible, pluginLine);
                    break;

                case "reflexive":
                    ReadReflexive(reader, name, offset, visible, visitor, pluginLine);
                    break;

                case "raw":
                    ReadRaw(reader, name, offset, visible, visitor, pluginLine);
                    break;

                default:
                    throw new ArgumentException("Unknown element \"" + elementName + "\"." + PositionInfo(reader));
            }
        }
开发者ID:iBotPeaches,项目名称:Assembly,代码行数:101,代码来源:AssemblyPluginLoader.cs

示例2: ReadDataRef

        private static void ReadDataRef(XmlReader reader, string name, uint offset, bool visible, IPluginVisitor visitor,
			uint pluginLine)
        {
            string format = "bytes";

            if (reader.MoveToAttribute("format"))
                format = reader.Value;

            if (format != "bytes" &&
                format != "unicode" &&
                format != "asciiz")
                throw new ArgumentException("Invalid format. Must be either `bytes`, `unicode` or `asciiz`.");

            int align = 4;
            if (reader.MoveToAttribute("align"))
                align = ParseInt(reader.Value);

            visitor.VisitDataReference(name, offset, format, visible, align, pluginLine);
        }
开发者ID:Nibre,项目名称:Assembly,代码行数:19,代码来源:AssemblyPluginLoader.cs

示例3: HandleValueElement


//.........这里部分代码省略.........
                    break;

                case "string":
                case "ascii":
                    ReadAscii(reader, name, offset, visible, visitor, pluginLine);
                    break;
                case "string32":
                    visitor.VisitAscii(name, offset, visible, 32, pluginLine);
                    break;
                case "string64":
                    visitor.VisitAscii(name, offset, visible, 64, pluginLine);
                    break;
                case "string256":
                    visitor.VisitAscii(name, offset, visible, 256, pluginLine);
                    break;

                case "unicode":
                case "utf16":
                    ReadUtf16(reader, name, offset, visible, visitor, pluginLine);
                    break;
                case "unicode32":
                    visitor.VisitUtf16(name, offset, visible, 32, pluginLine);
                    break;
                case "unicode64":
                    visitor.VisitUtf16(name, offset, visible, 64, pluginLine);
                    break;
                case "unicode256":
                    visitor.VisitUtf16(name, offset, visible, 256, pluginLine);
                    break;

                case "bitfield8":
                case "bitmask8":
                    if (visitor.EnterBitfield8(name, offset, visible, pluginLine))
                        ReadBits(reader, visitor);
                    break;
                case "bitmask16":
                case "bitfield16":
                    if (visitor.EnterBitfield16(name, offset, visible, pluginLine))
                        ReadBits(reader, visitor);
                    break;
                case "bitmask32":
                case "bitfield32":
                    if (visitor.EnterBitfield32(name, offset, visible, pluginLine))
                        ReadBits(reader, visitor);
                    break;

                case "enum8":
                    if (visitor.EnterEnum8(name, offset, visible, pluginLine))
                        ReadOptions(reader, visitor);
                    break;
                case "enum16":
                    if (visitor.EnterEnum16(name, offset, visible, pluginLine))
                        ReadOptions(reader, visitor);
                    break;
                case "enum32":
                    if (visitor.EnterEnum32(name, offset, visible, pluginLine))
                        ReadOptions(reader, visitor);
                    break;

                case "tagdata":
                case "dataref":
                    visitor.VisitDataReference(name, offset, ReadDataRef(reader), visible, pluginLine);
                    break;

                case "struct":
                case "reflexive":
                case "reflexives":
                    ReadReflexive(reader, name, offset, visible, visitor, pluginLine);
                    break;

                case "bytearray":
                case "raw":
                    ReadRaw(reader, name, offset, visible, visitor, pluginLine);
                    break;

                case "color8":
                case "color16":
                case "color24":
                case "color32":
                    visitor.VisitColorInt(name, offset, visible, ReadColorFormat(reader), pluginLine);
                    break;

                case "colorf":
                    visitor.VisitColorF(name, offset, visible, ReadColorFormat(reader), pluginLine);
                    break;

                case "id":
                    // Class ID, part of a tag reference
                    break;

                case "unused":
                case "unusued":
                case "ununused":
                    // Do nothing, I really don't understand the point of this
                    break;

                default:
                    throw new ArgumentException("Unknown element \"" + elementName + "\"." + PositionInfo(reader));
            }
        }
开发者ID:Cloms,项目名称:Assembly,代码行数:101,代码来源:UniversalPluginLoader.cs

示例4: WritePlugin

        private void WritePlugin(MetaMap map, int size, IPluginVisitor writer)
        {
            for (int offset = 0; offset < size; offset += 4)
            {
                MetaValueGuess guess = map.GetGuess(offset);
                if (guess != null)
                {
                    switch (guess.Type)
                    {
                        case MetaValueType.DataReference:
                            if (offset <= size - 0x14)
                            {
                                writer.VisitDataReference("Unknown", (uint) offset, "bytes", false, 4, 0);
                                offset += 0x10;
                                continue;
                            }
                            break;

                        case MetaValueType.TagReference:
                            if (offset <= size - 0x10)
                            {
                                writer.VisitTagReference("Unknown", (uint) offset, false, true, true, 0);
                                offset += 0xC;
                                continue;
                            }
                            break;

                        case MetaValueType.Reflexive:
                            if (offset <= size - 0xC)
                            {
                                MetaMap subMap = map.GetSubMap(offset);
                                if (subMap != null)
                                {
                                    int subMapSize = subMap.GetBestSizeEstimate();
                                    writer.EnterReflexive("Unknown", (uint) offset, false, (uint)subMapSize, 4, 0);
                                    WritePlugin(subMap, subMapSize, writer);
                                    writer.LeaveReflexive();
                                    offset += 0x8;
                                    continue;
                                }
                            }
                            break;
                    }
                }

                // Just write an unknown value depending upon how much space we have left
                if (offset <= size - 4)
                    writer.VisitUndefined("Unknown", (uint) offset, false, 0);
                else if (offset <= size - 2)
                    writer.VisitInt16("Unknown", (uint) offset, false, 0);
                else
                    writer.VisitInt8("Unknown", (uint) offset, false, 0);
            }
        }
开发者ID:ChadSki,项目名称:Assembly,代码行数:54,代码来源:HaloPluginGenerator.xaml.cs


注:本文中的IPluginVisitor.VisitDataReference方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。