1 /* 2 Copyright (C) 2017-2018 the Battle for Wesnoth Project https://www.wesnoth.org/ 3 4 This program is free software; you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation; either version 2 of the License, or 7 (at your option) any later version. 8 This program is distributed in the hope that it will be useful, 9 but WITHOUT ANY WARRANTY. 10 11 See the COPYING file for more details. 12 */ 13 14 #pragma once 15 16 #include "undo_action.hpp" 17 #include "units/make.hpp" 18 19 namespace actions 20 { 21 namespace undo 22 { 23 24 struct dismiss_action : undo_action 25 { 26 unit_ptr dismissed_unit; 27 28 dismiss_actionactions::undo::dismiss_action29 explicit dismiss_action(const unit_const_ptr dismissed) 30 : undo_action() 31 , dismissed_unit(make_unit_ptr(*dismissed)) 32 { 33 } dismiss_actionactions::undo::dismiss_action34 explicit dismiss_action(const config & cfg, const config & unit_cfg) 35 : undo_action(cfg) 36 , dismissed_unit(make_unit_ptr(unit_cfg)) 37 { 38 } get_typeactions::undo::dismiss_action39 virtual const char* get_type() const { return "dismiss"; } ~dismiss_actionactions::undo::dismiss_action40 virtual ~dismiss_action() {} 41 42 /// Writes this into the provided config. 43 virtual void write(config & cfg) const; 44 45 /// Undoes this action. 46 virtual bool undo(int side); 47 }; 48 49 } 50 } 51