Added some basic differences between vertex types
This commit is contained in:
37
gamedata.cpp
37
gamedata.cpp
@ -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;
|
||||
|
Reference in New Issue
Block a user