[Orxonox-commit 7519] r12125 - in code/branches/TowerDefense_HS18: data/levels src/modules/towerdefense
michbaum at orxonox.net
michbaum at orxonox.net
Wed Nov 28 11:50:56 CET 2018
Author: michbaum
Date: 2018-11-28 11:50:56 +0100 (Wed, 28 Nov 2018)
New Revision: 12125
Modified:
code/branches/TowerDefense_HS18/data/levels/towerDefense.oxw
code/branches/TowerDefense_HS18/src/modules/towerdefense/CMakeLists.txt
code/branches/TowerDefense_HS18/src/modules/towerdefense/TowerDefense.cc
code/branches/TowerDefense_HS18/src/modules/towerdefense/TowerDefense.h
code/branches/TowerDefense_HS18/src/modules/towerdefense/TowerDefenseEnemy.cc
Log:
Neuer Gegnercontroller und alle noetigen Aenderungen
Modified: code/branches/TowerDefense_HS18/data/levels/towerDefense.oxw
===================================================================
--- code/branches/TowerDefense_HS18/data/levels/towerDefense.oxw 2018-11-28 10:50:16 UTC (rev 12124)
+++ code/branches/TowerDefense_HS18/data/levels/towerDefense.oxw 2018-11-28 10:50:56 UTC (rev 12125)
@@ -22,7 +22,7 @@
<Template name=selectercameras defaults=0>
<TowerDefenseSelecter>
<camerapositions>
- <CameraPosition position="0,0,1300" lookat="0,0,0" absolute=true drag=true mouselook=true/>
+ <CameraPosition position="0,0,1400" lookat="0,0,0" absolute=true drag=true mouselook=true/>
</camerapositions>
</TowerDefenseSelecter>
</Template>
@@ -300,9 +300,7 @@
<BoxCollisionShape position="0,0.1,-11" halfExtents="2.2, 1.8, 6" />
<BoxCollisionShape position="0,0.1,-19" halfExtents="1.4, 1, 2" />
</collisionShapes>
- <controller>
- <WaypointController accuracy = 50/>
- </controller>
+ <!-- Hier wurde der Controller entfernt-->
</TowerDefenseEnemy>
</Template>
@@ -373,9 +371,6 @@
<BoxCollisionShape position="0,0.1,-11" halfExtents="2.2, 1.8, 6" />
<BoxCollisionShape position="0,0.1,-19" halfExtents="1.4, 1, 2" />
</collisionShapes>
- <controller>
- <WaypointController accuracy = 50/>
- </controller>
</TowerDefenseEnemy>
</Template>
@@ -446,9 +441,6 @@
<BoxCollisionShape position="0,0.1,-11" halfExtents="2.2, 1.8, 6" />
<BoxCollisionShape position="0,0.1,-19" halfExtents="1.4, 1, 2" />
</collisionShapes>
- <controller>
- <WaypointController accuracy = 50/>
- </controller>
</TowerDefenseEnemy>
</Template>
@@ -500,13 +492,13 @@
F1F1F1I2F1F1F1F1F1F1F1Y1Y1Y1F1F1
F1F1F1I2F1F1F1F1F1F1F1F1F1F1F1F1
F1F1F1I2F1F1F1F1F1F1F1Y1Y1Y1F1F1
- F1F1F1R2I3I3I3I3L3F1F1F1F1F1F1F1
- F1F1F1F1F1F1F1F1I2F1F1F1F1F1F1F1
- F1F1F1F1F1F1F1F1I2F1F1F1F1F1F1F1
- X1I1I1I1R0F1F1F1I2F1F1F1F1F1F1F1
- F1F1F1F1I0F1F1F1I2F1F1F1F1F1F1F1
- F1F1F1F1I0F1F1F1I2F1F1F1F1F1F1F1
- F1F1F1F1L1I1I1I1L2F1F1F1F1F1F1F1
+ F1F1F1R2I3I3I3I3I3I3I3L3F1F1F1F1
+ F1F1F1F1F1F1F1F1F1F1F1I2F1F1F1F1
+ F1F1F1F1F1F1F1F1F1F1F1I2F1F1F1F1
+ X1I1I1I1R0F1F1F1F1F1F1I2F1F1F1F1
+ F1F1F1F1I0F1F1F1F1F1F1I2F1F1F1F1
+ F1F1F1F1I0F1F1F1F1F1F1I2F1F1F1F1
+ F1F1F1F1L1I1I1I1I1I1I1L2F1F1F1F1
F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1"
Modified: code/branches/TowerDefense_HS18/src/modules/towerdefense/CMakeLists.txt
===================================================================
--- code/branches/TowerDefense_HS18/src/modules/towerdefense/CMakeLists.txt 2018-11-28 10:50:16 UTC (rev 12124)
+++ code/branches/TowerDefense_HS18/src/modules/towerdefense/CMakeLists.txt 2018-11-28 10:50:56 UTC (rev 12125)
@@ -9,6 +9,7 @@
TowerDefenseSelecter.cc
TowerDefenseField.cc
TDCoordinate.cc
+ TowerDefenseController.cc
)
ORXONOX_ADD_LIBRARY(towerdefense
Modified: code/branches/TowerDefense_HS18/src/modules/towerdefense/TowerDefense.cc
===================================================================
--- code/branches/TowerDefense_HS18/src/modules/towerdefense/TowerDefense.cc 2018-11-28 10:50:16 UTC (rev 12124)
+++ code/branches/TowerDefense_HS18/src/modules/towerdefense/TowerDefense.cc 2018-11-28 10:50:56 UTC (rev 12125)
@@ -75,7 +75,7 @@
#include "TowerDefenseTower.h"
#include "TowerDefenseCenterpoint.h"
#include "worldentities/SpawnPoint.h"
-#include "controllers/WaypointController.h"
+#include "TowerDefenseController.h" //muss ich noch in den richtigen Ordner verschieben
#include "graphics/Model.h"
#include "infos/PlayerInfo.h"
#include "chat/ChatManager.h"
@@ -174,9 +174,12 @@
en1->setTeam(2);
- WaypointController* controller = (WaypointController*)(en1->getXMLController());
+ //Jedem Enemy wird ein eigener Controller uebergeben
+ TowerDefenseController* controller = new TowerDefenseController(this->center_->getContext());
+ controller->setControllableEntity(en1);
+ en1->setController(controller);
- if (controller != nullptr && waypoints_.size() > 1)
+ if (waypoints_.size() > 1)
{
en1->setPosition(waypoints_.at(0)->getPosition() + offset_);
en1->setOrientation(Vector3(0,0,10), Degree(0));
@@ -191,7 +194,8 @@
}
}
- enemies_.push_back(en1);
+ auto pair = std::make_pair(orxonox::WeakPtr<TowerDefenseEnemy>(en1), controller);
+ enemies_.push_back(pair);
}
@@ -290,24 +294,32 @@
addTower(selecter->selectedPos_->GetX(), selecter->selectedPos_->GetY());
}
}
+
- for (std::list<WeakPtr<TowerDefenseEnemy>>::iterator it = enemies_.begin(); it != enemies_.end(); )
+ for (EnemyList::iterator it = enemies_.begin(); it != enemies_.end(); )
{
- if (*it == nullptr)
+ WeakPtr<TowerDefenseEnemy> enemy = it->first;
+ TowerDefenseController* ctrl = it->second;
+
+ if (enemy == nullptr)
{
- // the enemy was destroyed by a tower - remove it from the list
- enemies_.erase(it++);
+
+ // the enemy was destroyed by a tower - remove it from the list AND destroy the corresponding controler
+ ctrl->destroy();
+ it = enemies_.erase(it);
addCredit(1);
}
else
{
//if ships are at the end they get destroyed
- Vector3 ship = (*it)->getRVWorldPosition();
+ Vector3 ship = enemy->getRVWorldPosition();
float distance = ship.distance(endpoint_);
if(distance < 40)
{
- (*it)->destroy();
- enemies_.erase(it++);
+ enemy->getController()->destroy();
+ enemy->destroy();
+
+ it = enemies_.erase(it);
this->reduceLifes(1);
if (this->getLifes() == 0)
{
@@ -411,6 +423,7 @@
return nextCoord;
}
+ //Falls kein anliegender Weg gefunden wurde.
delete nextCoord;
return nullptr;
}
Modified: code/branches/TowerDefense_HS18/src/modules/towerdefense/TowerDefense.h
===================================================================
--- code/branches/TowerDefense_HS18/src/modules/towerdefense/TowerDefense.h 2018-11-28 10:50:16 UTC (rev 12124)
+++ code/branches/TowerDefense_HS18/src/modules/towerdefense/TowerDefense.h 2018-11-28 10:50:56 UTC (rev 12125)
@@ -31,6 +31,7 @@
#define _TowerDefense_H__
#include "TDCoordinate.h"
#include "TowerDefenseSelecter.h"
+#include "TowerDefenseController.h"
#include "towerdefense/TowerDefensePrereqs.h"
#include "gametypes/TeamDeathmatch.h"
#include "TowerDefenseEnemy.h"
@@ -39,6 +40,8 @@
namespace orxonox
{
+ using EnemyList = std::list<std::pair<orxonox::WeakPtr<TowerDefenseEnemy>, TowerDefenseController*>>;
+
/**
@brief
GameType class for TowerDefense. See TowerDefenseReadme.txt for Information.
@@ -85,7 +88,7 @@
int credit_;
int waveNumber_;
int lifes_;
- std::list<orxonox::WeakPtr<TowerDefenseEnemy>> enemies_;
+ EnemyList enemies_;
TowerDefenseField* fields_[16][16];
std::vector<orxonox::WeakPtr<TowerDefenseField>> waypoints_;
Vector3 endpoint_;
Modified: code/branches/TowerDefense_HS18/src/modules/towerdefense/TowerDefenseEnemy.cc
===================================================================
--- code/branches/TowerDefense_HS18/src/modules/towerdefense/TowerDefenseEnemy.cc 2018-11-28 10:50:16 UTC (rev 12124)
+++ code/branches/TowerDefense_HS18/src/modules/towerdefense/TowerDefenseEnemy.cc 2018-11-28 10:50:56 UTC (rev 12125)
@@ -28,7 +28,6 @@
TowerDefenseEnemy::~TowerDefenseEnemy()
{
-
}
WeakPtr<TowerDefense> TowerDefenseEnemy::getGame()
More information about the Orxonox-commit
mailing list