File indexing completed on 2024-12-08 06:46:37
0001 /*************************************************************************** 0002 cmapcmdmovemap.cpp 0003 ------------------- 0004 begin : Thu Feb 28 2002 0005 copyright : (C) 2002 by Kmud Developer Team 0006 email : kmud-devel@kmud.de 0007 ***************************************************************************/ 0008 0009 /*************************************************************************** 0010 * * 0011 * This program is free software; you can redistribute it and/or modify * 0012 * it under the terms of the GNU General Public License as published by * 0013 * the Free Software Foundation; either version 2 of the License, or * 0014 * (at your option) any later version. * 0015 * * 0016 ***************************************************************************/ 0017 0018 #include "cmapcmdmovemap.h" 0019 0020 #include "cmaplevel.h" 0021 #include "cmaproom.h" 0022 #include "cmappath.h" 0023 #include "cmapmanager.h" 0024 0025 CMapCmdMoveMap::CMapCmdMoveMap(CMapManager *manager,QPoint offset,QString name) : CMapCommand(name) 0026 { 0027 m_Offset = offset; 0028 m_manager = manager; 0029 } 0030 0031 CMapCmdMoveMap::~CMapCmdMoveMap() 0032 { 0033 } 0034 0035 0036 void CMapCmdMoveMap::redo() 0037 { 0038 moveMap(m_Offset); 0039 } 0040 0041 void CMapCmdMoveMap::undo() 0042 { 0043 moveMap(QPoint(0, 0) - m_Offset); 0044 } 0045 0046 /** This method is used to move the elements in a zone by the given vector */ 0047 void CMapCmdMoveMap::moveMap(QPoint inc) 0048 { 0049 for (unsigned int idx = 0; idx < m_manager->getZone()->levelCount(); ++idx) 0050 { 0051 CMapLevel *level = m_manager->getZone()->getLevel(idx); 0052 0053 foreach (CMapElement *el, level->getAllElements()) 0054 { 0055 el->moveBy(inc); 0056 CMapRoom *room = dynamic_cast<CMapRoom *>(el); 0057 if (room) { 0058 foreach (CMapPath *path, *room->getPathList()) 0059 path->moveBy(inc); 0060 } 0061 } 0062 } 0063 }