/* * PVVMUD a 3D MUD * Copyright (C) 1998-1999 Programvareverkstedet (pvv@pvv.org) * * 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 2 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, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ #include "pvvmud.H" #include "msgactionlist.H" CMsgActionList::CMsgActionList():CMsgVarLength(MSG_ACTIONLIST){ setName("MsgActionList"); setBodyLength( sizeof(WORD)*2 ); writeWord(getLength(),0); // ObjectId setNumActions(0); // NumActions } CMsgActionList::CMsgActionList(WORD objectId):CMsgVarLength(MSG_ACTIONLIST){ setName("MsgActionList"); setBodyLength( sizeof(WORD)*2 ); writeWord(getLength(),objectId); setNumActions(0); // NumActions } void CMsgActionList::setNumActions(int num){ writeWord(getLength()+2,num); } int CMsgActionList::getNumActions(){ return readWord(getLength()+2); } CObjectList* CMsgActionList::getActionList(){ CObjectList * actionList = new CObjectList(); WORD numActions = getNumActions(); while (numActions--){ int id = readWord(MSGCURRPOS); CAction * action = new CAction(readString(MSGCURRPOS)); action->setId(id); actionList->addLast( (CObject*)action ); } return actionList; } void CMsgActionList::addAction(CAction * action){ int endpos = getBodyLength(); setBodyLength(endpos + sizeof(WORD) + strlen(action->getName())+1); endpos += getLength(); writeWord(endpos,action->getId()); endpos +=2; writeString(endpos,action->getName()); setNumActions(getNumActions()+1); } WORD CMsgActionList::getObjectId(){ return readWord(getLength()); }