Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Tactical/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ set(TacticalSrc
"${CMAKE_CURRENT_SOURCE_DIR}/VehicleMenu.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Weapons.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/World Items.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/XML.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/XML_AmmoStrings.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/XML_AmmoTypes.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/XML_Armour.cpp"
Expand Down
9 changes: 9 additions & 0 deletions Tactical/XML.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#include "XML.h"

const XML_Char* GetAttribute(const XML_Char* name, const XML_Char** atts) {
for (const XML_Char** pIter = atts; *pIter != NULL; pIter++) {
const XML_Char* key = *pIter++;
if (strcmp(key, name) == 0) return *pIter;
}
return NULL;
}
3 changes: 3 additions & 0 deletions Tactical/XML.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#ifndef __XML_H
#define __XML_H

#include "expat.h"
#include "armsdealerinvinit.h"
#include "EnemyItemDrops.h"
#include "Loading Screen.h"
Expand Down Expand Up @@ -581,4 +582,6 @@ extern BOOLEAN ReadInAimOldArchive(STR fileName, BOOLEAN localizedVersion);
extern BOOLEAN ReadInHistorys(STR fileName, BOOLEAN localizedVersion );
extern BOOLEAN ReadInDifficultySettings(STR fileName, BOOLEAN localizedVersion);

extern const XML_Char* GetAttribute(const XML_Char* name, const XML_Char** atts);

#endif
49 changes: 17 additions & 32 deletions Tactical/XML_Opinions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,31 +70,31 @@ opinionStartElementHandle(void *userData, const XML_Char *name, const XML_Char *

pData->maxReadDepth++; //we are not skipping this element
}
else if(pData->curElement == ELEMENT)
else if (pData->curElement == ELEMENT && strcmp(name, "AnOpinion") == 0)
{
for(UINT8 i = 0; i < NUMBER_OF_OPINIONS; ++i)
{
XML_Char bla[12];
sprintf(bla, "Opinion%d", i);

if(strcmp(name, bla) == 0)
{
pData->curElement = ELEMENT_PROPERTY;
pData->curElement = ELEMENT;
pData->maxReadDepth++; //we are not skipping this element

pData->maxReadDepth++; //we are not skipping this element
XML_Char const* anID = GetAttribute("id", atts);
XML_Char const* modifier = GetAttribute("modifier", atts);

break;
}
INT32 id, value;
id = atoi(anID);
value = atoi(modifier);

if (id >= 0 && id < NUMBER_OF_OPINIONS)
{
pData->curProfile.bMercOpinion[id] = value;
}
}

pData->szCharData[0] = '\0';
}

pData->currentDepth++;

}


static void XMLCALL
opinionCharacterDataHandle(void *userData, const XML_Char *str, int len)
{
Expand Down Expand Up @@ -149,24 +149,6 @@ opinionEndElementHandle(void *userData, const XML_Char *name)
pData->curIndex = (UINT32) strtoul(pData->szCharData, NULL, 0);
}

else
{
for(UINT8 i = 0; i < NUMBER_OF_OPINIONS; ++i)
{
XML_Char bla[12];
sprintf(bla, "Opinion%d", i);

if(strcmp(name, bla) == 0)
{
pData->curElement = ELEMENT;

pData->curProfile.bMercOpinion[i] = (INT8) atol(pData->szCharData);

break;
}
}
}

pData->maxReadDepth--;
}

Expand Down Expand Up @@ -315,7 +297,10 @@ BOOLEAN WriteMercOpinions()
UINT8 cnt_b = 0;
for (cnt_b = 0; cnt_b < NUMBER_OF_OPINIONS; ++cnt_b)
{
FilePrintf(hFile,"\t\t<Opinion%d>%d</Opinion%d>\r\n", cnt_b, gMercProfiles[ cnt ].bMercOpinion[cnt_b], cnt_b);
if (gMercProfiles[cnt].bMercOpinion[cnt_b] != 0)
{
FilePrintf(hFile, "\t\t<AnOpinion id = \"%d\" modifier = \"%d\" />\r\n", cnt_b, gMercProfiles[cnt].bMercOpinion[cnt_b]);
}
}


Expand Down