Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/world_entities/weapons/ammo_container.cc @ 6664

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

trunk: small fix in resource/ammos

File size: 1.7 KB
RevLine 
[4744]1/*
[1853]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.
[1855]10
11   ### File Specific:
[6655]12   main-programmer: Benjamin Grauer
[1855]13   co-programmer: ...
[1853]14*/
15
[3955]16//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
[1853]17
[6655]18#include "ammo_container.h"
[1853]19
[6655]20#include "weapon.h"
21
22#include <assert.h>
23
[1856]24using namespace std;
[1853]25
[3245]26/**
[4838]27 * standard constructor
28 * @todo this constructor is not jet implemented - do it
[3245]29*/
[6655]30AmmoContainer::AmmoContainer (ClassID projectileType, float maxEnergy)
[3365]31{
[6655]32   this->setClassID(CL_AMMO_CONTAINER, "AmmoContainer");
[4320]33
34
[3365]35}
[1853]36
37
[3245]38/**
[4838]39 * standard deconstructor
[3245]40*/
[6655]41AmmoContainer::~AmmoContainer ()
[3543]42{
43  // delete what has to be deleted here
44}
[6655]45
46
47
48float AmmoContainer::increaseEnergy(float energy)
49{
50  this->energy += energy;
51
52  if (unlikely(this->energy > this->maxEnergy))
53  {
54    float retEnergy = this->energy - this->maxEnergy;
55    this->energy = this->maxEnergy;
56    return retEnergy;
57  }
58  else
59    return 0.0f;
60}
61
62
63float AmmoContainer::decreaseEnergy(float energy)
64{
65  this->energy -= energy;
66
67  if (unlikely(this->energy < 0))
68  {
69    float retEnergy = 0 - this->energy;
70    this->energy = 0;
71    return retEnergy;
72  }
73  else
74    return 0.0f;
75}
76
77bool AmmoContainer::weaponValid(const Weapon* weapon)
78{
79  return (weapon->isA(this->projectileType));
80}
81
82
83void AmmoContainer::fillWeapon(Weapon* weapon)
84{
85  assert (weapon != NULL);
[6664]86  assert (this->weaponValid(weapon));
[6655]87
88  float fillEnergy = weapon->getEnergyMax();
89
90  float restEnergy = weapon->increaseEnergy(fillEnergy);
91  this->decreaseEnergy(fillEnergy - restEnergy);
92}
Note: See TracBrowser for help on using the repository browser.