Skip to content

Commit 7bcbf4f

Browse files
committed
-
1 parent 9fb1ad7 commit 7bcbf4f

2 files changed

Lines changed: 20 additions & 44 deletions

File tree

gamedata/entities/common.json

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"fire_type": "melee",
77
"base_fire_rate": 2.0,
88
"base_ammo_limit": 0,
9-
"base_melee_hit_distance": "0.2u"
9+
"base_melee_hit_distance": 0.2
1010
},
1111
"pistol":
1212
{
@@ -48,31 +48,25 @@
4848
{
4949
"anim_id": "projectile_bullet",
5050
"anim_loop": "from_start",
51-
"radius": 0.1,
52-
"base_distance": "4.5u",
53-
"base_primary_damage_radius": 0.0,
54-
"base_secondary_damage_radius": 0.0,
55-
"speed": "8.0u"
51+
"radius": 0.025,
52+
"base_distance": 4.5,
53+
"speed": 8.0
5654
},
5755
"flame":
5856
{
5957
"anim_id": "projectile_flame",
6058
"anim_loop": "none",
61-
"radius": 0.3,
62-
"base_distance": "1.1u",
63-
"base_primary_damage_radius": 0.0,
64-
"base_secondary_damage_radius": 0.0,
65-
"speed": "2.75u"
59+
"radius": 0.075,
60+
"base_distance": 1.1,
61+
"speed": 2.75
6662
},
6763
"rocket":
6864
{
6965
"anim_id": "projectile_rocket",
7066
"anim_loop": "from_start",
71-
"radius": 0.1,
72-
"base_distance": "20.0u",
73-
"base_primary_damage_radius": 0.0,
74-
"base_secondary_damage_radius": 0.0,
75-
"speed": "4.4u"
67+
"radius": 0.03,
68+
"base_distance": 20.0,
69+
"speed": 4.4
7670
}
7771
}
7872
}

src/StyleData.cpp

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,13 @@
33

44
//////////////////////////////////////////////////////////////////////////
55

6-
// read distance in meters (m) or map units (u)
7-
// @param output_value: Always in meters
8-
inline bool ParseMetersOrMapUnits(cxx::json_document_node parentNode, const std::string& attribute_name, float& output_value)
6+
// read distance in map units and convert it to meters
7+
inline bool ParseMapUnits(cxx::json_document_node node, const std::string& attribute, float& output)
98
{
10-
cxx::json_document_node attribute_node = parentNode[attribute_name];
11-
if (cxx::json_node_string string_node = attribute_node)
12-
{
13-
std::string string_value = string_node.get_value();
14-
bool mapUnits = cxx::has_suffix(string_value.c_str(), "u");
15-
16-
if (::sscanf(string_value.c_str(), "%f", &output_value) > 0)
17-
{
18-
if (mapUnits)
19-
{
20-
output_value = Convert::MapUnitsToMeters(output_value);
21-
}
22-
return true;
23-
}
24-
debug_assert(false);
25-
return false;
26-
}
27-
// meters
9+
cxx::json_document_node attribute_node = node[attribute];
2810
if (cxx::json_node_numeric numeric_node = attribute_node)
2911
{
30-
output_value = numeric_node.get_value_float();
12+
output = Convert::MapUnitsToMeters(numeric_node.get_value_float());
3113
return true;
3214
}
3315
return false;
@@ -1046,11 +1028,11 @@ void StyleData::InitProjectiles(cxx::json_document_node configNode)
10461028
cxx::json_get_attribute(currentNode, "anim_loop", projectile.mAnimLoop);
10471029

10481030
// distances
1049-
ParseMetersOrMapUnits(currentNode, "radius", projectile.mProjectileRadius);
1050-
ParseMetersOrMapUnits(currentNode, "base_distance", projectile.mBaseDistance);
1051-
ParseMetersOrMapUnits(currentNode, "base_primary_damage_radius", projectile.mBasePrimaryDamageRadius);
1052-
ParseMetersOrMapUnits(currentNode, "base_secondary_damage_radius", projectile.mBaseSecondaryDamageRadius);
1053-
ParseMetersOrMapUnits(currentNode, "speed", projectile.mSpeed);
1031+
ParseMapUnits(currentNode, "radius", projectile.mProjectileRadius);
1032+
ParseMapUnits(currentNode, "base_distance", projectile.mBaseDistance);
1033+
ParseMapUnits(currentNode, "base_primary_damage_radius", projectile.mBasePrimaryDamageRadius);
1034+
ParseMapUnits(currentNode, "base_secondary_damage_radius", projectile.mBaseSecondaryDamageRadius);
1035+
ParseMapUnits(currentNode, "speed", projectile.mSpeed);
10541036
}
10551037
}
10561038

@@ -1083,6 +1065,6 @@ void StyleData::InitWeapons(cxx::json_document_node configNode)
10831065
cxx::json_get_attribute(currentNode, "base_ammo_limit", weapon.mBaseAmmoLimit);
10841066

10851067
// distances
1086-
ParseMetersOrMapUnits(currentNode, "base_melee_hit_distance", weapon.mBaseMeleeHitDistance);
1068+
ParseMapUnits(currentNode, "base_melee_hit_distance", weapon.mBaseMeleeHitDistance);
10871069
}
10881070
}

0 commit comments

Comments
 (0)