Index: /orxonox/trunk/src/world_entities/weapon.cc
===================================================================
--- /orxonox/trunk/src/world_entities/weapon.cc	(revision 3574)
+++ /orxonox/trunk/src/world_entities/weapon.cc	(revision 3575)
@@ -22,16 +22,23 @@
 #include "vector.h"
 #include "objModel.h"
+#include "projectile.h"
 
 using namespace std;
 
 
+/**
+   \brief standard constructor
 
+   creates a new weapon
+*/
 Weapon::Weapon () : WorldEntity()
 {
-  this->model = new OBJModel("../data/models/fighter.obj");
+  this->model = new OBJModel("");
 }
 
 
-
+/**
+   \brief standard deconstructor
+*/
 Weapon::~Weapon () 
 {
@@ -39,23 +46,100 @@
 }
 
-void Weapon::tick (float time) {}
 
-void Weapon::hit (WorldEntity* weapon, Vector loc) {}
+/**
+   \brief sets a new projectile to the weapon
+   \param new projectile for this weapon
 
-void Weapon::destroy () {}
+   weapon an projectile are independent, so you can combine them as you want
+*/
+void Weapon::setProjectile(Projectile* projectile)
+{
+  this->projectile = projectile;
+}
 
-void Weapon::collide (WorldEntity* other,  Uint32 ownhitflags, Uint32 otherhitflags) {}
 
+/**
+   \brief sets a new projectile to the weapon
+   \returns the current projectile of this weapon
+
+   weapon an projectile are independent, so you can combine them as you want
+*/
+Projectile* Weapon::getProjectile()
+{
+  return this->projectile;
+}
+
+
+/**
+   \brief this activates the weapon
+
+   This is needed, since there can be more than one weapon on a ship. the 
+   activation can be connected with an animation. for example the weapon is 
+   been armed out. 
+*/
+void Weapon::activate()
+{}
+
+
+/**
+   \brief this deactivates the weapon
+
+   This is needed, since there can be more than one weapon on a ship. the 
+   activation can be connected with an animation. for example the weapon is 
+   been armed out.
+*/
+void Weapon::deactivate()
+{}
+
+/**
+   \brief asks if the current weapon is active
+   \returns true if it the weapon is active
+*/
+bool Weapon::isActive()
+{}
+
+
+
+
+
+/**
+   \brief tick signal for time dependent/driven stuff
+*/
+void Weapon::tick (float time) 
+{}
+
+/**
+   \brief is called, when the weapon gets hit (=collide with something)
+   \param from which entity it is been hit
+   \param where it is been hit
+
+   this may not be used, since it would make the game relay complicated when one
+   can destroy the weapons of enemies or vice versa.
+*/
+void Weapon::hit (WorldEntity* entity, Vector position) 
+{}
+
+/**
+   \brief is called, when the weapon is destroyed
+
+   this is in conjunction with the hit function, so when a weapon is able to get
+   hit, it can also be destoryed.
+*/
+void Weapon::destroy () 
+{}
+
+
+/**
+   \brief this will draw the weapon
+*/
 void Weapon::draw () 
 {
   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
+
   float matrix[4][4];
-  
   glTranslatef (this->getAbsCoor ().x, this->getAbsCoor ().y, this->getAbsCoor ().z);
-  //rotate
   this->getAbsDir().matrix (matrix);
   glMultMatrixf((float*)matrix);
-  
   this->model->draw();
 
Index: /orxonox/trunk/src/world_entities/weapon.h
===================================================================
--- /orxonox/trunk/src/world_entities/weapon.h	(revision 3574)
+++ /orxonox/trunk/src/world_entities/weapon.h	(revision 3575)
@@ -16,4 +16,5 @@
     weapon in this world:
      o sound file/ressource: this is a pointer to the sound-file/ressource. however it may be represented
+     o shooting animation
      
 */
@@ -25,4 +26,5 @@
 #include "world_entity.h"
 
+class Projectile;
 
 class Weapon : public WorldEntity 
@@ -34,14 +36,30 @@
   virtual ~Weapon ();
   
-  virtual void tick (float time);
+  void setProjectile(Projectile* projectile);
+  Projectile* getProjectile();
+
+  void activate();
+  void deactivate();
+  bool isActive();
+
+  void setWeaponEnergy(int energy);
+  void addWeaponEnergy(int addEnergy);
+  void substractWeaponEnergy(int subEnergy);
+  int getWeaponEnergy();
+
+  void fire();
   virtual void hit (WorldEntity* weapon, Vector loc);
   virtual void destroy ();
-  virtual void collide (WorldEntity* other,  Uint32 ownhitflags, Uint32 otherhitflags);
+  
+  virtual void tick (float time);
   virtual void draw ();
+
 
  private:
   float firingRate;
+  float localTime;
   float slowDownFactor;
   int energyConsumption;
+  Projectile* projectile;
 
 };
