Esempio n. 1
0
        private uint GetFieldDataOrOffset(GffField f)
        {
            if (GffComponent.IsSimple(f.Type))
            {
                var lB = f.Bytes;
                if (lB.Length < 4)
                {
                    Array.Resize(ref lB, 4);
                }
                return(BitConverter.ToUInt32(lB, 0));
            }
            var br  = new LatinBinaryWriter(_gb.FieldDataBlock);
            var pos = _gb.FieldDataBlock.Position;

            switch (f.Type)
            {
            case GffType.ResRef:
                br.Write((byte)f.Bytes.Length);
                break;

            case GffType.CExoString:
            case GffType.CExoLocString:
            case GffType.Void:
                br.Write((uint)f.Bytes.Length);
                break;
            }
            br.Write(f.Bytes);
            return((uint)pos);
        }
        public void GExoLocStringParseTest()
        {
            const string byteString  = "FFFFFFFF0100000000000000110000004C796F6E202D20506F727465204E6F7264";
            const string valueString = "-1||0=Lyon - Porte Nord";
            var          fld         = new GffField("test", GffType.CExoLocString, HexaManip.StringToByteArray(byteString));
            var          aExlocstr   = new GffExoLocStringReader();

            aExlocstr.Parse(fld);
            var expValueString = aExlocstr.TextValue;

            aExlocstr.Parse(valueString);
            var expByteString = HexaManip.ByteArrayToString(aExlocstr.ByteArray);

            Assert.AreEqual(expValueString, valueString);
            Assert.AreEqual(expByteString, byteString);
        }
Esempio n. 3
0
        private GffComponent CreateComponent(XmlNode node)
        {
            GffComponent cpnt = null;

            switch (node.Name)
            {
            case EStruct:
                switch (GetStructClass(node))
                {
                case SclassInField:
                    cpnt = new GffInFieldStruct(GetLabel(node), GetStructType(node));
                    break;

                case SclassInList:
                    cpnt = new GffInListStruct(GetStructType(node));
                    break;

                case SclassRoot:
                    cpnt = new GffRootStruct(GetExtention(node));
                    break;
                }
                break;

            case EList:
                cpnt = new GffList(GetLabel(node));
                break;

            case EField:
                cpnt = new GffField(GetLabel(node), GetFieldType(node), GetFieldValue(node));
                break;
            }
            var composite = cpnt as GffComposite;

            if (composite == null)
            {
                return(cpnt);
            }
            var cpsit = composite;

            foreach (XmlNode child in node.ChildNodes)
            {
                cpsit.Add(CreateComponent(child));
            }
            return(cpnt);
        }
Esempio n. 4
0
 public GffExoLocField(GffField field) : base(field.Label, field.Type, field.Value)
 {
     ValueReader = field.ValueReader as GffExoLocStringReader;
 }
Esempio n. 5
0
 public void Parse(GffField field)
 {
     _c = LatinEncoding.Latin1.GetChars(field.Bytes)[0];
 }
Esempio n. 6
0
 public void Parse(GffField field)
 {
     _value = field.Bytes[0];
 }
Esempio n. 7
0
 public void Parse(GffField field)
 {
     _resref = new ResRef(LatinEncoding.Latin1.GetString(field.Bytes));
 }
 public void Parse(GffField field)
 {
     TextValue = LatinEncoding.Latin1.GetString(field.Bytes);
 }