undo/redo for clearing special nodes
This commit is contained in:
@@ -425,7 +425,11 @@ static bool handle_rb_action(location the_point, bool option_hit) {
|
||||
}
|
||||
else if(j == size_before)
|
||||
break;
|
||||
else scenario.scen_specials[j] = cSpecial();
|
||||
else{
|
||||
undo_list.add(action_ptr(new aEditSpecial(0, j, scenario.scen_specials[j])));
|
||||
update_edit_menu();
|
||||
scenario.scen_specials[j] = cSpecial();
|
||||
}
|
||||
} else {
|
||||
bool is_new = false;
|
||||
if(j == size_before){
|
||||
@@ -449,7 +453,11 @@ static bool handle_rb_action(location the_point, bool option_hit) {
|
||||
}
|
||||
else if(j == size_before)
|
||||
break;
|
||||
else current_terrain->specials[j] = cSpecial();
|
||||
else{
|
||||
undo_list.add(action_ptr(new aEditSpecial(1, j, current_terrain->specials[j])));
|
||||
update_edit_menu();
|
||||
current_terrain->specials[j] = cSpecial();
|
||||
}
|
||||
} else {
|
||||
bool is_new = false;
|
||||
if(j == size_before){
|
||||
@@ -473,7 +481,11 @@ static bool handle_rb_action(location the_point, bool option_hit) {
|
||||
}
|
||||
else if(j == size_before)
|
||||
break;
|
||||
else town->specials[j] = cSpecial();
|
||||
else{
|
||||
undo_list.add(action_ptr(new aEditSpecial(2, j, town->specials[j])));
|
||||
update_edit_menu();
|
||||
town->specials[j] = cSpecial();
|
||||
}
|
||||
} else {
|
||||
bool is_new = false;
|
||||
if(j == size_before){
|
||||
|
@@ -808,8 +808,9 @@ class aEditSpecial : public cAction {
|
||||
bool redo_me() override;
|
||||
public:
|
||||
aEditSpecial(short mode, size_t which, cSpecial old_spec, cSpecial new_spec) :
|
||||
cAction("Edit Special Node"), mode(mode), which(which), old_spec(old_spec), new_spec(new_spec), which_town(cur_town), which_out(cur_out) {
|
||||
}
|
||||
cAction("Edit Special Node"), mode(mode), which(which), old_spec(old_spec), new_spec(new_spec), which_town(cur_town), which_out(cur_out) {}
|
||||
aEditSpecial(short mode, size_t which, cSpecial old_spec) :
|
||||
cAction("Clear Special Node"), mode(mode), which(which), old_spec(old_spec), new_spec(cSpecial()), which_town(cur_town), which_out(cur_out) {}
|
||||
};
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user