Exemple #1
0
        public void PhrasePreOpcodeSymbol()
        {
            for (Int32 index = 0; index < _chars.Length; index++)
            {
                Char ch = _chars[index];
                if (ch == '\n')
                {
                    if (_currentWidth > _additionalWidth)
                    {
                        _additionalWidth = _currentWidth;
                    }

                    _currentWidth = 0f;
                    _sb.Append(ch);
                    continue;
                }

                Int32       left = _chars.Length - index;
                FFIXTextTag tag  = FFIXTextTag.TryRead(_chars, ref index, ref left);
                if (tag != null)
                {
                    index--;
                    ProcessMemoriaTag(tag, ref index);
                }
                else if (ch == '[' && (index + 6 <= _chars.Length))
                {
                    ProcessOriginalTag(ref index);
                }
                else
                {
                    _sb.Append(ch);
                }
            }
        }
        private void Construct()
        {
            for (Int32 index = 0; index < _chars.Length; index++)
            {
                Int32 length = _chars.Length;
                Int32 left   = length - index;

                Char ch = _chars[index];
                if (ch == '[')
                {
                    ParseOriginalTag(ref index, length);
                }
                else if (ch == '{')
                {
                    FFIXTextTag tag = FFIXTextTag.TryRead(_chars, ref index, ref left);
                    if (tag == null)
                    {
                        _sb.Append(ch);
                    }
                    else
                    {
                        index--;
                        try
                        {
                            PerformMemoriaTag(ref index, tag);
                        }
                        catch (IndexOutOfRangeException ex)
                        {
                            Log.Error(ex, "Not enought arguments: {0}", tag);
                            _sb.Append(tag);
                        }
                        catch (Exception ex)
                        {
                            Log.Error(ex, "Unexpected error: {0}", tag);
                            _sb.Append(tag);
                        }
                    }
                }
                else
                {
                    _sb.Append(ch);
                }
            }

            _dlg.SubPage.Add(_sb.ToString());
        }
        public void Control()
        {
            for (Int32 index = 0; index < _chars.Length; index++)
            {
                Char ch = _chars[index];
                if (ch == '\n')
                {
                    _linesNumber++;
                }

                if (index + 6 <= _chars.Length && ch == '[')
                {
                    PerformOriginalTag(ref index);
                }
                else
                {
                    Int32       currentIndex = index;
                    Int32       left         = _chars.Length - index;
                    FFIXTextTag tag          = FFIXTextTag.TryRead(_chars, ref index, ref left);
                    if (tag == null)
                    {
                        continue;
                    }

                    index--;
                    try
                    {
                        PerformMemoriaTag(currentIndex, tag);
                    }
                    catch (IndexOutOfRangeException ex)
                    {
                        Log.Error(ex, "Not enought arguments: {0}", tag);
                    }
                    catch (Exception ex)
                    {
                        Log.Error(ex, "Unexpected error: {0}", tag);
                    }
                }
            }
        }
Exemple #4
0
        public static Boolean ProcessMemoriaTag(Char[] toCharArray, ref Int32 index, BetterList <Color> colors, ref Boolean highShadow, ref Boolean center, ref Boolean justified, ref Int32 ff9Signal, ref Vector3 extraOffset, ref Single tabX, ref Dialog.DialogImage insertImage)
        {
            Int32       num  = index;
            Int32       left = toCharArray.Length - index;
            FFIXTextTag tag  = FFIXTextTag.TryRead(toCharArray, ref num, ref left);

            if (tag == null)
            {
                return(false);
            }

            switch (tag.Code)
            {
            case FFIXTextTagCode.Justified:
                justified = true;
                break;

            case FFIXTextTagCode.Center:
                center = true;
                break;

            case FFIXTextTagCode.Signal:
                ff9Signal = 10 + tag.Param[0];
                break;

            case FFIXTextTagCode.IncreaseSignal:
                ff9Signal = 2;
                break;

            case FFIXTextTagCode.IncreaseSignalEx:
                ff9Signal = 2;
                break;

            case FFIXTextTagCode.DialogF:
                extraOffset.x += (tag.Param[0] >= FieldMap.HalfFieldWidth) ? 0f : (tag.Param[0] * UIManager.ResourceXMultipier);
                break;

            case FFIXTextTagCode.DialogY:
                extraOffset.y -= tag.Param[0] * UIManager.ResourceYMultipier;
                break;

            case FFIXTextTagCode.DialogX:
                if (tag.Param[0] == 224)
                {
                    tag.Param[0] = 0;
                }
                tabX = tag.Param[0] * UIManager.ResourceYMultipier;
                break;

            case FFIXTextTagCode.Up:
                OnButton(out insertImage, index, false, "DBTN", "UP");
                break;

            case FFIXTextTagCode.Down:
                OnButton(out insertImage, index, false, "DBTN", "DOWN");
                break;

            case FFIXTextTagCode.Left:
                OnButton(out insertImage, index, false, "DBTN", "LEFT");
                break;

            case FFIXTextTagCode.Right:
                OnButton(out insertImage, index, false, "DBTN", "RIGHT");
                break;

            case FFIXTextTagCode.Circle:
                OnButton(out insertImage, index, false, "DBTN", "CIRCLE");
                break;

            case FFIXTextTagCode.Cross:
                OnButton(out insertImage, index, false, "DBTN", "CROSS");
                break;

            case FFIXTextTagCode.Triangle:
                OnButton(out insertImage, index, false, "DBTN", "TRIANGLE");
                break;

            case FFIXTextTagCode.Square:
                OnButton(out insertImage, index, false, "DBTN", "SQUARE");
                break;

            case FFIXTextTagCode.R1:
                OnButton(out insertImage, index, false, "DBTN", "R1");
                break;

            case FFIXTextTagCode.R2:
                OnButton(out insertImage, index, false, "DBTN", "R2");
                break;

            case FFIXTextTagCode.L1:
                OnButton(out insertImage, index, false, "DBTN", "L1");
                break;

            case FFIXTextTagCode.L2:
                OnButton(out insertImage, index, false, "DBTN", "L2");
                break;

            case FFIXTextTagCode.Select:
                OnButton(out insertImage, index, false, "DBTN", "SELECT");
                break;

            case FFIXTextTagCode.Start:
                OnButton(out insertImage, index, false, "DBTN", "START");
                break;

            case FFIXTextTagCode.Pad:
                OnButton(out insertImage, index, false, "DBTN", "PAD");
                break;

            case FFIXTextTagCode.UpEx:
                OnButton(out insertImage, index, true, "CBTN", "UP");
                break;

            case FFIXTextTagCode.DownEx:
                OnButton(out insertImage, index, true, "CBTN", "DOWN");
                break;

            case FFIXTextTagCode.LeftEx:
                OnButton(out insertImage, index, true, "CBTN", "LEFT");
                break;

            case FFIXTextTagCode.RightEx:
                OnButton(out insertImage, index, true, "CBTN", "RIGHT");
                break;

            case FFIXTextTagCode.CircleEx:
                OnButton(out insertImage, index, true, "CBTN", "CIRCLE");
                break;

            case FFIXTextTagCode.CrossEx:
                OnButton(out insertImage, index, true, "CBTN", "CROSS");
                break;

            case FFIXTextTagCode.TriangleEx:
                OnButton(out insertImage, index, true, "CBTN", "TRIANGLE");
                break;

            case FFIXTextTagCode.SquareEx:
                OnButton(out insertImage, index, true, "CBTN", "SQUARE");
                break;

            case FFIXTextTagCode.R1Ex:
                OnButton(out insertImage, index, true, "CBTN", "R1");
                break;

            case FFIXTextTagCode.R2Ex:
                OnButton(out insertImage, index, true, "CBTN", "R2");
                break;

            case FFIXTextTagCode.L1Ex:
                OnButton(out insertImage, index, true, "CBTN", "L1");
                break;

            case FFIXTextTagCode.L2Ex:
                OnButton(out insertImage, index, true, "CBTN", "L2");
                break;

            case FFIXTextTagCode.SelectEx:
                OnButton(out insertImage, index, true, "CBTN", "SELECT");
                break;

            case FFIXTextTagCode.StartEx:
                OnButton(out insertImage, index, true, "CBTN", "START");
                break;

            case FFIXTextTagCode.PadEx:
                OnButton(out insertImage, index, true, "CBTN", "PAD");
                break;

            case FFIXTextTagCode.Icon:
                OnIcon(index, out insertImage, tag.Param[0]);
                break;

            case FFIXTextTagCode.IconEx:
                OnIconEx(index, out insertImage);
                break;

            case FFIXTextTagCode.Mobile:
                OnMobileIcon(index, ref insertImage, tag.Param[0]);
                break;

            case FFIXTextTagCode.Tab:
                extraOffset.x += (18 - 4f) * UIManager.ResourceXMultipier;
                break;

            case FFIXTextTagCode.White:
                OnColor(colors, "C8C8C8");
                highShadow = true;
                break;

            case FFIXTextTagCode.Pink:
                OnColor(colors, "B880E0");
                highShadow = true;
                break;

            case FFIXTextTagCode.Cyan:
                OnColor(colors, "68C0D8");
                highShadow = true;
                break;

            case FFIXTextTagCode.Brown:
                OnColor(colors, "D06050");
                highShadow = true;
                break;

            case FFIXTextTagCode.Yellow:
                OnColor(colors, "C8B040");
                highShadow = true;
                break;

            case FFIXTextTagCode.Green:
                OnColor(colors, "78C840");
                highShadow = true;
                break;

            case FFIXTextTagCode.Grey:
                OnColor(colors, "909090");
                highShadow = true;
                break;

            case FFIXTextTagCode.DialogSize:
            case FFIXTextTagCode.Choice:
            case FFIXTextTagCode.Time:
            case FFIXTextTagCode.Flash:
            case FFIXTextTagCode.NoAnimation:
            case FFIXTextTagCode.Instantly:
            case FFIXTextTagCode.Speed:
            case FFIXTextTagCode.Zidane:
            case FFIXTextTagCode.Vivi:
            case FFIXTextTagCode.Dagger:
            case FFIXTextTagCode.Steiner:
            case FFIXTextTagCode.Fraya:
            case FFIXTextTagCode.Quina:
            case FFIXTextTagCode.Eiko:
            case FFIXTextTagCode.Amarant:
            case FFIXTextTagCode.Party:
            case FFIXTextTagCode.NoFocus:
            case FFIXTextTagCode.End:
            case FFIXTextTagCode.Text:
            case FFIXTextTagCode.Item:
            case FFIXTextTagCode.Variable:
            case FFIXTextTagCode.Wait:
            case FFIXTextTagCode.PreChoose:
            case FFIXTextTagCode.PreChooseMask:
            case FFIXTextTagCode.Position:
            case FFIXTextTagCode.Offset:
            case FFIXTextTagCode.LowerRight:
            case FFIXTextTagCode.LowerLeft:
            case FFIXTextTagCode.UpperRight:
            case FFIXTextTagCode.UpperLeft:
            case FFIXTextTagCode.LowerCenter:
            case FFIXTextTagCode.UpperCenter:
            case FFIXTextTagCode.LowerRightForce:
            case FFIXTextTagCode.LowerLeftForce:
            case FFIXTextTagCode.UpperRightForce:
            case FFIXTextTagCode.UpperLeftForce:
            case FFIXTextTagCode.DialogPosition:
            case FFIXTextTagCode.Table:
            case FFIXTextTagCode.Widths:
            case FFIXTextTagCode.NewPage:
                index = num;
                return(true);

            default:
                return(false);
            }

            index = num;
            return(true);
        }