File indexing completed on 2024-10-06 03:46:08

0001 /***************************************************************************
0002                                cmapcmdtogglepathtwoway.cpp
0003                              -------------------
0004     begin                : Thu Mar 7 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 "cmapcmdtogglepathtwoway.h"
0019 
0020 #include "cmappath.h"
0021 #include "cmaplevel.h"
0022 #include "cmapmanager.h"
0023 #include "cmaproom.h"
0024 
0025 CMapCmdTogglePathTwoWay::CMapCmdTogglePathTwoWay(CMapManager *mapManager,QString name,CMapPath *path) : CMapCommand(name),CMapElementUtil(mapManager)
0026 {
0027     m_srcRoom    = path->getSrcRoom()->getRoomID();
0028     m_srcLevel   = path->getSrcRoom()->getLevel()->getLevelID();
0029     m_srcDir     = path->getSrcDir();
0030     m_specialCmd = path->getSpecialCmd();
0031     
0032     m_mapManager = mapManager;  
0033 }
0034 
0035 CMapCmdTogglePathTwoWay::~CMapCmdTogglePathTwoWay()
0036 {
0037 }
0038 
0039 void CMapCmdTogglePathTwoWay::redo()
0040 {
0041     CMapLevel *srcLevel = m_mapManager->findLevel(m_srcLevel);
0042     CMapRoom *srcRoom = srcLevel->findRoom(m_srcRoom);
0043     CMapPath *path = srcRoom->getPathDirection(m_srcDir,m_specialCmd);
0044     togglePath (path);
0045 }
0046 
0047 void CMapCmdTogglePathTwoWay::undo()
0048 {
0049     CMapLevel *srcLevel = m_mapManager->findLevel(m_srcLevel);
0050     CMapRoom *srcRoom = srcLevel->findRoom(m_srcRoom);
0051     CMapPath *path = srcRoom->getPathDirection(m_srcDir,m_specialCmd);
0052     togglePath (path);
0053 }
0054 
0055 void CMapCmdTogglePathTwoWay::togglePath(CMapPath *path)
0056 {
0057   if (path->getOpsitePath())
0058   {
0059     path->makeOneWay();
0060   }
0061   else
0062   {
0063     path->makeTwoWay();
0064   }
0065 }