[Orxonox-commit 5746] r10406 - in code/branches/towerdefenseFS15: data/levels src/modules/tetris src/modules/towerdefense

fvultier at orxonox.net fvultier at orxonox.net
Sun Apr 26 22:16:27 CEST 2015


Author: fvultier
Date: 2015-04-26 22:16:26 +0200 (Sun, 26 Apr 2015)
New Revision: 10406

Modified:
   code/branches/towerdefenseFS15/data/levels/towerDefense.oxw
   code/branches/towerdefenseFS15/src/modules/tetris/Tetris.h
   code/branches/towerdefenseFS15/src/modules/towerdefense/TDCoordinate.cc
   code/branches/towerdefenseFS15/src/modules/towerdefense/TDCoordinate.h
   code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.cc
   code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.h
   code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseCenterpoint.cc
   code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseCenterpoint.h
   code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseSelecter.cc
   code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseSelecter.h
Log:
There is now a cube that can be moved on the playground using the arrow keys.

Modified: code/branches/towerdefenseFS15/data/levels/towerDefense.oxw
===================================================================
--- code/branches/towerdefenseFS15/data/levels/towerDefense.oxw	2015-04-26 18:49:32 UTC (rev 10405)
+++ code/branches/towerdefenseFS15/data/levels/towerDefense.oxw	2015-04-26 20:16:26 UTC (rev 10406)
@@ -24,25 +24,26 @@
   include("templates/standardTurret.oxt")
 ?>
 
-<!-- Specify the position of the camera -->
-<Template name=centerpointmarkcamera defaults=0>
-  <Pawn team=0>
+
+<Template name=selectercameras defaults=0>
+  <TowerDefenseSelecter>
     <camerapositions>
-      <CameraPosition position="0,0,1500"/>
+      <CameraPosition position="0,0,1400" lookat="0,0,0" absolute=true />
     </camerapositions>
-  </Pawn>
+  </TowerDefenseSelecter>
 </Template>
 
-<!-- Loads a mesh to mark the center-->
-<Template name=centerpointmark>
-  <Pawn team=0 camerapositiontemplate=centerpointmarkcamera>
+<Template name=selectertemplate>
+  <TowerDefenseSelecter team=0 camerapositiontemplate=selectercameras>
     <attached>
-      <Model position="0,0,0" mesh="cylinder.mesh" scale3D="1,1,1" /> <!-- the camera is attached to this -->
+      <Model position="0,0,0" mesh="cube.mesh" scale=45 />
     </attached>
-  </Pawn>
+  </TowerDefenseSelecter>
 </Template>
 
 
+
+
 <Level gametype = "TowerDefense">
   <templates>
     <Template link=lodtemplate_default />
@@ -58,45 +59,14 @@
     <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0"/>
 
     <!-- Spawns the camera, attached to a crate -->
-    <SpawnPoint team=0 position="0,0,0" pawndesign=centerpointmark />
-    <!--TeamSpawnPoint team=0 position="-7,7,4" direction="-1,0,0" roll=90 yaw=0 spawnclass=SpaceShip pawndesign=spaceshipassff /-->
+    <SpawnPoint team=0 position="0,0,0"/> 
 
-    <!--SpawnPoint team=0 position="0,0,10" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff  /-->
-    <!--SpawnPoint team=0 position="0,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff /-->
-
-
-
-
-    <!--invisible entity to attach towers to, since playfield is static and towers are dynamic-->
-    <StaticEntity position=0,0,0>
-
-        <attached>
-            <Model position="-50,-50,0" mesh="Playfield_ME.mesh" scale=80 />
-            <!-- Base -->
-            <Model position="500,700,100" mesh="sphere.mesh" scale=80 />
-            <!--Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" /--> <!-- Only temporary needed to help align the collisionshape -->
-            <!-- This was used to mark the playfield, let's let it be here for now -->
-            <!--Model position="-8,8,0" mesh="crate.mesh" scale3D="0.3,0.3,0.3" /-->
-            <!--Model position="-8,-8,0" mesh="crate.mesh" scale3D="0.3,0.3,0.3" /-->
-            <!--Model position="8,-8,0" mesh="crate.mesh" scale3D="0.3,0.3,0.3" /-->
-            <!--Model position="8,8,0" mesh="crate.mesh" scale3D="0.3,0.3,0.3" /-->
-        </attached>
-        <collisionShapes> <!-- The collisionshape forbids other worldentities that have a collisionShape to fly through it.
-
-                               TODO: Find correct size for the collisionshape; since a collisionShape is invisible
-                               I added the crate wich currently has the same dimensions as the collisionshape.
-                               You have to adjust the crate's scale3D as well as the collisionshape's halfExtens to
-                               find the proper shape. -->
-           <BoxCollisionShape position="0,0,0" halfExtents="400,400,100" />
-        </collisionShapes>
-    </StaticEntity>
-
-
-
-
     <!-- PlayField -->
     <TowerDefenseCenterpoint
     name=towerdefensecenter
+
+    selecterTemplate=selectertemplate
+
     width=16
     height=16
     tileScale=100
@@ -104,7 +74,15 @@
     direction="0,0,0"
     collisionType=dynamic
     mass=100000
-    />
+    >
+        <attached>
+            <Model position="-50,-50,0" mesh="Playfield_ME.mesh" scale=80 />
+            <Model position="500,700,100" mesh="sphere.mesh" scale=80 />
+        </attached>
+        <camerapositions>
+      <CameraPosition position="0,0,1500" lookat="0,0,0" absolute=true/>
+    </camerapositions>
+    </TowerDefenseCenterpoint>
 
   </Scene>
 </Level>

Modified: code/branches/towerdefenseFS15/src/modules/tetris/Tetris.h
===================================================================
--- code/branches/towerdefenseFS15/src/modules/tetris/Tetris.h	2015-04-26 18:49:32 UTC (rev 10405)
+++ code/branches/towerdefenseFS15/src/modules/tetris/Tetris.h	2015-04-26 20:16:26 UTC (rev 10406)
@@ -89,7 +89,6 @@
             void findFullRows(void);
             void clearRow(unsigned int row);
 
-
             PlayerInfo* player_;
 
             WeakPtr<TetrisCenterpoint> center_; //!< The playing field.

Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TDCoordinate.cc
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TDCoordinate.cc	2015-04-26 18:49:32 UTC (rev 10405)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TDCoordinate.cc	2015-04-26 20:16:26 UTC (rev 10406)
@@ -16,25 +16,62 @@
     TDCoordinate::TDCoordinate()
     {
         //RegisterObject(TDCoordinate);
-        x=0;
-        y=0;
+        Set(0,0);
 
     }
 
     TDCoordinate::TDCoordinate(int x, int y)
-    {
-        this->x=x;
-        this->y=y;
+    {        
+        Set(x,y);
     }
 
+    void TDCoordinate::Set(int x, int y)
+    {        
+        if (x < 0)
+        {
+            _x = 0;
+        }
+        else if (x > 15)
+        {
+            _x = 15;
+        }
+        else
+        {
+            _x = x;
+        }
 
+        if (y < 0)
+        {
+            _y = 0;
+        }
+        else if (y > 15)
+        {
+            _y = 15;
+        }
+        else
+        {
+            _y = y;
+        }
+    }
+
+    int TDCoordinate::GetX()
+    {        
+        return _x;
+    }
+
+    int TDCoordinate::GetY()
+    {        
+        return _y;
+    }
+
+
     Vector3 TDCoordinate::get3dcoordinate()
     {
         float tileScale = 100;
 
         Vector3 *coord = new Vector3();
-        coord->x= (x-8) * tileScale;
-        coord->y= (y-8) * tileScale;
+        coord->x= (_x-8) * tileScale;
+        coord->y= (_y-8) * tileScale;
         coord->z=100;
 
         return *coord;

Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TDCoordinate.h
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TDCoordinate.h	2015-04-26 18:49:32 UTC (rev 10405)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TDCoordinate.h	2015-04-26 20:16:26 UTC (rev 10406)
@@ -15,16 +15,17 @@
     class _TowerDefenseExport TDCoordinate : public OrxonoxClass
     {
         public:
-            int x;
-            int y;
-
             TDCoordinate();
-
-            Vector3 get3dcoordinate();
-
+            TDCoordinate(int x, int y);
             virtual ~TDCoordinate() {};
+            virtual void Set(int x, int y);
+            virtual int GetX();
+            virtual int GetY();
+            virtual Vector3 get3dcoordinate(); 
 
-            TDCoordinate(int x, int y);
+        private:
+            int _x;
+            int _y;
     };
 
 }

Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.cc
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.cc	2015-04-26 18:49:32 UTC (rev 10405)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.cc	2015-04-26 20:16:26 UTC (rev 10406)
@@ -36,7 +36,6 @@
  * playerScored() // kann man aufrufen um dem Spieler Punkte zu vergeben.
  *
  *
- *
  *TIPP: Eclipse hilft euch schnell auf bereits vorhanden Funktionen zuzugreifen:
  * einfach "this->" eingeben und kurz warten. Dann tauch eine Liste mit Vorschlägen auf. Wenn ihr jetzt weiter
  * tippt, werden die Vorschläge entsprechend gefiltert.
@@ -109,8 +108,7 @@
         }*/
 
         selecter = NULL;
-
-
+        this->player_ = NULL;        
         this->setHUDTemplate("TowerDefenseHUD");
         this->nextwaveTimer_.setTimer(10, false, createExecutor(createFunctor(&TowerDefense::nextwave, this)));
         this->nextwaveTimer_.stopTimer();
@@ -144,10 +142,24 @@
 
     void TowerDefense::start()
     {
+        if (center_ != NULL) // There needs to be a TowerDefenseCenterpoint, i.e. the area the game takes place.
+        {
+            if (selecter == NULL)
+            {
+                selecter = new TowerDefenseSelecter(this->center_->getContext());                
+            }
+            selecter->addTemplate(center_->getSelecterTemplate());
+            center_->attach(selecter);
+        }
+        else // If no centerpoint was specified, an error is thrown and the level is exited.
+        {
+            orxout(internal_error) << "Jump: No Centerpoint specified." << endl;
+            return;
+        }
 
         TeamDeathmatch::start();
 
-// Waypoints: [1,3] [10,3] [10,11] [13,11] -> add the points to a matrix so the player cant place towers on the path
+        // Waypoints: [1,3] [10,3] [10,11] [13,11] -> add the points to a matrix so the player cant place towers on the path
         for (int i=0; i < 16 ; i++)
         {
             for (int j = 0; j< 16 ; j++)
@@ -157,8 +169,18 @@
             }
         }
 
-        selecter = new TowerDefenseSelecter(this->center_->getContext());
+        
 
+        if (player_ != NULL)
+        {
+            //this->player_->startControl(selecter);
+        }
+        else
+        {
+            orxout() << "player=NULL" << endl;
+        }
+
+
         Model* dummyModel = new Model(this->center_->getContext());
 
         //the path of the spacehips has to be blocked, so that no towers can be build there
@@ -218,7 +240,7 @@
 
         en1->setTeam(2);
         en1->getController();
-        en1->setPosition(path.at(0)->get3dcoordinate());
+        en1->setPosition(path.at(0)->get3dcoordinate());        
         TowerDefenseEnemyvector.push_back(en1);
 
         for(unsigned int i = 0; i < path.size(); ++i)
@@ -236,9 +258,37 @@
 
     }
 
+    void TowerDefense::spawnPlayer(PlayerInfo* player)
+    {
+        assert(player);
+        this->player_ = player;
+
+        if (selecter->getPlayer() == NULL)
+        {
+            this->player_ = player;
+            player->startControl(selecter);
+            players_[player].state_ = PlayerState::Alive;
+        } 
+    }
+
+    /**
+    @brief
+        Get the player.
+    @return
+        Returns a pointer to the player. If there is no player, NULL is returned.
+    */
+    PlayerInfo* TowerDefense::getPlayer(void) const
+    {
+        return this->player_;
+    }
+
     //not working yet
     void TowerDefense::upgradeTower(int x,int y)
     {
+        TDCoordinate* coord = new TDCoordinate(x,y);
+        x = coord->GetX();
+        y = coord->GetY();
+        
         const int upgradeCost = 20;
 
         if (!this->hasEnoughCreditForTower(upgradeCost))
@@ -265,10 +315,14 @@
 
     /*adds Tower at Position (x,y) and reduces credit and adds the point to the towermatrix. template ("towerturret")
     so towers have ability if the turrets
+    */
 
-    */
     void TowerDefense::addTower(int x, int y)
-    {
+    {        
+        TDCoordinate* coord = new TDCoordinate(x,y);
+        x = coord->GetX();
+        y = coord->GetY();
+
         const int towerCost = 20;
 
         if (!this->hasEnoughCreditForTower(towerCost))
@@ -290,25 +344,23 @@
 
         int tileScale = (int) this->center_->getTileScale();
 
-        if (x > 15 || y > 15 || x < 0 || y < 0)
+        /*if (x > 15 || y > 15 || x < 0 || y < 0)
         {
             //Hard coded: TODO: let this depend on the centerpoint's height, width and fieldsize (fieldsize doesn't exist yet)
             orxout() << "Can not add Tower: x and y should be between 0 and 15" << endl;
             return;
-        }
+        }*/
 
-        orxout() << "Will add tower at (" << (x-8) * tileScale << "," << (y-8) * tileScale << ")" << endl;
+        //orxout() << "Will add tower at (" << (x-8) * tileScale << "," << (y-8) * tileScale << ")" << endl;
+        orxout() << "Will add tower at (" << x << "," << y << ")" << endl;
 
 
-
         //Create Model
-        Model* newtowermodel = new Model(this->center_->getContext());
-        newtowermodel->setMeshSource("Tower.mesh");
-        newtowermodel->setScale(45);
-        newtowermodel->setPosition(static_cast<float>((x-8) * tileScale), static_cast<float>((y-8) * tileScale), 50);
+        Model* newTowerModel = new Model(this->center_->getContext());
+        newTowerModel->setMeshSource("Tower.mesh");
+        newTowerModel->setScale(45);
+        newTowerModel->setPosition(static_cast<float>((x-8) * tileScale), static_cast<float>((y-8) * tileScale), 50);
 
-
-
         //Creates tower
         TowerDefenseTower* towernew = new TowerDefenseTower(this->center_->getContext());
         towernew->setPosition(static_cast<float>((x-8) * tileScale), static_cast<float>((y-8) * tileScale), 275);
@@ -317,9 +369,9 @@
 
         //Reduce credit
          this->buyTower(towerCost);
-         towerModelMatrix [x][y]= newtowermodel;
+         towerModelMatrix [x][y]= newTowerModel;
          towerTurretMatrix [x][y]= towernew;
-    }
+    }    
 
     bool TowerDefense::hasEnoughCreditForTower(int towerCost)
     {

Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.h
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.h	2015-04-26 18:49:32 UTC (rev 10405)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.h	2015-04-26 20:16:26 UTC (rev 10406)
@@ -44,6 +44,7 @@
 #include "util/Output.h"
 #include "core/object/WeakPtr.h"
 #include "TowerDefenseSelecter.h"
+#include "graphics/Camera.h"    
 
 
 namespace orxonox
@@ -61,9 +62,8 @@
         virtual void start(); //<! The function is called when the gametype starts
         virtual void end();
         virtual void tick(float dt);
-        //virtual void playerEntered(PlayerInfo* player);
-        //virtual bool playerLeft(PlayerInfo* player);
-        //Player Stats (set,get, reduce)
+        virtual void spawnPlayer(PlayerInfo* player);
+        PlayerInfo* getPlayer(void) const;
         int getCredit(){ return this->credit_; }
         int getLifes(){ return this->lifes_; }
         int getWaveNumber(){ return this->waves_; }
@@ -74,7 +74,6 @@
         void addCredit(int credit) { credit_+=credit; }
         void nextwave(){ TowerDefenseEnemyvector.clear(); waves_++; time=0;}
         int reduceLifes(int NumberofLifes){ return lifes_-=NumberofLifes; }
-        TDCoordinate* selectedPos;
         TowerDefenseSelecter* selecter;
 
         //virtual void pawnKilled(Pawn* victim, Pawn* killer = 0);
@@ -88,7 +87,6 @@
 
         /* Adds a tower at x, y in the playfield */
         void addTower(int x, int y);
-
         void upgradeTower(int x, int y);
 
         //TODO: void spawnNewWave()
@@ -98,6 +96,7 @@
 
     private:
         TowerDefenseCenterpoint *center_;
+        PlayerInfo* player_;
         float time;
 //        float time2;
         int credit_;
@@ -108,10 +107,6 @@
         /* handles stats */
         bool hasEnoughCreditForTower(int towerCost);
         bool hasEnoughCreditForUpgrade();
-
-
-
-        std::vector<TowerTurret*> towers_;
     };
 }
 

Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseCenterpoint.cc
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseCenterpoint.cc	2015-04-26 18:49:32 UTC (rev 10405)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseCenterpoint.cc	2015-04-26 20:16:26 UTC (rev 10406)
@@ -70,6 +70,7 @@
         XMLPortParam(TowerDefenseCenterpoint, "width", setWidth, getWidth, xmlelement, mode);
         XMLPortParam(TowerDefenseCenterpoint, "height", setHeight, getHeight, xmlelement, mode);
         XMLPortParam(TowerDefenseCenterpoint, "tileScale", setTileScale, getTileScale, xmlelement, mode);
+        XMLPortParam(TowerDefenseCenterpoint, "selecterTemplate", setSelecterTemplate, getSelecterTemplate, xmlelement, mode);
 
         //TODO: add XMLPortObject(TowerDefenseCenterpoint, WorldEntity, "waypoints", addWaypoint, getWaypoint,  xmlelement, mode);
         // This was copied and shightly modified from WaypointController.cc ; there are no getters and setters and no membervariable yet

Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseCenterpoint.h
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseCenterpoint.h	2015-04-26 18:49:32 UTC (rev 10405)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseCenterpoint.h	2015-04-26 20:16:26 UTC (rev 10406)
@@ -59,16 +59,16 @@
             */
             void setWidth(unsigned int width)
                 { this->width_ = width; }
-
             unsigned int getWidth(void) const
                 { return this->width_; }
-
             void setHeight(unsigned int height)
                 { this->height_ = height; }
-
             unsigned int getHeight(void) const
                 { return this->height_; }
-
+            void setSelecterTemplate(const std::string& newTemplate)
+                { this->selecterTemplate_ = newTemplate; }
+            const std::string& getSelecterTemplate() const
+                { return this->selecterTemplate_; }   
             /**
                 @brief How to convert to world coordinates, e.g. that 0,15 is not at -8,-8 but at -80,-80 (if scale would be 10)
             */
@@ -81,6 +81,7 @@
         private:
             void checkGametype();
 
+            std::string selecterTemplate_;
             unsigned int width_;
             unsigned int height_;
             unsigned int tileScale_;

Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseSelecter.cc
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseSelecter.cc	2015-04-26 18:49:32 UTC (rev 10405)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseSelecter.cc	2015-04-26 20:16:26 UTC (rev 10406)
@@ -50,12 +50,7 @@
         moveDownPressed_ = false;
         moveLeftPressed_ = false;
         moveRightPressed_ = false;
-        selectedPos_ = new TDCoordinate(0,0);
-
-        Model* selecterModel = new Model(context);
-        selecterModel->setMeshSource("cube.mesh");
-        selecterModel->setScale(45);
-
+        setSelectedPosition(0,0);     
     }
 
     TowerDefenseSelecter::~TowerDefenseSelecter()
@@ -66,8 +61,6 @@
     void TowerDefenseSelecter::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
         SUPER(TowerDefenseSelecter, XMLPort, xmlelement, mode);
-        // Beispielport // XMLPortParam(TowerDefenseSelecter, "mouseFactor", setMouseFactor, getMouseFactor, xmlelement, mode);
-
     }
 
     void TowerDefenseSelecter::tick(float dt)
@@ -76,67 +69,40 @@
 
         if (hasLocalController())
         {
+            int selecterPosX = selectedPos_->GetX();
+            int selecterPosY = selectedPos_->GetY();
 
             if (moveUpPressed_ == true)
             {
-                if(this->selectedPos_->y >= 15)
-                {
-                }
-                else
-                {
-                	this->selectedPos_->y +=1;
-                	this->setPosition(selectedPos_->get3dcoordinate());
-                }
-
+                selectedPos_->Set(selecterPosX, selecterPosY + 1);
+                updatePosition();
+                orxout() << "up" << endl;
             }
             if (moveDownPressed_ == true)
             {
-            	if(this->selectedPos_->y <= 0)
-            	{
-				}
-				else
-				{
-					this->selectedPos_->y -= 1;
-					this->setPosition(selectedPos_->get3dcoordinate());
-				}
-
-            	moveDownPressed_ = false;
+            	selectedPos_->Set(selecterPosX, selecterPosY - 1);
+                updatePosition();
+                orxout() << "Down" << endl;
             }
 
             if (moveLeftPressed_ == true)
             {
-                if(this->selectedPos_->x <= 0)
-                {
-                }
-                else
-                {
-                	this->selectedPos_->x -=1;
-                	this->setPosition(selectedPos_->get3dcoordinate());
-                }
-
+                selectedPos_->Set(selecterPosX - 1, selecterPosY);
+                updatePosition();
+                orxout() << "Left" << endl;
             }
             if (moveRightPressed_ == true)
             {
-            	if(this->selectedPos_->x >= 15)
-            	{
-				}
-				else
-				{
-					this->selectedPos_->x += 1;
-					this->setPosition(selectedPos_->get3dcoordinate());
-				}
-
-            	moveDownPressed_ = false;
+            	selectedPos_->Set(selecterPosX + 1, selecterPosY);
+                updatePosition();
+                orxout() << "Right" << endl;
             }
 
-
-
             /*
             if (firePressed_ && timeSinceLastFire_ >= maxFireRate_)
             {
                 firePressed_ = false;
                 timeSinceLastFire_ = 0.0;
-                fireSignal_ = true;
             }
             */
         }
@@ -145,7 +111,7 @@
         moveUpPressed_ = false;
         moveDownPressed_ = false;
         moveLeftPressed_ = false;
-        moveDownPressed_ = false;
+        moveRightPressed_ = false;
         //firePressed_ = false;
     }
 
@@ -198,4 +164,22 @@
     {
         //firePressed_ = true;
     }
+
+    void TowerDefenseSelecter::updatePosition()
+    {
+        setPosition(selectedPos_->get3dcoordinate());
+    }
+
+    void TowerDefenseSelecter::setSelectedPosition(TDCoordinate* newPos)
+    {
+        selectedPos_ = newPos;
+        updatePosition();
+    }
+
+    void TowerDefenseSelecter::setSelectedPosition(int x,  int y)
+    {
+        setSelectedPosition(new TDCoordinate(x,y));
+    }
+
+
 }

Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseSelecter.h
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseSelecter.h	2015-04-26 18:49:32 UTC (rev 10405)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseSelecter.h	2015-04-26 20:16:26 UTC (rev 10406)
@@ -40,8 +40,8 @@
         public:
             TowerDefenseSelecter(Context* context); //!< Constructor. Registers and initializes the object.
             virtual ~TowerDefenseSelecter();
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            virtual void tick(float dt);
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);         
+            virtual void tick(float dt);            
             virtual void moveFrontBack(const Vector2& value); //!< Overloaded the function to steer the bat up and down.
             virtual void moveRightLeft(const Vector2& value); //!< Overloaded the function to steer the bat up and down.
             virtual void rotateYaw(const Vector2& value);
@@ -49,16 +49,17 @@
             virtual void rotateRoll(const Vector2& value);
             void fire(unsigned int firemode);
             virtual void fired(unsigned int firemode);
+            virtual void setSelectedPosition(TDCoordinate* newPos);
+            virtual void setSelectedPosition(int x, int y);
+
+        private:            
+            virtual void updatePosition();
+            
             TDCoordinate* selectedPos_;
-
-
-
-        private:
-
             bool moveUpPressed_;
             bool moveDownPressed_;
             bool moveLeftPressed_;
-            bool moveRightPressed_;
+            bool moveRightPressed_;            
     };
 }
 




More information about the Orxonox-commit mailing list