Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/test/src/world_entities/power_ups/param_power_up.cc

Last change on this file was 9869, checked in by bensch, 18 years ago

orxonox/trunk: merged the new_class_id branche back to the trunk.
merged with command:
svn merge https://svn.orxonox.net/orxonox/branches/new_class_id trunk -r9683:HEAD
no conflicts… puh..

File size: 2.8 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: Benjamin Grauer
13   co-programmer: ...
14*/
15
16#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD_ENTITY
17
18#include "param_power_up.h"
19#include "util/loading/factory.h"
20#include "state.h"
21
22#include "primitive_model.h"
23
24#include "util/loading/factory.h"
25#include "util/loading/load_param.h"
26#include "network_game_manager.h"
27
28
29#include "class_id_DEPRECATED.h"
30ObjectListDefinitionID(ParamPowerUp, CL_PARAM_POWER_UP);
31CREATE_FACTORY(ParamPowerUp);
32
33const char* ParamPowerUp::paramTypes[] = {
34  "shield",
35  "max-shield",
36  "health",
37  "max-health",
38};
39
40ParamPowerUp::ParamPowerUp(const TiXmlElement* root) : PowerUp(0.0, 1.0, 0.0)
41{
42  this->init();
43  this->loadPickupSound("sound/powerups/power_up_6.wav");
44  if( root != NULL)
45    this->loadParams(root);
46
47  registerVar( new SynchronizeableInt( (int*)&type, (int*)&type, "type", PERMISSION_MASTER_SERVER ) );
48  registerVar( new SynchronizeableFloat( &value, &value, "value", PERMISSION_MASTER_SERVER ) );
49  registerVar( new SynchronizeableFloat( &max_value, &max_value, "max_value", PERMISSION_MASTER_SERVER ) );
50  registerVar( new SynchronizeableFloat( &min_value, &min_value, "min_value", PERMISSION_MASTER_SERVER ) );
51}
52
53
54ParamPowerUp::~ParamPowerUp ()
55{
56}
57
58
59void ParamPowerUp::init()
60{
61  this->registerObject(this, ParamPowerUp::_objectList);
62  this->value = 0;
63  this->max_value = 0;
64  this->min_value = 0;
65}
66
67
68void ParamPowerUp::loadParams(const TiXmlElement* root)
69{
70  PowerUp::loadParams(root);
71  LoadParam(root, "type", this, ParamPowerUp, setType);
72
73  if( root != NULL && root->FirstChildElement("value") != NULL) {
74
75    LoadParam(root, "value", this, ParamPowerUp, setValue);
76  }
77  else {
78    LoadParam(root, "max-value", this, ParamPowerUp, setMaxValue);
79    LoadParam(root, "min-value", this, ParamPowerUp, setMinValue);
80    respawn();
81  }
82}
83
84void ParamPowerUp::setValue(float value)
85{
86  this->value = value;
87}
88
89void ParamPowerUp::setType(const std::string& type)
90{
91  for(int i = 0; i < POWERUP_PARAM_size; ++i) {
92    if(type == paramTypes[i]) {
93      this->type = (EnumParamPowerUpType)i;
94      break;
95    }
96  }
97}
98
99void ParamPowerUp::setMaxValue(float value)
100{
101  this->max_value = value;
102}
103
104void ParamPowerUp::setMinValue(float value)
105{
106  this->min_value = value;
107}
108
109float ParamPowerUp::getValue()
110{
111  return this->value;
112}
113
114EnumParamPowerUpType ParamPowerUp::getType()
115{
116  return this->type;
117}
118
119void ParamPowerUp::respawn()
120{
121  if(this->min_value != this->max_value)
122  {
123    this->value = this->min_value + rand() * (this->max_value - this->min_value);
124  }
125}
126
Note: See TracBrowser for help on using the repository browser.