Added some basic differences between vertex types

This commit is contained in:
2011-07-03 15:48:06 -04:00
parent fc0c0f26fd
commit 8ad4ec0672
3 changed files with 88 additions and 15 deletions

View File

@ -191,12 +191,45 @@ bool GameData::add_vertex(int x, int y, int z, int r, int colour)
float GameData::calculate_armor(Vertex* node)
{
float str = calculate_strength(node);
float armor = str / 10;
float armor;
switch(dynamic_cast<GameVertex*>(node)->type)
{
case VERTEX_ATTACKER:
armor = str / 10;
break;
case VERTEX_DEFENDER:
armor = str / 5;
break;
case VERTEX_PRODUCER:
armor = str / 40;
break;
}
if (armor < 1) armor = 1;
return armor;
}
float GameData::calculate_attack(Vertex* node)
{
float attack = calculate_strength(node);
switch (dynamic_cast<GameVertex*>(node)->type)
{
case VERTEX_ATTACKER:
attack *= 1.5;
break;
case VERTEX_DEFENDER:
attack /= 0.75;
break;
case VERTEX_PRODUCER:
attack = 0;
break;
}
}
float GameData::calculate_strength(Vertex* node)
{
list<Vertex*> visited;
@ -297,7 +330,7 @@ int GameData::get_range(Vertex* node)
void GameData::attack_vertex(Vertex* target)
{
float atk = calculate_strength(current);
float atk = calculate_attack(current);
float armor = calculate_armor(target);
int damage = (int)(atk / armor);
target->score -= damage;