/*==LICENSE==* CyanWorlds.com Engine - MMOG client, server and tools Copyright (C) 2011 Cyan Worlds, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . You can contact Cyan Worlds, Inc. by email legal@cyan.com or by snail mail at: Cyan Worlds, Inc. 14617 N Newport Hwy Mead, WA 99021 *==LICENSE==*/ #include "plSpawnPointInfo.h" #include "../pnMessage/plMessage.h" #include "hsStream.h" #include "hsBitVector.h" const plSpawnPointInfo kDefaultSpawnPoint( kDefaultSpawnPtTitle, kDefaultSpawnPtName ); namespace SpawnPointInfoStreamFlags { enum { kHasTitle, kHasName, kHasCameraStack, }; } void plSpawnPointInfo::ReadOld( hsStream * s ) { s->LogSubStreamStart("push me"); s->LogSubStreamPushDesc("Title"); plMsgStdStringHelper::Peek( fTitle, s ); s->LogSubStreamPushDesc("Name"); plMsgStdStringHelper::Peek( fSpawnPt, s ); fCameraStack = ""; s->LogSubStreamEnd(); } void plSpawnPointInfo::Read( hsStream * s ) { hsBitVector flags; flags.Read( s ); s->LogSubStreamStart("push me"); if ( flags.IsBitSet( SpawnPointInfoStreamFlags::kHasTitle ) ) { s->LogSubStreamPushDesc("Title"); plMsgStdStringHelper::Peek( fTitle, s ); } if ( flags.IsBitSet( SpawnPointInfoStreamFlags::kHasName ) ) { s->LogSubStreamPushDesc("Name"); plMsgStdStringHelper::Peek( fSpawnPt, s ); } if ( flags.IsBitSet( SpawnPointInfoStreamFlags::kHasCameraStack ) ) { s->LogSubStreamPushDesc("CameraStack"); plMsgStdStringHelper::Peek( fCameraStack, s ); } s->LogSubStreamEnd(); } void plSpawnPointInfo::Write( hsStream * s ) const { hsBitVector flags; flags.SetBit( SpawnPointInfoStreamFlags::kHasTitle ); flags.SetBit( SpawnPointInfoStreamFlags::kHasName ); flags.SetBit( SpawnPointInfoStreamFlags::kHasCameraStack ); flags.Write( s ); if ( flags.IsBitSet( SpawnPointInfoStreamFlags::kHasTitle ) ) { plMsgStdStringHelper::Poke( fTitle, s ); } if ( flags.IsBitSet( SpawnPointInfoStreamFlags::kHasName ) ) { plMsgStdStringHelper::Poke( fSpawnPt, s ); } if ( flags.IsBitSet( SpawnPointInfoStreamFlags::kHasCameraStack ) ) { plMsgStdStringHelper::Poke( fCameraStack, s ); } } void plSpawnPointInfo::Reset() { (*this)=kDefaultSpawnPoint; } std::string plSpawnPointInfo::AsStdString() const { return xtl::format( "t:%s,n:%s,c:%s", fTitle.size()?fTitle.c_str():"(nil)", fSpawnPt.size()?fSpawnPt.c_str():"(nil)", fCameraStack.size()?fCameraStack.c_str():"(nil)" ); }