Skip to content

Commit

Permalink
Prettify terrain table stats a bit.
Browse files Browse the repository at this point in the history
  • Loading branch information
perim committed May 25, 2013
1 parent ab25d2c commit 19fab1f
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 117 deletions.
36 changes: 12 additions & 24 deletions data/base/stats/terraintable.ini
Original file line number Diff line number Diff line change
@@ -1,48 +1,36 @@
[0]
propulsionType = "0,1,2,3,4,6"
speedFactor = "100,100,100,150,250,100"
speedFactor = 100,100,100,150,250,100,100

[1]
propulsionType = "0,1,2,3,4,6"
speedFactor = "100,100,100,80,250,100"
speedFactor = 100,100,100,80,250,100,100

[2]
propulsionType = "0,1,2,3,4,6"
speedFactor = "80,100,100,150,250,100"
speedFactor = 80,100,100,150,250,100,100

[3]
propulsionType = "0,1,2,3,4,6"
speedFactor = "80,90,100,100,250,80"
speedFactor = 80,90,100,100,250,100,80

[4]
propulsionType = "0,1,2,3,4,6"
speedFactor = "100,100,100,80,250,100"
speedFactor = 100,100,100,80,250,100,100

[5]
propulsionType = "0,1,2,3,4,6"
speedFactor = "80,100,100,50,250,90"
speedFactor = 80,100,100,50,250,100,90

[6]
propulsionType = "0,1,2,3,4,6"
speedFactor = "150,120,100,150,250,135"
speedFactor = 150,120,100,150,250,100,135

[7]
propulsionType = "0,1,2,3,4,6"
speedFactor = "60,60,60,150,250,60"
speedFactor = 60,60,60,150,250,100,60

[8]
propulsionType = "0,1,2,3,4,6"
speedFactor = "60,60,60,80,250,60"
speedFactor = 60,60,60,80,250,100,60

[9]
propulsionType = "0,1,2,3,4,6"
speedFactor = "80,80,100,80,250,50"
speedFactor = 80,80,100,80,250,100,50

[10]
propulsionType = "0,1,2,3,4,6"
speedFactor = "70,90,100,150,250,80"
speedFactor = 70,90,100,150,250,100,80

[11]
propulsionType = "0,1,2,3,4,6"
speedFactor = "60,100,75,80,250,80"
speedFactor = 60,100,75,80,250,100,80

36 changes: 12 additions & 24 deletions data/mp/stats/terraintable.ini
Original file line number Diff line number Diff line change
@@ -1,48 +1,36 @@
[0]
propulsionType = "0,1,2,3,4,6"
speedFactor = "100,100,100,150,250,100"
speedFactor = 100,100,100,150,250,100,100

[1]
propulsionType = "0,1,2,3,4,6"
speedFactor = "100,100,100,80,250,100"
speedFactor = 100,100,100,80,250,100,100

[2]
propulsionType = "0,1,2,3,4,6"
speedFactor = "80,100,100,150,250,100"
speedFactor = 80,100,100,150,250,100,100

[3]
propulsionType = "0,1,2,3,4,6"
speedFactor = "80,90,100,100,250,80"
speedFactor = 80,90,100,100,250,100,80

[4]
propulsionType = "0,1,2,3,4,6"
speedFactor = "100,100,100,80,250,100"
speedFactor = 100,100,100,80,250,100,100

[5]
propulsionType = "0,1,2,3,4,6"
speedFactor = "80,100,100,50,250,90"
speedFactor = 80,100,100,50,250,100,90

[6]
propulsionType = "0,1,2,3,4,6"
speedFactor = "150,120,100,150,250,135"
speedFactor = 150,120,100,150,250,100,135

[7]
propulsionType = "0,1,2,3,4,6"
speedFactor = "60,60,60,150,250,60"
speedFactor = 60,60,60,150,250,100,60

[8]
propulsionType = "0,1,2,3,4,6"
speedFactor = "60,60,60,80,250,60"
speedFactor = 60,60,60,80,250,100,60

[9]
propulsionType = "0,1,2,3,4,6"
speedFactor = "80,80,100,80,250,50"
speedFactor = 80,80,100,80,250,100,50

[10]
propulsionType = "0,1,2,3,4,6"
speedFactor = "70,90,100,150,250,80"
speedFactor = 70,90,100,150,250,100,80

[11]
propulsionType = "0,1,2,3,4,6"
speedFactor = "60,100,75,80,250,80"
speedFactor = 60,100,75,80,250,100,80

73 changes: 9 additions & 64 deletions src/stats.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ REPAIR_STATS *asRepairStats;
WEAPON_STATS *asWeaponStats;
CONSTRUCT_STATS *asConstructStats;
PROPULSION_TYPES *asPropulsionTypes;
static TERRAIN_TABLE *asTerrainTable;
static int *asTerrainTable;

//used to hold the modifiers cross refd by weapon effect and propulsion type
WEAPON_MODIFIER asWeaponModifier[WE_NUMEFFECTS][PROPULSION_TYPE_NUM];
Expand Down Expand Up @@ -91,7 +91,6 @@ UBYTE *apStructTypeLists[MAX_PLAYERS];
QHash<QString, COMPONENT_STATS *> lookupStatPtr;

static bool getMovementModel(const char *movementModel, MOVEMENT_MODEL *model);
static void storeSpeedFactor(UDWORD terrainType, UDWORD propulsionType, UDWORD speedFactor);
static bool statsGetAudioIDFromString(const QString &szStatName, const QString &szWavName, int *piWavID);

//Access functions for the max values to be used in the Design Screen
Expand Down Expand Up @@ -1049,59 +1048,23 @@ bool loadPropulsionTypes(const char *pFileName)
return true;
}


/*Load the Terrain Table from the file exported from Access*/
bool loadTerrainTable(const char *pFileName)
{
unsigned int i;
UDWORD terrainType;
QString propulsionType, speedFactor;

//allocate storage for the stats
asTerrainTable = (TERRAIN_TABLE *)malloc(sizeof(*asTerrainTable) * PROPULSION_TYPE_NUM * TER_MAX);

//initialise the storage to 100
for (i = 0; i < TER_MAX; ++i)
{
for (int j = 0; j < PROPULSION_TYPE_NUM; ++j)
{
TERRAIN_TABLE *const pTerrainTable = &asTerrainTable[i * PROPULSION_TYPE_NUM + j];
pTerrainTable->speedFactor = 100;
}
}
asTerrainTable = (int *)malloc(sizeof(*asTerrainTable) * PROPULSION_TYPE_NUM * TER_MAX);
WzConfig ini(pFileName, WzConfig::ReadOnlyAndRequired);
QStringList list = ini.childGroups();
for (i = 0; i < list.size(); ++i)
for (int i = 0; i < list.size(); ++i)
{
ini.beginGroup(list[i]);
terrainType = list[i].toUInt();
propulsionType = ini.value("propulsionType").toString();
speedFactor = ini.value("speedFactor").toString();

QStringList propulsionTypes = propulsionType.split(",");
QStringList speedFactors = speedFactor.split(",");
for (int x = 0; x < propulsionTypes.size(); ++x)
int terrainType = list[i].toUInt();
QStringList speedFactors = ini.value("speedFactor").toStringList();
for (int j = 0; j < PROPULSION_TYPE_NUM; j++)
{
storeSpeedFactor(terrainType, propulsionTypes[x].toUInt(), speedFactors[x].toUInt());
asTerrainTable[terrainType * PROPULSION_TYPE_NUM + j] = speedFactors[j].toUInt();
}
ini.endGroup();
}

//check that none of the entries are 0 otherwise this will stop a droid dead in its tracks
//and it will not be able to move again!
for (i = 0; i < TER_MAX; ++i)
{
for (int j = 0; j < PROPULSION_TYPE_NUM; ++j)
{
TERRAIN_TABLE *const pTerrainTable = asTerrainTable + (i * PROPULSION_TYPE_NUM + j);
if (pTerrainTable->speedFactor == 0)
{
debug(LOG_FATAL, "Invalid propulsion/terrain table entry");
return false;
}
}
}

return true;
}

Expand Down Expand Up @@ -1315,29 +1278,11 @@ bool loadPropulsionSounds(const char *pFileName)
return(true);
}

//store the speed Factor in the terrain table
static void storeSpeedFactor(UDWORD terrainType, UDWORD propulsionType, UDWORD speedFactor)
{
TERRAIN_TABLE *pTerrainTable = asTerrainTable;

ASSERT(propulsionType < PROPULSION_TYPE_NUM,
"The propulsion type is too large");

pTerrainTable += (terrainType * PROPULSION_TYPE_NUM + propulsionType);
pTerrainTable->speedFactor = speedFactor;
}

//get the speed factor for a given terrain type and propulsion type
UDWORD getSpeedFactor(UDWORD type, UDWORD propulsionType)
{
TERRAIN_TABLE *pTerrainTable = asTerrainTable;

ASSERT(propulsionType < PROPULSION_TYPE_NUM,
"The propulsion type is too large");

pTerrainTable += (type * PROPULSION_TYPE_NUM + propulsionType);

return pTerrainTable->speedFactor;
ASSERT(propulsionType < PROPULSION_TYPE_NUM, "The propulsion type is too large");
return asTerrainTable[type * PROPULSION_TYPE_NUM + propulsionType];
}

//return the type of stat this stat is!
Expand Down
5 changes: 0 additions & 5 deletions src/statsdef.h
Original file line number Diff line number Diff line change
Expand Up @@ -473,11 +473,6 @@ struct PROPULSION_TYPES
SWORD shutDownID; ///< sound to play when this prop type shuts down
};

struct TERRAIN_TABLE
{
UDWORD speedFactor; ///< factor to multiply the speed by depending on the method of propulsion and the terrain type - to be divided by 100 before use
};

typedef UWORD WEAPON_MODIFIER;

#endif // __INCLUDED_STATSDEF_H__

0 comments on commit 19fab1f

Please sign in to comment.