235 lines
6.8 KiB
C
235 lines
6.8 KiB
C
/*
|
|
* 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 <iostream.h>
|
|
#include "cliworldmessage.H"
|
|
#include "cliworldmanager.H"
|
|
|
|
CMsgCliWorldHello::CMsgCliWorldHello():CMsgHello(){
|
|
}
|
|
|
|
CMsgCliWorldHello * CMsgCliWorldHello::createMsg(){
|
|
return new CMsgCliWorldHello();
|
|
}
|
|
|
|
|
|
int CMsgCliWorldHello::executeMsg(){
|
|
CCliWorldManager * manager = (CCliWorldManager*)getManager();
|
|
if (getVersion() != PROTOCOL_VERSION){
|
|
cdebug << "ERROR: Wrong protocol version!\n";
|
|
exit(2);
|
|
}
|
|
manager->hello();
|
|
return TRUE;
|
|
}
|
|
|
|
/*
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CMsgCliWorldCell
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
CMsgCliWorldCell::CMsgCliWorldCell():CMsgCell(){
|
|
}
|
|
|
|
CMsgCliWorldCell * CMsgCliWorldCell::createMsg(){
|
|
return new CMsgCliWorldCell();
|
|
}
|
|
|
|
int CMsgCliWorldCell::executeMsg(){
|
|
cdebug << "Cell " << getCellId() << " with geometry " << getGeometryId()
|
|
<< " with position " << getPosition() <<"\n";
|
|
CCliWorldManager * manager = (CCliWorldManager*)getManager();
|
|
CWorldObject * cell = manager->getWorld()->addCell(getCellId(),getGeometryId());
|
|
cell->setPosition(getPosition());
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CMsgCliWorldRemoveCell
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
CMsgCliWorldRemoveCell::CMsgCliWorldRemoveCell():CMsgRemoveCell(){
|
|
}
|
|
|
|
CMsgCliWorldRemoveCell * CMsgCliWorldRemoveCell::createMsg(){
|
|
return new CMsgCliWorldRemoveCell();
|
|
}
|
|
|
|
int CMsgCliWorldRemoveCell::executeMsg(){
|
|
CCliWorldManager * manager = (CCliWorldManager*)getManager();
|
|
manager->getWorld()->removeCell(getCellId());
|
|
return TRUE;
|
|
}
|
|
*/
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CMsgCliWorldObject
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
CMsgCliWorldObject::CMsgCliWorldObject():CMsgObject(){
|
|
}
|
|
|
|
CMsgCliWorldObject * CMsgCliWorldObject::createMsg(){
|
|
return new CMsgCliWorldObject();
|
|
}
|
|
|
|
int CMsgCliWorldObject::executeMsg(){
|
|
CCliWorldManager * manager = (CCliWorldManager*)getManager();
|
|
cdebug << "Object " << getObjectId() << " with parent " << getParentId() << " with geometry " << getGeometryId()
|
|
<< " with position " << getPosition() <<" with direction " << getDirection() << "\n";
|
|
if (manager->getWorld()->createObject(getParentId(),"object",getObjectId(),
|
|
getGeometryId(),getPosition(),
|
|
getDirection())==NULL){
|
|
cdebug << "Failed to create object " << getObjectId() << "\n";
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CMsgCliWorldRemoveObject
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
CMsgCliWorldRemoveObject::CMsgCliWorldRemoveObject():CMsgRemoveObject(){
|
|
}
|
|
|
|
CMsgCliWorldRemoveObject * CMsgCliWorldRemoveObject::createMsg(){
|
|
return new CMsgCliWorldRemoveObject();
|
|
}
|
|
|
|
int CMsgCliWorldRemoveObject::executeMsg(){
|
|
CCliWorldManager * manager = (CCliWorldManager*)getManager();
|
|
cdebug << "REMOVE : Object: " << getObjectId() << " Parent: " << getParentId() << "\n";
|
|
manager->getWorld()->removeObject(getObjectId(),getParentId());
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CMsgCliWorldUpdatePosition
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
CMsgCliWorldUpdatePosition::CMsgCliWorldUpdatePosition():CMsgUpdatePosition(){
|
|
}
|
|
|
|
CMsgCliWorldUpdatePosition * CMsgCliWorldUpdatePosition::createMsg(){
|
|
return new CMsgCliWorldUpdatePosition();
|
|
}
|
|
|
|
int CMsgCliWorldUpdatePosition::executeMsg(){
|
|
CCliWorldManager * manager = (CCliWorldManager*)getManager();
|
|
manager->getWorld()->updatePosition(getObjectId(),getPosition());
|
|
return TRUE;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CMsgCliWorldUpdateDirection
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
CMsgCliWorldUpdateDirection::CMsgCliWorldUpdateDirection():CMsgUpdateDirection(){
|
|
}
|
|
|
|
CMsgCliWorldUpdateDirection * CMsgCliWorldUpdateDirection::createMsg(){
|
|
return new CMsgCliWorldUpdateDirection();
|
|
}
|
|
|
|
int CMsgCliWorldUpdateDirection::executeMsg(){
|
|
CCliWorldManager * manager = (CCliWorldManager*)getManager();
|
|
manager->getWorld()->updateDirection(getObjectId(),getDirection());
|
|
return TRUE;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CMsgCliWorldUpdateHierarchy
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
CMsgCliWorldUpdateHierarchy::CMsgCliWorldUpdateHierarchy():CMsgUpdateHierarchy(){
|
|
}
|
|
|
|
CMsgCliWorldUpdateHierarchy * CMsgCliWorldUpdateHierarchy::createMsg(){
|
|
return new CMsgCliWorldUpdateHierarchy();
|
|
}
|
|
|
|
int CMsgCliWorldUpdateHierarchy::executeMsg(){
|
|
CCliWorldManager * manager = (CCliWorldManager*)getManager();
|
|
manager->getWorld()->updateHierarchy(getObjectId(),getParentId());
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CMsgCliWorldPong
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
CMsgCliWorldPong::CMsgCliWorldPong():CMsgPong(){
|
|
}
|
|
|
|
CMsgCliWorldPong * CMsgCliWorldPong::createMsg(){
|
|
return new CMsgCliWorldPong();
|
|
}
|
|
|
|
int CMsgCliWorldPong::executeMsg(){
|
|
CCliWorldManager * manager = (CCliWorldManager*)getManager();
|
|
manager->pong(getSequenceNumber(),getServerTime());
|
|
return TRUE;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CMsgCliWorldRotate
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
CMsgCliWorldRotate::CMsgCliWorldRotate():CMsgRotate(){
|
|
}
|
|
|
|
CMsgCliWorldRotate * CMsgCliWorldRotate::createMsg(){
|
|
return new CMsgCliWorldRotate();
|
|
}
|
|
|
|
int CMsgCliWorldRotate::executeMsg(){
|
|
CCliWorldManager * manager = (CCliWorldManager*)getManager();
|
|
manager->getWorld()->rotate(getObjectId(),getAngleSpeed());
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
|
|
|
|
|