Recovered from microbel
This commit is contained in:
146
client/pvvmudclient.C
Normal file
146
client/pvvmudclient.C
Normal file
@@ -0,0 +1,146 @@
|
||||
/*
|
||||
* 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 "pvvmudclient.H"
|
||||
|
||||
#include "glrenderer.H"
|
||||
#include "gltexture.H"
|
||||
#include "glsrvcliconsole.H"
|
||||
|
||||
CPvvmudClient::CPvvmudClient(int argc,char * argv[]) {
|
||||
m_option = new COption;
|
||||
//m_stdInput = new CStdInput();
|
||||
m_option->setValue("server",'s',"localhost");
|
||||
m_option->setValue("username",'u',"Guest");
|
||||
m_option->setValue("passwd",'p',"pvv");
|
||||
|
||||
m_option->loadOption("pvvmud.conf");
|
||||
m_option->parseArguments(argc,argv);
|
||||
|
||||
initGlobalData(m_option);
|
||||
m_gui = new CGlutGUI(argc,argv,m_renderer, this, 400, 300);
|
||||
m_renderer = new COGLRenderer(this);
|
||||
m_console = new CGLSrvCliConsole(this, 40, 20);
|
||||
m_console->setColor(0.8, 0.8, 0.8);
|
||||
m_commandParser = new CCliCmdParser(this);
|
||||
m_gui->setRenderer(m_renderer);
|
||||
m_inputFunction->setRenderer(m_renderer);
|
||||
m_inputFunction->setConsole(m_console);
|
||||
m_renderer->setConsole(m_console);
|
||||
GLTexture_Init();
|
||||
m_geometryCache = new CCliGeometryCache(getManager());
|
||||
m_materialCache = new CCliMaterialCache(getManager());
|
||||
m_textureCache = new CCliTextureCache(getManager());
|
||||
m_lastTime.getTime();
|
||||
|
||||
cdebug << "GeoCache at addr: " << m_geometryCache << "\n";
|
||||
|
||||
m_manager->init();
|
||||
|
||||
|
||||
}
|
||||
|
||||
void CPvvmudClient::run() {
|
||||
m_gui->run();
|
||||
}
|
||||
|
||||
void CPvvmudClient::initGlobalData(COption * option) {
|
||||
CClientSocket * socket;
|
||||
|
||||
if ((m_option->getString("server"))==NULL) {
|
||||
cdebug << "Error : Argument error in -server\n";
|
||||
exit(1);
|
||||
}
|
||||
try {
|
||||
CInetAddress addr(m_option->getString("server"), SERVER_CLIENT_PORT);
|
||||
socket = new CClientSocket(addr.getAddress(), addr.getPort() );
|
||||
} catch (CSocketException * e){
|
||||
delete e;
|
||||
cdebug << "Failed to connect to server!\n";
|
||||
exit(1);
|
||||
}
|
||||
socket->setNonBlocking();
|
||||
m_timeKeeper = new CTimeKeeper();
|
||||
m_manager = new CCliSrvManager( new CCliSrvProtocol( socket,m_timeKeeper ), m_timeKeeper);
|
||||
m_manager->setClient(this);
|
||||
|
||||
m_inputFunction = new CInputFunction(m_manager, m_renderer);
|
||||
if (m_inputFunction == NULL){
|
||||
cdebug << "Out of memory!!!\n";
|
||||
exit(23);
|
||||
}
|
||||
|
||||
m_timeKeeper->addHeartBeat(512,this);
|
||||
|
||||
}
|
||||
|
||||
|
||||
CGeometryCache * CPvvmudClient::getGeometryCache() {
|
||||
return m_geometryCache;
|
||||
}
|
||||
|
||||
CTextureCache * CPvvmudClient::getTextureCache() {
|
||||
return m_textureCache;
|
||||
}
|
||||
|
||||
CMaterialCache * CPvvmudClient::getMaterialCache() {
|
||||
return m_materialCache;
|
||||
}
|
||||
|
||||
CConsole * CPvvmudClient::getConsole() {
|
||||
return m_console;
|
||||
}
|
||||
|
||||
CCliSrvManager * CPvvmudClient::getManager() {
|
||||
return m_manager;
|
||||
}
|
||||
|
||||
CTimeKeeper * CPvvmudClient::getTimeKeeper() {
|
||||
return m_timeKeeper;
|
||||
}
|
||||
|
||||
CGUI * CPvvmudClient::getGUI() {
|
||||
return m_gui;
|
||||
}
|
||||
|
||||
CInputFunction * CPvvmudClient::getInputFunction() {
|
||||
return m_inputFunction;
|
||||
}
|
||||
|
||||
CStdInput * CPvvmudClient::getStdInput() {
|
||||
return m_stdInput;
|
||||
}
|
||||
|
||||
COption * CPvvmudClient::getOption() {
|
||||
return m_option;
|
||||
}
|
||||
|
||||
int CPvvmudClient::timeKeeperHB(){
|
||||
m_manager->sendPing();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CPvvmudClient::pollConsole(){
|
||||
const char * msg = getConsole()->getLine();
|
||||
if (msg != NULL) {
|
||||
m_commandParser->parseCommand(msg);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user