diff options
author | Stijn Buys <ingar@osirion.org> | 2012-11-21 20:49:58 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2012-11-21 20:49:58 +0000 |
commit | 5e4ef80dc29a69e1f5f185d1efab323af4a77292 (patch) | |
tree | 3f741a160a9f62d392ef0116df9f9925d55da557 /src/game/base/weapon.cc | |
parent | 3dc60689b9327190eeecd42f6920299ef3e7b52c (diff) |
Added get/set methods for the weapon-slot API.
Diffstat (limited to 'src/game/base/weapon.cc')
-rw-r--r-- | src/game/base/weapon.cc | 55 |
1 files changed, 42 insertions, 13 deletions
diff --git a/src/game/base/weapon.cc b/src/game/base/weapon.cc index ec87b34..b4d236d 100644 --- a/src/game/base/weapon.cc +++ b/src/game/base/weapon.cc @@ -76,17 +76,18 @@ bool Weapon::init() weapon->set_volume(f); continue; - } else if (weaponsini.got_key_float("damage", f)) { - weapon->set_damage(f); - continue; - } else if (weaponsini.got_key_long("level", l)) { weapon->set_level(l); continue; + + } else if (weaponsini.got_key_float("damage", f)) { + weapon->set_damage(f); + continue; } else { weaponsini.unknown_key(); } + } else if (weaponsini.section().compare("cannon") == 0) { if (weaponsini.got_key_label("label", str)) { weapon->set_label(str); @@ -112,10 +113,6 @@ bool Weapon::init() weapon->set_volume(f); continue; - } else if (weaponsini.got_key_float("damage", f)) { - weapon->set_damage(f); - continue; - } else if (weaponsini.got_key_long("level", l)) { weapon->set_level(l); continue; @@ -147,11 +144,7 @@ bool Weapon::init() } else if (weaponsini.got_key_float("volume", f)) { weapon->set_volume(f); continue; - - } else if (weaponsini.got_key_float("damage", f)) { - weapon->set_damage(f); - continue; - + } else if (weaponsini.got_key_long("level", l)) { weapon->set_level(l); continue; @@ -159,8 +152,35 @@ bool Weapon::init() } else { weaponsini.unknown_key(); } + + } else if (weaponsini.section().compare("projectile") == 0) { + + if (weapon) { + if (weaponsini.got_key_float("speed", f)) { + // speed is in meters / second, one gameunit is 100 meters + weapon->set_projectile_speed(f * 0.01f); + continue; + + } else if (weaponsini.got_key_long("interval", l)) { + weapon->set_projectile_interval((unsigned long) l); + continue; + + } else if (weaponsini.got_key_long("lifespan", l)) { + weapon->set_projectile_lifespan((unsigned long) l); + continue; + + } else if (weaponsini.got_key_float("damage", f)) { + weapon->set_damage(f); + continue; + + } else if (weaponsini.got_key_string("model", str)) { + weapon->set_projectile_modelname(str); + continue; + } + } } + } else if (weaponsini.got_section()) { if (weaponsini.got_section("mine")) { @@ -181,6 +201,11 @@ bool Weapon::init() weapon->set_subtype(Turret); count++; + } else if (weaponsini.got_section("projectile")) { + if (!weapon) { + weaponsini.unknown_error("projectile section without weapon section"); + } + } else if (weaponsini.got_section()) { weaponsini.unknown_section(); } @@ -226,6 +251,10 @@ Weapon::Weapon() : core::Info(weapon_infotype) set_level(1); set_stackable(false); set_subtype(Ammo); + set_damage(0); + set_projectile_interval(0); + set_projectile_lifespan(0); + set_projectile_speed(0); } Weapon::~Weapon() |