[Orxonox-commit 5495] r10158 - in code/branches/towerdefenseHS14: data/levels/includes data/levels/templates src/modules/towerdefense
maxima at orxonox.net
maxima at orxonox.net
Fri Dec 5 15:43:28 CET 2014
Author: maxima
Date: 2014-12-05 15:43:28 +0100 (Fri, 05 Dec 2014)
New Revision: 10158
Added:
code/branches/towerdefenseHS14/data/levels/includes/weaponSettingsTurret1.oxi
Modified:
code/branches/towerdefenseHS14/data/levels/templates/tower.oxt
code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.cc
code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.h
code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseEnemy.cc
code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefensePlayerStats.h
code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.cc
code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.h
Log:
Changes of Nico. Upgrading the towers included.
Added: code/branches/towerdefenseHS14/data/levels/includes/weaponSettingsTurret1.oxi
===================================================================
--- code/branches/towerdefenseHS14/data/levels/includes/weaponSettingsTurret1.oxi (rev 0)
+++ code/branches/towerdefenseHS14/data/levels/includes/weaponSettingsTurret1.oxi 2014-12-05 14:43:28 UTC (rev 10158)
@@ -0,0 +1,22 @@
+ <weaponslots>
+ <WeaponSlot position="0,0,0" />
+ </weaponslots>
+ <weaponsets>
+ <WeaponSet firemode=0 />
+ </weaponsets>
+ <weapons>
+ <WeaponPack>
+ <links>
+ <DefaultWeaponmodeLink firemode=0 weaponmode=0 />
+ </links>
+ <Weapon>
+ <!-- <attached>
+ <Model mesh="sphere.mesh" position="1.7,1.7,-24.5" scale=0.6 />
+ </attached> -->
+ <HsW01 mode=0 munitionpershot=0 delay=0 damage=20 material="Flares/point_lensflare" muzzleoffset="1.7, 1.7,-30" />
+ <HsW01 mode=0 munitionpershot=0 delay=0 damage=20 material="Flares/point_lensflare" muzzleoffset="1.7, -1.7,-30" />
+ <HsW01 mode=0 munitionpershot=0 delay=0 damage=20 material="Flares/point_lensflare" muzzleoffset="-1.7, 1.7,-30" />
+ <HsW01 mode=0 munitionpershot=0 delay=0 damage=20 material="Flares/point_lensflare" muzzleoffset="-1.7, -1.7,-30" />
+ </Weapon>
+ </WeaponPack>
+ </weapons>
Modified: code/branches/towerdefenseHS14/data/levels/templates/tower.oxt
===================================================================
--- code/branches/towerdefenseHS14/data/levels/templates/tower.oxt 2014-12-05 14:10:42 UTC (rev 10157)
+++ code/branches/towerdefenseHS14/data/levels/templates/tower.oxt 2014-12-05 14:43:28 UTC (rev 10158)
@@ -46,8 +46,8 @@
explosionchunks = 6
- reloadrate = 3
- reloadwaittime = 1
+ reloadrate = 10
+ reloadwaittime = 5
collisionType = "dynamic"
team = 1
@@ -58,7 +58,7 @@
<Model position="0,0,0" scale=45 mesh="Tower.mesh" />
- <Turret collisionType="dynamic" position="0,0,10" direction="0,0,1" pitch="0" yaw="0" roll="0" angularDamping=0.999999 mass=100 maxPitch=90 maxYaw=90 maxAttackRadius=1000 minAttackRadius=30>
+ <Turret reloadrate=10 reloadwaittime=5 collisionType="dynamic" position="0,0,10" direction="0,0,1" pitch="0" yaw="0" roll="0" angularDamping=0.999999 mass=100 maxPitch=90 maxYaw=90 maxAttackRadius=1000 minAttackRadius=30>
<controller>
<TurretController/>
@@ -81,4 +81,48 @@
include("../includes/towerWeaponSettings.oxi")
?>
</TowerDefenseTower>
+</Template>
+
+
+
+<Template name=towerturret1>
+ <TowerDefenseTower
+
+
+ explosionchunks = 6
+
+ reloadrate = 10
+ reloadwaittime = 5
+
+ collisionType = "dynamic"
+ team = 1
+
+
+ >
+ <attached>
+
+
+ <Turret reloadrate=10 reloadwaittime=5 collisionType="dynamic" position="0,0,10" direction="0,0,1" pitch="0" yaw="0" roll="0" angularDamping=0.999999 mass=100 maxPitch=90 maxYaw=90 maxAttackRadius=1000 minAttackRadius=30>
+
+ <controller>
+ <TurretController/>
+ </controller>
+ <?lua
+ include("../includes/weaponSettingsTurret1.oxi")
+ ?>
+ </Turret>
+
+ </attached>
+
+
+
+
+ <!--collisionShapes>
+
+ </collisionShapes-->
+
+<?lua
+ include("../includes/towerWeaponSettings.oxi")
+?>
+ </TowerDefenseTower>
</Template>
\ No newline at end of file
Modified: code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.cc
===================================================================
--- code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.cc 2014-12-05 14:10:42 UTC (rev 10157)
+++ code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.cc 2014-12-05 14:43:28 UTC (rev 10158)
@@ -105,6 +105,7 @@
/* Temporary hack to allow the player to add towers */
this->dedicatedAddTower_ = createConsoleCommand( "addTower", createExecutor( createFunctor(&TowerDefense::addTower, this) ) );
+ this->dedicatedUpgradeTower_ = createConsoleCommand( "upgradeTower", createExecutor( createFunctor(&TowerDefense::upgradeTower, this) ) );
}
TowerDefense::~TowerDefense()
@@ -129,6 +130,10 @@
orxout() << "test0" << endl;
Deathmatch::start();
+ credits = 5000;
+ life = 20;
+ waves = 0;
+ time=0.0;
// Waypoints: [1,3] [10,3] [10,11] [13,11]
for (int i=0; i < 16 ; i++){
@@ -233,8 +238,29 @@
ChatManager::message("Match is over");
}
+ void TowerDefense::upgradeTower(int x,int y)
+ {
+ const TowerCost upgraeCost = TDDefaultUpgradeCost;
+ if (!this->hasEnoughCreditForTower(upgraeCost))
+ {
+ orxout() << "not enough credit: " << (this->stats_->getCredit()) << " available, " << TDDefaultTowerCost << " needed.";
+ return;
+ }
+ if (towermatrix [x][y] == NULL)
+ {
+ orxout() << "no tower on this position" << endl;
+ return;
+ }
+
+ else
+ {
+ (towermatrix [x][y])->upgradeTower();
+ }
+ }
+
+
void TowerDefense::addTower(int x, int y)
{
const TowerCost towerCost = TDDefaultTowerCost;
@@ -288,6 +314,11 @@
return ((this->stats_->getCredit()) >= towerCost);
}
+ bool TowerDefense::hasEnoughCreditForUpgrade()
+ {
+ return true;
+ }
+
void TowerDefense::tick(float dt)
{
Modified: code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.h
===================================================================
--- code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.h 2014-12-05 14:10:42 UTC (rev 10157)
+++ code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefense.h 2014-12-05 14:43:28 UTC (rev 10158)
@@ -77,8 +77,10 @@
/* Adds a tower at x, y in the playfield */
void addTower(int x, int y);
+ void upgradeTower(int x, int y);
/* Part of a temporary hack to allow the player to add towers */
ConsoleCommand* dedicatedAddTower_;
+ ConsoleCommand* dedicatedUpgradeTower_;
//TODO: void spawnNewWave()
//TODO: create a timer which regularly calls the spawnNewWave function (time driven)
@@ -93,6 +95,7 @@
/* handles stats */
TowerDefensePlayerStats *stats_;
bool hasEnoughCreditForTower(TowerCost towerCost);
+ bool hasEnoughCreditForUpgrade();
std::vector<TowerTurret*> towers_;
};
Modified: code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseEnemy.cc
===================================================================
--- code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseEnemy.cc 2014-12-05 14:10:42 UTC (rev 10157)
+++ code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseEnemy.cc 2014-12-05 14:43:28 UTC (rev 10158)
@@ -41,6 +41,16 @@
{
SUPER(TowerDefenseEnemy, tick, dt);
+ //ArtificialController* controller = (ArtificialController*)this->getController();
+ Vector3 ship = this->getRVWorldPosition();
+ Vector3* endpoint = new Vector3(500, 700, 150);
+
+ float distance = ship.distance(*endpoint);
+
+ //orxout() << "distance" << distance << endl;
+ if(distance <50){
+ orxout() << "ENEMY KILLED!!!!" << endl;
+ this->destroy(); }
}
/*
Modified: code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefensePlayerStats.h
===================================================================
--- code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefensePlayerStats.h 2014-12-05 14:10:42 UTC (rev 10157)
+++ code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefensePlayerStats.h 2014-12-05 14:43:28 UTC (rev 10158)
@@ -43,7 +43,8 @@
{
typedef enum _TowerCosts {
// Set to 0 for debug...
- TDDefaultTowerCost = 20
+ TDDefaultTowerCost = 20 ,
+ TDDefaultUpgradeCost = 15
} TowerCost;
class _TowerDefenseExport TowerDefensePlayerStats
@@ -66,9 +67,15 @@
inline void didLoadNextWave()
{ waveNumber_++; }
+ inline void upgradeTower(int upgradecost)
+ { credit_ -= upgradecost;}
+
+
+
private:
int credit_;
int waveNumber_;
+ int upgradecost;
//int baseHealth_;
};
}
Modified: code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.cc
===================================================================
--- code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.cc 2014-12-05 14:10:42 UTC (rev 10157)
+++ code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.cc 2014-12-05 14:43:28 UTC (rev 10158)
@@ -26,6 +26,7 @@
RegisterObject(TowerDefenseTower);
this->setCollisionType(WorldEntity::Dynamic);
+ upgrade = 0;
//this->removeAllEngines();
@@ -60,6 +61,29 @@
//orxout() << "rotateRoll" << ++roll << endl;
}
+ bool TowerDefenseTower::upgradeTower()
+ {
+ if(upgrade < 3)
+ {
+ upgrade++;
+ float reloadrate = getReloadRate();
+ float reloadwaittime = getReloadWaitTime();
+ this->setDamageMultiplier(5000);
+
+ reloadrate = 0.5*reloadrate;
+ reloadwaittime = 0.5*reloadwaittime;
+ setReloadRate(reloadrate);
+ setReloadWaitTime(reloadwaittime);
+ this->addTemplate("towerturret1");
+ }
+ else
+ {
+ orxout() << "Tower fully upgraded" << endl;
+ return false;
+ }
+ return true;
+ }
+
// This function is called whenever a player presses the up or the down key.
// You have to implement what happens when the up or the down key is pressed.
// value.x < 0 means: down key is pressed.
Modified: code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.h
===================================================================
--- code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.h 2014-12-05 14:10:42 UTC (rev 10157)
+++ code/branches/towerdefenseHS14/src/modules/towerdefense/TowerDefenseTower.h 2014-12-05 14:43:28 UTC (rev 10158)
@@ -40,11 +40,14 @@
virtual void rotateYaw(const Vector2& value);
virtual void rotatePitch(const Vector2& value);
virtual void rotateRoll(const Vector2& value);
+ virtual bool upgradeTower();
+
void setGame(TowerDefense* Towerdefense)
{ assert(Towerdefense); game_ = Towerdefense; }
private:
TowerDefense* game_;
+ int upgrade;
};
}
More information about the Orxonox-commit
mailing list