SPECIAL LITTLE WARNING FOR STUPID LITTLE CHUDS WHO CAN'T READ
This commit is contained in:
@@ -146,6 +146,30 @@ namespace anm2ed::anm2
|
||||
}
|
||||
}
|
||||
|
||||
bool Anm2::has_special_interpolated_frames() const
|
||||
{
|
||||
auto item_has_special_frames = [](const Item& item)
|
||||
{
|
||||
for (const auto& frame : item.frames)
|
||||
{
|
||||
auto interpolation = frame.interpolation;
|
||||
if (interpolation != Frame::Interpolation::NONE && interpolation != Frame::Interpolation::LINEAR) return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
for (const auto& animation : animations.items)
|
||||
{
|
||||
if (item_has_special_frames(animation.rootAnimation)) return true;
|
||||
for (const auto& item : animation.layerAnimations | std::views::values)
|
||||
if (item_has_special_frames(item)) return true;
|
||||
for (const auto& item : animation.nullAnimations | std::views::values)
|
||||
if (item_has_special_frames(item)) return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
Anm2::Anm2(const std::filesystem::path& path, std::string* errorString)
|
||||
{
|
||||
XMLDocument document;
|
||||
|
||||
@@ -82,6 +82,7 @@ namespace anm2ed::anm2
|
||||
bool animations_deserialize(const std::string&, int, std::set<int>&, std::string* = nullptr);
|
||||
Frame frame_effective(int, const Frame&) const;
|
||||
glm::vec4 animation_rect(Animation&, bool) const;
|
||||
bool has_special_interpolated_frames() const;
|
||||
void bake_special_interpolated_frames(int, bool, bool);
|
||||
|
||||
Item* item_get(int, Type, int = -1);
|
||||
|
||||
+5
-1
@@ -295,7 +295,11 @@ namespace anm2ed::anm2
|
||||
if (!vector::in_bounds(frames, index)) return;
|
||||
|
||||
auto original = frames[index];
|
||||
if (original.duration == FRAME_DURATION_MIN) return;
|
||||
if (original.duration == FRAME_DURATION_MIN)
|
||||
{
|
||||
frames[index].interpolation = Frame::Interpolation::NONE;
|
||||
return;
|
||||
}
|
||||
|
||||
auto nextFrame = vector::in_bounds(frames, index + 1) ? frames[index + 1] : original;
|
||||
|
||||
|
||||
@@ -72,6 +72,7 @@ namespace anm2ed
|
||||
items(current.items), layer(current.layer), merge(current.merge), null(current.null), region(current.region),
|
||||
sound(current.sound), spritesheet(current.spritesheet), anm2(current.anm2), reference(current.reference),
|
||||
frameTime(current.frameTime), message(current.message), regionBySpritesheet(std::move(other.regionBySpritesheet)),
|
||||
changeAllFramePropertiesRegionId(other.changeAllFramePropertiesRegionId),
|
||||
previewZoom(other.previewZoom), previewPan(other.previewPan), editorPan(other.editorPan),
|
||||
editorZoom(other.editorZoom), overlayIndex(other.overlayIndex), hash(other.hash), saveHash(other.saveHash),
|
||||
autosaveHash(other.autosaveHash), lastAutosaveTime(other.lastAutosaveTime), isValid(other.isValid),
|
||||
@@ -94,6 +95,7 @@ namespace anm2ed
|
||||
editorZoom = other.editorZoom;
|
||||
overlayIndex = other.overlayIndex;
|
||||
regionBySpritesheet = std::move(other.regionBySpritesheet);
|
||||
changeAllFramePropertiesRegionId = other.changeAllFramePropertiesRegionId;
|
||||
hash = other.hash;
|
||||
saveHash = other.saveHash;
|
||||
autosaveHash = other.autosaveHash;
|
||||
|
||||
@@ -51,6 +51,7 @@ namespace anm2ed
|
||||
float& frameTime = current.frameTime;
|
||||
std::string& message = current.message;
|
||||
std::map<int, Storage> regionBySpritesheet{};
|
||||
int changeAllFramePropertiesRegionId{-1};
|
||||
|
||||
float previewZoom{200};
|
||||
glm::vec2 previewPan{};
|
||||
|
||||
@@ -155,10 +155,15 @@ namespace anm2ed::imgui
|
||||
shortcut(manager.chords[SHORTCUT_CONFIRM]);
|
||||
if (ImGui::Button(localize.get(BASIC_YES), widgetSize))
|
||||
{
|
||||
bool isSaved = true;
|
||||
if (isDocumentDirty)
|
||||
manager.save(closeDocumentIndex, {}, (anm2::Compatibility)settings.fileCompatibility,
|
||||
settings.fileBakeSpecialInterpolatedFramesOnSave, settings.bakeIsRoundScale,
|
||||
settings.bakeIsRoundRotation);
|
||||
isSaved = taskbar.save_manual(manager, settings, closeDocumentIndex);
|
||||
|
||||
if (!isSaved)
|
||||
{
|
||||
ImGui::EndPopup();
|
||||
return;
|
||||
}
|
||||
|
||||
if (isSpritesheetDirty)
|
||||
{
|
||||
|
||||
+79
-12
@@ -21,6 +21,39 @@ using namespace glm;
|
||||
|
||||
namespace anm2ed::imgui
|
||||
{
|
||||
void Taskbar::save_execute(Manager& manager, Settings& settings, const PendingSave& request, bool bakeFrames)
|
||||
{
|
||||
manager.save(request.index, request.path, (anm2::Compatibility)settings.fileCompatibility, bakeFrames,
|
||||
settings.bakeIsRoundScale, settings.bakeIsRoundRotation);
|
||||
}
|
||||
|
||||
bool Taskbar::save_request(Manager& manager, Settings& settings, int index, const std::filesystem::path& path)
|
||||
{
|
||||
auto* document = manager.get(index);
|
||||
if (!document) return false;
|
||||
|
||||
if (settings.fileIsSpecialInterpolatedFramesOnSaveReminder && document->anm2.has_special_interpolated_frames())
|
||||
{
|
||||
pendingSave = {.index = index,
|
||||
.path = path,
|
||||
.isOpen = true,
|
||||
.disableReminder = false,
|
||||
.autoBakeFrames = settings.fileBakeSpecialInterpolatedFramesOnSave};
|
||||
specialInterpolatedFramesReminderPopup.open();
|
||||
return false;
|
||||
}
|
||||
|
||||
PendingSave request{.index = index, .path = path};
|
||||
auto bakeFrames = settings.fileBakeSpecialInterpolatedFramesOnSave;
|
||||
save_execute(manager, settings, request, bakeFrames);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Taskbar::save_manual(Manager& manager, Settings& settings, int index, const std::filesystem::path& path)
|
||||
{
|
||||
return save_request(manager, settings, index, path);
|
||||
}
|
||||
|
||||
void Taskbar::update(Manager& manager, Settings& settings, Resources& resources, Dialog& dialog, bool& isQuitting)
|
||||
{
|
||||
auto document = manager.get();
|
||||
@@ -74,9 +107,7 @@ namespace anm2ed::imgui
|
||||
if (settings.fileIsWarnOverwrite)
|
||||
overwritePopup.open();
|
||||
else
|
||||
manager.save(document->path, (anm2::Compatibility)settings.fileCompatibility,
|
||||
settings.fileBakeSpecialInterpolatedFramesOnSave, settings.bakeIsRoundScale,
|
||||
settings.bakeIsRoundRotation);
|
||||
save_request(manager, settings, manager.selected, document->path);
|
||||
}
|
||||
|
||||
if (ImGui::MenuItem(localize.get(LABEL_SAVE_AS), settings.shortcutSaveAs.c_str(), false, document))
|
||||
@@ -102,9 +133,7 @@ namespace anm2ed::imgui
|
||||
|
||||
if (dialog.is_selected(Dialog::ANM2_SAVE))
|
||||
{
|
||||
manager.save(dialog.path, (anm2::Compatibility)settings.fileCompatibility,
|
||||
settings.fileBakeSpecialInterpolatedFramesOnSave, settings.bakeIsRoundScale,
|
||||
settings.bakeIsRoundRotation);
|
||||
save_request(manager, settings, manager.selected, dialog.path);
|
||||
dialog.reset();
|
||||
}
|
||||
|
||||
@@ -244,9 +273,7 @@ namespace anm2ed::imgui
|
||||
|
||||
if (ImGui::Button(localize.get(BASIC_YES), widgetSize))
|
||||
{
|
||||
manager.save({}, (anm2::Compatibility)settings.fileCompatibility,
|
||||
settings.fileBakeSpecialInterpolatedFramesOnSave, settings.bakeIsRoundScale,
|
||||
settings.bakeIsRoundRotation);
|
||||
save_request(manager, settings);
|
||||
overwritePopup.close();
|
||||
}
|
||||
|
||||
@@ -257,6 +284,48 @@ namespace anm2ed::imgui
|
||||
ImGui::EndPopup();
|
||||
}
|
||||
|
||||
specialInterpolatedFramesReminderPopup.trigger();
|
||||
if (ImGui::BeginPopupModal(specialInterpolatedFramesReminderPopup.label(),
|
||||
&specialInterpolatedFramesReminderPopup.isOpen, ImGuiWindowFlags_NoResize))
|
||||
{
|
||||
ImGui::TextWrapped("%s", localize.get(LABEL_SPECIAL_INTERPOLATED_FRAMES_REMINDER_PROMPT));
|
||||
ImGui::Spacing();
|
||||
ImGui::Checkbox(localize.get(LABEL_DONT_NOTIFY_ME_AGAIN), &pendingSave.disableReminder);
|
||||
ImGui::BeginDisabled(!pendingSave.disableReminder);
|
||||
ImGui::Checkbox(localize.get(LABEL_AUTOMATICALLY_BAKE_THESE_FRAMES_ON_SAVE), &pendingSave.autoBakeFrames);
|
||||
ImGui::EndDisabled();
|
||||
|
||||
auto widgetSize = widget_size_with_row_get(3);
|
||||
if (ImGui::Button(localize.get(LABEL_SAVE_BAKE_FRAMES), widgetSize))
|
||||
{
|
||||
if (pendingSave.disableReminder) settings.fileIsSpecialInterpolatedFramesOnSaveReminder = false;
|
||||
settings.fileBakeSpecialInterpolatedFramesOnSave = pendingSave.autoBakeFrames;
|
||||
save_execute(manager, settings, pendingSave, true);
|
||||
pendingSave = {};
|
||||
specialInterpolatedFramesReminderPopup.close();
|
||||
}
|
||||
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button(localize.get(LABEL_SAVE_DONT_BAKE_FRAMES), widgetSize))
|
||||
{
|
||||
if (pendingSave.disableReminder) settings.fileIsSpecialInterpolatedFramesOnSaveReminder = false;
|
||||
settings.fileBakeSpecialInterpolatedFramesOnSave = pendingSave.autoBakeFrames;
|
||||
save_execute(manager, settings, pendingSave, false);
|
||||
pendingSave = {};
|
||||
specialInterpolatedFramesReminderPopup.close();
|
||||
}
|
||||
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button(localize.get(BASIC_CANCEL), widgetSize))
|
||||
{
|
||||
pendingSave = {};
|
||||
specialInterpolatedFramesReminderPopup.close();
|
||||
}
|
||||
|
||||
ImGui::EndPopup();
|
||||
}
|
||||
specialInterpolatedFramesReminderPopup.end();
|
||||
|
||||
aboutPopup.end();
|
||||
|
||||
if (shortcut(manager.chords[SHORTCUT_NEW], shortcut::GLOBAL)) dialog.file_save(Dialog::ANM2_NEW);
|
||||
@@ -266,9 +335,7 @@ namespace anm2ed::imgui
|
||||
if (settings.fileIsWarnOverwrite)
|
||||
overwritePopup.open();
|
||||
else
|
||||
manager.save({}, (anm2::Compatibility)settings.fileCompatibility,
|
||||
settings.fileBakeSpecialInterpolatedFramesOnSave, settings.bakeIsRoundScale,
|
||||
settings.bakeIsRoundRotation);
|
||||
save_request(manager, settings);
|
||||
}
|
||||
if (shortcut(manager.chords[SHORTCUT_SAVE_AS], shortcut::GLOBAL)) dialog.file_save(Dialog::ANM2_SAVE);
|
||||
if (shortcut(manager.chords[SHORTCUT_EXIT], shortcut::GLOBAL)) isQuitting = true;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <filesystem>
|
||||
|
||||
#include "canvas.hpp"
|
||||
#include "dialog.hpp"
|
||||
#include "imgui_.hpp"
|
||||
@@ -18,6 +20,15 @@ namespace anm2ed::imgui
|
||||
{
|
||||
class Taskbar
|
||||
{
|
||||
struct PendingSave
|
||||
{
|
||||
int index{-1};
|
||||
std::filesystem::path path{};
|
||||
bool isOpen{};
|
||||
bool disableReminder{};
|
||||
bool autoBakeFrames{};
|
||||
};
|
||||
|
||||
wizard::ChangeAllFrameProperties changeAllFrameProperties{};
|
||||
wizard::About about{};
|
||||
wizard::Configure configure{};
|
||||
@@ -28,15 +39,22 @@ namespace anm2ed::imgui
|
||||
PopupHelper generatePopup{PopupHelper(LABEL_TASKBAR_GENERATE_ANIMATION_FROM_GRID)};
|
||||
PopupHelper changePopup{PopupHelper(LABEL_CHANGE_ALL_FRAME_PROPERTIES, imgui::POPUP_NORMAL_NO_HEIGHT)};
|
||||
PopupHelper overwritePopup{PopupHelper(LABEL_TASKBAR_OVERWRITE_FILE, imgui::POPUP_SMALL_NO_HEIGHT)};
|
||||
PopupHelper specialInterpolatedFramesReminderPopup{
|
||||
PopupHelper(LABEL_SPECIAL_INTERPOLATED_FRAMES_REMINDER_POPUP, imgui::POPUP_NORMAL_NO_HEIGHT)};
|
||||
PopupHelper renderPopup{PopupHelper(LABEL_TASKBAR_RENDER_ANIMATION, imgui::POPUP_SMALL_NO_HEIGHT)};
|
||||
PopupHelper configurePopup{PopupHelper(LABEL_TASKBAR_CONFIGURE)};
|
||||
PopupHelper aboutPopup{PopupHelper(LABEL_TASKBAR_ABOUT)};
|
||||
Settings editSettings{};
|
||||
bool isQuittingMode{};
|
||||
PendingSave pendingSave{};
|
||||
|
||||
void save_execute(Manager&, Settings&, const PendingSave&, bool);
|
||||
bool save_request(Manager&, Settings&, int = -1, const std::filesystem::path& = {});
|
||||
|
||||
public:
|
||||
float height{};
|
||||
|
||||
void update(Manager&, Settings&, Resources&, Dialog&, bool&);
|
||||
bool save_manual(Manager&, Settings&, int = -1, const std::filesystem::path& = {});
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "change_all_frame_properties.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -48,7 +49,7 @@ namespace anm2ed::imgui::wizard
|
||||
auto& duration = settings.changeDuration;
|
||||
auto& tint = settings.changeTint;
|
||||
auto& colorOffset = settings.changeColorOffset;
|
||||
auto& regionId = settings.changeRegionId;
|
||||
auto& regionId = document.changeAllFramePropertiesRegionId;
|
||||
auto& isVisible = settings.changeIsVisible;
|
||||
auto& interpolation = settings.changeInterpolation;
|
||||
auto& isFlipX = settings.changeIsFlipX;
|
||||
@@ -239,6 +240,7 @@ namespace anm2ed::imgui::wizard
|
||||
}
|
||||
auto regionIds = regionStorage && !regionStorage->ids.empty() ? regionStorage->ids : fallbackIds;
|
||||
auto regionLabels = regionStorage && !regionStorage->labels.empty() ? regionStorage->labels : fallbackLabels;
|
||||
if (itemType != anm2::LAYER || std::find(regionIds.begin(), regionIds.end(), regionId) == regionIds.end()) regionId = -1;
|
||||
PROPERTIES_WIDGET(combo_id_mapped(localize.get(BASIC_REGION), ®ionId, regionIds, regionLabels), "##Is Region",
|
||||
isRegion);
|
||||
ImGui::EndDisabled();
|
||||
|
||||
@@ -72,9 +72,15 @@ namespace anm2ed::imgui::wizard
|
||||
ImGui::RadioButton(localize.get(LABEL_ANM2ED_LIMITED), &temporary.fileCompatibility, anm2::ANM2ED_LIMITED);
|
||||
ImGui::SetItemTooltip("%s", localize.get(TOOLTIP_COMPATIBILITY_ANM2ED_LIMITED));
|
||||
|
||||
ImGui::Checkbox(localize.get(LABEL_SPECIAL_INTERPOLATED_FRAMES_REMINDER_ON_SAVE),
|
||||
&temporary.fileIsSpecialInterpolatedFramesOnSaveReminder);
|
||||
ImGui::SetItemTooltip("%s", localize.get(TOOLTIP_SPECIAL_INTERPOLATED_FRAMES_REMINDER_ON_SAVE));
|
||||
|
||||
ImGui::BeginDisabled(temporary.fileIsSpecialInterpolatedFramesOnSaveReminder);
|
||||
ImGui::Checkbox(localize.get(LABEL_BAKE_SPECIAL_INTERPOLATED_FRAMES_ON_SAVE),
|
||||
&temporary.fileBakeSpecialInterpolatedFramesOnSave);
|
||||
ImGui::SetItemTooltip("%s", localize.get(TOOLTIP_BAKE_SPECIAL_INTERPOLATED_FRAMES_ON_SAVE));
|
||||
ImGui::EndDisabled();
|
||||
|
||||
ImGui::SeparatorText(localize.get(LABEL_OPTIONS));
|
||||
ImGui::Checkbox(localize.get(LABEL_OVERWRITE_WARNING), &temporary.fileIsWarnOverwrite);
|
||||
|
||||
@@ -244,7 +244,14 @@ namespace anm2ed
|
||||
X(LABEL_CLEAR_LIST, "Clear List", "Limpiar Lista", "Стереть список", "清除列表", "기록 삭제") \
|
||||
X(LABEL_CLOSE, "Close", "Cerrar", "Закрыть", "关闭", "닫기") \
|
||||
X(LABEL_COMPATIBILITY, "Compatibility", "Compatibilidad", "Совместимость", "兼容性", "호환성") \
|
||||
X(LABEL_BAKE_SPECIAL_INTERPOLATED_FRAMES_ON_SAVE, "Bake Special Interpolated Frames On Saving", "Hornear frames con interpolación especial al guardar", "Запекать кадры со специальной интерполяцией при сохранении", "保存时烘焙特殊插值帧", "저장 시 특수 보간 프레임 베이크") \
|
||||
X(LABEL_SPECIAL_INTERPOLATED_FRAMES_REMINDER_ON_SAVE, "Remind me when saving a document with frames with special interpolation modes", "Recordatorio de frames con interpolación especial al guardar", "Напоминание о кадрах со специальной интерполяцией при сохранении", "保存时特殊插值帧提醒", "저장 시 특수 보간 프레임 알림") \
|
||||
X(LABEL_BAKE_SPECIAL_INTERPOLATED_FRAMES_ON_SAVE, "Automatically bake frames with special interpolation modes", "Hornear frames con interpolación especial al guardar", "Запекать кадры со специальной интерполяцией при сохранении", "保存时烘焙特殊插值帧", "저장 시 특수 보간 프레임 베이크") \
|
||||
X(LABEL_SPECIAL_INTERPOLATED_FRAMES_REMINDER_POPUP, "Special Interpolated Frames Reminder", "Recordatorio de frames con interpolación especial", "Напоминание о кадрах со специальной интерполяцией", "特殊插值帧提醒", "특수 보간 프레임 알림") \
|
||||
X(LABEL_SPECIAL_INTERPOLATED_FRAMES_REMINDER_PROMPT, "Your document includes frames with special interpolated modes. The Binding of Isaac: Rebirth does not support these special interpolated modes for frames and animations will not be rendered correctly. However, these frames can be baked to maintain the animation. Would you like to automatically bake these frames now?", "Su documento incluye frames con modos de interpolación especial. The Binding of Isaac: Rebirth no admite estos modos de interpolación especial para frames y las animaciones no se renderizarán correctamente. Sin embargo, estos frames pueden hornearse para mantener la animación. ¿Desea hornear automáticamente estos frames ahora?", "Ваш документ содержит кадры со специальными режимами интерполяции. The Binding of Isaac: Rebirth не поддерживает эти специальные режимы интерполяции для кадров, и анимации не будут отображаться корректно. Однако эти кадры можно запечь, чтобы сохранить анимацию. Хотите автоматически запечь эти кадры сейчас?", "您的文档包含使用特殊插值模式的帧。The Binding of Isaac: Rebirth 不支持这些帧的特殊插值模式,动画将无法正确渲染。不过,这些帧可以通过烘焙来保持动画效果。是否要立即自动烘焙这些帧?", "문서에 특수 보간 모드를 사용하는 프레임이 포함되어 있습니다. The Binding of Isaac: Rebirth는 이러한 프레임의 특수 보간 모드를 지원하지 않으며 애니메이션이 올바르게 렌더링되지 않습니다. 하지만 이러한 프레임은 애니메이션을 유지하도록 베이크할 수 있습니다. 지금 이 프레임들을 자동으로 베이크하시겠습니까?") \
|
||||
X(LABEL_DONT_NOTIFY_ME_AGAIN, "Don't notify me again", "No volver a notificarme", "Больше не уведомлять", "不再提醒我", "다시 알리지 않기") \
|
||||
X(LABEL_AUTOMATICALLY_BAKE_THESE_FRAMES_ON_SAVE, "Automatically bake these frames on save", "Hornear automáticamente estos frames al guardar", "Автоматически запекать эти кадры при сохранении", "保存时自动烘焙这些帧", "저장 시 이 프레임 자동 베이크") \
|
||||
X(LABEL_SAVE_BAKE_FRAMES, "Save (Bake Frames)", "Guardar (Hornear frames)", "Сохранить (Запечь кадры)", "保存(烘焙帧)", "저장 (프레임 베이크)") \
|
||||
X(LABEL_SAVE_DONT_BAKE_FRAMES, "Save (Don't Bake Frames)", "Guardar (No hornear frames)", "Сохранить (Не запекать кадры)", "保存(不烘焙帧)", "저장 (프레임을 베이크하지 않음)") \
|
||||
X(LABEL_CUSTOM_RANGE, "Custom Range", "Rango Personalizado", "Пользовательский диапазон", "自定义范围", "길이 맞춤설정") \
|
||||
X(LABEL_DELETE, "Delete", "Borrar", "Удалить", "删除", "삭제") \
|
||||
X(LABEL_DELETE_ANIMATIONS_AFTER, "Delete Animations After", "Borrar Animaciones Despues", "Удалить анимации после", "删除之后的动画", "기존 애니메이션 삭제") \
|
||||
@@ -526,6 +533,7 @@ namespace anm2ed
|
||||
X(TOOLTIP_COMPATIBILITY_ISAAC, "Sets the output file format to that of The Binding of Isaac: Rebirth's.\nThis removes the following:\n- Sounds\n- Regions\n- Special interpolation modes\nNOTE: This will not serialize this data and it won't be able to be recovered.", "Establece el formato del archivo de salida al de The Binding of Isaac: Rebirth.\nEsto elimina lo siguiente:\n- Sonidos\n- Regiones\n- Modos especiales de interpolación\nNOTA: Estos datos no se serializaran y no podran recuperarse.", "Устанавливает формат выходного файла как у The Binding of Isaac: Rebirth.\nЭто удаляет следующее:\n- Звуки\n- Регионы\n- Специальные режимы интерполяции\nПРИМЕЧАНИЕ: Эти данные не будут сериализованы, и их нельзя будет восстановить.", "将输出文件格式设置为 The Binding of Isaac: Rebirth 的格式。\n这会移除以下内容:\n- 声音\n- 区域\n- 特殊插值模式\n注意:这些数据不会被序列化,且无法恢复。", "출력 파일 형식을 The Binding of Isaac: Rebirth의 형식으로 설정합니다.\n다음 항목이 제거됩니다:\n- 사운드\n- 영역\n- 특수 보간 모드\n참고: 이 데이터는 직렬화되지 않으며 복구할 수 없습니다.") \
|
||||
X(TOOLTIP_COMPATIBILITY_ANM2ED, "Sets the output file format to that of this editor.\nAll features will be serialized, including:\n- Sounds\n- Regions\n- Special interpolation modes", "Establece el formato del archivo de salida al de este editor.\nTodas las funciones se serializaran, incluyendo:\n- Sonidos\n- Regiones\n- Modos especiales de interpolación", "Устанавливает формат выходного файла как у этого редактора.\nВсе возможности будут сериализованы, включая:\n- Звуки\n- Регионы\n- Специальные режимы интерполяции", "将输出文件格式设置为本编辑器的格式。\n所有功能都会被序列化,包括:\n- 声音\n- 区域\n- 特殊插值模式", "출력 파일 형식을 이 편집기의 형식으로 설정합니다.\n다음 기능을 포함한 모든 기능이 직렬화됩니다:\n- 사운드\n- 영역\n- 특수 보간 모드") \
|
||||
X(TOOLTIP_COMPATIBILITY_ANM2ED_LIMITED, "Sets the output file format to that of this editor.\nThis will additionally remove redundant Region-specific information in frames.", "Establece el formato del archivo de salida al de este editor.\nEsto ademas eliminara informacion redundante especifica de Region en los frames.", "Устанавливает формат выходного файла как у этого редактора.\nДополнительно это удалит избыточную информацию, связанную с регионами, в кадрах.", "将输出文件格式设置为本编辑器的格式。\n此外,这还会移除帧中冗余的区域专用信息。", "출력 파일 형식을 이 편집기의 형식으로 설정합니다.\n추가로 프레임 내 중복된 영역 관련 정보를 제거합니다.") \
|
||||
X(TOOLTIP_SPECIAL_INTERPOLATED_FRAMES_REMINDER_ON_SAVE, "When manually saving a document with special interpolation modes, display a reminder before saving and let you choose whether to bake those frames.", "Al guardar manualmente un documento con modos de interpolación especial, mostrar un recordatorio antes de guardar y permitir elegir si se hornean esos frames.", "При ручном сохранении документа со специальными режимами интерполяции показывать напоминание перед сохранением и позволять выбрать, нужно ли запекать эти кадры.", "手动保存包含特殊插值模式的文档时,在保存前显示提醒,并允许您选择是否烘焙这些帧。", "특수 보간 모드가 있는 문서를 수동 저장할 때 저장 전에 알림을 표시하고 해당 프레임을 베이크할지 선택할 수 있습니다.") \
|
||||
X(TOOLTIP_BAKE_SPECIAL_INTERPOLATED_FRAMES_ON_SAVE, "When saving, frames that do not use the None or Linear interpolation modes will automatically be baked in-place when saving the file.\nThe Binding of Isaac: Rebirth does not support extended interpolation features.", "Al guardar, los frames que no usen los modos de interpolación None o Linear se hornearán automáticamente en su lugar al guardar el archivo.\nThe Binding of Isaac: Rebirth no soporta funciones extendidas de interpolación.", "При сохранении кадры, которые не используют режимы интерполяции None или Linear, будут автоматически запекаться на месте при сохранении файла.\nThe Binding of Isaac: Rebirth не поддерживает расширенные возможности интерполяции.", "保存文件时,不使用 None 或 Linear 插值模式的帧将自动在保存时原地烘焙。\nThe Binding of Isaac: Rebirth 不支持扩展插值功能。", "저장할 때 None 또는 Linear 보간 모드를 사용하지 않는 프레임은 파일 저장 시 자동으로 제자리 베이크됩니다.\nThe Binding of Isaac: Rebirth는 확장 보간 기능을 지원하지 않습니다.") \
|
||||
X(TOOLTIP_COLOR_OFFSET, "Change the color added onto the frame.", "Cambia el color añadido al Frame.", "Изменить цвет, который добавлен на кадр.", "更改覆盖在帧上的颜色.", "프레임에 더해지는 색을 변경합니다.") \
|
||||
X(TOOLTIP_REGION, "Set the spritesheet region the frame will use.", "Establece la región del spritesheet que usará el frame.", "Установить регион спрайт-листа, который будет использовать кадр.", "设置帧将使用的图集区域.", "프레임이 사용할 스프라이트 시트 영역을 설정합니다.") \
|
||||
|
||||
@@ -61,6 +61,7 @@ namespace anm2ed
|
||||
\
|
||||
X(FILE_IS_AUTOSAVE, fileIsAutosave, STRING_UNDEFINED, BOOL, true) \
|
||||
X(FILE_IS_WARN_OVERWRITE, fileIsWarnOverwrite, STRING_UNDEFINED, BOOL, true) \
|
||||
X(FILE_IS_SPECIAL_INTERPOLATED_FRAMES_ON_SAVE_REMINDER, fileIsSpecialInterpolatedFramesOnSaveReminder, STRING_UNDEFINED, BOOL, true) \
|
||||
X(FILE_BAKE_SPECIAL_INTERPOLATED_FRAMES_ON_SAVE, fileBakeSpecialInterpolatedFramesOnSave, STRING_UNDEFINED, BOOL, true) \
|
||||
X(FILE_SNAPSHOT_STACK_SIZE, fileSnapshotStackSize, STRING_UNDEFINED, INT, 50) \
|
||||
X(FILE_COMPATIBILITY, fileCompatibility, STRING_UNDEFINED, INT, anm2::ANM2ED) \
|
||||
|
||||
Reference in New Issue
Block a user