Index: /branches/world_entities/src/world_entities/player.cc
===================================================================
--- /branches/world_entities/src/world_entities/player.cc	(revision 5566)
+++ /branches/world_entities/src/world_entities/player.cc	(revision 5567)
@@ -341,20 +341,29 @@
 void Player::ADDWEAPON()
 {
-  Weapon* turret;
+  Weapon* turret = NULL;
   if ((float)rand()/RAND_MAX < .1)
   {
-    turret = new Turret(this->weaponMan);
-    this->weaponMan->addWeapon(turret, 2);
-    this->weaponMan->changeWeaponConfig(2);
+    //if (this->weaponMan->hasFreeSlot(2, WTYPE_TURRET))
+    {
+      turret = new Turret(this->weaponMan);
+      this->weaponMan->addWeapon(turret, 2);
+      this->weaponMan->changeWeaponConfig(2);
+    }
   }
   else
   {
-    turret = new AimingTurret(this->weaponMan);
-    this->weaponMan->addWeapon(turret, 3);
-
-    this->weaponMan->changeWeaponConfig(3);
+    //if (this->weaponMan->hasFreeSlot(3))
+    {
+      turret = new AimingTurret(this->weaponMan);
+      this->weaponMan->addWeapon(turret, 3);
+
+      this->weaponMan->changeWeaponConfig(3);
+    }
   }
 
-  turret->setName("Turret");
-  turret->setStateDuration(WS_SHOOTING, (float)rand()/RAND_MAX*.5+.1);
-}
+  if(turret != NULL)
+  {
+    turret->setName("Turret");
+    turret->setStateDuration(WS_SHOOTING, (float)rand()/RAND_MAX*.5+.1);
+  }
+}
Index: /branches/world_entities/src/world_entities/weapons/aim.cc
===================================================================
--- /branches/world_entities/src/world_entities/weapons/aim.cc	(revision 5566)
+++ /branches/world_entities/src/world_entities/weapons/aim.cc	(revision 5567)
@@ -24,4 +24,5 @@
 #include "material.h"
 #include "t_animation.h"
+#include "text.h"
 
 #include "world_entity.h"
@@ -33,7 +34,9 @@
  * standart constructor
  */
-Aim::Aim (const TiXmlElement* root)
+Aim::Aim (PNode* source, const TiXmlElement* root)
 {
   this->init();
+
+  this->source = source;
 
   if (root)
@@ -50,4 +53,7 @@
   if (this->material)
     delete this->material;
+
+  if (this->text != NULL)
+    delete this->text;
 }
 
@@ -66,4 +72,5 @@
   this->setBindNode(this);
   this->material = new Material;
+  this->source = NULL;
 
   this->anim = new tAnimation<Aim>(this, &Aim::setSize);
@@ -73,6 +80,10 @@
   this->anim->addKeyFrame(50, .01, ANIM_LINEAR);
 
-}
-
+  this->text = new Text();
+  this->text->setParent2D(this);
+  this->text->setRelCoor2D(10, -50);
+  this->text->setParentMode2D(E2D_PARENT_MOVEMENT);
+  this->text->setText("Testing");
+}
 
 void Aim::loadParams(const TiXmlElement* root)
@@ -101,5 +112,5 @@
       {
         this->anim->replay();
-        this->setParent(entity);
+        this->setParentSoft(entity, 3);
       }
       delete iterator;
@@ -141,4 +152,7 @@
   this->shiftDir2D(dt * rotationSpeed);
 
+  char outputText[100];
+  sprintf(outputText, "distance: %f\n", (this->source->getAbsCoor() - this->getAbsCoor()).len());
+  this->text->setText(outputText);
 
 //   float z = 0.0f;
Index: /branches/world_entities/src/world_entities/weapons/aim.h
===================================================================
--- /branches/world_entities/src/world_entities/weapons/aim.h	(revision 5566)
+++ /branches/world_entities/src/world_entities/weapons/aim.h	(revision 5567)
@@ -12,4 +12,5 @@
 // FORWARD DECLARATION
 class Model;
+class Text;
 class Material;
 class TiXmlElement;
@@ -17,12 +18,20 @@
 
 //! An Aim for zooming in on Targets.
+/**
+ * An Aim is a PNode, that is connected, to the Target, it has aquired
+ * The target becomes, if selected its Parent.
+ *
+ * Also the Aim is a Element2D, as it draws a cross onto the Target.
+ */
 class Aim : public PNode, public Element2D {
 
  public:
-  Aim(const TiXmlElement* root = NULL);
+  Aim(PNode* source, const TiXmlElement* root = NULL);
   virtual ~Aim();
 
   void init();
   void loadParams(const TiXmlElement* root);
+
+  inline void setSource(PNode* source) { this->source = source; };
 
   inline void selectTarget(PNode* target) { this->setParent(target); };
@@ -43,4 +52,8 @@
    float            rotationSpeed;        //!< Speed of the Rotation.
    tAnimation<Aim>* anim;
+
+   PNode*           source;               //!< Where this Shot has come from.
+
+   Text*            text;                 //!< A Text to display onto this Node. (distance to Target)
 };
 
Index: /branches/world_entities/src/world_entities/weapons/aiming_turret.cc
===================================================================
--- /branches/world_entities/src/world_entities/weapons/aiming_turret.cc	(revision 5566)
+++ /branches/world_entities/src/world_entities/weapons/aiming_turret.cc	(revision 5567)
@@ -101,5 +101,5 @@
   //this->getProjectileFactory()->prepare(100);
 
-  this->target = new Aim();
+  this->target = new Aim(this);
   this->target->setVisibility(false);
 }
Index: /branches/world_entities/src/world_entities/weapons/blue_laset.h
===================================================================
--- /branches/world_entities/src/world_entities/weapons/blue_laset.h	(revision 5567)
+++ /branches/world_entities/src/world_entities/weapons/blue_laset.h	(revision 5567)
@@ -0,0 +1,47 @@
+/*!
+ * @file laser.h
+ * @brief a projectile, that is been shooted by a weapon
+*/
+
+#ifndef _LASER_H
+#define _LASER_H
+
+#include "projectile.h"
+
+class Vector;
+class Weapon;
+class ParticleSystem;
+class ParticleEmitter;
+class FastFactory;
+
+class Laser : public Projectile
+{
+  public:
+    Laser ();
+    virtual ~Laser ();
+
+
+    virtual void activate();
+    virtual void deactivate();
+
+    virtual void collidesWith(WorldEntity* entity, const Vector& location);
+
+    virtual void destroy ();
+
+    virtual void tick (float time);
+    virtual void draw () const;
+
+
+  private:
+    static FastFactory*               fastFactory;
+
+    static ParticleSystem*            explosionParticles;
+
+    ParticleEmitter*                  emitter;
+
+
+    WorldEntity* hitEntity; // FIXME TEMPORARY
+
+};
+
+#endif /* _LASER_H */
Index: /branches/world_entities/src/world_entities/weapons/crosshair.cc
===================================================================
--- /branches/world_entities/src/world_entities/weapons/crosshair.cc	(revision 5566)
+++ /branches/world_entities/src/world_entities/weapons/crosshair.cc	(revision 5567)
@@ -76,4 +76,5 @@
   GraphicsEngine::showMouse(false);
   GraphicsEngine::stealWMEvents(true);
+  SDL_WarpMouse(GraphicsEngine::getInstance()->getResolutionX()/2, GraphicsEngine::getInstance()->getResolutionY()/2);
 }
 
Index: /branches/world_entities/src/world_entities/weapons/laser.cc
===================================================================
--- /branches/world_entities/src/world_entities/weapons/laser.cc	(revision 5566)
+++ /branches/world_entities/src/world_entities/weapons/laser.cc	(revision 5567)
@@ -85,5 +85,5 @@
     Laser::explosionParticles->setName("LaserExplosionParticles");
     Laser::explosionParticles->setLifeSpan(.5, .3);
-    Laser::explosionParticles->setRadius(0.0, 3.0);
+    Laser::explosionParticles->setRadius(0.0, 10.0);
     Laser::explosionParticles->setRadius(.5, 6.0);
     Laser::explosionParticles->setRadius(1.0, 3.0);
Index: /branches/world_entities/src/world_entities/weapons/laser.h
===================================================================
--- /branches/world_entities/src/world_entities/weapons/laser.h	(revision 5566)
+++ /branches/world_entities/src/world_entities/weapons/laser.h	(revision 5567)
@@ -42,5 +42,4 @@
 
     WorldEntity* hitEntity; // FIXME TEMPORARY
-
 };
 
Index: /branches/world_entities/src/world_entities/weapons/weapon_manager.cc
===================================================================
--- /branches/world_entities/src/world_entities/weapons/weapon_manager.cc	(revision 5566)
+++ /branches/world_entities/src/world_entities/weapons/weapon_manager.cc	(revision 5567)
@@ -474,4 +474,5 @@
       return i;
   }
+  printf("SHIT\n");
   return -1;
 }
Index: /branches/world_entities/src/world_entities/weapons/weapon_manager.h
===================================================================
--- /branches/world_entities/src/world_entities/weapons/weapon_manager.h	(revision 5566)
+++ /branches/world_entities/src/world_entities/weapons/weapon_manager.h	(revision 5567)
@@ -71,5 +71,6 @@
     void removeWeapon(Weapon* weapon, int configID = -1);
 
-
+    // FIXME ::
+//    bool hasFreeSlot(int configID, long capability = WTYPE_ALL) { return ( getNextFreeSlot(configID, capability ) != -1)? true : false; };
 
     void nextWeaponConfig();
