private void PaletteWriteButton_Click(object sender, EventArgs e) { if (this.MapStyle.SelectedIndex < 0) { return; } uint palette_plist = this.MapEditConf[this.MapStyle.SelectedIndex].palette_plist; int palette_count = MAX_MAP_PALETTE_COUNT; Undo.UndoData undodata = Program.Undo.NewUndoData(this); //パレット情報の書き込み. uint palette_address = MapPointerForm.PlistToOffsetAddr(MapPointerForm.PLIST_TYPE.PALETTE, palette_plist); if (palette_address == 0) {//未割り当てならば新規確保しようか palette_address = InputFormRef.AppendBinaryData(PaletteFormRef.NewNullPalette(palette_count), undodata); } PFR.MakePaletteColorPaletteToROM(this.MapObjImage.Palette, palette_address, palette_count, undodata); InputFormRef.WriteButtonToYellow(this.PaletteWriteButton, false); //拡張領域に書き込んでいる可能性もあるので plstを更新する. bool r = MapPointerForm.Write_Plsit(MapPointerForm.PLIST_TYPE.PALETTE, palette_plist, palette_address, undodata); if (!r) { Program.Undo.Rollback(undodata); return; } Program.Undo.Push(undodata); //マップエディタが開いていれば更新する MapEditorForm.UpdateMapStyleIfOpen(); }