mod menu shows conflicts with server data for techs and tilesets ( maps and scenarios will follow the next days )
This commit is contained in:
parent
343777fbe3
commit
396acdfa15
|
@ -150,58 +150,62 @@ MenuStateMods::MenuStateMods(Program *program, MainMenu *mainMenu) :
|
||||||
lineVerticalReturn.init(buttonReturn.getX() - 10, returnLineY-80, 5, 81);
|
lineVerticalReturn.init(buttonReturn.getX() - 10, returnLineY-80, 5, 81);
|
||||||
lineVerticalReturn.setHorizontal(false);
|
lineVerticalReturn.setHorizontal(false);
|
||||||
|
|
||||||
int buttonposY= returnLineY+40;
|
int buttonLineUpY=installButtonYPos+10;
|
||||||
|
int buttonLineDownY=installButtonYPos-20;
|
||||||
|
|
||||||
|
int legendButtonY= buttonLineDownY-30;
|
||||||
buttonInstalled.registerGraphicComponent(containerName,"buttonInstalled");
|
buttonInstalled.registerGraphicComponent(containerName,"buttonInstalled");
|
||||||
buttonInstalled.init(10, buttonposY, 200);
|
buttonInstalled.init(techInfoXPos, legendButtonY, 200);
|
||||||
buttonInstalled.setText(lang.get("ModInstalled"));
|
buttonInstalled.setText(lang.get("ModInstalled"));
|
||||||
buttonInstalled.setUseCustomTexture(true);
|
buttonInstalled.setUseCustomTexture(true);
|
||||||
buttonInstalled.setCustomTexture(CoreData::getInstance().getOnServerInstalledTexture());
|
buttonInstalled.setCustomTexture(CoreData::getInstance().getOnServerInstalledTexture());
|
||||||
buttonInstalled.setEnabled(false);
|
buttonInstalled.setEnabled(false);
|
||||||
|
|
||||||
buttonAvailable.registerGraphicComponent(containerName,"buttonAvailable");
|
buttonAvailable.registerGraphicComponent(containerName,"buttonAvailable");
|
||||||
buttonAvailable.init(250, buttonposY, 200);
|
buttonAvailable.init(tilesetInfoXPos, legendButtonY, 200);
|
||||||
buttonAvailable.setUseCustomTexture(true);
|
buttonAvailable.setUseCustomTexture(true);
|
||||||
buttonAvailable.setCustomTexture(CoreData::getInstance().getOnServerTexture());
|
buttonAvailable.setCustomTexture(CoreData::getInstance().getOnServerTexture());
|
||||||
buttonAvailable.setText(lang.get("ModAvailable"));
|
buttonAvailable.setText(lang.get("ModAvailable"));
|
||||||
|
|
||||||
buttonOnlyLocal.registerGraphicComponent(containerName,"buttonOnlyLocal");
|
buttonOnlyLocal.registerGraphicComponent(containerName,"buttonOnlyLocal");
|
||||||
buttonOnlyLocal.init(10, buttonposY-30, 200);
|
buttonOnlyLocal.init(mapInfoXPos, legendButtonY, 200);
|
||||||
buttonOnlyLocal.setUseCustomTexture(true);
|
buttonOnlyLocal.setUseCustomTexture(true);
|
||||||
buttonOnlyLocal.setCustomTexture(CoreData::getInstance().getNotOnServerTexture());
|
buttonOnlyLocal.setCustomTexture(CoreData::getInstance().getNotOnServerTexture());
|
||||||
buttonOnlyLocal.setText(lang.get("ModOnlyLocal"));
|
buttonOnlyLocal.setText(lang.get("ModOnlyLocal"));
|
||||||
|
|
||||||
buttonConflict.registerGraphicComponent(containerName,"buttonConflict");
|
buttonConflict.registerGraphicComponent(containerName,"buttonConflict");
|
||||||
buttonConflict.init(250, buttonposY-30, 200);
|
buttonConflict.init(scenarioInfoXPos, legendButtonY, 200);
|
||||||
buttonConflict.setUseCustomTexture(true);
|
buttonConflict.setUseCustomTexture(true);
|
||||||
buttonConflict.setCustomTexture(CoreData::getInstance().getOnServerDifferentTexture());
|
buttonConflict.setCustomTexture(CoreData::getInstance().getOnServerDifferentTexture());
|
||||||
buttonConflict.setText(lang.get("ModHasConflict"));
|
buttonConflict.setText(lang.get("ModHasConflict"));
|
||||||
|
|
||||||
|
|
||||||
buttonInstallTech.registerGraphicComponent(containerName,"buttonInstallTech");
|
buttonInstallTech.registerGraphicComponent(containerName,"buttonInstallTech");
|
||||||
buttonInstallTech.init(techInfoXPos + 40, installButtonYPos, 125);
|
buttonInstallTech.init(techInfoXPos + 40, buttonLineUpY, 125);
|
||||||
buttonInstallTech.setText(lang.get("Install"));
|
buttonInstallTech.setText(lang.get("Install"));
|
||||||
buttonRemoveTech.registerGraphicComponent(containerName,"buttonRemoveTech");
|
buttonRemoveTech.registerGraphicComponent(containerName,"buttonRemoveTech");
|
||||||
buttonRemoveTech.init(techInfoXPos + 40, installButtonYPos-30, 125);
|
buttonRemoveTech.init(techInfoXPos + 40, buttonLineDownY, 125);
|
||||||
buttonRemoveTech.setText(lang.get("Remove"));
|
buttonRemoveTech.setText(lang.get("Remove"));
|
||||||
|
|
||||||
buttonInstallTileset.registerGraphicComponent(containerName,"buttonInstallTileset");
|
buttonInstallTileset.registerGraphicComponent(containerName,"buttonInstallTileset");
|
||||||
buttonInstallTileset.init(tilesetInfoXPos + 20, installButtonYPos, 125);
|
buttonInstallTileset.init(tilesetInfoXPos + 20, buttonLineUpY, 125);
|
||||||
buttonInstallTileset.setText(lang.get("Install"));
|
buttonInstallTileset.setText(lang.get("Install"));
|
||||||
buttonRemoveTileset.registerGraphicComponent(containerName,"buttonRemoveTileset");
|
buttonRemoveTileset.registerGraphicComponent(containerName,"buttonRemoveTileset");
|
||||||
buttonRemoveTileset.init(tilesetInfoXPos + 20, installButtonYPos-30, 125);
|
buttonRemoveTileset.init(tilesetInfoXPos + 20, buttonLineDownY, 125);
|
||||||
buttonRemoveTileset.setText(lang.get("Remove"));
|
buttonRemoveTileset.setText(lang.get("Remove"));
|
||||||
|
|
||||||
buttonInstallMap.registerGraphicComponent(containerName,"buttonInstallMap");
|
buttonInstallMap.registerGraphicComponent(containerName,"buttonInstallMap");
|
||||||
buttonInstallMap.init(mapInfoXPos + 40, installButtonYPos, 125);
|
buttonInstallMap.init(mapInfoXPos + 40, buttonLineUpY, 125);
|
||||||
buttonInstallMap.setText(lang.get("Install"));
|
buttonInstallMap.setText(lang.get("Install"));
|
||||||
buttonRemoveMap.registerGraphicComponent(containerName,"buttonRemoveMap");
|
buttonRemoveMap.registerGraphicComponent(containerName,"buttonRemoveMap");
|
||||||
buttonRemoveMap.init(mapInfoXPos + 40, installButtonYPos-30, 125);
|
buttonRemoveMap.init(mapInfoXPos + 40, buttonLineDownY, 125);
|
||||||
buttonRemoveMap.setText(lang.get("Remove"));
|
buttonRemoveMap.setText(lang.get("Remove"));
|
||||||
|
|
||||||
buttonInstallScenario.registerGraphicComponent(containerName,"buttonInstallScenario");
|
buttonInstallScenario.registerGraphicComponent(containerName,"buttonInstallScenario");
|
||||||
buttonInstallScenario.init(scenarioInfoXPos + 20, installButtonYPos, 125);
|
buttonInstallScenario.init(scenarioInfoXPos + 20, buttonLineUpY, 125);
|
||||||
buttonInstallScenario.setText(lang.get("Install"));
|
buttonInstallScenario.setText(lang.get("Install"));
|
||||||
buttonRemoveScenario.registerGraphicComponent(containerName,"buttonRemoveScenario");
|
buttonRemoveScenario.registerGraphicComponent(containerName,"buttonRemoveScenario");
|
||||||
buttonRemoveScenario.init(scenarioInfoXPos + 20, installButtonYPos-30, 125);
|
buttonRemoveScenario.init(scenarioInfoXPos + 20, buttonLineDownY, 125);
|
||||||
buttonRemoveScenario.setText(lang.get("Remove"));
|
buttonRemoveScenario.setText(lang.get("Remove"));
|
||||||
|
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
@ -415,20 +419,11 @@ void MenuStateMods::simpleTask(BaseThread *callingThread) {
|
||||||
|
|
||||||
getTilesetsLocalList();
|
getTilesetsLocalList();
|
||||||
for(unsigned int i=0; i < tilesetListRemote.size(); i++) {
|
for(unsigned int i=0; i < tilesetListRemote.size(); i++) {
|
||||||
string tilesetInfo = tilesetListRemote[i];
|
string result=refreshTilesetModInfo(tilesetListRemote[i]);
|
||||||
std::vector<std::string> tilesetInfoList;
|
if(result != "") {
|
||||||
Tokenize(tilesetInfo,tilesetInfoList,"|");
|
|
||||||
|
|
||||||
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("tilesetInfoList.size() [%d]\n",(int)tilesetInfoList.size());
|
|
||||||
if(tilesetInfoList.size() >= 4) {
|
|
||||||
ModInfo modinfo;
|
ModInfo modinfo;
|
||||||
modinfo.name = tilesetInfoList[0];
|
//bool alreadyHasTech = (std::find(techTreeFiles.begin(),techTreeFiles.end(),techName) != techTreeFiles.end());
|
||||||
modinfo.crc = tilesetInfoList[1];
|
modinfo=tilesetCacheList[result];
|
||||||
modinfo.description = tilesetInfoList[2];
|
|
||||||
modinfo.url = tilesetInfoList[3];
|
|
||||||
modinfo.imageUrl = tilesetInfoList[4];
|
|
||||||
modinfo.type = mt_Tileset;
|
|
||||||
|
|
||||||
//bool alreadyHasTileset = (std::find(tilesetFiles.begin(),tilesetFiles.end(),tilesetName) != tilesetFiles.end());
|
//bool alreadyHasTileset = (std::find(tilesetFiles.begin(),tilesetFiles.end(),tilesetName) != tilesetFiles.end());
|
||||||
tilesetCacheList[modinfo.name] = modinfo;
|
tilesetCacheList[modinfo.name] = modinfo;
|
||||||
|
|
||||||
|
@ -471,23 +466,11 @@ void MenuStateMods::simpleTask(BaseThread *callingThread) {
|
||||||
|
|
||||||
getTechsLocalList();
|
getTechsLocalList();
|
||||||
for(unsigned int i=0; i < techListRemote.size(); i++) {
|
for(unsigned int i=0; i < techListRemote.size(); i++) {
|
||||||
string techInfo = techListRemote[i];
|
string result=refreshTechModInfo(techListRemote[i]);
|
||||||
std::vector<std::string> techInfoList;
|
if(result != "") {
|
||||||
Tokenize(techInfo,techInfoList,"|");
|
|
||||||
|
|
||||||
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("techInfoList.size() [%d]\n",(int)techInfoList.size());
|
|
||||||
if(techInfoList.size() >= 5) {
|
|
||||||
ModInfo modinfo;
|
ModInfo modinfo;
|
||||||
modinfo.name = techInfoList[0];
|
|
||||||
modinfo.count = techInfoList[1];
|
|
||||||
modinfo.crc = techInfoList[2];
|
|
||||||
modinfo.description = techInfoList[3];
|
|
||||||
modinfo.url = techInfoList[4];
|
|
||||||
modinfo.imageUrl = techInfoList[5];
|
|
||||||
modinfo.type = mt_Techtree;
|
|
||||||
|
|
||||||
//bool alreadyHasTech = (std::find(techTreeFiles.begin(),techTreeFiles.end(),techName) != techTreeFiles.end());
|
//bool alreadyHasTech = (std::find(techTreeFiles.begin(),techTreeFiles.end(),techName) != techTreeFiles.end());
|
||||||
techCacheList[modinfo.name] = modinfo;
|
modinfo=techCacheList[result];
|
||||||
|
|
||||||
GraphicButton *button=new GraphicButton();
|
GraphicButton *button=new GraphicButton();
|
||||||
button->init(techInfoXPos, keyButtonsYBase, keyButtonsWidth,keyButtonsHeight);
|
button->init(techInfoXPos, keyButtonsYBase, keyButtonsWidth,keyButtonsHeight);
|
||||||
|
@ -753,23 +736,39 @@ void MenuStateMods::getTechsLocalList() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string MenuStateMods::refreshTechModInfo(string techInfo) {
|
||||||
|
std::vector<std::string> techInfoList;
|
||||||
|
Tokenize(techInfo,techInfoList,"|");
|
||||||
|
if(techInfoList.size() >= 5) {
|
||||||
|
Config &config = Config::getInstance();
|
||||||
|
ModInfo modinfo;
|
||||||
|
modinfo.name = techInfoList[0];
|
||||||
|
modinfo.count = techInfoList[1];
|
||||||
|
modinfo.crc = techInfoList[2];
|
||||||
|
modinfo.description = techInfoList[3];
|
||||||
|
modinfo.url = techInfoList[4];
|
||||||
|
modinfo.imageUrl = techInfoList[5];
|
||||||
|
modinfo.type = mt_Techtree;
|
||||||
|
string itemPath = config.getPathListForType(ptTechs,"")[1] + "/" + modinfo.name + string("/*");
|
||||||
|
if(itemPath.empty()==false){
|
||||||
|
bool forceRefresh = (mapCRCUpdateList.find(itemPath) == mapCRCUpdateList.end());
|
||||||
|
int crc=getFolderTreeContentsCheckSumRecursively(itemPath, ".xml", NULL,forceRefresh);
|
||||||
|
modinfo.localCRC=intToStr(crc);
|
||||||
|
//printf("itemPath='%s' remote crc:'%s' local crc:'%s' crc='%d' \n",itemPath.c_str(),modinfo.crc.c_str(),modinfo.localCRC.c_str(),crc);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
modinfo.localCRC="";
|
||||||
|
}
|
||||||
|
techCacheList[modinfo.name] = modinfo;
|
||||||
|
return modinfo.name;
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
void MenuStateMods::refreshTechs() {
|
void MenuStateMods::refreshTechs() {
|
||||||
getTechsLocalList();
|
getTechsLocalList();
|
||||||
for(int i=0; i < techListRemote.size(); i++) {
|
for(int i=0; i < techListRemote.size(); i++) {
|
||||||
string techInfo = techListRemote[i];
|
refreshTechModInfo(techListRemote[i]);
|
||||||
std::vector<std::string> techInfoList;
|
|
||||||
Tokenize(techInfo,techInfoList,"|");
|
|
||||||
if(techInfoList.size() >= 5) {
|
|
||||||
ModInfo modinfo;
|
|
||||||
modinfo.name = techInfoList[0];
|
|
||||||
modinfo.count = techInfoList[1];
|
|
||||||
modinfo.crc = techInfoList[2];
|
|
||||||
modinfo.description = techInfoList[3];
|
|
||||||
modinfo.url = techInfoList[4];
|
|
||||||
modinfo.imageUrl = techInfoList[5];
|
|
||||||
modinfo.type = mt_Techtree;
|
|
||||||
techCacheList[modinfo.name] = modinfo;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -787,23 +786,40 @@ void MenuStateMods::getTilesetsLocalList() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string MenuStateMods::refreshTilesetModInfo(string tilesetInfo) {
|
||||||
|
std::vector<std::string> tilesetInfoList;
|
||||||
|
Tokenize(tilesetInfo,tilesetInfoList,"|");
|
||||||
|
if(tilesetInfoList.size() >= 4) {
|
||||||
|
Config &config = Config::getInstance();
|
||||||
|
ModInfo modinfo;
|
||||||
|
modinfo.name = tilesetInfoList[0];
|
||||||
|
modinfo.crc = tilesetInfoList[1];
|
||||||
|
modinfo.description = tilesetInfoList[2];
|
||||||
|
modinfo.url = tilesetInfoList[3];
|
||||||
|
modinfo.imageUrl = tilesetInfoList[4];
|
||||||
|
modinfo.type = mt_Tileset;
|
||||||
|
|
||||||
|
string itemPath = config.getPathListForType(ptTilesets,"")[1] + "/" + modinfo.name + string("/*");
|
||||||
|
if(itemPath.empty()==false){
|
||||||
|
bool forceRefresh = (mapCRCUpdateList.find(itemPath) == mapCRCUpdateList.end());
|
||||||
|
int crc=getFolderTreeContentsCheckSumRecursively(itemPath, ".xml", NULL,forceRefresh);
|
||||||
|
modinfo.localCRC=intToStr(crc);
|
||||||
|
//printf("itemPath='%s' remote crc:'%s' local crc:'%s' crc='%d' \n",itemPath.c_str(),modinfo.crc.c_str(),modinfo.localCRC.c_str(),crc);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
modinfo.localCRC="";
|
||||||
|
}
|
||||||
|
|
||||||
|
tilesetCacheList[modinfo.name] = modinfo;
|
||||||
|
return modinfo.name;
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
void MenuStateMods::refreshTilesets() {
|
void MenuStateMods::refreshTilesets() {
|
||||||
getTilesetsLocalList();
|
getTilesetsLocalList();
|
||||||
for(int i=0; i < tilesetListRemote.size(); i++) {
|
for(int i=0; i < tilesetListRemote.size(); i++) {
|
||||||
string tilesetInfo = tilesetListRemote[i];
|
refreshTilesetModInfo(tilesetListRemote[i]);
|
||||||
std::vector<std::string> tilesetInfoList;
|
|
||||||
Tokenize(tilesetInfo,tilesetInfoList,"|");
|
|
||||||
if(tilesetInfoList.size() >= 4) {
|
|
||||||
ModInfo modinfo;
|
|
||||||
modinfo.name = tilesetInfoList[0];
|
|
||||||
modinfo.crc = tilesetInfoList[1];
|
|
||||||
modinfo.description = tilesetInfoList[2];
|
|
||||||
modinfo.url = tilesetInfoList[3];
|
|
||||||
modinfo.imageUrl = tilesetInfoList[4];
|
|
||||||
modinfo.type = mt_Tileset;
|
|
||||||
tilesetCacheList[modinfo.name] = modinfo;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1807,7 +1823,7 @@ void MenuStateMods::render() {
|
||||||
|
|
||||||
renderer.renderButton(&buttonInstalled);
|
renderer.renderButton(&buttonInstalled);
|
||||||
renderer.renderButton(&buttonAvailable);
|
renderer.renderButton(&buttonAvailable);
|
||||||
//renderer.renderButton(&buttonConflict);
|
renderer.renderButton(&buttonConflict);
|
||||||
renderer.renderButton(&buttonOnlyLocal);
|
renderer.renderButton(&buttonOnlyLocal);
|
||||||
|
|
||||||
renderer.renderLabel(&modDescrLabel);
|
renderer.renderLabel(&modDescrLabel);
|
||||||
|
@ -1846,7 +1862,14 @@ void MenuStateMods::render() {
|
||||||
bool remoteHasTech = (techCacheList.find(keyTechButtons[i]->getText()) != techCacheList.end());
|
bool remoteHasTech = (techCacheList.find(keyTechButtons[i]->getText()) != techCacheList.end());
|
||||||
if(remoteHasTech)
|
if(remoteHasTech)
|
||||||
{
|
{
|
||||||
keyTechButtons[i]->setCustomTexture(CoreData::getInstance().getOnServerInstalledTexture());
|
ModInfo &modInfo = techCacheList[keyTechButtons[i]->getText()];
|
||||||
|
if( modInfo.crc==modInfo.localCRC) {
|
||||||
|
keyTechButtons[i]->setCustomTexture(CoreData::getInstance().getOnServerInstalledTexture());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//printf("modInfo.name=%s modInfo.crc=%s modInfo.localCRC=%s\n",modInfo.name.c_str(),modInfo.crc.c_str(),modInfo.localCRC.c_str());
|
||||||
|
keyTechButtons[i]->setCustomTexture(CoreData::getInstance().getOnServerDifferentTexture());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1881,7 +1904,15 @@ void MenuStateMods::render() {
|
||||||
bool remoteHasTileset= (tilesetCacheList.find(keyTilesetButtons[i]->getText()) != tilesetCacheList.end());
|
bool remoteHasTileset= (tilesetCacheList.find(keyTilesetButtons[i]->getText()) != tilesetCacheList.end());
|
||||||
if(remoteHasTileset)
|
if(remoteHasTileset)
|
||||||
{
|
{
|
||||||
keyTilesetButtons[i]->setCustomTexture(CoreData::getInstance().getOnServerInstalledTexture());
|
ModInfo &modInfo = tilesetCacheList[keyTilesetButtons[i]->getText()];
|
||||||
|
|
||||||
|
if( modInfo.crc==modInfo.localCRC) {
|
||||||
|
keyTilesetButtons[i]->setCustomTexture(CoreData::getInstance().getOnServerInstalledTexture());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//printf("modInfo.name=%s modInfo.crc=%s modInfo.localCRC=%s\n",modInfo.name.c_str(),modInfo.crc.c_str(),modInfo.localCRC.c_str());
|
||||||
|
keyTilesetButtons[i]->setCustomTexture(CoreData::getInstance().getOnServerDifferentTexture());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -60,6 +60,7 @@ public:
|
||||||
string description;
|
string description;
|
||||||
string count; // used for faction count for example
|
string count; // used for faction count for example
|
||||||
string crc;
|
string crc;
|
||||||
|
string localCRC;
|
||||||
ModType type;
|
ModType type;
|
||||||
public:
|
public:
|
||||||
ModInfo();
|
ModInfo();
|
||||||
|
@ -167,9 +168,11 @@ private:
|
||||||
SimpleTaskThread *modHttpServerThread;
|
SimpleTaskThread *modHttpServerThread;
|
||||||
|
|
||||||
void getTechsLocalList();
|
void getTechsLocalList();
|
||||||
|
string refreshTechModInfo(string techInfo);
|
||||||
void refreshTechs();
|
void refreshTechs();
|
||||||
|
|
||||||
void getTilesetsLocalList();
|
void getTilesetsLocalList();
|
||||||
|
string refreshTilesetModInfo(string tilesetInfo);
|
||||||
void refreshTilesets();
|
void refreshTilesets();
|
||||||
|
|
||||||
void getMapsLocalList();
|
void getMapsLocalList();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user