File: Client.cpp

package info (click to toggle)
arkrpg 0.1.4b-6
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 6,104 kB
  • ctags: 5,445
  • sloc: cpp: 28,145; sh: 9,006; ansic: 3,259; makefile: 344
file content (83 lines) | stat: -rw-r--r-- 2,249 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/* $Id: Client.cpp,v 1.21 2003/03/12 21:50:01 mrq Exp $
**
** Ark - Libraries, Tools & Programs for MMORPG developpements.
** Copyright (C) 1999-2002 The Contributors of the ArkRPG Project
** Please see the file "AUTHORS" for a list of contributors
**
** 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#include <Ark/ArkSystem.h>

#include <Client/Client.h>
#include <Client/RemoteUpdater.h>

namespace Client
{

   Client *g_Client = NULL;
   Client::Client (int argc, char **argv)
   {
      g_Client = this;

      m_Config = Ark::Sys()->Cfg();
      m_Config->Load ("{game}/config/client.cfg");

      m_World = NULL;
      m_Renderer = NULL;
      m_Player = NULL;

      m_MaxFPS = m_Config->GetScalar ("client::MaxFPS", 70);
   }

// Destroy the client and all data used by it.
   Client::~Client()
   {
      if (m_Updater)
	 delete m_Updater;
   
      if (m_Renderer)
	 delete m_Renderer;
   }

   void
   Client::Login (const Ark::String &name,
		  const Ark::String &pass)
   {
      if (m_Renderer == NULL)
	 return;

      m_Updater = CreateUpdater
	 (Ark::Sys()->Cfg()->GetStr("client::Updater", "ark::Updater::Engine"),
	  &m_Renderer->GetCache());

      if (m_Updater == NULL)
	 //FIXME.. Handle this better.
	 Ark::Sys()->Fatal("Cannot create main updater."); 

      m_Player = m_Updater->Login (name,pass);

      m_World = m_Updater->GetWorld();

      if (m_World == NULL)
	 Ark::Sys()->Fatal("Cannot create updater, giving up.\n");

      m_World->Init (Ark::WORLD_HAS_RENDERING);

      m_Renderer->GetCache().Clear(false);
      m_Renderer->GetCache().MemReport();
   }

}