deanej
Deity
^How exactly does the SDK know what file to use when getting the variables? Does a new file have to be defined somewhere else than CvXMLLoadUtilitySet.cpp?
<FeatureModify>
<FeatureType>
<Feature>FEATURE_FOREST</Feature>
<iMovement>1</iMovement>
<bImpassible>0</bImpassible>
</FeatureType>
<FeatureType>
<Feature>FEATURE_ICE</Feature>
<iMovement>1</iMovement>
<bImpassible>0</bImpassible>
</FeatureType>
</FeatureModify>
<CivRequire>
<Civilization>CIVILIZATION_KLINGON</Civilization>
<Civilization>CIVILIZATION_ROMULAN</Civilization>
</CivRequire>
<ImprovementHappinessTypes>
<ImprovementHappiness>
<ImprovementType>IMPROVEMENT_VILLAGE</ImprovementType>
<iHappinessCount>1</iHappinessCount>
</ImprovementHappiness>
<ImprovementHappiness>
<ImprovementType>IMPROVEMENT_TOWN</ImprovementType>
<iHappinessCount>1</iHappinessCount>
</ImprovementHappiness>
</ImprovementHappinessTypes>
<ElementType name="iHappinessCount" content="textOnly" dt:type="int"/>
<ElementType name="ImprovementHappiness" content="eltOnly">
<element type="ImprovementType"/>
<element type="iHappinessCount"/>
</ElementType>
pXML->SetVariableListTagPair(&m_piImprovementHappiness, "ImprovementHappinessTypes", sizeof(GC.getImprovementInfo((ImprovementTypes)0)), GC.getNumImprovementInfos());
int CvBuildingInfo::getImprovementHappiness(int i) const
{
FAssertMsg(i < GC.getNumImprovementInfos(), "Index out of bounds");
FAssertMsg(i > -1, "Index out of bounds");
return m_piImprovementHappiness ? m_piImprovementHappiness[i] : -1;
}
Don't you need to have something like this (just picked a random line from CvInfos.XML):
Code:pXML->GetChildXmlValByName(&m_iImprovementUpgradeRateModifier, "iImprovementUpgradeRateModifier");
// TRACHMYR - FFValuesMod - Display new values attitudes in diplomacy
iAttitudeChange = GET_PLAYER(ePlayer).AI_getKnowledgeValueAttitude(eTargetPlayer);
if ((iPass == 0) ? (iAttitudeChange > 0) : (iAttitudeChange < 0))
{
szTempBuffer.Format(SETCOLR L"%s" ENDCOLR, TEXT_COLOR((iAttitudeChange > 0) ? "COLOR_POSITIVE_TEXT" : "COLOR_NEGATIVE_TEXT"), gDLL->getText(((iAttitudeChange > 0) ? "TXT_KEY_MISC_ATTITUDE_VALUE_GOOD" : "TXT_KEY_MISC_ATTITUDE_VALUE_BAD"), iAttitudeChange).GetCString());
szBuffer.append(NEWLINE);
szBuffer.append(szTempBuffer);
}
iAttitudeChange = GET_PLAYER(ePlayer).AI_getPleasureValueAttitude(eTargetPlayer);
if ((iPass == 0) ? (iAttitudeChange > 0) : (iAttitudeChange < 0))
{
szTempBuffer.Format(SETCOLR L"%s" ENDCOLR, TEXT_COLOR((iAttitudeChange > 0) ? "COLOR_POSITIVE_TEXT" : "COLOR_NEGATIVE_TEXT"), gDLL->getText(((iAttitudeChange > 0) ? "TXT_KEY_MISC_ATTITUDE_VALUE_GOOD" : "TXT_KEY_MISC_ATTITUDE_VALUE_BAD"), iAttitudeChange).GetCString());
szBuffer.append(NEWLINE);
szBuffer.append(szTempBuffer);
}
iAttitudeChange = GET_PLAYER(ePlayer).AI_getPowerValueAttitude(eTargetPlayer);
if ((iPass == 0) ? (iAttitudeChange > 0) : (iAttitudeChange < 0))
{
szTempBuffer.Format(SETCOLR L"%s" ENDCOLR, TEXT_COLOR((iAttitudeChange > 0) ? "COLOR_POSITIVE_TEXT" : "COLOR_NEGATIVE_TEXT"), gDLL->getText(((iAttitudeChange > 0) ? "TXT_KEY_MISC_ATTITUDE_VALUE_GOOD" : "TXT_KEY_MISC_ATTITUDE_VALUE_BAD"), iAttitudeChange).GetCString());
szBuffer.append(NEWLINE);
szBuffer.append(szTempBuffer);
}
iAttitudeChange = GET_PLAYER(ePlayer).AI_getReligionValueAttitude(eTargetPlayer);
if ((iPass == 0) ? (iAttitudeChange > 0) : (iAttitudeChange < 0))
{
szTempBuffer.Format(SETCOLR L"%s" ENDCOLR, TEXT_COLOR((iAttitudeChange > 0) ? "COLOR_POSITIVE_TEXT" : "COLOR_NEGATIVE_TEXT"), gDLL->getText(((iAttitudeChange > 0) ? "TXT_KEY_MISC_ATTITUDE_VALUE_GOOD" : "TXT_KEY_MISC_ATTITUDE_VALUE_BAD"), iAttitudeChange).GetCString());
szBuffer.append(NEWLINE);
szBuffer.append(szTempBuffer);
}
iAttitudeChange = GET_PLAYER(ePlayer).AI_getSurvivalValueAttitude(eTargetPlayer);
if ((iPass == 0) ? (iAttitudeChange > 0) : (iAttitudeChange < 0))
{
szTempBuffer.Format(SETCOLR L"%s" ENDCOLR, TEXT_COLOR((iAttitudeChange > 0) ? "COLOR_POSITIVE_TEXT" : "COLOR_NEGATIVE_TEXT"), gDLL->getText(((iAttitudeChange > 0) ? "TXT_KEY_MISC_ATTITUDE_VALUE_GOOD" : "TXT_KEY_MISC_ATTITUDE_VALUE_BAD"), iAttitudeChange).GetCString());
szBuffer.append(NEWLINE);
szBuffer.append(szTempBuffer);
}
iAttitudeChange = GET_PLAYER(ePlayer).AI_getWealthValueAttitude(eTargetPlayer);
if ((iPass == 0) ? (iAttitudeChange > 0) : (iAttitudeChange < 0))
{
szTempBuffer.Format(SETCOLR L"%s" ENDCOLR, TEXT_COLOR((iAttitudeChange > 0) ? "COLOR_POSITIVE_TEXT" : "COLOR_NEGATIVE_TEXT"), gDLL->getText(((iAttitudeChange > 0) ? "TXT_KEY_MISC_ATTITUDE_VALUE_GOOD" : "TXT_KEY_MISC_ATTITUDE_VALUE_BAD"), iAttitudeChange).GetCString());
szBuffer.append(NEWLINE);
szBuffer.append(szTempBuffer);
}
iAttitudeChange = GET_PLAYER(ePlayer).AI_getNoValueAttitude(eTargetPlayer);
if ((iPass == 0) ? (iAttitudeChange > 0) : (iAttitudeChange < 0))
{
szTempBuffer.Format(SETCOLR L"%s" ENDCOLR, TEXT_COLOR((iAttitudeChange > 0) ? "COLOR_POSITIVE_TEXT" : "COLOR_NEGATIVE_TEXT"), gDLL->getText(((iAttitudeChange > 0) ? "TXT_KEY_MISC_ATTITUDE_NO_VALUE_GOOD" : "TXT_KEY_MISC_ATTITUDE_NO_VALUE_BAD"), iAttitudeChange).GetCString());
szBuffer.append(NEWLINE);
szBuffer.append(szTempBuffer);
}
// END
<TEXT>
<Tag>TXT_KEY_MISC_ATTITUDE_VALUE_GOOD</Tag>
<English>"We admire your values."</English>
<French>"We admire your values."</French>
<German>"We admire your values."</German>
<Italian>"We admire your values."</Italian>
<Spanish>"We admire your values."</Spanish>
</TEXT>
<TEXT>
<Tag>TXT_KEY_MISC_ATTITUDE_VALUE_BAD</Tag>
<English>"We oppose your values."</English>
<French>"We oppose your values."</French>
<German>"We oppose your values."</German>
<Italian>"We oppose your values."</Italian>
<Spanish>"We oppose your values."</Spanish>
</TEXT>
<TEXT>
<Tag>TXT_KEY_MISC_ATTITUDE_NO_VALUE_GOOD</Tag>
<English>"We appreciate that you are open to all values."</English>
<French>"We appreciate that you are open to all values."</French>
<German>"We appreciate that you are open to all values."</German>
<Italian>"We appreciate that you are open to all values."</Italian>
<Spanish>"We appreciate that you are open to all values."</Spanish>
</TEXT>
<TEXT>
<Tag>TXT_KEY_MISC_ATTITUDE_NO_VALUE_BAD</Tag>
<English>"We are concerned that you do not adhere to any value."</English>
<French>"We are concerned that you do not adhere to any value."</French>
<German>"We are concerned that you do not adhere to any value."</German>
<Italian>"We are concerned that you do not adhere to any value."</Italian>
<Spanish>"We are concerned that you do not adhere to any value."</Spanish>
</TEXT>
<TEXT>
<Tag>INTERFACE_PANE_UNIT_NAME</Tag>
<English>[COLOR_UNIT_TEXT]%s1[COLOR_REVERT]</English>
<French>[COLOR_UNIT_TEXT]%s1[COLOR_REVERT]</French>
<German>[COLOR_UNIT_TEXT]%s1[COLOR_REVERT]</German>
<Italian>[COLOR_UNIT_TEXT]%s1[COLOR_REVERT]</Italian>
<Spanish>[COLOR_UNIT_TEXT]%s1[COLOR_REVERT]</Spanish>
</TEXT>
<TEXT>
<Tag>INTERFACE_PANE_UNIT_NAME_HOT_KEY</Tag>
<English>[COLOR_UNIT_TEXT]#%d1 - %s2[COLOR_REVERT]</English>
<French>[COLOR_UNIT_TEXT]#%d1 - %s2[COLOR_REVERT]</French>
<German>[COLOR_UNIT_TEXT]#%d1 - %s2[COLOR_REVERT]</German>
<Italian>[COLOR_UNIT_TEXT]#%d1 - %s2[COLOR_REVERT]</Italian>
<Spanish>[COLOR_UNIT_TEXT]#%d1 - %s2[COLOR_REVERT]</Spanish>
</TEXT>