Index: /orxonox/trunk/orxonox.kdevelop
===================================================================
--- /orxonox/trunk/orxonox.kdevelop	(revision 4971)
+++ /orxonox/trunk/orxonox.kdevelop	(revision 4972)
@@ -7,13 +7,12 @@
     <projectmanagement>KDevCustomProject</projectmanagement>
     <primarylanguage>C++</primarylanguage>
-    <ignoreparts>
-      <part>CvsService</part>
-    </ignoreparts>
+    <ignoreparts/>
     <projectdirectory>.</projectdirectory>
     <absoluteprojectpath>false</absoluteprojectpath>
-    <description/>
+    <description></description>
     <secondaryLanguages>
       <language>C</language>
     </secondaryLanguages>
+    <versioncontrol></versioncontrol>
   </general>
   <kdevcustomproject>
@@ -22,5 +21,5 @@
       <directoryradio>build</directoryradio>
       <customdirectory>/</customdirectory>
-      <programargs/>
+      <programargs></programargs>
       <terminal>false</terminal>
       <autocompile>true</autocompile>
@@ -29,27 +28,28 @@
     <build>
       <buildtool>make</buildtool>
-      <builddir/>
+      <builddir></builddir>
     </build>
     <make>
       <abortonerror>false</abortonerror>
-      <numberofjobs>1</numberofjobs>
+      <numberofjobs>3</numberofjobs>
       <prio>0</prio>
       <dontact>false</dontact>
-      <makebin/>
-      <makeoptions/>
+      <makebin></makebin>
+      <makeoptions></makeoptions>
       <selectedenvironment>default</selectedenvironment>
       <environments>
         <default/>
       </environments>
+      <defaulttarget></defaulttarget>
     </make>
   </kdevcustomproject>
   <kdevdebugger>
     <general>
-      <dbgshell/>
-      <programargs/>
-      <gdbpath/>
-      <configGdbScript/>
-      <runShellScript/>
-      <runGdbScript/>
+      <dbgshell></dbgshell>
+      <programargs></programargs>
+      <gdbpath></gdbpath>
+      <configGdbScript></configGdbScript>
+      <runShellScript></runShellScript>
+      <runGdbScript></runGdbScript>
       <breakonloadinglibs>true</breakonloadinglibs>
       <separatetty>false</separatetty>
@@ -130,4 +130,12 @@
       <headerCompletionDelay>250</headerCompletionDelay>
     </codecompletion>
+    <creategettersetter>
+      <prefixGet></prefixGet>
+      <prefixSet>set</prefixSet>
+      <prefixVariable>m_,_</prefixVariable>
+      <parameterName>theValue</parameterName>
+      <inlineGet>true</inlineGet>
+      <inlineSet>true</inlineSet>
+    </creategettersetter>
   </kdevcppsupport>
   <kdevfileview>
@@ -149,8 +157,12 @@
   <kdevdocumentation>
     <projectdoc>
-      <docsystem/>
-      <docurl/>
-      <usermanualurl/>
+      <docsystem></docsystem>
+      <docurl></docurl>
+      <usermanualurl></usermanualurl>
     </projectdoc>
   </kdevdocumentation>
+  <ctagspart>
+    <customArguments></customArguments>
+    <customTagfilePath></customTagfilePath>
+  </ctagspart>
 </kdevelop>
Index: /orxonox/trunk/src/util/loading/load_param.h
===================================================================
--- /orxonox/trunk/src/util/loading/load_param.h	(revision 4971)
+++ /orxonox/trunk/src/util/loading/load_param.h	(revision 4972)
@@ -73,5 +73,5 @@
 #define l_BOOL_FUNC        isBool               //!< The function to call to parse BOOL
 #define l_BOOL_NAME        "bool"               //!< The name of an BOOL
-#define l_BOOL_DEFAULT     0                    //!< a default Value for an BOOL
+#define l_BOOL_DEFAULT     false                //!< a default Value for an BOOL
 
 
@@ -79,5 +79,10 @@
 #define l_INT_FUNC         isInt                //!< The function to call to parse INT
 #define l_INT_NAME         "int"                //!< The name of an INT
-#define l_INT_DEFAULT      true                 //!< a default Value for an INT
+#define l_INT_DEFAULT      0                    //!< a default Value for an INT
+
+#define l_UINT_TYPE        unsigned int         //!< The type of an UINT
+#define l_UINT_FUNC        isInt                //!< The function to call to parse UINT
+#define l_UINT_NAME        "unsigned int"       //!< The name of an UINT
+#define l_UINT_DEFAULT     0                    //!< a default Value for an UINT
 
 #define l_LONG_TYPE        long                 //!< The type of a LONG
@@ -372,4 +377,14 @@
   LoadParam4(l_INT, l_INT, l_INT, l_INT);
 
+
+  //! makes functions with one unsigned int loadable
+  LoadParam1(l_UINT);
+  //! makes functions with two unsigned ints loadable
+  LoadParam2(l_UINT, l_UINT);
+  //! makes functions with three unsigned ints loadable
+  LoadParam3(l_UINT, l_UINT, l_UINT);
+  //! makes functions with four unsigned ints loadable
+  LoadParam4(l_UINT, l_UINT, l_UINT, l_UINT);
+
   //! makes functions with one float loadable
   LoadParam1(l_FLOAT);
@@ -382,4 +397,7 @@
   //! makes functions with four floats loadable
   LoadParam5(l_FLOAT, l_FLOAT, l_FLOAT, l_FLOAT, l_FLOAT);
+
+  //! mixed values:
+  LoadParam2(l_STRING, l_FLOAT);
 
   //! makes functions with one Vector loadable
Index: /orxonox/trunk/src/world_entities/weapons/projectile.h
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/projectile.h	(revision 4971)
+++ /orxonox/trunk/src/world_entities/weapons/projectile.h	(revision 4972)
@@ -66,5 +66,5 @@
     Vector                velocity;                  //!< velocity of the projectile.
 
-    ParticleEmitter*      emitter;                   //!< For special effects each Projectile consists of an emitter.
+    ParticleEmitter*      emitter;                   //!< For special effects each Projectile has an emitter.
 };
 
Index: /orxonox/trunk/src/world_entities/weapons/test_gun.cc
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/test_gun.cc	(revision 4971)
+++ /orxonox/trunk/src/world_entities/weapons/test_gun.cc	(revision 4972)
@@ -39,4 +39,5 @@
 using namespace std;
 
+CREATE_FACTORY(TestGun);
 
 /**
@@ -48,7 +49,4 @@
   : Weapon(weaponManager)
 {
-  this->setClassID(CL_TEST_GUN, "TestGun");
-
-  this->model = (Model*)ResourceManager::getInstance()->load("models/test_gun.obj", OBJ, RP_CAMPAIGN);
   this->leftRight = leftRight;
 
@@ -63,41 +61,57 @@
   animation2->setInfinity(ANIM_INF_CONSTANT);
   animation3->setInfinity(ANIM_INF_CONSTANT);
+
   if( this->leftRight == W_LEFT)
-    {
-      this->setEmissionPoint(1.0, 0.0, -0.35);
-
-      animation1->addKeyFrame(Vector(0, 0, 0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
-      animation1->addKeyFrame(Vector(-0.4, 0, 0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
-      animation1->addKeyFrame(Vector(0, 0, 0), Quaternion(), 0.0, ANIM_LINEAR, ANIM_CONSTANT);
-
-      animation2->addKeyFrame(Vector(0.0, 0.0, -1.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
-      animation2->addKeyFrame(Vector(0.0, 0.0, 0.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
-
-      animation3->addKeyFrame(Vector(0.0, 0.0, 0.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
-      animation3->addKeyFrame(Vector(0.0, 0.0, -1.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
-    }
+  {
+    this->setEmissionPoint(1.0, 0.0, -0.35);
+
+    animation1->addKeyFrame(Vector(0, 0, 0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
+    animation1->addKeyFrame(Vector(-0.4, 0, 0), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
+    animation1->addKeyFrame(Vector(0, 0, 0), Quaternion(), 0.0, ANIM_LINEAR, ANIM_CONSTANT);
+
+    animation2->addKeyFrame(Vector(0.0, 0.0, -1.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
+    animation2->addKeyFrame(Vector(0.0, 0.0, 0.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
+
+    animation3->addKeyFrame(Vector(0.0, 0.0, 0.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
+    animation3->addKeyFrame(Vector(0.0, 0.0, -1.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
+  }
   else if( this->leftRight == W_RIGHT)
-    {
-      this->setEmissionPoint(1.0, 0.0, 0.5);
-
-      this->objectComponent1->setRelCoor(Vector(0,0,0.35));
-      animation1->addKeyFrame(Vector(0, 0, .5), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
-      animation1->addKeyFrame(Vector(-0.4, 0, .5), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
-      animation1->addKeyFrame(Vector(0, 0, .5), Quaternion(), 0.0, ANIM_LINEAR, ANIM_CONSTANT);
-
-      animation2->addKeyFrame(Vector(.0, .0, 1.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
-      animation2->addKeyFrame(Vector(.0, .0, .0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
-
-      animation3->addKeyFrame(Vector(.0, .0, 0.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
-      animation3->addKeyFrame(Vector(.0, .0, 1.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
-    }
-/*
-  this->fireSound = (SoundBuffer*)ResourceManager::getInstance()->load("sound/shot1.wav", WAV);
-  this->weaponSource = new SoundSource(this->fireSound, this);
-  this->weaponSource->setRolloffFactor(.1);*/
-  Projectile* p = new TestBullet();
-
-  //  ObjectManager::getInstance()->cache(CL_TEST_BULLET, 100, p);
-  //ObjectManager::getInstance()->debug();
+  {
+    this->setEmissionPoint(1.0, 0.0, 0.5);
+
+    this->objectComponent1->setRelCoor(Vector(0,0,0.35));
+    animation1->addKeyFrame(Vector(0, 0, .5), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
+    animation1->addKeyFrame(Vector(-0.4, 0, .5), Quaternion(), 0.1, ANIM_LINEAR, ANIM_CONSTANT);
+    animation1->addKeyFrame(Vector(0, 0, .5), Quaternion(), 0.0, ANIM_LINEAR, ANIM_CONSTANT);
+
+    animation2->addKeyFrame(Vector(.0, .0, 1.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
+    animation2->addKeyFrame(Vector(.0, .0, .0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
+
+    animation3->addKeyFrame(Vector(.0, .0, 0.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
+    animation3->addKeyFrame(Vector(.0, .0, 1.0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
+  }
+}
+
+
+TestGun::TestGun(const TiXmlElement* root)
+{
+  this->init();
+  this->loadParams(root);
+}
+
+/**
+ *  standard deconstructor
+*/
+TestGun::~TestGun ()
+{
+  // model will be deleted from WorldEntity-destructor
+}
+
+
+void TestGun::init()
+{
+  this->setClassID(CL_TEST_GUN, "TestGun");
+
+  this->model = (Model*)ResourceManager::getInstance()->load("models/test_gun.obj", OBJ, RP_CAMPAIGN);
 
   this->setStateDuration(WS_SHOOTING, .4);
@@ -117,10 +131,8 @@
 
 
-/**
- *  standard deconstructor
-*/
-TestGun::~TestGun ()
-{
-  // model will be deleted from WorldEntity-destructor
+void TestGun::loadParams(const TiXmlElement* root)
+{
+
+
 }
 
Index: /orxonox/trunk/src/world_entities/weapons/test_gun.h
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/test_gun.h	(revision 4971)
+++ /orxonox/trunk/src/world_entities/weapons/test_gun.h	(revision 4972)
@@ -39,5 +39,9 @@
   public:
     TestGun (WeaponManager* weaponManager, int leftRight);
+    TestGun (const TiXmlElement* root);
     virtual ~TestGun ();
+
+    void init();
+    void loadParams(const TiXmlElement* root);
 
     virtual void activate();
Index: /orxonox/trunk/src/world_entities/weapons/weapon.cc
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/weapon.cc	(revision 4971)
+++ /orxonox/trunk/src/world_entities/weapons/weapon.cc	(revision 4972)
@@ -96,4 +96,21 @@
 }
 
+void Weapon::loadParams(const TiXmlElement* root)
+{
+  static_cast<WorldEntity*>(this)->loadParams(root);
+
+  LoadParam<Weapon>(root, "projectile", this, &Weapon::setProjectile)
+      .describe("Sets the name of the Projectile to load onto the Entity");
+
+  LoadParam<Weapon>(root, "emission-point", this, &Weapon::setEmissionPoint)
+      .describe("Sets the Point of emission of this weapon");
+
+  LoadParam<Weapon>(root, "state-duration", this, &Weapon::setStateDuration)
+      .describe("Sets the duration of a given state (1: state-Name; 2: duration in seconds)");
+
+  LoadParam<Weapon>(root, "action-sound", this, &Weapon::setActionSound)
+      .describe("Sets a given sound to an action (1: action-Name; 2: name of the sound (relative to the Data-Path))");
+}
+
 /**
  * sets the Projectile to use for this weapon.
@@ -103,12 +120,12 @@
  * be aware, that this function does not create Factories, as this is job of Bullet-classes.
  */
-bool Weapon::setProjectile(ClassID projectile)
+void Weapon::setProjectile(ClassID projectile)
 {
   if (projectile == CL_NULL)
-    return false;
+    return;
   this->projectile = projectile;
   this->projectileFactory = FastFactory::searchFastFactory(projectile);
   if (this->projectileFactory == NULL)
-    return false;
+    return;
   else
   {
@@ -125,14 +142,17 @@
  * @see bool Weapon::setProjectile(ClassID projectile)
  * @param projectile the Name of the Projectile.
- * @return true if
- */
-bool Weapon::setProjectile(const char* projectile)
+ */
+void Weapon::setProjectile(const char* projectile)
 {
   if (projectile == NULL)
-    return false;
+    return;
   FastFactory* tmpFac = FastFactory::searchFastFactory(projectile);
   if (tmpFac != NULL)
   {
     this->setProjectile(tmpFac->getStoredID());
+  }
+  else
+  {
+    PRINTF(2)("Projectile %s does not exist for weapon %s\n", projectile, this->getName());
   }
 }
Index: /orxonox/trunk/src/world_entities/weapons/weapon.h
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/weapon.h	(revision 4971)
+++ /orxonox/trunk/src/world_entities/weapons/weapon.h	(revision 4972)
@@ -77,5 +77,4 @@
     // INITIALISATION //
     Weapon (WeaponManager* weaponManager = NULL);
-    Weapon(const TiXmlElement* root);
     virtual ~Weapon ();
 
@@ -89,5 +88,5 @@
     ///////////////////
 
-    /** @param weaponManager sets the WeaponManager for this Weapon (NULL if free))*/
+    /** @param weaponManager sets the WeaponManager for this Weapon (NULL if free)) */
     inline void setWeaponManager(WeaponManager* weaponManager) { this->weaponManager = weaponManager; };
     /** @returns the WeaponManager of this Weapon (or NULL if it is free) */
@@ -102,6 +101,6 @@
 
     // FUNCTIONS TO SET THE WEAPONS PROPERTIES.
-    bool setProjectile(ClassID projectile);
-    bool setProjectile(const char* projectile);
+    void setProjectile(ClassID projectile);
+    void setProjectile(const char* projectile);
     /** @returns The projectile's classID */
     inline ClassID getProjectile() { return this->projectile; };
@@ -112,5 +111,5 @@
     void setEmissionPoint(const Vector& point);
     /** @see void setEmissionPoint(const Vector& point); */
-    inline void setEmissionPoint(float x, float y, float z) { this->setEmissionPoint(Vector(x,y,z)); };
+    inline void setEmissionPoint(float x, float y, float z) { this->setEmissionPoint(Vector(x, y, z)); };
     /** @returns the absolute Position of the EmissionPoint */
     inline const Vector& getEmissionPoint() const { return this->emissionPoint.getAbsCoor(); };
Index: /orxonox/trunk/src/world_entities/weapons/weapon_manager.cc
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/weapon_manager.cc	(revision 4971)
+++ /orxonox/trunk/src/world_entities/weapons/weapon_manager.cc	(revision 4972)
@@ -103,5 +103,5 @@
 {
   static_cast<BaseObject*>(this)->loadParams(root);
-/*
+
   LoadParam<WeaponManager>(root, "slot-count", this, &WeaponManager::setSlotCount)
       .describe("how many slots(cannons) the WeaponManager can handle");
@@ -109,9 +109,9 @@
   LOAD_PARAM_START_CYCLE;
 
-  LoadParam<WeaponManager>(root, "Weapons", this, &WeaponManager::loadWeapons)
+  LoadParam<WeaponManager>(element, "weapons", this, &WeaponManager::loadWeapons)
       .describe("loads Weapons");
       // LoadParam<WeaponManager>(root, "Weapon", this, &WeaponManager::addWeapon);
 
-  LOAD_PARAM_END_CYCLE;*/
+  LOAD_PARAM_END_CYCLE;
 }
 
@@ -141,5 +141,4 @@
       this->parent->addChild(&this->currentSlotConfig[i].position);
   }
-
 }
 
@@ -156,4 +155,10 @@
 }
 
+
+/**
+ * sets the position of the Slot relative to the parent
+ * @param slot the slot to set-up
+ * @param position the position of the given slot
+ */
 void WeaponManager::setSlotPosition(int slot, const Vector& position)
 {
@@ -162,4 +167,10 @@
 }
 
+
+/**
+ * sets the relative rotation of the slot to its parent
+ * @param slot the slot to set-up
+ * @param rotation the relative rotation of the given slot
+ */
 void WeaponManager::setSlotDirection(int slot, const Quaternion& rotation)
 {
@@ -171,7 +182,7 @@
 /**
  * adds a weapon to the selected weaponconfiguration into the selected slot
- * @param the weapon to add
- * @param an identifier for the slot: number between 0..7 if not specified: slotID=next free slot
- * @param an identifier for the weapon configuration, number between 0..3
+ * @param weapon the weapon to add
+ * @param configID an identifier for the slot: number between 0..7 if not specified: slotID=next free slot
+ * @param slotID an identifier for the weapon configuration, number between 0..3
  *
  * if you add explicitly a weapon at config:n, slot:m, the weapon placed at this location will be
Index: /orxonox/trunk/src/world_entities/weapons/weapon_manager.h
===================================================================
--- /orxonox/trunk/src/world_entities/weapons/weapon_manager.h	(revision 4971)
+++ /orxonox/trunk/src/world_entities/weapons/weapon_manager.h	(revision 4972)
@@ -41,5 +41,5 @@
  * How to configure
  * 1. set the default values.
- * 2. define weapons. connect them to the WeaponManager's configurations
+ * 2. define weapons. connect them to the WeaponManager's configurations (have a look at "player.cc", to see how it works)
  * 3. go on and run :)....
  */
@@ -78,5 +78,5 @@
 
     /** @returns a fixed target namely the Crosshair's 3D position */
-    inline PNode* getFixedTarget() { return this->crosshair; }
+    inline PNode* getFixedTarget() { return this->crosshair; };
     void fire();
 
