Example #1
0
        public static FFXIIITextTag TryRead(byte[] bytes, ref int offset, ref int left)
        {
            FFXIIITextTagCode code = (FFXIIITextTagCode)bytes[offset++];

            left -= 2;
            switch (code)
            {
            case FFXIIITextTagCode.End:
            case FFXIIITextTagCode.Escape:
            case FFXIIITextTagCode.Italic:
            case FFXIIITextTagCode.Many:
            case FFXIIITextTagCode.Article:
            case FFXIIITextTagCode.ArticleMany:
                left++;
                return(new FFXIIITextTag(code));

            case FFXIIITextTagCode.Icon:
                return(new FFXIIITextTag(code, (FFXIIITextTagIcon)bytes[offset++]));

            case FFXIIITextTagCode.VarF4:
            case FFXIIITextTagCode.VarF6:
            case FFXIIITextTagCode.VarF7:
                return(new FFXIIITextTag(code, (FFXIIITextTagParam)bytes[offset++]));

            case FFXIIITextTagCode.Text:
                return(new FFXIIITextTag(code, (FFXIIITextTagText)bytes[offset++]));

            case FFXIIITextTagCode.Key:
                return(new FFXIIITextTag(code, (FFXIIITextTagKey)bytes[offset++]));

            case FFXIIITextTagCode.Color:
                return(new FFXIIITextTag(code, (FFXIIITextTagColor)bytes[offset++]));

            default:
                int value = (int)code;
                switch (value)
                {
                case 0x81:
                case 0x85:
                    left += 2;
                    offset--;
                    return(null);
                }

                if (value >= 0x80)
                {
                    return(new FFXIIITextTag(code, (FFXIIITextTagColor)bytes[offset++]));
                }

                left += 2;
                offset--;
                return(null);
            }
        }
Example #2
0
 public FFXIIITextTag(FFXIIITextTagCode code, Enum param = null)
 {
     Code = code;
     Param = param;
 }
Example #3
0
 public FFXIIITextTag(FFXIIITextTagCode code, Enum param = null)
 {
     Code  = code;
     Param = param;
 }