diff options
Diffstat (limited to 'src/game/base/weapon.cc')
-rw-r--r-- | src/game/base/weapon.cc | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/src/game/base/weapon.cc b/src/game/base/weapon.cc index ab1ae49..22527c2 100644 --- a/src/game/base/weapon.cc +++ b/src/game/base/weapon.cc @@ -196,20 +196,24 @@ bool Weapon::init() } else if (weaponsini.got_section()) { + Weapon *previous = 0; if (weaponsini.got_section("mine")) { + previous = weapon; weapon = new Weapon(); weapon->set_stackable(true); weapon->set_subtype(Mine); count++; } else if (weaponsini.got_section("cannon")) { + previous = weapon; weapon = new Weapon(); weapon->set_stackable(false); weapon->set_subtype(Cannon); count++; } else if (weaponsini.got_section("turret")) { + previous = weapon; weapon = new Weapon(); weapon->set_stackable(false); weapon->set_subtype(Turret); @@ -222,10 +226,18 @@ bool Weapon::init() } else if (weaponsini.got_section()) { weaponsini.unknown_section(); - } + } + + if (previous) { + previous->generate_info(); + } } } + if (weapon) { + weapon->generate_info(); + } + // add weapon infos con_debug << " " << weaponsini.name() << " " << count << " weapon types" << std::endl; @@ -290,5 +302,47 @@ void Weapon::set_subtype(const SubType subtype) weapon_subtype = subtype; } +void Weapon::generate_info() +{ + if (text().size()) + add_line(""); + + add_line("^BSpecifications:^N"); + + std::stringstream str; + str << "price: ^B" << price() << " ^Ncredits"; + add_line(str.str()); + str.str(""); + + str << "volume: ^B" << volume() << " ^Ncubic meter"; + add_line(str.str()); + str.str(""); + + if (subtype() == Cannon) { + add_line(""); + add_line("^BProjectiles:^N"); + str << "damage: ^B" << damage() << "^N"; + add_line(str.str()); + str.str(""); + + str << "range: ^B" << floor(((float) projectile_lifespan() * projectile_speed()) / 10.0f) << " ^Nmeter"; + add_line(str.str()); + str.str(""); + + str << "speed: ^B" << floor(projectile_speed()) * 100.0f << " ^Nm/sec"; + add_line(str.str()); + str.str(""); + + str << "interval: ^B" << projectile_interval() << " ^Nms"; + add_line(str.str()); + str.str(""); + + } else { + str << "damage: ^B" << damage() << "^N"; + add_line(str.str()); + str.str(""); + } +} + } // namespace game |