Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/story_entities/multi_player_world.cc @ 9109

Last change on this file since 9109 was 9059, checked in by patrick, 18 years ago

merged the network branche with the trunk

File size: 5.1 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   ### File Specific:
12   main-programmer: Patrick Boenzli
13*/
14
15#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD
16
17
18#include "multi_player_world.h"
19#include "multi_player_world_data.h"
20
21#include "util/loading/factory.h"
22#include "util/loading/load_param.h"
23#include "shell_command.h"
24
25#include "cd_engine.h"
26
27#include "network_manager.h"
28#include "network_game_manager.h"
29
30#include "state.h"
31
32
33using namespace std;
34
35
36//! Register a command to print some multiplayer world infos
37SHELL_COMMAND(debug, MultiPlayerWorld, debug);
38
39
40//! This creates a Factory to fabricate a MultiPlayerWorld
41CREATE_FACTORY(MultiPlayerWorld, CL_MULTI_PLAYER_WORLD);
42
43
44MultiPlayerWorld::MultiPlayerWorld(const TiXmlElement* root)
45  : GameWorld()
46{
47  this->setClassID(CL_MULTI_PLAYER_WORLD, "MultiPlayerWorld");
48
49  this->dataTank = new MultiPlayerWorldData();
50
51  this->loadParams(root);
52}
53
54
55/**
56 *  remove the MultiPlayerWorld from memory
57 *
58 *  delete everything explicitly, that isn't contained in the parenting tree!
59 *  things contained in the tree are deleted automaticaly
60 */
61MultiPlayerWorld::~MultiPlayerWorld ()
62{
63  PRINTF(3)("MultiPlayerWorld::~MultiPlayerWorld() - deleting current world\n");
64  if( this->dataTank)
65    delete this->dataTank;
66}
67
68
69/**
70 * loads the parameters of a MultiPlayerWorld from an XML-element
71 * @param root the XML-element to load from
72 */
73void MultiPlayerWorld::loadParams(const TiXmlElement* root)
74{
75  GameWorld::loadParams(root);
76
77  PRINTF(4)("Creating a MultiPlayerWorld\n");
78}
79
80
81/**
82 *  synchronizes the network since this is a network world
83 *
84 * this function overrides the synchrinize from the GameWorld
85 */
86void MultiPlayerWorld::synchronize()
87{
88  NetworkManager::getInstance()->synchronize(this->dtS);
89}
90
91
92/**
93 * kicks the CDEngine to detect the collisions between the object groups in the world
94 */
95void MultiPlayerWorld::collisionDetection()
96{
97  //CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_PLAYERS), this->dataTank->objectManager->getObjectList(OM_PLAYERS));
98
99  PRINTF(5)("\n-----------------------------------------\nchecking OM_PLAYERS vs OM_PLAYERS_PROJ\n\n");
100  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_PLAYERS_PROJ),
101  this->dataTank->objectManager->getObjectList(OM_PLAYERS));
102  PRINTF(5)("\n-----------------------------------------\nchecking OM_PLAYERS vs OM_GROUP_01_PROJ\n\n");
103  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_PLAYERS),
104    this->dataTank->objectManager->getObjectList(OM_GROUP_00_PROJ));
105  PRINTF(5)("\n-----------------------------------------\nchecking OM_PLAYERS vs OM_GROUP_01_PROJ\n\n");
106  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_PLAYERS),
107    this->dataTank->objectManager->getObjectList(OM_GROUP_01_PROJ));
108  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_PLAYERS),
109    this->dataTank->objectManager->getObjectList(OM_GROUP_00));
110  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_PLAYERS),
111    this->dataTank->objectManager->getObjectList(OM_GROUP_01));
112
113
114
115  PRINTF(5)("\n-----------------------------------------\nchecking OM_GROUP_00 vs OM_GROUP_01_PROJ\n\n");
116  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_GROUP_00),
117    this->dataTank->objectManager->getObjectList(OM_GROUP_01_PROJ));
118  PRINTF(5)("\n-----------------------------------------\nchecking OM_GROUP_00 vs OM_GROUP_01\n\n");
119  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_GROUP_00),
120    this->dataTank->objectManager->getObjectList(OM_GROUP_01));
121  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_GROUP_00),
122    this->dataTank->objectManager->getObjectList(OM_PLAYERS_PROJ));
123
124  PRINTF(5)("\n-----------------------------------------\nchecking OM_GROUP_01 vs OM_GROUP_00_PROJ\n\n");
125  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_GROUP_01),
126    this->dataTank->objectManager->getObjectList(OM_GROUP_00_PROJ));
127  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_GROUP_01),
128    this->dataTank->objectManager->getObjectList(OM_GROUP_00));
129  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_GROUP_01),
130    this->dataTank->objectManager->getObjectList(OM_PLAYERS_PROJ));
131}
132
133
134/**
135 * some debug ouptut - shell command
136 */
137void MultiPlayerWorld::debug()
138{
139  ((MultiPlayerWorldData*)this->dataTank)->debug();
140}
141
142/**
143 * cleanup
144 * @return
145 */
146ErrorMessage MultiPlayerWorld::unloadData( )
147{
148
149  GameWorld::unloadData();
150
151  delete NetworkManager::getInstance();
152  delete NetworkGameManager::getInstance();
153
154  State::setOnline( false );
155 
156  return ErrorMessage();
157}
Note: See TracBrowser for help on using the repository browser.