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); } } } }
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); }