int CountryRegion::CreateData(vector<BufferData> ®Data) { vector<BufferData>::iterator iter = regData.begin(); while (iter != regData.end()) { if ( 2 == (*iter).id.length() ) { addProvince((*iter).name, (*iter).id); } if ( 4 == (*iter).id.length() ) { addCity((*iter).name, (*iter).id, (*iter).upId); } if ( 4 < (*iter).id.length() ) { addCounty((*iter).name, (*iter).id, (*iter).upId); } ++iter; } /* // 增加省 vector<BufferData>::iterator iter = regData.data.begin(); while (iter != regData.data.end()) { if ( 2 == (*iter).id.length() ) { addProvince((*iter).name, (*iter).id); } ++iter; } // 增加市 iter = regData.data.begin(); while (iter != regData.data.end()) { if ( 4 == (*iter).id.length() ) { addCity((*iter).name, (*iter).id, (*iter).upId); } ++iter; } // 增加县 iter = regData.data.begin(); while (iter != regData.data.end()) { if ( 4 < (*iter).id.length() ) { addCounty((*iter).name, (*iter).id, (*iter).upId); } ++iter; } //*/ return 0; }
void EU3Country::eatCountry(EU3Country* target) { // autocannibalism is forbidden if (target->getTag() == tag) return; // for calculation of weighted averages int totalProvinces = target->provinces.size() + provinces.size(); if (totalProvinces == 0) totalProvinces = 1; double myWeight = (double)provinces.size() / (double)totalProvinces; double targetWeight = (double)target->provinces.size() / (double)totalProvinces; // acquire target's cores (always) for (unsigned int j = 0; j < target->cores.size(); j++) { addCore(target->cores[j]); target->cores[j]->addCore(tag); target->cores[j]->removeCore(target->tag); } // everything else, do only if this country actually currently exists if (target->provinces.size() > 0) { // acquire target's provinces for (unsigned int j = 0; j < target->provinces.size(); j++) { addProvince(target->provinces[j]); target->provinces[j]->setOwner(this); } // acquire target's armies, navies, admirals, and generals armies.insert(armies.end(), target->armies.begin(), target->armies.end()); leaders.insert(leaders.end(), target->leaders.begin(), target->leaders.end()); // acquire the target's treasury and income, as well as their liabilities treasury += target->treasury; estMonthlyIncome += target->estMonthlyIncome; loans.insert(loans.end(), target->loans.begin(), target->loans.end()); // rebalance prestige, badboy, inflation and techs from weighted average prestige = myWeight * prestige + targetWeight * target->prestige; badboy = myWeight * badboy + targetWeight * target->badboy * (getBadboyLimit() / target->getBadboyLimit()); inflation = myWeight * inflation + targetWeight * target->inflation; landTech = myWeight * landTech + targetWeight * target->landTech; navalTech = myWeight * navalTech + targetWeight * target->navalTech; tradeTech = myWeight * tradeTech + targetWeight * target->tradeTech; productionTech = myWeight * productionTech + targetWeight * target->productionTech; governmentTech = myWeight * governmentTech + targetWeight * target->governmentTech; armyInvestment = myWeight * armyInvestment + targetWeight * target->armyInvestment; navyInvestment = myWeight * navyInvestment + targetWeight * target->navyInvestment; commerceInvestment = myWeight * commerceInvestment + targetWeight * target->commerceInvestment; industryInvestment = myWeight * industryInvestment + targetWeight * target->industryInvestment; cultureInvestment = myWeight * cultureInvestment + targetWeight * target->cultureInvestment; estMonthlyIncome = myWeight * estMonthlyIncome + targetWeight * target->estMonthlyIncome; } // coreless, landless countries will be cleaned up automatically target->clearProvinces(); target->clearCores(); LOG(LogLevel::Debug) << "Merged " << target->tag << " into " << tag; }
void V2Country::eatCountry(V2Country* target) { // autocannibalism is forbidden if (target->getTag() == tag) return; // for calculation of weighted averages int totalProvinces = target->provinces.size() + provinces.size(); if (totalProvinces == 0) totalProvinces = 1; double myWeight = (double)provinces.size() / (double)totalProvinces; double targetWeight = (double)target->provinces.size() / (double)totalProvinces; // acquire target's cores (always) for (unsigned int j = 0; j < target->cores.size(); j++) { addCore(target->cores[j]); target->cores[j]->addCore(tag); target->cores[j]->removeCore(target->tag); } // everything else, do only if this country actually currently exists if (target->provinces.size() > 0) { // acquire target's provinces for (unsigned int j = 0; j < target->provinces.size(); j++) { addProvince(target->provinces[j]); target->provinces[j]->setOwner(tag); } // acquire target's armies, navies, admirals, and generals armies.insert(armies.end(), target->armies.begin(), target->armies.end()); //XXX: leaders.insert(leaders.end(), target->leaders.begin(), target->leaders.end()); // acquire the target's treasury and reserves, as well as their liabilities money += target->money; bankReserves += target->bankReserves; //XXX: loans.insert(loans.end(), target->loans.begin(), target->loans.end()); // rebalance prestige, badboy from weighted average prestige = myWeight * prestige + targetWeight * target->prestige; badboy = myWeight * badboy + targetWeight * target->badboy; // give merged nation any techs owned by either nation vector<string> ttechs = target->getTechs(); for (vector<string>::iterator tech = ttechs.begin(); tech != ttechs.end(); ++tech) { vector<string>::iterator stech = std::find(techs.begin(), techs.end(), *tech); if (stech == techs.end()) techs.push_back(*tech); } // and do the same with inventions inventionStatus* tinvs = target->getInventionStatusArray(); for (int i = 0; i < naval_exercises; ++i) { inventions[i] = std::max(inventions[i], tinvs[i]); } } // coreless, landless countries will be cleaned up automatically target->clearProvinces(); target->clearCores(); log("Merged %s into %s\n", target->tag.c_str(), tag.c_str()); }