public static anime GetResults(string searchString, NetworkCredential loginCredentials) { anime anime = new anime { }; try { using (WebClient client = new WebClient()) { client.Credentials = loginCredentials; StringReader reader = new StringReader(client.DownloadString(string.Format("http://myanimelist.net/api/anime/search.xml?q={0}", searchString))); anime = (anime) new XmlSerializer(typeof(anime)).Deserialize(reader); reader.Close(); } foreach (animeEntry entry in anime.Items) { entry.synopsis = WebUtility.HtmlDecode(Regex.Replace(entry.synopsis, @"<[^>]+>| |\[i\]|\[/i\]", "").Trim()); // Remove HTML things. } System.Threading.Thread.Sleep(500); return(anime); } catch { return(null); } }
private static anime GetEmptyAnimes() { anime animes = new anime(); animeEntry[] animeEntries = new animeEntry[0]; animes.entry = animeEntries; return(animes); }
public override global::System.Data.DataSet Clone() { anime cln = ((anime)(base.Clone())); cln.InitVars(); cln.SchemaSerializationMode = this.SchemaSerializationMode; return(cln); }
public ActionResult DeleteConfirmed(int id) { anime anime = db.animes.Find(id); db.animes.Remove(anime); db.SaveChanges(); return(RedirectToAction("Index")); }
public ActionResult Edit([Bind(Include = "id_anime,nameanim,about,year,kolser,kolova,kolmov,kolsp,id_sound,image,link")] anime anime) { if (ModelState.IsValid) { db.Entry(anime).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.id_sound = new SelectList(db.sounds, "id_sound", "name", anime.id_sound); return(View(anime)); }
public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) { anime ds = new anime(); global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); global::System.Xml.Schema.XmlSchemaAny any = new global::System.Xml.Schema.XmlSchemaAny(); any.Namespace = ds.Namespace; sequence.Items.Add(any); type.Particle = sequence; global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); if (xs.Contains(dsSchema.TargetNamespace)) { global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); try { global::System.Xml.Schema.XmlSchema schema = null; dsSchema.Write(s1); for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext();) { schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); s2.SetLength(0); schema.Write(s2); if ((s1.Length == s2.Length)) { s1.Position = 0; s2.Position = 0; for (; ((s1.Position != s1.Length) && (s1.ReadByte() == s2.ReadByte()));) { ; } if ((s1.Position == s1.Length)) { return(type); } } } } finally { if ((s1 != null)) { s1.Close(); } if ((s2 != null)) { s2.Close(); } } } xs.Add(dsSchema); return(type); }
// GET: animes/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } anime anime = db.animes.Find(id); if (anime == null) { return(HttpNotFound()); } return(View(anime)); }
// GET: animes/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } anime anime = db.animes.Find(id); if (anime == null) { return(HttpNotFound()); } ViewBag.id_sound = new SelectList(db.sounds, "id_sound", "name", anime.id_sound); return(View(anime)); }
private void Anime_Expanded(object sender, RoutedEventArgs e) { Expander expander = (Expander)sender; animeEntry entry = (animeEntry)expander.DataContext; if (entry == null) { anime searchResults = Search.GetResults(entry.title, login); if (searchResults != null && searchResults.Items.Length > 0) { entry = searchResults.Items[0]; } else { entry = null; } } }
public void OnSearch(string searchString) { BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += delegate { Searching = true; SearchItems.Clear(); anime searchResults = Search.GetResults(searchString, login); if (searchResults != null && searchResults.Items != null) { SearchItems = searchResults.Items.ToList(); Display = Visibility.Visible; } else { Display = Visibility.Collapsed; } Searching = false; if (SearchItems.Count == 1) { SearchItemsCountString = SearchItems.Count + " Result"; } else { SearchItemsCountString = SearchItems.Count + " Results"; } }; bw.RunWorkerAsync(); }
public static string Import(string filename, uint anime_pointer) { string basename = Path.GetFileNameWithoutExtension(filename) + "_"; string basedir = Path.GetDirectoryName(filename); //同じアニメを何度も入力しないように記録する. List <anime> anime_list = new List <anime>(); List <byte> frames = new List <byte>(); string[] lines = File.ReadAllLines(filename); uint sound_id = 0x3d1; AnimeType animeType = AnimeType.None; for (uint lineCount = 0; lineCount < lines.Length; lineCount++) { string line = lines[lineCount]; if (U.IsComment(line) || U.OtherLangLine(line)) { continue; } line = U.ClipComment(line); if (line.Length <= 0) { continue; } InputFormRef.DoEvents(null, "Line:" + lineCount); line = line.Replace("\t", " "); string[] sp = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); string command = sp[0]; if (command.Length <= 0) { continue; } if (command[0] == 'S') { sound_id = U.atoh(command.Substring(1)); continue; } if (command[0] == 'D') { animeType = AnimeType.D; continue; } if (!(U.isNumString(command) && sp.Length >= 2)) { continue; } if (sp.Length <= 1) { Debug.Assert(false); continue; } uint wait = U.atoi(command); string image = sp[1]; uint id = FindImage(anime_list, image); if (id == U.NOT_FOUND) { id = (uint)anime_list.Count; string fullfilename = Path.Combine(basedir, image); Bitmap bitmap = ImageUtil.OpenBitmap(fullfilename); if (bitmap == null) { return(R.Error("ファイル名が見つかりませんでした。\r\nFile: {0} line:{1}\r\n\r\nエラー内容:\r\n{2}", filename, lineCount, line)); } if (bitmap.Width != SCREEN_WIDTH || bitmap.Height != SCREEN_HEIGHT) { bitmap = ImageUtil.Copy(bitmap, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); } anime a = new anime(); string error = ImageUtil.ImageToBytePackedTSA(bitmap, SCREEN_WIDTH, SCREEN_HEIGHT, 0, out a.image, out a.tsa); if (error != "") { return(R.Error("画像をインポートできません。\r\nFile: {0} line:{1}\r\n\r\nエラー内容:\r\n{2}", filename, lineCount, error)); } a.image = LZ77.compress(a.image); a.tsa = LZ77.compress(a.tsa); a.pal = ImageUtil.ImageToPalette(bitmap, 1); a.filename = image; anime_list.Add(a); } U.append_u16(frames, id); U.append_u16(frames, wait); } //term U.append_u16(frames, 0xFFFF); U.append_u16(frames, 0xFFFF); anime_pointer = U.toOffset(anime_pointer); if (!U.isSafetyOffset(anime_pointer)) { return(R._("アドレスが無効です")); } uint anime_address = Program.ROM.p32(anime_pointer); List <Address> recycle = new List <Address>(); RecycleOldAnime(ref recycle, basename, false, anime_address); RecycleAddress ra = new RecycleAddress(recycle); Undo.UndoData undodata = Program.Undo.NewUndoData("ImageUtilSkillSystemsAnimeCreator.Import"); List <byte> image_list = new List <byte>(); List <byte> tsa_list = new List <byte>(); List <byte> pal_list = new List <byte>(); for (int i = 0; i < anime_list.Count; i++) { uint p; p = ra.Write(anime_list[i].image, undodata); U.append_u32(image_list, U.toPointer(p)); p = ra.Write(anime_list[i].tsa, undodata); U.append_u32(tsa_list, U.toPointer(p)); p = ra.Write(anime_list[i].pal, undodata); U.append_u32(pal_list, U.toPointer(p)); } List <byte> mainData = new List <byte>(); if (Program.ROM.RomInfo.is_multibyte()) {//FE8J //FE8Jには、スキルごとにプログラムは存在しない. } else {//FE8U //信じられないが、スキルアニメ毎にプログラムコードが設定される. if (animeType == AnimeType.D) { string prog = Path.Combine(Program.BaseDirectory, "config", "patch2", "FE8U", "skill", "skillanimtemplate_defender_2017_01_24.dmp"); mainData.AddRange(File.ReadAllBytes(prog)); } else { string prog = Path.Combine(Program.BaseDirectory, "config", "patch2", "FE8U", "skill", "skillanimtemplate_2016_11_04.dmp"); mainData.AddRange(File.ReadAllBytes(prog)); } } //プログラムの下にデータがある. { uint p; p = ra.Write(frames.ToArray(), undodata); U.append_u32(mainData, U.toPointer(p)); p = ra.Write(tsa_list.ToArray(), undodata); U.append_u32(mainData, U.toPointer(p)); p = ra.Write(image_list.ToArray(), undodata); U.append_u32(mainData, U.toPointer(p)); p = ra.Write(pal_list.ToArray(), undodata); U.append_u32(mainData, U.toPointer(p)); U.append_u32(mainData, sound_id); } //アニメポインタの書き換え. ra.WriteAndWritePointer(anime_pointer, mainData.ToArray(), undodata); Program.Undo.Push(undodata); return(""); }
public override void ProcessCommand() { logger.Info("Processing CommandRequest_MALSearchAnime: {0}", AnimeID); try { // first check if the user wants to use the web cache if (ServerSettings.WebCache_MAL_Get) { try { Azure_CrossRef_AniDB_MAL crossRef = AzureWebAPI.Get_CrossRefAniDBMAL(AnimeID); if (crossRef != null) { logger.Trace("Found MAL match on web cache for {0} - id = {1} ({2}/{3})", AnimeID, crossRef.MALID, crossRef.StartEpisodeType, crossRef.StartEpisodeNumber); MALHelper.LinkAniDBMAL(AnimeID, crossRef.MALID, crossRef.MALTitle, crossRef.StartEpisodeType, crossRef.StartEpisodeNumber, true); return; } } catch (Exception) { } } if (!ServerSettings.MAL_AutoLink) { return; } string searchCriteria = ""; SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(AnimeID); if (anime == null) { return; } searchCriteria = anime.MainTitle; // if not wanting to use web cache, or no match found on the web cache go to TvDB directly anime malResults = MALHelper.SearchAnimesByTitle(searchCriteria); if (malResults.entry.Length == 1) { logger.Trace("Using MAL search result for search on {0} : {1} ({2})", searchCriteria, malResults.entry[0].id, malResults.entry[0].title); MALHelper.LinkAniDBMAL(AnimeID, malResults.entry[0].id, malResults.entry[0].title, (int)enEpisodeType.Episode, 1, false); } else if (malResults.entry.Length == 0) { logger.Trace("ZERO MAL search result results for: {0}", searchCriteria); } else { // if the title's match exactly and they have the same amount of episodes, we will use it foreach (animeEntry res in malResults.entry) { if (res.title.Equals(anime.MainTitle, StringComparison.InvariantCultureIgnoreCase) && res.episodes == anime.EpisodeCountNormal) { logger.Trace("Using MAL search result for search on {0} : {1} ({2})", searchCriteria, res.id, res.title); MALHelper.LinkAniDBMAL(AnimeID, res.id, res.title, (int)enEpisodeType.Episode, 1, false); } } logger.Trace("Too many MAL search result results for, skipping: {0}", searchCriteria); } } catch (Exception ex) { logger.Error("Error processing CommandRequest_MALSearchAnime: {0} - {1}", AnimeID, ex.ToString()); return; } }
public static anime SearchAnimesByTitle(string searchTitle) { if (string.IsNullOrEmpty(ServerSettings.MAL_Username) || string.IsNullOrEmpty(ServerSettings.MAL_Password)) { logger.Warn("Won't search MAL, MAL credentials not provided"); return(GetEmptyAnimes()); } searchTitle = HttpUtility.UrlPathEncode(searchTitle); string searchResultXML = ""; try { searchResultXML = SendMALAuthenticatedRequest("https://myanimelist.net/api/anime/search.xml?q=" + searchTitle); } catch (Exception ex) { logger.Error(ex, ex.ToString()); return(GetEmptyAnimes()); } if (searchResultXML.Trim().Length == 0) { return(GetEmptyAnimes()); } searchResultXML = HttpUtility.HtmlDecode(searchResultXML); searchResultXML = HttpUtilityV2.HtmlDecode(searchResultXML); searchResultXML = searchResultXML.Replace("&", "&"); XmlDocument docSearchResult = new XmlDocument(); docSearchResult.LoadXml(searchResultXML); anime animes = GetEmptyAnimes(); List <animeEntry> entries = new List <animeEntry>(); if (docSearchResult != null && docSearchResult["anime"] != null) { XmlNodeList searchItems = docSearchResult["anime"].GetElementsByTagName("entry"); foreach (XmlNode node in searchItems) { try { animeEntry entry = new animeEntry(); // default values entry.end_date = string.Empty; entry.english = string.Empty; entry.episodes = 0; entry.id = 0; entry.image = string.Empty; entry.score = 0; entry.start_date = string.Empty; entry.status = string.Empty; entry.synonyms = string.Empty; entry.synopsis = string.Empty; entry.title = string.Empty; entry.type = string.Empty; entry.end_date = AniDBHTTPHelper.TryGetProperty(node, "end_date"); entry.english = AniDBHTTPHelper.TryGetProperty(node, "english"); entry.image = AniDBHTTPHelper.TryGetProperty(node, "image"); int eps = 0; int id = 0; decimal score = 0; int.TryParse(AniDBHTTPHelper.TryGetProperty(node, "episodes"), out eps); int.TryParse(AniDBHTTPHelper.TryGetProperty(node, "id"), out id); decimal.TryParse(AniDBHTTPHelper.TryGetProperty(node, "score"), out score); entry.episodes = eps; entry.id = id; entry.score = score; entry.start_date = AniDBHTTPHelper.TryGetProperty(node, "start_date"); entry.status = AniDBHTTPHelper.TryGetProperty(node, "status"); entry.synonyms = AniDBHTTPHelper.TryGetProperty(node, "synonyms"); entry.synopsis = AniDBHTTPHelper.TryGetProperty(node, "synopsis"); entry.title = AniDBHTTPHelper.TryGetProperty(node, "title"); entry.type = AniDBHTTPHelper.TryGetProperty(node, "type"); entries.Add(entry); } catch (Exception ex) { logger.Error(ex, ex.ToString()); } } } animes.entry = entries.ToArray(); return(animes); }
private static anime GetEmptyAnimes() { anime animes = new anime(); animeEntry[] animeEntries = new animeEntry[0]; animes.entry = animeEntries; return animes; }
string Import( string filename //読込むファイル名 ) { string basename = Path.GetFileNameWithoutExtension(filename) + "_"; string basedir = Path.GetDirectoryName(filename); //同じアニメを何度も入力しないように記録する. List <anime> anime_list = new List <anime>(); int imageWidth = this.ImageWidth * 8; int imageHeight = 8 * 16; List <byte> frames = new List <byte>(); string[] lines = File.ReadAllLines(filename); for (uint lineCount = 0; lineCount < lines.Length; lineCount++) { string line = lines[lineCount++]; if (U.IsComment(line) || U.OtherLangLine(line)) { continue; } line = U.ClipComment(line); if (line.Length <= 0) { continue; } InputFormRef.DoEvents(null, "Line:" + lineCount); line = line.Replace("\t", " "); string[] sp = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); string command = sp[0]; if (command.Length <= 0) { continue; } if (!(U.isNumString(command) && sp.Length >= 2)) { continue; } uint wait = U.atoi(command); string image = sp[1]; uint id = FindImage(anime_list, image); if (id == U.NOT_FOUND) { id = (uint)anime_list.Count; string fullfilename = Path.Combine(basedir, image); Bitmap bitmap = ImageUtil.OpenBitmap(fullfilename); if (bitmap == null) { return(R.Error("ファイル名が見つかりませんでした。\r\nFile: {0} line:{1}\r\n\r\nエラー内容:\r\n{2}", filename, lineCount, line)); } if (bitmap.Width != imageWidth || bitmap.Height != imageHeight) { bitmap = ImageUtil.Copy(bitmap, 0, 0, imageWidth, imageHeight); } anime a = new anime(); string error = ImageUtil.ImageToBytePackedTSA(bitmap, imageWidth, imageHeight, 0, out a.image, out a.tsa); if (error != "") { return(R.Error("画像をインポートできません。\r\nFile: {0} line:{1}\r\n\r\nエラー内容:\r\n{2}", filename, lineCount, error)); } a.image = LZ77.compress(a.image); a.tsa = LZ77.compress(a.tsa); a.pal = ImageUtil.ImageToPalette(bitmap, 1); a.filename = image; anime_list.Add(a); } U.append_u16(frames, id); U.append_u16(frames, wait); } //term U.append_u16(frames, 0xFFFF); U.append_u16(frames, 0x0); if (anime_list.Count <= 0) { return(R._("書き込むアニメーションがありません")); } Undo.UndoData undodata = Program.Undo.NewUndoData(""); List <Address> recycle = new List <FEBuilderGBA.Address>(); MakeRecycleList(ref recycle, "", false); RecycleAddress ra = new RecycleAddress(recycle); uint p; if (!U.isSafetyOffset(this.FramePointer)) {//固定フレームのアニメ if (this.FramePointer != anime_list.Count) { return(R._("このアニメーションは固定アニメーションです。フレームが{0}個必要です。指定されたアニメには{1}のフレームがあり、数が一致していません。", this.FramePointer, anime_list.Count)); } if (this.TSAList.Count == 1 && this.PaletteList.Count >= 2) {//パレットアニメ List <byte> pal_list = new List <byte>(); for (int i = 0; i < anime_list.Count; i++) { p = ra.Write(anime_list[i].pal, undodata); U.append_u32(pal_list, U.toPointer(p)); } ra.WriteAndWritePointer(this.TSAPointer, anime_list[0].tsa, undodata); ra.WriteAndWritePointer(this.ImagePointer, anime_list[0].image, undodata); ra.WriteAndWritePointer(this.PalettePointer, pal_list.ToArray(), undodata); } else { List <byte> image_list = new List <byte>(); List <byte> tsa_list = new List <byte>(); List <byte> pal_list = new List <byte>(); for (int i = 0; i < anime_list.Count; i++) { p = ra.Write(anime_list[i].image, undodata); U.append_u32(image_list, U.toPointer(p)); p = ra.Write(anime_list[i].tsa, undodata); U.append_u32(tsa_list, U.toPointer(p)); p = ra.Write(anime_list[i].pal, undodata); U.append_u32(pal_list, U.toPointer(p)); } ra.WriteAndWritePointer(this.TSAPointer, tsa_list.ToArray(), undodata); ra.WriteAndWritePointer(this.ImagePointer, image_list.ToArray(), undodata); ra.WriteAndWritePointer(this.PalettePointer, pal_list.ToArray(), undodata); } } else { //フレームを利用するアニメ if (this.TSAList.Count >= 2 && this.PaletteList.Count == 1) { //共通パレット List <byte> image_list = new List <byte>(); List <byte> tsa_list = new List <byte>(); for (int i = 0; i < anime_list.Count; i++) { p = ra.Write(anime_list[i].image, undodata); U.append_u32(image_list, U.toPointer(p)); p = ra.Write(anime_list[i].tsa, undodata); U.append_u32(tsa_list, U.toPointer(p)); } ra.WriteAndWritePointer(this.FramePointer, frames.ToArray(), undodata); ra.WriteAndWritePointer(this.TSAPointer, tsa_list.ToArray(), undodata); ra.WriteAndWritePointer(this.ImagePointer, image_list.ToArray(), undodata); ra.WriteAndWritePointer(this.PalettePointer, anime_list[0].pal, undodata); } else {//複数パレット List <byte> image_list = new List <byte>(); List <byte> tsa_list = new List <byte>(); List <byte> pal_list = new List <byte>(); for (int i = 0; i < anime_list.Count; i++) { p = ra.Write(anime_list[i].image, undodata); U.append_u32(image_list, U.toPointer(p)); p = ra.Write(anime_list[i].tsa, undodata); U.append_u32(tsa_list, U.toPointer(p)); p = ra.Write(anime_list[i].pal, undodata); U.append_u32(pal_list, U.toPointer(p)); } ra.WriteAndWritePointer(this.FramePointer, frames.ToArray(), undodata); ra.WriteAndWritePointer(this.TSAPointer, tsa_list.ToArray(), undodata); ra.WriteAndWritePointer(this.ImagePointer, image_list.ToArray(), undodata); ra.WriteAndWritePointer(this.PalettePointer, pal_list.ToArray(), undodata); } } ra.BlackOut(undodata); Program.Undo.Push(undodata); return(""); }
public static string Import(string filename, uint anime_pointer) { string basename = Path.GetFileNameWithoutExtension(filename) + "_"; string basedir = Path.GetDirectoryName(filename); //他のアニメーションとはデータ構造が違うので注意 List <anime> poolList = new List <anime>(); List <byte> frames = new List <byte>(); string[] lines = File.ReadAllLines(filename); for (uint lineCount = 0; lineCount < lines.Length; lineCount++) { string line = lines[lineCount]; if (U.IsComment(line) || U.OtherLangLine(line)) { continue; } line = U.ClipComment(line); if (line.Length <= 0) { continue; } InputFormRef.DoEvents(null, "Line:" + lineCount); string[] sp = line.Split(new string[] { "\t" }, StringSplitOptions.RemoveEmptyEntries); if (sp.Length <= 1) { sp = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); } if (sp.Length <= 1) { continue; } string command = sp[0]; uint wait = U.atoi0x(command); string image = sp[1]; uint song = 0; if (sp.Length >= 2 + 1) { song = U.atoi0x(sp[2]); } string fullfilename = Path.Combine(basedir, image); Bitmap bitmap = ImageUtil.OpenBitmap(fullfilename); if (bitmap == null) { return(R.Error("ファイル名が見つかりませんでした。\r\nFile: {0} line:{1}\r\n\r\nエラー内容:\r\n{2}", filename, lineCount, line)); } if (bitmap.Width != SCREEN_WIDTH || bitmap.Height != SCREEN_HEIGHT) { bitmap = ImageUtil.Copy(bitmap, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); } anime a = new anime(); a.image = ImageUtil.ImageToByte16Tile(bitmap, SCREEN_WIDTH, SCREEN_HEIGHT); a.image = LZ77.compress(a.image); a.pal = ImageUtil.ImageToPalette(bitmap, 1); poolList.Add(a); U.append_u16(frames, wait); U.append_u16(frames, song); U.append_u32(frames, 0x0); U.append_u32(frames, 0x0); } //term U.append_u32(frames, 0x0); U.append_u32(frames, 0x0); U.append_u32(frames, 0x0); byte[] mainData = frames.ToArray(); anime_pointer = U.toOffset(anime_pointer); if (!U.isSafetyOffset(anime_pointer)) { return(R._("アドレスが無効です")); } uint anime_address = Program.ROM.p32(anime_pointer); List <Address> recycle = new List <Address>(); RecycleOldAnime(ref recycle, basename, false, anime_address); RecycleAddress ra = new RecycleAddress(recycle); Undo.UndoData undodata = Program.Undo.NewUndoData("ImageUtilMapActionAnimation.Import"); uint n = 0; for (int i = 0; i < poolList.Count; i++, n += 12) { uint image_addr = CheckDupImage(poolList, i); if (image_addr == U.NOT_FOUND) { image_addr = ra.Write(poolList[i].image, undodata); poolList[i].image_addr = image_addr; } uint pal_addr = CheckDupPal(poolList, i); if (pal_addr == U.NOT_FOUND) { pal_addr = ra.Write(poolList[i].pal, undodata); poolList[i].pal_addr = pal_addr; } U.write_p32(mainData, n + 4, image_addr); U.write_p32(mainData, n + 8, pal_addr); } //アニメポインタの書き換え. ra.WriteAndWritePointer(anime_pointer, mainData, undodata); //名前の設定 MakeImportDataName(anime_pointer, filename, lines); Program.Undo.Push(undodata); return(""); }