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); } } } }
private void PerformMemoriaTag(ref Int32 index, FFIXTextTag tag) { switch (tag.Code) { case FFIXTextTagCode.NoAnimation: _dlg.DialogAnimate.ShowWithoutAnimation = true; break; case FFIXTextTagCode.NoFocus: _dlg.FlagButtonInh = true; _dlg.FlagResetChoice = false; break; case FFIXTextTagCode.Flash: _dlg.TypeEffect = true; break; case FFIXTextTagCode.End: _dlg.EndMode = -1; break; case FFIXTextTagCode.DialogSize: OnStartSentense(tag.Param); break; case FFIXTextTagCode.LowerRight: _dlg.Tail = Dialog.TailPosition.LowerRight; break; case FFIXTextTagCode.LowerLeft: _dlg.Tail = Dialog.TailPosition.LowerLeft; break; case FFIXTextTagCode.UpperRight: _dlg.Tail = Dialog.TailPosition.UpperRight; break; case FFIXTextTagCode.UpperLeft: _dlg.Tail = Dialog.TailPosition.UpperLeft; break; case FFIXTextTagCode.LowerCenter: _dlg.Tail = Dialog.TailPosition.LowerCenter; break; case FFIXTextTagCode.UpperCenter: _dlg.Tail = Dialog.TailPosition.UpperCenter; break; case FFIXTextTagCode.LowerRightForce: _dlg.Tail = Dialog.TailPosition.LowerRightForce; break; case FFIXTextTagCode.LowerLeftForce: _dlg.Tail = Dialog.TailPosition.LowerLeftForce; break; case FFIXTextTagCode.UpperRightForce: _dlg.Tail = Dialog.TailPosition.UpperRightForce; break; case FFIXTextTagCode.UpperLeftForce: _dlg.Tail = Dialog.TailPosition.UpperLeftForce; break; case FFIXTextTagCode.DialogPosition: _dlg.Tail = Dialog.TailPosition.DialogPosition; break; case FFIXTextTagCode.Widths: OnWidthsTag(tag.Param); break; case FFIXTextTagCode.PreChoose: OnPreChoose(tag.Param); break; case FFIXTextTagCode.PreChooseMask: OnPreChooseMask(tag.Param); break; case FFIXTextTagCode.Time: OnTime(tag.Param[0]); break; case FFIXTextTagCode.Tab: OnTab(ref index); break; case FFIXTextTagCode.Icon: OnIcon(tag.Param[0]); break; case FFIXTextTagCode.IconEx: KeepIconEx(tag.Param[0]); break; case FFIXTextTagCode.Mobile: KeepMobileIcon(_sb, tag.Param[0]); break; case FFIXTextTagCode.Offset: OnDialogOffsetPositon(tag.Param); break; case FFIXTextTagCode.Zidane: OnCharacterName(0); break; case FFIXTextTagCode.Vivi: OnCharacterName(1); break; case FFIXTextTagCode.Dagger: OnCharacterName(2); break; case FFIXTextTagCode.Steiner: OnCharacterName(3); break; case FFIXTextTagCode.Fraya: OnCharacterName(4); break; case FFIXTextTagCode.Quina: OnCharacterName(5); break; case FFIXTextTagCode.Eiko: OnCharacterName(6); break; case FFIXTextTagCode.Amarant: OnCharacterName(7); break; case FFIXTextTagCode.Party: OnPartyMemberName(tag.Param[0] - 1); break; case FFIXTextTagCode.Variable: _sb.Append(tag); OnVariable(tag.Param[0]); break; case FFIXTextTagCode.Item: OnItemName(tag.Param[0]); break; case FFIXTextTagCode.Signal: _sb.Append(tag); OnSignal(tag.Param[0]); break; case FFIXTextTagCode.IncreaseSignal: _sb.Append(tag); OnIncreaseSignal(); OnTime(-1); break; case FFIXTextTagCode.IncreaseSignalEx: _sb.Append(tag); OnIncreaseSignal(); break; case FFIXTextTagCode.Position: _dlg.Position = new Vector2(tag.Param[0], tag.Param[1]); break; case FFIXTextTagCode.Text: OnTextVariable(tag.Param); break; case FFIXTextTagCode.Choice: _sb.Append(tag); OnTab(ref index); break; case FFIXTextTagCode.NewPage: _sb.Append(tag); OnNewPage(); break; default: { StringBuilder sb; if (NGUIText.ForceShowButton || !FF9StateSystem.MobilePlatform) { sb = _sb; } else { sb = new StringBuilder(16); } if (KeepKeyIcon(sb, tag.Code) || KeepKeyExIcon(sb, tag)) { return; } _sb.Append(tag); break; } } }
internal static Boolean KeepKeyExIcon(StringBuilder sb, FFIXTextTag tag) { switch (tag.Code) { case FFIXTextTagCode.UpEx: sb.Append("[CBTN=UP] "); break; case FFIXTextTagCode.DownEx: sb.Append("[CBTN=DOWN] "); break; case FFIXTextTagCode.LeftEx: sb.Append("[CBTN=LEFT] "); break; case FFIXTextTagCode.RightEx: sb.Append("[CBTN=RIGHT] "); break; case FFIXTextTagCode.CircleEx: sb.Append("[CBTN=CIRCLE] "); break; case FFIXTextTagCode.CrossEx: sb.Append("[CBTN=CROSS] "); break; case FFIXTextTagCode.TriangleEx: sb.Append("[CBTN=TRIANGLE] "); break; case FFIXTextTagCode.SquareEx: sb.Append("[CBTN=SQUARE] "); break; case FFIXTextTagCode.R1Ex: sb.Append("[CBTN=R1] "); break; case FFIXTextTagCode.R2Ex: sb.Append("[CBTN=R2] "); break; case FFIXTextTagCode.L1Ex: sb.Append("[CBTN=L1] "); break; case FFIXTextTagCode.L2Ex: sb.Append("[CBTN=L2] "); break; case FFIXTextTagCode.SelectEx: sb.Append("[CBTN=SELECT] "); break; case FFIXTextTagCode.StartEx: sb.Append("[CBTN=START] "); break; case FFIXTextTagCode.PadEx: sb.Append("[CBTN=PAD] "); break; default: return(false); } return(true); }
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); }
private void ProcessMemoriaTag(FFIXTextTag tag, ref Int32 index) { switch (tag.Code) { case FFIXTextTagCode.Icon: OnIcon(tag.Param[0]); break; case FFIXTextTagCode.Mobile: OnMobileIcon(tag.Param[0]); break; case FFIXTextTagCode.Zidane: OnCharacterName(0); break; case FFIXTextTagCode.Vivi: OnCharacterName(1); break; case FFIXTextTagCode.Dagger: OnCharacterName(2); break; case FFIXTextTagCode.Steiner: OnCharacterName(3); break; case FFIXTextTagCode.Fraya: OnCharacterName(4); break; case FFIXTextTagCode.Quina: OnCharacterName(5); break; case FFIXTextTagCode.Eiko: OnCharacterName(6); break; case FFIXTextTagCode.Amarant: OnCharacterName(7); break; case FFIXTextTagCode.Party: OnPartyMemberName(tag.Param[0] - 1); break; case FFIXTextTagCode.Variable: OnVariable(tag.Param[0]); break; case FFIXTextTagCode.DialogX: OnMessageX(tag.Param[0]); break; case FFIXTextTagCode.DialogF: OnMessageFeed(tag.Param[0]); break; default: StringBuilder sb; if (NGUIText.ForceShowButton || !FF9StateSystem.MobilePlatform) { sb = _sb; } else { sb = new StringBuilder(16); } if (DialogBoxConstructor.KeepKeyIcon(sb, tag.Code) || DialogBoxConstructor.KeepKeyExIcon(sb, tag)) { return; } _sb.Append(tag); break; } }
private void PerformMemoriaTag(Int32 characterIndex, FFIXTextTag tag) { switch (tag.Code) { case FFIXTextTagCode.Speed: OnMessageSpeed(characterIndex, tag.Param[0]); break; case FFIXTextTagCode.Wait: OnMessageDelay(characterIndex, tag.Param[0]); break; case FFIXTextTagCode.Instantly: OnNoTypeEffect(); break; case FFIXTextTagCode.Choice: OnChoise(); break; case FFIXTextTagCode.Up: OnButton(characterIndex, false, "DBTN", "UP"); return; case FFIXTextTagCode.Down: OnButton(characterIndex, false, "DBTN", "DOWN"); return; case FFIXTextTagCode.Left: OnButton(characterIndex, false, "DBTN", "LEFT"); return; case FFIXTextTagCode.Right: OnButton(characterIndex, false, "DBTN", "RIGHT"); return; case FFIXTextTagCode.Circle: OnButton(characterIndex, false, "DBTN", "CIRCLE"); return; case FFIXTextTagCode.Cross: OnButton(characterIndex, false, "DBTN", "CROSS"); return; case FFIXTextTagCode.Triangle: OnButton(characterIndex, false, "DBTN", "TRIANGLE"); return; case FFIXTextTagCode.Square: OnButton(characterIndex, false, "DBTN", "SQUARE"); return; case FFIXTextTagCode.R1: OnButton(characterIndex, false, "DBTN", "R1"); return; case FFIXTextTagCode.R2: OnButton(characterIndex, false, "DBTN", "R2"); return; case FFIXTextTagCode.L1: OnButton(characterIndex, false, "DBTN", "L1"); return; case FFIXTextTagCode.L2: OnButton(characterIndex, false, "DBTN", "L2"); return; case FFIXTextTagCode.Select: OnButton(characterIndex, false, "DBTN", "SELECT"); return; case FFIXTextTagCode.Start: OnButton(characterIndex, false, "DBTN", "START"); return; case FFIXTextTagCode.Pad: OnButton(characterIndex, false, "DBTN", "PAD"); return; case FFIXTextTagCode.UpEx: OnButton(characterIndex, true, "CBTN", "UP"); break; case FFIXTextTagCode.DownEx: OnButton(characterIndex, true, "CBTN", "DOWN"); break; case FFIXTextTagCode.LeftEx: OnButton(characterIndex, true, "CBTN", "LEFT"); break; case FFIXTextTagCode.RightEx: OnButton(characterIndex, true, "CBTN", "RIGHT"); break; case FFIXTextTagCode.CircleEx: OnButton(characterIndex, true, "CBTN", "CIRCLE"); break; case FFIXTextTagCode.CrossEx: OnButton(characterIndex, true, "CBTN", "CROSS"); break; case FFIXTextTagCode.TriangleEx: OnButton(characterIndex, true, "CBTN", "TRIANGLE"); break; case FFIXTextTagCode.SquareEx: OnButton(characterIndex, true, "CBTN", "SQUARE"); break; case FFIXTextTagCode.R1Ex: OnButton(characterIndex, true, "CBTN", "R1"); break; case FFIXTextTagCode.R2Ex: OnButton(characterIndex, true, "CBTN", "R2"); break; case FFIXTextTagCode.L1Ex: OnButton(characterIndex, true, "CBTN", "L1"); break; case FFIXTextTagCode.L2Ex: OnButton(characterIndex, true, "CBTN", "L2"); break; case FFIXTextTagCode.SelectEx: OnButton(characterIndex, true, "CBTN", "SELECT"); break; case FFIXTextTagCode.StartEx: OnButton(characterIndex, true, "CBTN", "START"); break; case FFIXTextTagCode.PadEx: OnButton(characterIndex, true, "CBTN", "PAD"); break; case FFIXTextTagCode.Icon: OnIcon(characterIndex, tag.Param[0]); break; case FFIXTextTagCode.IconEx: OnNewIcon(characterIndex); break; case FFIXTextTagCode.Mobile: OnMobileIcon(characterIndex, tag.Param[0]); break; } }