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 "shroud_clearing_action.hpp" 18 #include "units/ptr.hpp" 19 20 namespace actions 21 { 22 namespace undo 23 { 24 25 struct move_action : undo_action, shroud_clearing_action 26 { 27 int starting_moves; 28 map_location::DIRECTION starting_dir; 29 map_location goto_hex; 30 31 32 move_action(const unit_const_ptr moved, 33 const std::vector<map_location>::const_iterator & begin, 34 const std::vector<map_location>::const_iterator & end, 35 int sm, int timebonus, int orig, const map_location::DIRECTION dir); move_actionactions::undo::move_action36 move_action(const config & cfg, const config & unit_cfg, 37 int sm, const map_location::DIRECTION dir) 38 : undo_action(cfg) 39 , shroud_clearing_action(cfg) 40 , starting_moves(sm) 41 , starting_dir(dir) 42 , goto_hex(unit_cfg["goto_x"].to_int(-999), 43 unit_cfg["goto_y"].to_int(-999), wml_loc()) 44 { 45 } get_typeactions::undo::move_action46 virtual const char* get_type() const { return "move"; } ~move_actionactions::undo::move_action47 virtual ~move_action() {} 48 49 /// Writes this into the provided config. 50 virtual void write(config & cfg) const; 51 52 /// Undoes this action. 53 virtual bool undo(int side); 54 }; 55 56 } 57 } 58