Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/test/src/world_entities/weapons/ammo_container.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: 1.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_
17
18#include "ammo_container.h"
19
20#include "weapon.h"
21
22#include <assert.h>
23
24
25ObjectListDefinition(AmmoContainer);
26/**
27 * standard constructor
28 * @todo this constructor is not jet implemented - do it
29*/
30AmmoContainer::AmmoContainer (const ClassID& projectileType, float maxEnergy)
31{
32  this->registerObject(this, AmmoContainer::_objectList);
33
34  this->projectileType = projectileType;
35  this->maxEnergy = maxEnergy;
36
37  this->energy = 0.0;
38}
39
40
41/**
42 * standard deconstructor
43*/
44AmmoContainer::~AmmoContainer ()
45{
46  // delete what has to be deleted here
47}
48
49
50
51float AmmoContainer::increaseEnergy(float energy)
52{
53  this->energy += energy;
54
55  if (unlikely(this->energy > this->maxEnergy))
56  {
57    float retEnergy = this->energy - this->maxEnergy;
58    this->energy = this->maxEnergy;
59    return retEnergy;
60  }
61  else
62    return 0.0f;
63}
64
65
66float AmmoContainer::decreaseEnergy(float energy)
67{
68  this->energy -= energy;
69
70  if (unlikely(this->energy < 0))
71  {
72    float retEnergy = 0 - this->energy;
73    this->energy = 0;
74    return retEnergy;
75  }
76  else
77    return 0.0f;
78}
79
80bool AmmoContainer::weaponValid(const Weapon* weapon)
81{
82  return (weapon->isA(this->projectileType));
83}
84
85
86void AmmoContainer::fillWeapon(Weapon* weapon)
87{
88  assert (weapon != NULL);
89  assert (this->weaponValid(weapon));
90
91  float fillEnergy = weapon->getEnergyMax();
92
93  float restEnergy = weapon->increaseEnergy(fillEnergy);
94  this->decreaseEnergy(fillEnergy - restEnergy);
95}
Note: See TracBrowser for help on using the repository browser.