public string SkillAnimeImportDirect(uint id, string filename) { if (InputFormRef.IsPleaseWaitDialog(this)) {//2重割り込み禁止 return(R._("現在他の処理中です")); } if (id <= 0) { return(R._("指定されたID({0})は存在しません。", U.To0xHexString(id))); } uint animePointer = this.AnimeBaseAddress + (4 * id); string error = ""; //少し時間がかかるので、しばらくお待ちください表示. using (InputFormRef.AutoPleaseWait pleaseWait = new InputFormRef.AutoPleaseWait(this)) { error = ImageUtilSkillSystemsAnimeCreator.Import(filename, animePointer); } if (error != "") { return(error); } U.ReSelectList(this.AddressList); //書き込み通知 InputFormRef.ShowWriteNotifyAnimation(this, 0); return(""); }
public static bool ImportAllData(string filename) { InputFormRef InputFormRef; if (PatchUtil.SearchSkillSystem() != PatchUtil.skill_system_enum.SkillSystem) { return(false); } string basedir = Path.GetDirectoryName(filename); string[] lines = File.ReadAllLines(filename); { uint baseiconP = FindIconPointer(); uint basetextP = FindTextPointer(); uint baseanimeP = FindAnimePointer(); if (baseiconP == U.NOT_FOUND) { return(false); } if (basetextP == U.NOT_FOUND) { return(false); } if (baseanimeP == U.NOT_FOUND) { return(false); } InputFormRef = Init(null, basetextP); uint textAddr = InputFormRef.BaseAddress; uint anime = Program.ROM.p32(baseanimeP); for (uint i = 0; i < InputFormRef.DataCount; i++, anime += 4, textAddr += 2) { if (!U.isSafetyOffset(anime)) { break; } if (i >= lines.Length) { break; } string[] sp = lines[i].Split('\t'); if (sp.Length < 2) { continue; } uint textid = U.atoh(sp[0]); if (textid != 0) { Program.ROM.write_u16(textAddr + 0, textid); } uint animePAddr = U.atoh(sp[1]); if (animePAddr == 0) {//0の値が設定されている場合は、アニメ未指定になっているので0を書き込みます. Program.ROM.write_p32(anime, 0); continue; } string anime_filename = Path.Combine(basedir, "anime" + U.ToHexString(i), "anime.txt"); if (File.Exists(anime_filename)) {//インポートしなおす ImageUtilSkillSystemsAnimeCreator.Import(anime_filename, anime); } //それ以外の値の場合、ディフォルト設定だとして、最新の値を採用します. } } return(true); }