void WriteText(uint id, string text, Undo.UndoData undodata) { //無効なID if (id <= 0) { return; } //最後の改行の削除. if (text.Length < 2) { return; } string writetext = U.substr(text, 0, text.Length - 2); writetext = TextForm.ConvertFEditorToEscape(writetext); if (id < this.MaxTextCount) { WriteTextUnHffman(id, writetext, undodata); } else if (U.isSafetyPointer(id)) { WriteCString(id, writetext, undodata); } else { Log.Error("不明な文字列", id.ToString(), writetext); return; } }
public static string GetParamName(uint nameAddrP) { nameAddrP = U.toOffset(nameAddrP); if (!U.isSafetyOffset(nameAddrP)) { return(""); } uint id = Program.ROM.p32(nameAddrP); if (id <= 0x10) { return(""); } string name = ""; if (id > 0xFFFF && U.isSafetyOffset(id)) { name = Program.ROM.getString(id); } if (name == "") { name = TextForm.Direct(id); } return(name); }
public static string ChcekTextItem1ErrorMessage(uint id, string text, uint textid, uint type) { if (type <= 7 && type != 4) { if (text == "") { if (Program.ROM.RomInfo.version() == 8) {//FE8では武器の名前を""にすると、耐久などが表示されない if (Program.ROM.RomInfo.is_multibyte()) { return(R._("アイテムの説明欄が空です。\r\nFE8では、空にする場合は、倍角スペースを入れる必要があります。")); } else { return(R._("アイテムの説明欄が空です。\r\nFE8では、空にする場合は、空白スペースと[.]を入れる必要があります。\r\n例: \" [.]\"")); } } } string errormessage = TextForm.GetErrorMessage(text, textid, "ITEM1"); if (Program.ROM.RomInfo.version() == 7 && Program.ROM.RomInfo.is_multibyte() == false) { //FE7Uにはバグがある if (id == 0x59 || id == 0x99) { //無視 errormessage = ""; } } return(errormessage); } else { return(TextForm.GetErrorMessage(text, textid, "ITEM3")); } }
public void ToolMouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { actor = new Actor(new Point(e.X, e.Y)); actor.finishPoint = new Point(e.X, e.Y); DrawingObject drawingObject = canvas.GetObject(e.X, e.Y); if (drawingObject == null) { canvas.AddDrawingObject(actor); } else { textValue = drawingObject.GetText(); using (TextForm textForm = new TextForm(textValue, drawingObject, canvas)) { if (textForm.ShowDialog() == DialogResult.OK) { textForm.ShowDialog(); } } } } }
static InputFormRef Init(Form self) { return(new InputFormRef(self , "" , Program.ROM.RomInfo.item_pointer , Program.ROM.RomInfo.item_datasize , (int i, uint addr) => { //12補正 16特効 がポインタ or nullであれば if (i > 0xff) { return false; } if (Program.ROM.RomInfo.version == 8 && Program.ROM.RomInfo.is_multibyte == false) { return U.isPointerOrNULL(Program.ROM.u32(addr + 12)) // && U.isPointerOrNULL(Program.ROM.u32(addr + 16)) //スキルシステムでなんかするみたいなのでやめる ; } else { return U.isPointerOrNULL(Program.ROM.u32(addr + 12)) && U.isPointerOrNULL(Program.ROM.u32(addr + 16)) ; } } , (int i, uint addr) => { uint id = Program.ROM.u16(addr); return U.ToHexString(i) + " " + TextForm.Direct(id); } )); }
static InputFormRef Init(Form self) { return(new InputFormRef(self , "" , Program.ROM.RomInfo.item_pointer , Program.ROM.RomInfo.item_datasize , (int i, uint addr) => { //12補正 16特効 がポインタ or nullであれば return U.isPointerOrNULL(Program.ROM.u32(addr + 12)) && U.isPointerOrNULL(Program.ROM.u32(addr + 16)) ; } , (int i, uint addr) => { uint ITEMSTATBOOSTER = Program.ROM.u32(addr + 12); if (!U.isPointer(ITEMSTATBOOSTER)) { return new U.AddrResult(); } U.AddrResult ar = new U.AddrResult(); ar.addr = U.toOffset(ITEMSTATBOOSTER); uint id = Program.ROM.u16(addr); ar.name = U.ToHexString(i) + " " + TextForm.Direct(id); return ar; } )); }
public static string GetName(uint id, bool with_hint_full = false) { string hint = with_hint_full ? MakeHint_Full(id) :MakeHint_Simple(id); if (!Program.ROM.RomInfo.is_multibyte()) { string name = MapTerrainNameEngForm.GetName(id); name = TextForm.StripAllCode(name); return(name + hint); } InputFormRef InputFormRef = Init(null); uint addr = InputFormRef.IDToAddr(id); if (!U.isSafetyOffset(addr)) { return(""); } uint c_addr = Program.ROM.p32(addr); if (!U.isSafetyOffset(c_addr)) { return(""); } return(Program.ROM.getString(c_addr) + hint); }
static InputFormRef Init(Form self) { return(new InputFormRef(self , "" , Program.ROM.RomInfo.class_pointer() , Program.ROM.RomInfo.class_datasize() , (int i, uint addr) => { //読込最大値検索 if (i == 0) { return true; } if (i > 0xff) { return false; } uint no = Program.ROM.u8(addr + 4); return (no != 0); } , (int i, uint addr) => { uint id = Program.ROM.u16(addr); return U.ToHexString(i) + " " + TextForm.Direct(id); } )); }
public static List <U.AddrResult> GetShopAddr(uint addr) { List <U.AddrResult> ret = new List <U.AddrResult>(); uint textid = Program.ROM.u16(addr + 28); uint shopaddr; shopaddr = Program.ROM.p32(addr + 12); if (U.isSafetyOffset(shopaddr)) { string name = TextForm.Direct(textid) + " " + R._("武器屋"); ret.Add(new U.AddrResult(shopaddr, name, addr + 12)); } shopaddr = Program.ROM.p32(addr + 16); if (U.isSafetyOffset(shopaddr)) { string name = TextForm.Direct(textid) + " " + R._("道具屋"); ret.Add(new U.AddrResult(shopaddr, name, addr + 16)); } shopaddr = Program.ROM.p32(addr + 20); if (U.isSafetyOffset(shopaddr)) { string name = TextForm.Direct(textid) + " " + R._("秘密の店"); ret.Add(new U.AddrResult(shopaddr, name, addr + 20)); } return(ret); }
private void itmCopy_Click(object sender, System.EventArgs e) { TextForm documentForm = (TextForm)ActiveMdiChild; documentForm.textCopy(); itmPaste.Enabled = true; }
public static string GetMenuName(uint addr) { if (!U.isSafetyOffset(addr)) { return(""); } String name = ""; if (Program.ROM.RomInfo.is_multibyte()) { uint nameAddr = Program.ROM.p32(addr); if (nameAddr > 0xFFFF && U.isSafetyOffset(nameAddr)) { name = Program.ROM.getString(nameAddr); } if (name == "") {//日本語ポインタがない場合、文字列IDを参照する. name = TextForm.Direct(Program.ROM.u16(addr + 4)); } } else { name = TextForm.Direct(Program.ROM.u16(addr + 4)); } return(name); }
public static string GetNameWhereCustomBattleAnime(uint custom_battle_id) { if (custom_battle_id == 0) { return(""); } InputFormRef InputFormRef = Init(null); uint addr = InputFormRef.BaseAddress; for (int i = 0; i < InputFormRef.DataCount; i++) { if (custom_battle_id == Program.ROM.u8(addr + 37)) {//下級職 uint id = Program.ROM.u16(addr); return(TextForm.Direct(id) + " " + R._("下級職")); } if (custom_battle_id == Program.ROM.u8(addr + 38)) {//上級職 uint id = Program.ROM.u16(addr); return(TextForm.Direct(id) + " " + R._("上級職")); } addr += InputFormRef.BlockSize; } return(""); }
//スキル名を検索します. //残念ながら、スキルIDでの実装がされていないので文字列でヒントとかから検索します. public static uint FindSkillIconAndText(uint[] pointers, string searchSkillName, out string outText) { if (pointers == null || pointers.Length < 4) { outText = ""; return(U.NOT_FOUND); } InputFormRef InputFormRef = Init(null); List <U.AddrResult> list = InputFormRef.MakeList(); for (int n = 0; n < list.Count; n++) { uint addr = list[n].addr; if (list[n].name.IndexOf(searchSkillName) >= 0) { outText = TextForm.Direct(Program.ROM.u16(addr + 0)); return((uint)(n + 0x100)); } } outText = ""; return(U.NOT_FOUND); }
public void ShowSubtile(string text, int startPoint, int endPoint) { if (text.Length < this.ShortLength) {//短すぎる. this.CurrentText = text; HideForm(); return; } if (CurrentText == text) { if (CurrentPoint == startPoint) {//変更なし return; } } else { CurrentText = text; if (!TransDic.TryGetValue(text.ToUpper(), out CurrentSubtile)) { CurrentSubtile = ""; } this.Subtile.Text = TextForm.ConvertEscapeText(this.CurrentSubtile); } CurrentPoint = startPoint; UpdateCount(startPoint, endPoint); PickupLine(); ShowForm(); }
private void Subtile_MouseDoubleClick(object sender, MouseEventArgs e) { using (InputFormRef.AutoPleaseWait pleaseWait = new InputFormRef.AutoPleaseWait(this)) { uint text_id = TextForm.SearchText(this.CurrentText); if (text_id == U.NOT_FOUND) { return; } string clipbord = ""; uint num = TranslateTextUtil.GrepReverseSearchDic(this.SimpleTranslateToTranslateDataFilename, U.ToHexString(text_id) + "]"); if (num == U.NOT_FOUND) { clipbord = "[" + U.ToHexString(text_id) + "]"; } clipbord += this.CurrentText; U.SetClipboardText(clipbord); try { MainFormUtil.OpenTextEditor(this.SimpleTranslateToTranslateDataFilename, num); } catch (Exception ee) { R.ShowStopError(ee.ToString()); } } }
private void itmOpen_Click(object sender, System.EventArgs e) { string path; openFile.Multiselect = false; System.Windows.Forms.DialogResult enmResult = openFile.ShowDialog(); if (enmResult == System.Windows.Forms.DialogResult.OK) { path = openFile.FileName; System.IO.StreamReader reader = new System.IO.StreamReader(path); TextForm documentForm = new TextForm(); documentForm.MdiParent = this; documentForm.textData = reader.ReadToEnd(); documentForm.Text = openFile.SafeFileName; //documentForm.saveStatus = true; documentForm.pathFile = path; documentForm.Show(); setSomethingToEnable(); } capsLockStatus(); }
private void SEARCH_COUNT_BUTTON_Click(object sender, EventArgs e) { Dictionary <uint, FETextDecode.huffman_count_st> dic = new Dictionary <uint, FETextDecode.huffman_count_st>(); //初期値を入れる. uint addr = (uint)InputFormRef.BaseAddress; int limitsize = (int)InputFormRef.DataCount; for (int i = 0; i < limitsize; i++) { FETextDecode.huffman_count_st st = new FETextDecode.huffman_count_st(); st.code_number = i; dic[Program.ROM.u16(addr)] = st; addr += InputFormRef.BlockSize; } //テキスト探索. FETextDecode textdecoder = new FETextDecode(); List <U.AddrResult> list = TextForm.MakeItemList(); for (int i = 0; i < list.Count; i++) { uint textaddr = Program.ROM.p32(list[i].addr); textdecoder.huffman_count(textaddr, ref dic); } SEARCH_COUNT_LIST.Items.Clear(); uint minimaumCount = (uint)SEARCH_COUNT.Value; foreach (var pair in dic) { if (pair.Key == 0) { continue; } if (pair.Value.count > minimaumCount) { continue; } string line = pair.Value.code_number.ToString(); line = line + "," + U.ConvertUnitToMojiChar((uint)pair.Key); line = line + "," + pair.Value.count.ToString(); for (int n = 0; n < pair.Value.unsing_text_addr.Count; n++) { for (int i = 0; i < list.Count; i++) { uint textaddr = Program.ROM.p32(list[i].addr); if (pair.Value.unsing_text_addr[n] == textaddr) { line = line + "," + i.ToString("X"); break; } } } SEARCH_COUNT_LIST.Items.Add(line); } }
public static string GetSkillText(uint index, uint textBaseAddress) { uint size = 2; uint textOffset = textBaseAddress + (size * index); uint id = Program.ROM.u16(textOffset); return(TextForm.Direct(id)); }
void AddRecycle(uint id, List <Address> list) { //無効なID if (id <= 0) { return; } if (id < this.MaxTextCount) { uint addr = this.TextBaseAddress + (id * 4); uint paddr = Program.ROM.u32(addr); if (TextForm.Is_RAMPointerArea(paddr)) { return; } uint data_addr; int length; if (FETextEncode.IsUnHuffmanPatchPointer(paddr)) {//un-huffman patch? uint unhuffman_addr = U.toOffset(FETextEncode.ConvertUnHuffmanPatchToPointer(paddr)); data_addr = unhuffman_addr; TextDecode.UnHffmanPatchDecode(unhuffman_addr, out length); } else if (U.isPointer(paddr)) { data_addr = U.toOffset(paddr); TextDecode.huffman_decode(data_addr, out length); } else { return; } if (length <= 0) { return; } if (data_addr == this.TextID0Addr) { return; } FEBuilderGBA.Address.AddAddress(list , data_addr , (uint)length , U.NOT_FOUND , "text " + U.ToHexString(id) , FEBuilderGBA.Address.DataTypeEnum.BIN); } //CStringに対しては、リサイクルバッファを利用する方式を利用しない //なぜなら、FE6には大量のポインタ参照があるためです。 //容量も大きくないので、メリットよりデメリットの方が上回る // else if (U.isSafetyPointer(id)) // { // uint p = U.toOffset(id); // FEBuilderGBA.Address.AddCString(list, p); // } }
public static int MakeClassSkillButtons(uint cid, Button[] buttons, ToolTipEx tooltip) { uint[] pointer = FindSkillFE8NVer2IconPointers(); if (pointer == null) { return(0); } if (pointer.Length < 5) { return(0); } InputFormRef InputFormRef = Init(null); InputFormRef N2_InputFormRef = N2_Init(null); int skillCount = 0; List <U.AddrResult> list = InputFormRef.MakeList(); for (int i = 1; i < list.Count; i++) { uint classAddr = Program.ROM.p32(list[i].addr + 8); if (!U.isSafetyOffset(classAddr)) { continue; } bool found = false; N2_InputFormRef.ReInit(classAddr); List <U.AddrResult> classList = N2_InputFormRef.MakeList(); for (int n = 0; n < classList.Count; n++) { uint classID = Program.ROM.u8(classList[n].addr); if (cid == classID) { found = true; break; } } if (!found) { continue; } uint textid = Program.ROM.u16(list[i].addr + 0); buttons[skillCount].BackgroundImage = DrawSkillIconLow((uint)i); buttons[skillCount].Tag = (uint)i; tooltip.SetToolTip(buttons[skillCount], TextForm.Direct(textid)); skillCount++; if (skillCount >= buttons.Length) { break; } } return(skillCount); }
private TabPage AddTabPage(KoreFileInfo kfi, Color tabColor, KoreFileInfo parentKfi = null) { var tabPage = new TabPage { BackColor = SystemColors.Window, Padding = new Padding(0, 2, 2, 1) }; IKuriimuForm tabControl = null; try { if (kfi.Adapter is ITextAdapter) { tabControl = new TextForm(kfi, tabPage, parentKfi?.Adapter as IArchiveAdapter, GetTabPageForKfi(parentKfi), _pluginLoader.GetAdapters <IGameAdapter>()); } else if (kfi.Adapter is IImageAdapter) { tabControl = new ImageForm(kfi, tabPage, parentKfi?.Adapter as IArchiveAdapter, GetTabPageForKfi(parentKfi)); } else if (kfi.Adapter is ILayoutAdapter) { tabControl = new LayoutForm(kfi, tabPage, parentKfi?.Adapter as IArchiveAdapter, GetTabPageForKfi(parentKfi)); } else if (kfi.Adapter is IArchiveAdapter) { tabControl = new ArchiveForm(kfi, tabPage, parentKfi?.Adapter as IArchiveAdapter, GetTabPageForKfi(parentKfi), _tempFolder, _pluginLoader); (tabControl as IArchiveForm).OpenTab += Kuriimu2_OpenTab; (tabControl as IArchiveForm).GetAdapterById += Kuriimu2_GetAdapterById; } } catch (Exception e) { MessageBox.Show(e.ToString(), "Exception catched."); return(null); } tabControl.TabColor = tabColor; if (tabControl is UserControl uc) { uc.Dock = DockStyle.Fill; } tabControl.SaveTab += TabControl_SaveTab; tabControl.CloseTab += TabControl_CloseTab; tabControl.ReportProgress += Report_ProgressChanged; tabPage.Controls.Add(tabControl as UserControl); openFiles.TabPages.Add(tabPage); tabPage.ImageKey = "close-button"; // setting ImageKey before adding, makes the image not working openFiles.SelectedTab = tabPage; return(tabPage); }
private void btnOpenUserMetadataForm_Click(object sender, EventArgs e) { using (var form = new TextForm(UserMetadata, txtUserMetadata.Text)) { if (form.ShowDialog() == DialogResult.OK) { txtUserMetadata.Text = form.Content; } } }
// // Plugin specific methods // private void chartBox_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { X = e.X; Y = e.Y; TextForm textForm = new TextForm(); textForm.Closed += new EventHandler(TextForm_Closed); textForm.ShowDialog(); }
public static String GetClassNameLow(uint addr) { if (!U.isSafetyOffset(addr)) { return(""); } uint id = Program.ROM.u16(addr); return(TextForm.Direct(id).Trim()); }
public static string GetTIDName(uint tid) { if (tid <= 0x10) { return(""); } string name = TextForm.Direct(tid); return(name); }
static string GetNameFast(uint addr) { if (!U.isSafetyOffset(addr)) { return(""); } uint textid = Program.ROM.u32(addr + 4); return(TextForm.DirectAndStripAllCode(textid)); }
private void btnEdit_Click(object sender, EventArgs e) { TextForm form = new TextForm(); form.TextValue = textBox.Text; if (form.ShowDialog() == DialogResult.OK) { textBox.Text = form.TextValue.Trim(); } }
private void itmFont_Click(object sender, System.EventArgs e) { TextForm documentForm = (TextForm)ActiveMdiChild; System.Windows.Forms.DialogResult enmResult = fontDialog.ShowDialog(); if (enmResult == System.Windows.Forms.DialogResult.OK) { documentForm.fontData = fontDialog.Font; } }
public static string GetStringFromDialog() { TextForm stringForm = new TextForm(); if (stringForm.ShowDialog() == DialogResult.OK) { return(stringForm.StringValue); } return(""); }
public static String GetItemNameAddr(uint addr) { if (!U.isSafetyOffset(addr)) { return(""); } uint textid = Program.ROM.u16(addr); return(TextForm.Direct(textid)); }
public static TextWindow GuiOpenWindow(TextWindowCreateArgs args) { var form = new TextForm(args); if (args.Owned) { form.Owner = TerminalWindow; } return form.Content.Window; }
public void Update_Main() { UpdateTime(); UpdateForms(); if (WarningMessages.Count == 0 && !FatalError) { FadeTo(LevelMultiform.MultiformName); } else { if ((KeyboardInput.IsPressed(C) && KeyboardInput.IsReleased(CTRL)) || (KeyboardInput.IsReleased(C) && KeyboardInput.IsPressed(CTRL))) { var messages = new List<string>(WarningMessages); if (FatalError) { messages.Insert(0, ErrorMessage); } Clipboard.SetText(String.Join("\n", messages)); GetForm(PressToCopyMessageFormName).AddEffector(new FadeOutEffector(15)); // Setting this adds a MESSAGES_COPIED_MESSAGE TextForm, since it activates // the if (AtFrame(TimeOfMessagesCopied)) if statement below. TimeOfMessagesCopied = LocalFrame + 20; } if (MouseInput.IsReleased(DemeterEngine.Input.MouseButtons.Left)) { if (FatalError) { FadeTo(LevelSelectMultiform.MultiformName); } else { FadeTo(LevelMultiform.MultiformName); } } } for (int i = 0; i < RegisteredTextForms.Count; i++) { var textForm = RegisteredTextForms[i]; if (AtFrame((int)(textForm.Position.Y / 5f))) { textForm.AddEffector(new FadeInEffector(15)); } } if (AtFrame(TimeOfMessagesCopied)) { var pos = GetForm<TextForm>(PressToCopyMessageFormName).Position; var newForm = new TextForm( MESSAGES_COPIED_MESSAGE, Assets.LevelLoad.Fonts.PlainMessage, pos, Color.TransparentBlack); newForm.AddEffector(new FadeInEffector(15)); RegisterForm(newForm); } }
private void RegisterMessage(string message, SpriteFont font, int gap, ref Vector2 center, string name = null) { var form = new TextForm(message, font, center, Color.TransparentBlack, true); if (name != null) { RegisterForm(name, form); } else { RegisterForm(form); } RegisteredTextForms.Add(form); center += new Vector2(0, font.MeasureString(message).Y + gap); }