1
0
Fork 0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-12-23 01:59:43 +01:00

Add level resizing to undo/redo system

This commit is contained in:
AllyTally 2023-12-20 20:29:51 -04:00 committed by NyakoFox
parent 5b555f045c
commit 37b3091432
2 changed files with 41 additions and 15 deletions

View file

@ -3417,6 +3417,14 @@ void process_editor_buffer(const bool undo)
graphics.foregrounddrawn = false;
ed.updatetiles = true;
break;
case EditorUndoType_LEVEL_SIZE:
// Restore the level size
new_info.level_width = cl.mapwidth;
new_info.level_height = cl.mapheight;
cl.mapwidth = info.level_width;
cl.mapheight = info.level_height;
break;
}
if (undo)
@ -3582,6 +3590,8 @@ void editorinput(void)
}
else if (shift_down)
{
int old_width = cl.mapwidth;
int old_height = cl.mapheight;
if (up_pressed) cl.mapheight--;
if (down_pressed) cl.mapheight++;
@ -3591,6 +3601,9 @@ void editorinput(void)
cl.mapwidth = SDL_clamp(cl.mapwidth, 1, cl.maxwidth);
cl.mapheight = SDL_clamp(cl.mapheight, 1, cl.maxheight);
if (old_width != cl.mapwidth || old_height != cl.mapheight)
{
ed.updatetiles = true;
ed.changeroom = true;
graphics.backgrounddrawn = false;
@ -3608,6 +3621,17 @@ void editorinput(void)
);
ed.show_note(buffer);
EditorUndoInfo info;
info.type = EditorUndoType_LEVEL_SIZE;
info.level_width = old_width;
info.level_height = old_height;
info.room_x = ed.levx;
info.room_y = ed.levy;
ed.undo_buffer.push_back(info);
ed.redo_buffer.clear();
}
}
else
{

View file

@ -142,6 +142,7 @@ enum EditorUndoTypes
EditorUndoType_ENTITY_ADDED, // Entity added
EditorUndoType_ENTITY_REMOVED, // Entity removed
EditorUndoType_ENTITY_MODIFIED, // Entity properties modified
EditorUndoType_LEVEL_SIZE // Level size modified
};
struct EditorUndoInfo
@ -155,7 +156,8 @@ struct EditorUndoInfo
int entity_id;
CustomEntity entity;
RoomProperty room_data;
int level_width;
int level_height;
};
class editorclass