diff --git a/source/glest_game/menu/menu_state_connected_game.cpp b/source/glest_game/menu/menu_state_connected_game.cpp index df172a17..8157748e 100644 --- a/source/glest_game/menu/menu_state_connected_game.cpp +++ b/source/glest_game/menu/menu_state_connected_game.cpp @@ -1100,7 +1100,8 @@ void MenuStateConnectedGame::updateResourceMultiplier(const int index) { ControlType ct= static_cast(listBoxControls[index].getSelectedItemIndex()); if(ct == ctHuman || ct == ctNetwork || ct == ctClosed) { listBoxRMultiplier[index].setSelectedItemIndex((GameConstants::normalMultiplier-0.5f)*10); - listBoxRMultiplier[index].setEnabled(false); + //listBoxRMultiplier[index].setEnabled(false); + listBoxRMultiplier[index].setEnabled(true); } else if(ct == ctCpuEasy || ct == ctNetworkCpuEasy) { @@ -3758,7 +3759,9 @@ void MenuStateConnectedGame::setupUIFromGameSettings(GameSettings *gameSettings, } listBoxControls[slot].setSelectedItemIndex(gameSettings->getFactionControl(i),errorOnMissingData); - listBoxRMultiplier[slot].setSelectedItemIndex((gameSettings->getResourceMultiplierIndex(i),errorOnMissingData)); + //printf("Slot %d [%s] resource multiplier index: %d\n",slot,gameSettings->getNetworkPlayerName(i).c_str(),gameSettings->getResourceMultiplierIndex(i)); + listBoxRMultiplier[slot].setSelectedItemIndex(gameSettings->getResourceMultiplierIndex(i),errorOnMissingData); + listBoxTeams[slot].setSelectedItemIndex(gameSettings->getTeam(i),errorOnMissingData); //listBoxFactions[slot].setSelectedItem(formatString(gameSettings->getFactionTypeName(i)),errorOnMissingData); listBoxFactions[slot].setSelectedItem(formatString(gameSettings->getFactionTypeName(i)),false); @@ -3773,10 +3776,12 @@ void MenuStateConnectedGame::setupUIFromGameSettings(GameSettings *gameSettings, } ControlType ct= gameSettings->getFactionControl(i); - if (ct == ctHuman || ct == ctNetwork || ct == ctClosed) { + //if (ct == ctHuman || ct == ctNetwork || ct == ctClosed) { + if (ct == ctClosed) { listBoxRMultiplier[slot].setEnabled(false); listBoxRMultiplier[slot].setVisible(false); - } else { + } + else { listBoxRMultiplier[slot].setEnabled(true); listBoxRMultiplier[slot].setVisible(true); } diff --git a/source/glest_game/menu/menu_state_custom_game.cpp b/source/glest_game/menu/menu_state_custom_game.cpp index 08dd1639..7dc4dbc3 100644 --- a/source/glest_game/menu/menu_state_custom_game.cpp +++ b/source/glest_game/menu/menu_state_custom_game.cpp @@ -450,7 +450,8 @@ MenuStateCustomGame::MenuStateCustomGame(Program *program, MainMenu *mainMenu, listBoxControls[i].init(xoffset+210, setupPos-30-i*rowHeight); buttonBlockPlayers[i].registerGraphicComponent(containerName,"buttonBlockPlayers" + intToStr(i)); - buttonBlockPlayers[i].init(xoffset+355, setupPos-30-i*rowHeight, 70); + //buttonBlockPlayers[i].init(xoffset+355, setupPos-30-i*rowHeight, 70); + buttonBlockPlayers[i].init(xoffset+250, setupPos-30-i*rowHeight, 70); buttonBlockPlayers[i].setText(lang.get("BlockPlayer")); buttonBlockPlayers[i].setFont(CoreData::getInstance().getDisplayFontSmall()); buttonBlockPlayers[i].setFont3D(CoreData::getInstance().getDisplayFontSmall3D()); @@ -578,15 +579,17 @@ MenuStateCustomGame::MenuStateCustomGame(Program *program, MainMenu *mainMenu, ServerInterface* serverInterface= NetworkManager::getInstance().getServerInterface(); if(this->headlessServerMode == true) { listBoxControls[0].setSelectedItemIndex(ctNetwork); + updateResourceMultiplier(0); } else { listBoxControls[0].setSelectedItemIndex(ctHuman); + updateResourceMultiplier(0); } labelPlayerNames[0].setText(""); labelPlayerNames[0].setText(getHumanPlayerName()); - if(openNetworkSlots){ - for(int i= 1; i(listBoxControls[index].getSelectedItemIndex()); if(ct == ctHuman || ct == ctNetwork || ct == ctClosed) { listBoxRMultiplier[index].setSelectedItemIndex((GameConstants::normalMultiplier-0.5f)*10); - listBoxRMultiplier[index].setEnabled(false); + //listBoxRMultiplier[index].setEnabled(false); + listBoxRMultiplier[index].setEnabled(checkBoxScenario.getValue() == false); } else if(ct == ctCpuEasy || ct == ctNetworkCpuEasy) { @@ -1504,7 +1508,8 @@ void MenuStateCustomGame::updateResourceMultiplier(const int index) { listBoxRMultiplier[index].setEnabled(checkBoxScenario.getValue() == false); } listBoxRMultiplier[index].setEditable(listBoxRMultiplier[index].getEnabled()); - listBoxRMultiplier[index].setVisible(ct != ctHuman && ct != ctNetwork && ct != ctClosed); + //listBoxRMultiplier[index].setVisible(ct != ctHuman && ct != ctNetwork && ct != ctClosed); + listBoxRMultiplier[index].setVisible(ct != ctClosed); } void MenuStateCustomGame::loadGameSettings(std::string fileName) { @@ -1937,15 +1942,6 @@ void MenuStateCustomGame::render() { listBoxControls[i].getSelectedItemIndex() != ctClosed) { renderer.renderLabel(&labelPlayerStatus[i]); - - if(listBoxControls[i].getSelectedItemIndex() == ctNetwork || listBoxControls[i].getSelectedItemIndex() == ctNetworkUnassigned) { - ServerInterface* serverInterface= NetworkManager::getInstance().getServerInterface(); - if( serverInterface != NULL && - serverInterface->getSlot(i) != NULL && - serverInterface->getSlot(i)->isConnected()) { - renderer.renderButton(&buttonBlockPlayers[i]); - } - } } if(crcPlayerTextureCache[i] != NULL) { @@ -1971,6 +1967,21 @@ void MenuStateCustomGame::render() { renderer.renderListBox(&listBoxControls[i]); + if( hasNetworkGameSettings() == true && + listBoxControls[i].getSelectedItemIndex() != ctClosed) { + + renderer.renderLabel(&labelPlayerStatus[i]); + + if(listBoxControls[i].getSelectedItemIndex() == ctNetwork || listBoxControls[i].getSelectedItemIndex() == ctNetworkUnassigned) { + ServerInterface* serverInterface= NetworkManager::getInstance().getServerInterface(); + if( serverInterface != NULL && + serverInterface->getSlot(i) != NULL && + serverInterface->getSlot(i)->isConnected()) { + renderer.renderButton(&buttonBlockPlayers[i]); + } + } + } + if(listBoxControls[i].getSelectedItemIndex()!=ctClosed){ //if(listBoxAdvanced.getSelectedItemIndex() == 1){ renderer.renderListBox(&listBoxRMultiplier[i]); @@ -3160,6 +3171,7 @@ void MenuStateCustomGame::loadGameSettings(GameSettings *gameSettings,bool force if (listBoxControls[i].getSelectedItemIndex() == ctHuman && this->headlessServerMode == true) { // switch slot to network, because no human in headless mode listBoxControls[i].setSelectedItemIndex(ctNetwork) ; + updateResourceMultiplier(i); } ControlType ct= static_cast(listBoxControls[i].getSelectedItemIndex()); @@ -3195,6 +3207,9 @@ void MenuStateCustomGame::loadGameSettings(GameSettings *gameSettings,bool force else if(serverInterface->getSlot(i) != NULL) { gameSettings->setNetworkPlayerLanguages(slotIndex, serverInterface->getSlot(i)->getNetworkPlayerLanguage()); } + + //if(slotIndex == 0) printf("slotIndex = %d, i = %d, multiplier = %d\n",slotIndex,i,listBoxRMultiplier[i].getSelectedItemIndex()); + gameSettings->setResourceMultiplierIndex(slotIndex, listBoxRMultiplier[i].getSelectedItemIndex()); if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] i = %d, factionFiles[listBoxFactions[i].getSelectedItemIndex()] [%s]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__,i,factionFiles[listBoxFactions[i].getSelectedItemIndex()].c_str()); @@ -3638,9 +3653,16 @@ void MenuStateCustomGame::setupUIFromGameSettings(const GameSettings &gameSettin listBoxControls[slotIndex].setSelectedItemIndex(gameSettings.getFactionControl(i)); } + //if(slotIndex == 0) printf("#2 slotIndex = %d, i = %d, multiplier = %d\n",slotIndex,i,listBoxRMultiplier[i].getSelectedItemIndex()); + updateResourceMultiplier(slotIndex); + + //if(slotIndex == 0) printf("#3 slotIndex = %d, i = %d, multiplier = %d\n",slotIndex,i,listBoxRMultiplier[i].getSelectedItemIndex()); + listBoxRMultiplier[slotIndex].setSelectedItemIndex(gameSettings.getResourceMultiplierIndex(i)); + //if(slotIndex == 0) printf("#4 slotIndex = %d, i = %d, multiplier = %d\n",slotIndex,i,listBoxRMultiplier[i].getSelectedItemIndex()); + listBoxTeams[slotIndex].setSelectedItemIndex(gameSettings.getTeam(i)); lastSelectedTeamIndex[slotIndex] = listBoxTeams[slotIndex].getSelectedItemIndex(); diff --git a/source/glest_game/world/unit_updater.cpp b/source/glest_game/world/unit_updater.cpp index 3824f15f..774c50df 100644 --- a/source/glest_game/world/unit_updater.cpp +++ b/source/glest_game/world/unit_updater.cpp @@ -1163,11 +1163,15 @@ void UnitUpdater::updateHarvest(Unit *unit, int frameIndex) { if(map->isNextTo(unit, store)) { //update resources + int resourceMultiplierIndex=game->getGameSettings()->getResourceMultiplierIndex(unit->getFaction()->getIndex()); int resourceAmount= unit->getLoadCount(); - if(unit->getFaction()->getCpuControl()) - { - int resourceMultiplierIndex=game->getGameSettings()->getResourceMultiplierIndex(unit->getFaction()->getIndex()); + //printf("Faction: %d - %s has resource multiplier: %d\n",unit->getFaction()->getStartLocationIndex(),unit->getFaction()->getType()->getName().c_str(),resourceMultiplierIndex); + + //if(unit->getFaction()->getCpuControl()) + if(resourceMultiplierIndex != 5) { resourceAmount=(resourceAmount* (resourceMultiplierIndex +5))/10; + + //printf("Resource Amount adjusted for Faction: %d - %s has resource multiplier: %d, original vs new amount: %d --> %d\n",unit->getFaction()->getStartLocationIndex(),unit->getFaction()->getType()->getName().c_str(),resourceMultiplierIndex,unit->getLoadCount(),resourceAmount); } unit->getFaction()->incResourceAmount(unit->getLoadType(), resourceAmount); world->getStats()->harvest(unit->getFactionIndex(), resourceAmount);