Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jan 23, 2006, 2:02:22 PM (18 years ago)
Author:
bensch
Message:

orxonox/trunk: ammoContainer added

File:
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/world_entities/weapons/ammo_container.cc

    r6653 r6655  
    1010
    1111   ### File Specific:
    12    main-programmer: ...
     12   main-programmer: Benjamin Grauer
    1313   co-programmer: ...
    1414*/
     
    1616//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
    1717
    18 #include "proto_class.h"
     18#include "ammo_container.h"
     19
     20#include "weapon.h"
     21
     22#include <assert.h>
    1923
    2024using namespace std;
    21 
    2225
    2326/**
     
    2528 * @todo this constructor is not jet implemented - do it
    2629*/
    27 ProtoClass::ProtoClass ()
     30AmmoContainer::AmmoContainer (ClassID projectileType, float maxEnergy)
    2831{
    29    this->setClassID(CL_PROTO_ID, "ProtoClass");
     32   this->setClassID(CL_AMMO_CONTAINER, "AmmoContainer");
    3033
    31    /* If you make a new class, what is most probably the case when you write this file
    32       don't forget to:
    33        1. Add the new file new_class.cc to the ./src/Makefile.am
    34        2. Add the class identifier to ./src/class_id.h eg. CL_NEW_CLASS
    3534
    36       Advanced Topics:
    37       - if you want to let your object be managed via the ObjectManager make sure to read
    38         the object_manager.h header comments. You will use this most certanly only if you
    39         make many objects of your class, like a weapon bullet.
    40    */
    4135}
    4236
     
    4539 * standard deconstructor
    4640*/
    47 ProtoClass::~ProtoClass ()
     41AmmoContainer::~AmmoContainer ()
    4842{
    4943  // delete what has to be deleted here
    5044}
     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);
     86
     87  float fillEnergy = weapon->getEnergyMax();
     88
     89  float restEnergy = weapon->increaseEnergy(fillEnergy);
     90  this->decreaseEnergy(fillEnergy - restEnergy);
     91}
Note: See TracChangeset for help on using the changeset viewer.