Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2012-11-21 20:49:58 +0000
committerStijn Buys <ingar@osirion.org>2012-11-21 20:49:58 +0000
commit5e4ef80dc29a69e1f5f185d1efab323af4a77292 (patch)
tree3f741a160a9f62d392ef0116df9f9925d55da557 /src/game/base/weapon.cc
parent3dc60689b9327190eeecd42f6920299ef3e7b52c (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.cc55
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()