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 "containercommand.h" 00023 00024 #include "../vehicle.h" 00025 #include "../gamemap.h" 00026 00027 ContainerCommand::ContainerCommand( ContainerBase* container ) 00028 : Command( container->getMap() ) 00029 { 00030 this->containerID = container->getIdentification(); 00031 } 00032 00033 ContainerCommand::ContainerCommand( GameMap* map ) 00034 : Command( map ) 00035 { 00036 this->containerID = -1; 00037 } 00038 00039 00040 00041 ContainerBase* ContainerCommand::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* ContainerCommand::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 ContainerCommand::readData ( tnstream& stream ) 00060 { 00061 Command::readData( stream ); 00062 int version = stream.readInt(); 00063 if ( version != 1 ) 00064 throw tinvalidversion ( "containerID", 1, version ); 00065 00066 containerID = stream.readInt(); 00067 }; 00068 00069 00070 void ContainerCommand::writeData ( tnstream& stream ) const 00071 { 00072 Command::writeData( stream ); 00073 stream.writeInt( 1 ); 00074 stream.writeInt( containerID ); 00075 }; 00076 00077 ActionResult ContainerCommand::checkExecutionPrecondition() const 00078 { 00079 if ( getMap()->actplayer != getContainer()->getOwner() ) 00080 return ActionResult(101); 00081 else 00082 return ActionResult(0); 00083 } 00084
1.5.1