[Orxonox-commit 5680] r10340 - in code/branches/towerdefenseFS15: data/levels/templates src/modules/objects src/modules/towerdefense
erbj at orxonox.net
erbj at orxonox.net
Thu Apr 2 15:57:34 CEST 2015
Author: erbj
Date: 2015-04-02 15:57:34 +0200 (Thu, 02 Apr 2015)
New Revision: 10340
Modified:
code/branches/towerdefenseFS15/data/levels/templates/towerdefensetower.oxt
code/branches/towerdefenseFS15/src/modules/objects/Turret.cc
code/branches/towerdefenseFS15/src/modules/objects/Turret.h
code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.cc
code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.h
code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseEnemy.cc
code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseTower.cc
Log:
Tower upgrade now implemented and towers are now saved in the towerTurretMatrix and the Models in the towerModelMatrix
Modified: code/branches/towerdefenseFS15/data/levels/templates/towerdefensetower.oxt
===================================================================
--- code/branches/towerdefenseFS15/data/levels/templates/towerdefensetower.oxt 2015-04-02 13:40:07 UTC (rev 10339)
+++ code/branches/towerdefenseFS15/data/levels/templates/towerdefensetower.oxt 2015-04-02 13:57:34 UTC (rev 10340)
@@ -22,30 +22,7 @@
<TurretController team = 1/>
</controller>
-
- <attached>
-
- <!--Turret
- explosionchunks = 6
- reloadrate=10
- reloadwaittime=5
- collisionType="none"
- maxPitch=90
- maxYaw=90
- maxAttackRadius=1000
- minAttackRadius=30
- team = 1
- >
-
- <controller>
- <TurretController/>
- </controller>
-
-
- </Turret-->
- </attached>
-
Modified: code/branches/towerdefenseFS15/src/modules/objects/Turret.cc
===================================================================
--- code/branches/towerdefenseFS15/src/modules/objects/Turret.cc 2015-04-02 13:40:07 UTC (rev 10339)
+++ code/branches/towerdefenseFS15/src/modules/objects/Turret.cc 2015-04-02 13:57:34 UTC (rev 10340)
@@ -222,6 +222,7 @@
XMLPortParam(Turret, "minAttackRadius", setMinAttackRadius, getMinAttackRadius, xmlelement, mode);
XMLPortParam(Turret, "maxYaw", setMaxYaw, getMaxYaw, xmlelement, mode);
XMLPortParam(Turret, "maxPitch", setMaxPitch, getMaxPitch, xmlelement, mode);
+ XMLPortParam(Turret, "rotationThrust", setRotationThrust, getRotationThrust, xmlelement, mode);
}
/**
@@ -281,4 +282,4 @@
}
}
-}
\ No newline at end of file
+}
Modified: code/branches/towerdefenseFS15/src/modules/objects/Turret.h
===================================================================
--- code/branches/towerdefenseFS15/src/modules/objects/Turret.h 2015-04-02 13:40:07 UTC (rev 10339)
+++ code/branches/towerdefenseFS15/src/modules/objects/Turret.h 2015-04-02 13:57:34 UTC (rev 10340)
@@ -101,6 +101,12 @@
inline float getMaxYaw() const
{ return this->maxYaw_; }
+ inline void setRotationThrust(float rotationthrust)
+ { this->rotationThrust_ = rotationthrust; }
+
+ inline float getRotationThrust()
+ { return this->rotationThrust_; }
+
protected:
Vector3 startDir_; //!< The initial facing direction, in local coordinates.
Vector3 localZ_; //!< The local z-axis, includes for the parent's rotation and rotations done in xml.
Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.cc
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.cc 2015-04-02 13:40:07 UTC (rev 10339)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.cc 2015-04-02 13:57:34 UTC (rev 10340)
@@ -101,6 +101,8 @@
}
}*/
+
+
this->setHUDTemplate("TowerDefenseHUD");
//this->stats_ = new TowerDefensePlayerStats();
@@ -135,34 +137,38 @@
// 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++){
- towermatrix[i][j] = false;
+ towerModelMatrix[i][j] = NULL;
+ towerTurretMatrix[i][j] = NULL;
}
}
+ Model* dummyModel = new Model(this->center_->getContext());
+
//the path of the spacehips has to be blocked, so that no towers can be build there
for (int k=0; k<3; k++)
- towermatrix[1][k]=true;
+ towerModelMatrix[1][k]=dummyModel;
for (int l=1; l<11; l++)
- towermatrix[l][3]=true;
+ towerModelMatrix[l][3]=dummyModel;
for (int m=3; m<12; m++)
- towermatrix[10][m]=true;
+ towerModelMatrix[10][m]=dummyModel;
for (int n=10; n<14; n++)
- towermatrix[n][11]=true;
+ towerModelMatrix[n][11]=dummyModel;
for (int o=13; o<16; o++)
- towermatrix[13][o]=true;
+ towerModelMatrix[13][o]=dummyModel;
+
//set initial credits, lifes and WaveNumber
this->setCredit(1000);
this->setLifes(100);
this->setWaveNumber(0);
time=0.0;
+ /*
//adds initial towers
- /*
for (int i=0; i <7; i++){
addTower(i+3,4);
}
- */
+ */
}
// Generates a TowerDefenseEnemy. Uses Template "enemytowerdefense". Sets position at first waypoint of path.
@@ -215,7 +221,7 @@
//not working yet
void TowerDefense::upgradeTower(int x,int y)
- {/*
+ {
const int upgradeCost = 20;
if (!this->hasEnoughCreditForTower(upgradeCost))
@@ -224,7 +230,10 @@
return;
}
- if (towermatrix [x][y] == NULL)
+
+ Model* dummyModel2 = new Model(this->center_->getContext());
+
+ if (towerModelMatrix [x][y] == NULL || (towerModelMatrix [x][y])->getMeshSource() == dummyModel2->getMeshSource())
{
orxout() << "no tower on this position" << endl;
return;
@@ -232,8 +241,9 @@
else
{
- (towermatrix [x][y])->upgradeTower();
- }*/
+ (towerTurretMatrix [x][y])->upgradeTower();
+ this->buyTower(upgradeCost);
+ }
}
/*adds Tower at Position (x,y) and reduces credit and adds the point to the towermatrix. template ("towerturret")
@@ -250,7 +260,7 @@
return;
}
- if (towermatrix [x][y]==true)
+ if (towerModelMatrix [x][y]!=NULL)
{
orxout() << "not possible to put tower here!!" << endl;
return;
@@ -272,10 +282,8 @@
orxout() << "Will add tower at (" << (x-8) * tileScale << "," << (y-8) * tileScale << ")" << endl;
- //Reduce credit
- this->buyTower(towerCost);
- towermatrix [x][y]=true;
+
//Create Model
Model* newtowermodel = new Model(this->center_->getContext());
newtowermodel->setMeshSource("Tower.mesh");
@@ -289,6 +297,11 @@
towernew->setPosition(static_cast<float>((x-8) * tileScale), static_cast<float>((y-8) * tileScale), 275);
towernew->setGame(this);
towernew->setTeam(1);
+
+ //Reduce credit
+ this->buyTower(towerCost);
+ towerModelMatrix [x][y]= newtowermodel;
+ towerTurretMatrix [x][y]= towernew;
}
bool TowerDefense::hasEnoughCreditForTower(int towerCost)
@@ -324,7 +337,7 @@
{
if(TowerDefenseEnemyvector.at(i) != NULL && TowerDefenseEnemyvector.at(i)->isAlive())
{
- //destroys enemys at the end of teh path and reduces the life by 1. no credits gifted
+ //destroys enemys at the end of the path and reduces the life by 1. no credits gifted
Vector3 ship = TowerDefenseEnemyvector.at(i)->getRVWorldPosition();
float distance = ship.distance(*endpoint);
Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.h
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.h 2015-04-02 13:40:07 UTC (rev 10339)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefense.h 2015-04-02 13:57:34 UTC (rev 10340)
@@ -52,7 +52,8 @@
virtual ~TowerDefense();
std::vector<orxonox::WeakPtr<TowerDefenseEnemy> > TowerDefenseEnemyvector;
- bool towermatrix[16][16];
+ Model* towerModelMatrix[16][16];
+ TowerDefenseTower* towerTurretMatrix[16][16];
void addTowerDefenseEnemy(std::vector<TDCoordinate*> path, int templatenr);
virtual void start(); //<! The function is called when the gametype starts
virtual void end();
Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseEnemy.cc
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseEnemy.cc 2015-04-02 13:40:07 UTC (rev 10339)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseEnemy.cc 2015-04-02 13:57:34 UTC (rev 10340)
@@ -34,7 +34,11 @@
}
//add credit if enemy is destroyed
TowerDefenseEnemy::~TowerDefenseEnemy(){
- //this->td->addCredit(1);
+
+ if (this->isInitialized())
+ {
+ getGame()->addCredit(1);
+ }
}
void TowerDefenseEnemy::addWaypoint(TDCoordinate* coord)
@@ -63,10 +67,14 @@
Pawn::damage(damage, healthdamage, shielddamage, originator);
if (getGame() && once_ == false && getHealth() <= 0)
{
+ orxout() << "damagefunctionIF" << endl;
getGame()->addCredit(1);
once_ = true;
}
+ orxout() << "damagefunction" << endl;
+
}
+
/*
void TowerDefenseEnemy::popWaypoint()
{
Modified: code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseTower.cc
===================================================================
--- code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseTower.cc 2015-04-02 13:40:07 UTC (rev 10339)
+++ code/branches/towerdefenseFS15/src/modules/towerdefense/TowerDefenseTower.cc 2015-04-02 13:57:34 UTC (rev 10340)
@@ -65,8 +65,8 @@
upgrade++;
float reloadrate = getReloadRate();
float reloadwaittime = getReloadWaitTime();
- this->setDamageMultiplier(5000);
-
+ this->setDamageMultiplier((upgrade+1)*2);
+ this->setRotationThrust(2*this->getRotationThrust());
reloadrate = 0.5f*reloadrate;
reloadwaittime = 0.5f*reloadwaittime;
setReloadRate(reloadrate);
More information about the Orxonox-commit
mailing list