Finally implemented the correct way to parse the data
This commit is contained in:
parent
000fa2cf73
commit
109f783fa4
@ -145,7 +145,7 @@
|
||||
<!-- Default values for all karts
|
||||
============================ -->
|
||||
<general-kart-defaults>
|
||||
<properties group= "medium" />
|
||||
<properties group= "default" />
|
||||
|
||||
<!-- Camera: Distance between kart and camera.
|
||||
forward-up-angle: Angle between camera and plane of kart (pitch)
|
||||
@ -539,7 +539,61 @@
|
||||
-->
|
||||
|
||||
<kart-type>
|
||||
<default>
|
||||
<properties group = "default"/>
|
||||
<startup time = "0.3 0.5"
|
||||
boost = "6 3" />
|
||||
|
||||
<rescue vert-offset="0.0" time="1.2" height="2"/>
|
||||
|
||||
<nitro engine-force="500" consumption="1" small-container="1" big-container="3"
|
||||
max-speed-increase="5" duration="1" fade-out-time="2" max="20"/>
|
||||
|
||||
<bubblegum time="1" speed-fraction="0.3" torque="500" fade-in-time="0.01"/>
|
||||
|
||||
<zipper time="3.5" force="250.0" speed-gain="4.5" max-speed-increase="15"
|
||||
fade-out-time="1.0" />
|
||||
|
||||
<skid increase="1.05" decrease="0.95" max="2.5" time-till-max="0.5"
|
||||
visual="1.25" visual-time="0.7" revert-visual-time="0.7"
|
||||
min-speed="10" time-till-bonus="1.0 3.0"
|
||||
bonus-speed="4.5 6.5" bonus-time="3.0 4.0"
|
||||
bonus-force="250 350"
|
||||
physical-jump-time="0" graphical-jump-time="0.4"
|
||||
post-skid-rotate-factor="1"
|
||||
reduce-turn-min="0.2" reduce-turn-max="0.8"/>
|
||||
|
||||
<slipstream length="10" width="2" collect-time="2" use-time="5"
|
||||
add-power="3" min-speed="10"
|
||||
max-speed-increase="5" duration="1" fade-out-time="2"/>
|
||||
|
||||
<swatter duration="10" distance="3" squash-duration="5"
|
||||
squash-slowdown="0.5"/>
|
||||
|
||||
<lean max="8.6" speed="5.0" />
|
||||
|
||||
<turn turn-radius="0:2.0 10:7.5 25:15 45:30"
|
||||
time-full-steer ="0:0.15 0.5:0.15 0.5:0.25 1.0:0.25"
|
||||
time-reset-steer="0.1" />
|
||||
|
||||
<engine power="450 475 500 510" max-speed="17 21 23 25" brake-factor="11.0"
|
||||
max-speed-reverse-ratio="0.3"/>
|
||||
|
||||
<gear switch-ratio="0.25 0.7 1.0" power-increase="2.2 1.7 1.3"/>
|
||||
|
||||
<mass value="225"/>
|
||||
|
||||
<plunger band-max-length="50" band-force="1500" band-duration="1"
|
||||
band-speed-increase="7" band-fade-out-time="3"
|
||||
in-face-time="3 4 4.5 4.5"/>
|
||||
|
||||
<explosion time="2" radius="5"
|
||||
invulnerability-time="6" />
|
||||
</default>
|
||||
|
||||
<light>
|
||||
<properties group = "light"/>
|
||||
|
||||
<startup time = "0.3 0.5"
|
||||
boost = "8.5 4.5" />
|
||||
|
||||
@ -591,6 +645,8 @@
|
||||
</light>
|
||||
|
||||
<medium>
|
||||
<properties group = "medium"/>
|
||||
|
||||
<startup time = "0.3 0.5"
|
||||
boost = "4.2 2.6" />
|
||||
|
||||
@ -642,6 +698,8 @@
|
||||
</medium>
|
||||
|
||||
<heavy>
|
||||
<properties group = "heavy"/>
|
||||
|
||||
<startup time = "0.3 0.5"
|
||||
boost = "3.8 2" />
|
||||
|
||||
|
@ -380,6 +380,16 @@ void STKConfig::getAllData(const XMLNode * root)
|
||||
throw std::runtime_error(msg.str());
|
||||
}
|
||||
m_default_kart_properties->getAllData(node);
|
||||
const XMLNode *types = node->getNode("kart-type");
|
||||
m_default_kart_properties->getProperties(types->getNode("default"));
|
||||
|
||||
for (int i = 0; i < types->getNumNodes(); ++i)
|
||||
{
|
||||
const XMLNode* type = types->getNode(i);
|
||||
m_kart_properties[type->getName()] = new KartProperties();
|
||||
m_kart_properties[type->getName()]->copyFrom(m_default_kart_properties);
|
||||
m_kart_properties[type->getName()]->getProperties(type);
|
||||
}
|
||||
|
||||
} // getAllData
|
||||
|
||||
|
@ -30,6 +30,7 @@
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <map>
|
||||
|
||||
class KartProperties;
|
||||
class MusicInformation;
|
||||
@ -47,6 +48,7 @@ class STKConfig : public NoCopy
|
||||
protected:
|
||||
/** Default kart properties. */
|
||||
KartProperties *m_default_kart_properties;
|
||||
std::map<std::string, KartProperties*> m_kart_properties;
|
||||
|
||||
public:
|
||||
/** What to do if a kart already has a powerup when it hits a bonus box:
|
||||
@ -170,6 +172,9 @@ public:
|
||||
/** Returns the default kart properties for each kart. */
|
||||
const KartProperties &
|
||||
getDefaultKartProperties() const {return *m_default_kart_properties; }
|
||||
|
||||
const KartProperties &
|
||||
getKartProperties(std::string type) { return *m_kart_properties[type]; }
|
||||
}
|
||||
; // STKConfig
|
||||
|
||||
|
@ -173,14 +173,18 @@ void KartProperties::load(const std::string &filename, const std::string &node)
|
||||
// Get the default values from STKConfig. This will also allocate any
|
||||
// pointers used in KartProperties
|
||||
|
||||
copyFrom(&stk_config->getDefaultKartProperties());
|
||||
const XMLNode* root = new XMLNode(filename);
|
||||
std::string kart_type;
|
||||
if (root->get("type", &kart_type))
|
||||
copyFrom(&stk_config->getKartProperties(kart_type));
|
||||
else
|
||||
copyFrom(&stk_config->getDefaultKartProperties());
|
||||
|
||||
// m_kart_model must be initialised after assigning the default
|
||||
// values from stk_config (otherwise all kart_properties will
|
||||
// share the same KartModel
|
||||
m_kart_model = new KartModel(/*is_master*/true);
|
||||
|
||||
const XMLNode * root = 0;
|
||||
m_root = StringUtils::getPath(filename)+"/";
|
||||
m_ident = StringUtils::getBasename(StringUtils::getPath(filename));
|
||||
// If this is an addon kart, add "addon_" to the identifier - just in
|
||||
@ -190,7 +194,6 @@ void KartProperties::load(const std::string &filename, const std::string &node)
|
||||
m_ident = Addon::createAddonId(m_ident);
|
||||
try
|
||||
{
|
||||
root = new XMLNode(filename);
|
||||
if(!root || root->getName()!="kart")
|
||||
{
|
||||
std::ostringstream msg;
|
||||
@ -201,6 +204,7 @@ void KartProperties::load(const std::string &filename, const std::string &node)
|
||||
throw std::runtime_error(msg.str());
|
||||
}
|
||||
getAllData(root);
|
||||
getProperties(root);
|
||||
}
|
||||
catch(std::exception& err)
|
||||
{
|
||||
@ -317,21 +321,6 @@ void KartProperties::getAllData(const XMLNode * root)
|
||||
root->get("type", &m_kart_type );
|
||||
}
|
||||
|
||||
if(const XMLNode *kart_type = root->getNode("kart-type"))
|
||||
{
|
||||
getProperties(kart_type->getNode(m_kart_type));
|
||||
}
|
||||
else
|
||||
{
|
||||
//When we load in kart.xml values, we first set the correct type
|
||||
//After we have done that, we can still enter kart-specific values
|
||||
const XMLNode* config_root = new XMLNode(file_manager->getAsset("stk_config.xml"));
|
||||
getProperties(config_root->getNode("general-kart-defaults")->getNode("kart-type")->getNode(m_kart_type));
|
||||
getProperties(root);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(const XMLNode *dimensions_node = root->getNode("center"))
|
||||
dimensions_node->get("gravity-shift", &m_gravity_center_shift);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user