Hooks
static bool BeforeCvBuilderTaskingAI_LogDirective(CvBuilderTaskingAI* self, BuilderDirective directive, CvUnit* pUnit, int iWeight, bool bChosen);static void AfterCvBuilderTaskingAI_LogDirective(CvBuilderTaskingAI* self, BuilderDirective directive, CvUnit* pUnit, int iWeight, bool bChosen);static void ReplaceCvBuilderTaskingAI_LogDirective(void (*original)(CvBuilderTaskingAI*, BuilderDirective, CvUnit*, int, bool), CvBuilderTaskingAI* self, BuilderDirective directive, CvUnit* pUnit, int iWeight, bool bChosen);CivRegisterBefore<CivHooks::CvBuilderTaskingAI_LogDirective>(host, &BeforeCvBuilderTaskingAI_LogDirective);CivRegisterAfter<CivHooks::CvBuilderTaskingAI_LogDirective>(host, &AfterCvBuilderTaskingAI_LogDirective);CivRegisterReplace<CivHooks::CvBuilderTaskingAI_LogDirective>(host, &ReplaceCvBuilderTaskingAI_LogDirective);
Code
2473void CvBuilderTaskingAI::LogDirective(BuilderDirective directive, CvUnit* pUnit, int iWeight, bool bChosen)2474{2475 if(!m_bLogging)2476 {2477 return;2478 }24792480 CvString strLog;2481 CvString strTemp;24822483 strTemp.Format("%d,", pUnit->GetID()); // unit id2484 strLog += strTemp;24852486 strLog += "Evaluating,";24872488 switch(directive.m_eDirective)2489 {2490 case BuilderDirective::BUILD_IMPROVEMENT_ON_RESOURCE:2491 strLog += "BUILD_IMPROVEMENT_ON_RESOURCE,";2492 break;2493 case BuilderDirective::BUILD_IMPROVEMENT:2494 strLog += "BUILD_IMPROVEMENT,";2495 break;2496 case BuilderDirective::REPAIR:2497 strLog += "REPAIR,";2498 break;2499 case BuilderDirective::BUILD_ROUTE:2500 strLog += "BUILD_ROUTE,";2501 break;2502 case BuilderDirective::CHOP:2503 strLog += "CHOP";2504 }25052506 strLog += GC.getBuildInfo(directive.m_eBuild)->GetType();2507 strLog += ",";25082509 if(directive.m_eResource != NO_RESOURCE)2510 {2511 CvResourceInfo* pkResourceInfo = GC.getResourceInfo(directive.m_eResource);2512 if(pkResourceInfo)2513 {2514 strLog += pkResourceInfo->GetType();2515 strLog += ",";2516 CvPlot* pPlot = GC.getMap().plot(directive.m_sX, directive.m_sY);2517 strLog += pPlot->getNumResource();2518 strLog += ",";2519 }2520 }2521 else2522 {2523 strLog += ",";2524 }25252526 if(directive.m_eDirective == BuilderDirective::REPAIR)2527 {2528 CvPlot* pPlot = GC.getMap().plot(directive.m_sX, directive.m_sY);2529 if(pPlot->IsImprovementPillaged())2530 {2531 if(pPlot->getImprovementType() != NO_IMPROVEMENT)2532 {2533 CvImprovementEntry* pkImprovementInfo = GC.getImprovementInfo(pPlot->getImprovementType());2534 if(pkImprovementInfo)2535 {2536 strLog += pkImprovementInfo->GetType();2537 }2538 }2539 }2540 else2541 {2542 if(pPlot->getRouteType() != NO_ROUTE)2543 {2544 CvRouteInfo* pkRouteInfo = GC.getRouteInfo(pPlot->getRouteType());2545 if(pkRouteInfo)2546 {2547 strLog += pkRouteInfo->GetType();2548 }2549 }2550 }2551 }2552 else2553 {2554 CvPlot* pPlot = GC.getMap().plot(directive.m_sX, directive.m_sY);2555 if(pPlot->getImprovementType() != NO_IMPROVEMENT)2556 {2557 CvImprovementEntry* pkImprovementInfo = GC.getImprovementInfo(pPlot->getImprovementType());2558 if(pkImprovementInfo)2559 {2560 strLog += pkImprovementInfo->GetType();2561 }2562 }2563 }2564 strLog += ",";25652566 strTemp.Format("%d,%d,", directive.m_sX, directive.m_sY);2567 strLog += strTemp;25682569 strTemp.Format("%d,", directive.m_sMoveTurnsAway);2570 strLog += strTemp;25712572 strTemp.Format("%d,", iWeight);2573 strLog += strTemp;25742575 if(bChosen)2576 {2577 strLog += (", Chosen!");2578 }25792580 LogInfo(strLog, m_pPlayer, GET_PLAYER(pUnit->getOwner()).isHuman());2581}