void AIStatus::ClearIM() { if(this->enabled == true) { GameScene* sc = (GameScene*) this->_pGs; //delete existing labels and sprites first for( std::pair<Label*, Sprite*> p : this->imNodes ) { //remove label sc->getMapLayer()->removeChild(p.first); sc->getMapLayer()->removeChild(p.second); } this->imNodes.clear(); } }
void AIStatus::IMDraw() { if(this->enabled == true) { GameScene* sc = (GameScene*) this->_pGs; //im cost numbers for(std::map<int, InfluenceMapNode>::iterator node = sc->getInfluenceMap()->getMap()->begin(); node != sc->getInfluenceMap()->getMap()->end(); ++node) { if(((InfluenceMapNode)node->second).cost > -1) { std::stringstream ss1; ss1 << ((InfluenceMapNode)node->second).cost; //+ ((InfluenceMapNode)node->second).pTower->GetStrength() ; Label * lbl = Label::create(ss1.str(), "Arial", 12, CCSizeMake(sc->getTiledMap()->getTileSize().width, sc->getTiledMap()->getTileSize().height), kCCTextAlignmentCenter); lbl->setPosition(sc->getMapInfo()->ConvertIdToPoint(node->first)); Rect r = lbl->getBoundingBox(); Sprite * spr = Sprite::create("sprite_Blue_10x10.png", r); spr->setPosition(sc->getMapInfo()->ConvertIdToPoint(node->first)); spr->setOpacityModifyRGB(true); spr->setOpacity( 80 + (((InfluenceMapNode)node->second).cost / 10) ); sc->getMapLayer()->addChild(spr); sc->getMapLayer()->addChild(lbl); //add it to the local pointers holder std::pair< Label*, Sprite* > p; p.first = lbl; p.second = spr; this->imNodes.insert(p); } } } }
void GeneticAlgorithmProfile1::SetWaveForSimulation(ThreadData* td, AdditionalTowers* addTowerSettings, Chromosome *population) { /////////////////////////////////////// GameScene* gs = ((GameScene*)td->_sc); //upgrade existing towers //apply new towers for ( std::vector<Tower*>::iterator tower = addTowerSettings->additionalTowers.begin(); tower != addTowerSettings->additionalTowers.end(); ++tower ) { Tower* t = *tower; gs->towerslist.push_back(t); gs->getMapLayer()->addChild(t); } /////////////////////////////////////// td->creepsWaveForSimulation.clear(); for(int j = 0; j < CreepsPerRound; j++) { Creep * creep; std::string s; double hp = population->healthPoints[j]; double sp = population->movementSpeed[j] / speedBoost ; ElementalAffinity ef = (ElementalAffinity)population->elementalAffinity[j]; switch (ef) { case Earth: s = "1creep_simpearth1.png"; break; case Fire: s = "1creep_simpfire1.png"; break; case Water: s = "1creep_simpwater1.png"; break; case Shock: s = "1creep_simpshock1.png"; break; case None: s = "1creep_simpnone1.png"; break; } creep = new Creep(s, hp, sp); creep->setCoins(50); creep->element = ef; td->creepsWaveForSimulation.push_back(creep); } }
void AIStatus::ClearEnvironment() { GameScene* sc = (GameScene*) this->_pGs; //delete existing labels and sprites first for( std::pair<Label*, Sprite*> p : this->envNodes ) { //remove label sc->getMapLayer()->removeChild(p.first); } this->envNodes.clear(); }
void AIStatus::DrawRoads() { GameScene* sc = (GameScene*) this->_pGs; if(this->enabled == true) { //draw all roads ValueVector idd = sc->getMapInfo()->GetMapInfoTypeVec(MapInfoType::Road); for (auto& index: idd) { Label * lbl = Label::create("R", "Arial", 12, CCSizeMake(sc->getTiledMap()->getTileSize().width, sc->getTiledMap()->getTileSize().height), kCCTextAlignmentCenter); lbl->setPosition(sc->getMapInfo()->ConvertIdToPoint(index.asInt())); sc->getMapLayer()->addChild(lbl); std::pair < Label*, Sprite* > p; p.first = lbl; this->envNodes.insert(p); } } }
void GeneticAlgorithmProfile1::CalculateFitness(ThreadData* td, Chromosome *population) { GameScene* gs = ((GameScene*)td->_sc); AdditionalTowers at; GeneticAlgorithmProfile1::SimulationForwardBackUp(td, at); GeneticAlgorithmProfile1::SimulationForward(td, at); GeneticAlgorithmProfile1::SetWaveForSimulation(td, &at, population); td->SetSimulating(true); while ( td->IsSimulating() == true ) { sleep(1); } CurrentRoundScores crs = td->GetCurrentRoundScores(); population->fitnessScore = crs.creepsLeftFitness; population->fitnessHPPercentage = crs.creepsLeftPercFitness; GeneticAlgorithmProfile1::SimulationForwardRestore(td, at); int siz = at.additionalTowers.size(); for(int i = 0; i < siz; i++ ) { gs->getMapLayer()->removeChild(at.additionalTowers[i], true); gs->towerslist.pop_back(); } GeneticAlgorithmProfile1::RatesEvaluation(td); }