00001 /* 00002 This file is part of Advanced Strategic Command; http://www.asc-hq.de 00003 Copyright (C) 1994-2010 Martin Bickel and Marc Schellenberger 00004 00005 This program is free software; you can redistribute it and/or modify 00006 it under the terms of the GNU General Public License as published by 00007 the Free Software Foundation; either version 2 of the License, or 00008 (at your option) any later version. 00009 00010 This program is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 GNU General Public License for more details. 00014 00015 You should have received a copy of the GNU General Public License 00016 along with this program; see the file COPYING. If not, write to the 00017 Free Software Foundation, Inc., 59 Temple Place, Suite 330, 00018 Boston, MA 02111-1307 USA 00019 */ 00020 00021 00022 #include "containeraction.h" 00023 00024 #include "../vehicle.h" 00025 #include "../gamemap.h" 00026 00027 ContainerAction::ContainerAction( ContainerBase* container ) 00028 : GameAction( container->getMap() ) 00029 { 00030 this->containerID = container->getIdentification(); 00031 } 00032 00033 ContainerAction::ContainerAction( GameMap* map ) 00034 : GameAction( map ) 00035 { 00036 this->containerID = -1; 00037 } 00038 00039 00040 00041 ContainerBase* ContainerAction::getContainer( bool dontThrow ) 00042 { 00043 ContainerBase* veh = getMap()->getContainer( containerID ); 00044 if ( !veh && !dontThrow ) 00045 throw ActionResult(21001, "ID is " + ASCString::toString(containerID) ); 00046 else 00047 return veh; 00048 } 00049 00050 const ContainerBase* ContainerAction::getContainer( bool dontThrow ) const 00051 { 00052 const ContainerBase* veh = getMap()->getContainer( containerID ); 00053 if ( !veh && !dontThrow ) 00054 throw ActionResult(21001, "ID is " + ASCString::toString(containerID) ); 00055 else 00056 return veh; 00057 } 00058 00059 void ContainerAction::readData ( tnstream& stream ) 00060 { 00061 int version = stream.readInt(); 00062 if ( version != 1 ) 00063 throw tinvalidversion ( "containerID", 1, version ); 00064 00065 containerID = stream.readInt(); 00066 }; 00067 00068 00069 void ContainerAction::writeData ( tnstream& stream ) const 00070 { 00071 stream.writeInt( 1 ); 00072 stream.writeInt( containerID ); 00073 }; 00074 00075 void ContainerAction::setID( int id ) 00076 { 00077 containerID = id; 00078 } 00079
1.5.1