Skip to content

Commit 46d94cb

Browse files
committed
pressing undo marks map as edited after saving
1 parent b2f49d0 commit 46d94cb

File tree

4 files changed

+21
-8
lines changed

4 files changed

+21
-8
lines changed

Scenes/Editor.gd

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,26 @@ onready var oMenu = Nodelist.list["oMenu"]
1414
onready var oConfirmSaveBeforeQuit = Nodelist.list["oConfirmSaveBeforeQuit"]
1515
onready var oExportPreview = Nodelist.list["oExportPreview"]
1616
onready var oUndoStates = Nodelist.list["oUndoStates"]
17+
onready var oEditor = Nodelist.list["oEditor"]
1718

1819
enum {
1920
VIEW_2D = 0
2021
VIEW_3D = 1
22+
SET_EDITED_WITHOUT_SAVING_STATE = 777
2123
}
2224

2325
var currentView = VIEW_2D
2426
var fieldBoundary = Rect2()
2527
var mapHasBeenEdited = false setget set_map_has_been_edited
2628

2729
func set_map_has_been_edited(setVal):
28-
mapHasBeenEdited = setVal
29-
if setVal == true:
30+
if int(setVal) == oEditor.SET_EDITED_WITHOUT_SAVING_STATE: #If you save, then click Undo, it should mark as not saved but not create a new undo state when marking as edited.
31+
mapHasBeenEdited = true
32+
return
33+
elif setVal == true:
3034
oUndoStates.call_deferred("attempt_to_save_new_undo_state")
35+
mapHasBeenEdited = setVal
36+
3137

3238
func _ready():
3339
get_tree().set_auto_accept_quit(false)

Scenes/OpenMap.gd

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ onready var oDisplaySlxNumbers = Nodelist.list["oDisplaySlxNumbers"]
4545
onready var oThingDetails = Nodelist.list["oThingDetails"]
4646
onready var oInspector = Nodelist.list["oInspector"]
4747
onready var oGuidelines = Nodelist.list["oGuidelines"]
48+
onready var oResizeCurrentMapSize = Nodelist.list["oResizeCurrentMapSize"]
4849

4950
var TOTAL_TIME_TO_OPEN_MAP
5051

@@ -66,7 +67,7 @@ func start():
6667
#for i in 200:
6768
# yield(get_tree(), "idle_frame")
6869
#oCurrentMap.clear_map()
69-
open_map("D:/Dungeon Keeper/levels/personal/map00056.slb")
70+
open_map("D:/Dungeon Keeper/levels/personal/map00002.slb")
7071
pass
7172
else:
7273
# initialize a cleared map
@@ -236,6 +237,8 @@ func continue_load(map):
236237
if oColumnEditor.visible == true:
237238
oColumnEditor.visible = false
238239
Utils.popup_centered(oColumnEditor)
240+
if oResizeCurrentMapSize.visible == true:
241+
oResizeCurrentMapSize._on_ResizeCurrentMapSize_about_to_show()
239242

240243
if is_instance_valid(oInspector.inspectingInstance):
241244
oInspector.deselect()

Scenes/ResizeCurrentMapSize.gd

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ onready var oInstances = Nodelist.list["oInstances"]
1919
onready var oGuidelines = Nodelist.list["oGuidelines"]
2020
onready var oBuffers = Nodelist.list["oBuffers"]
2121

22-
2322
func _on_ResizeCurrentMapSizeButton_pressed():
2423
Utils.popup_centered(self)
2524

@@ -33,8 +32,8 @@ func set_new_map_size(newWidth, newHeight):
3332
M.xSize = newWidth
3433
M.ySize = newHeight
3534
oMapSizeTextLabel.text = str(M.xSize) + " x " + str(M.ySize)
36-
37-
35+
36+
3837
# Function to get positions that need to be updated
3938
func get_positions_to_update(newWidth, newHeight, previousWidth, previousHeight):
4039
var positionsToUpdate = {}

Scenes/UndoStates.gd

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ onready var oEditor = Nodelist.list["oEditor"]
1212
onready var oMenu = Nodelist.list["oMenu"]
1313

1414

15+
1516
var is_saving_state = false
1617
var undo_history = []
1718
var max_undo_states = 256
@@ -65,6 +66,8 @@ func perform_undo():
6566
oMessage.big("Undo state error", "previous_state is not a dictionary")
6667
return
6768

69+
70+
6871
var CODETIME_START = OS.get_ticks_msec()
6972
performing_undo = true
7073

@@ -85,7 +88,9 @@ func perform_undo():
8588
oMenu.update_undo_availability()
8689
oMessage.quick("Undo performed")
8790

88-
if undo_history.size() <= 1:
91+
if oEditor.mapHasBeenEdited == false:
92+
oEditor.mapHasBeenEdited = oEditor.SET_EDITED_WITHOUT_SAVING_STATE
93+
elif undo_history.size() <= 1:
8994
oEditor.mapHasBeenEdited = false
9095

9196
print('perform_undo: ' + str(OS.get_ticks_msec() - CODETIME_START) + 'ms')
@@ -95,7 +100,7 @@ func perform_undo():
95100
print('Idle frame (after undo): ' + str(OS.get_ticks_msec() - IDLE_FRAME_CODETIME_START) + 'ms')
96101

97102
performing_undo = false
98-
103+
99104

100105

101106
func are_states_equal(state1, state2): # (0ms or 1ms)

0 commit comments

Comments
 (0)