示例#1
0
        public static TSR_SentenceArg Load(TSR_Reader tsrReader, ref int enc_pos)
        {
            TSR_SentenceArg arg = new TSR_SentenceArg();

            arg.valueType = (ValueType)tsrReader.ReadUInt16();

            switch (arg.valueType)
            {
            case ValueType.Int:
                arg.Value = tsrReader.ReadInt32().ToString();
                break;

            case ValueType.Float:
                arg.Value = tsrReader.ReadFloat().ToString();
                break;

            case ValueType.Tag:
            case ValueType.Variable:
            case ValueType.String:
            case ValueType.Expression:
                arg.Value = tsrReader.DecodeString(ref enc_pos);
                break;

            default:
                throw new InvalidDataException(String.Format("Unknown ValueType: {0}\nParse failed.", arg.valueType));
            }

            return(arg);
        }
示例#2
0
        public static TSR_Function Load(TSR_Reader tsrReader, int offset)
        {
            tsrReader.Position = offset;
            TSR_Function function = new TSR_Function()
            {
                Tags = new List <TSR_Tag>(), Sentences = new List <TSR_Sentence>()
            };

            int enc_pos = 4;

            function.Header = tsrReader.ReadInt32();
            function.Name   = tsrReader.DecodeString(ref enc_pos);
            function.Unk    = tsrReader.ReadUInt16();

            //Tags
            int tagCount = tsrReader.ReadUInt16();

            for (int i = 0; i < tagCount; i++)
            {
                function.Tags.Add(TSR_Tag.Load(tsrReader, ref enc_pos));
            }

            //Sentence
            int sentenceCount = tsrReader.ReadUInt16();

            for (int i = 0; i < sentenceCount; i++)
            {
                function.Sentences.Add(TSR_Sentence.Load(tsrReader, ref enc_pos));
            }

            //Lines
            function.Lines = new List <object>();

            for (int i = 0; i < function.Sentences.Count; i++)
            {
                var tag = function.GetTag(i);

                if (tag != null)
                {
                    function.Lines.Add(tag);
                }

                function.Lines.Add(function.Sentences[i]);
            }

            return(function);
        }