00001 //////////////////////////////////////////////////////////////////////////////// 00002 // Scorched3D (c) 2000-2009 00003 // 00004 // This file is part of Scorched3D. 00005 // 00006 // Scorched3D is free software; you can redistribute it and/or modify 00007 // it under the terms of the GNU General Public License as published by 00008 // the Free Software Foundation; either version 2 of the License, or 00009 // (at your option) any later version. 00010 // 00011 // Scorched3D is distributed in the hope that it will be useful, 00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 // GNU General Public License for more details. 00015 // 00016 // You should have received a copy of the GNU General Public License 00017 // along with Scorched3D; if not, write to the Free Software 00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00019 //////////////////////////////////////////////////////////////////////////////// 00020 00021 #include <server/ServerFileAkHandler.h> 00022 #include <server/ScorchedServer.h> 00023 #include <tank/TankContainer.h> 00024 #include <tank/TankMod.h> 00025 #include <coms/ComsFileAkMessage.h> 00026 00027 ServerFileAkHandler *ServerFileAkHandler::instance() 00028 { 00029 static ServerFileAkHandler *instance = 00030 new ServerFileAkHandler; 00031 return instance; 00032 } 00033 00034 ServerFileAkHandler::ServerFileAkHandler() 00035 { 00036 ScorchedServer::instance()->getComsMessageHandler().addHandler( 00037 "ComsFileAkMessage", 00038 this); 00039 } 00040 00041 ServerFileAkHandler::~ServerFileAkHandler() 00042 { 00043 } 00044 00045 bool ServerFileAkHandler::processMessage( 00046 NetMessage &netMessage, 00047 const char *messageType, 00048 NetBufferReader &reader) 00049 { 00050 ComsFileAkMessage message; 00051 if (!message.readMessage(reader)) return false; 00052 00053 // Set any tanks from this destination ready to recieve more input 00054 std::map<unsigned int, Tank *> &tanks = 00055 ScorchedServer::instance()->getTankContainer().getPlayingTanks(); 00056 std::map<unsigned int, Tank *>::iterator itor; 00057 for (itor = tanks.begin(); 00058 itor != tanks.end(); 00059 itor++) 00060 { 00061 // For each tank 00062 Tank *tank = (*itor).second; 00063 if (netMessage.getDestinationId() == tank->getDestinationId()) 00064 { 00065 tank->getMod().setReadyToReceive(true); 00066 } 00067 } 00068 00069 return true; 00070 }
1.5.3