Hooks
static bool BeforeCvGame_selectionListGameNetMessage(CvGame* self, int eMessage, int iData2, int iData3, int iData4, int iFlags, bool bAlt, bool bShift);static void AfterCvGame_selectionListGameNetMessage(CvGame* self, int eMessage, int iData2, int iData3, int iData4, int iFlags, bool bAlt, bool bShift);static void ReplaceCvGame_selectionListGameNetMessage(void (*original)(CvGame*, int, int, int, int, int, bool, bool), CvGame* self, int eMessage, int iData2, int iData3, int iData4, int iFlags, bool bAlt, bool bShift);CivRegisterBefore<CivHooks::CvGame_selectionListGameNetMessage>(host, &BeforeCvGame_selectionListGameNetMessage);CivRegisterAfter<CivHooks::CvGame_selectionListGameNetMessage>(host, &AfterCvGame_selectionListGameNetMessage);CivRegisterReplace<CivHooks::CvGame_selectionListGameNetMessage>(host, &ReplaceCvGame_selectionListGameNetMessage);
Code
2576void CvGame::selectionListGameNetMessage(int eMessage, int iData2, int iData3, int iData4, int iFlags, bool bAlt, bool bShift)2577{2578 auto_ptr<ICvUnit1> pSelectedUnit(GC.GetEngineUserInterface()->GetHeadSelectedUnit());2579 CvUnit* pkSelectedUnit = GC.UnwrapUnitPointer(pSelectedUnit.get());25802581 if(pkSelectedUnit != NULL)2582 {2583 if(pkSelectedUnit->getOwner() == getActivePlayer() && !pSelectedUnit->IsBusy())2584 {2585 if(eMessage == GAMEMESSAGE_DO_COMMAND)2586 {2587 gDLL->sendDoCommand(pkSelectedUnit->GetID(), ((CommandTypes)iData2), iData3, iData4, bAlt);2588 }2589 else if((eMessage == GAMEMESSAGE_PUSH_MISSION) || (eMessage == GAMEMESSAGE_AUTO_MISSION))2590 {2591 if(eMessage == GAMEMESSAGE_PUSH_MISSION)2592 {2593 MissionTypes eMission = (MissionTypes)iData2;2594 CvPlot* pPlot = GC.getMap().plot(iData3, iData4);2595 if(pPlot && pkSelectedUnit->CanSwapWithUnitHere(*pPlot) && eMission != CvTypes::getMISSION_ROUTE_TO())2596 {2597 gDLL->sendSwapUnits(pkSelectedUnit->GetID(), ((MissionTypes)iData2), iData3, iData4, iFlags, bShift);2598 }2599 else2600 {2601 gDLL->sendPushMission(pkSelectedUnit->GetID(), ((MissionTypes)iData2), iData3, iData4, iFlags, bShift);2602 }2603 }2604 else2605 {2606 gDLL->sendAutoMission(pkSelectedUnit->GetID());2607 }2608 }2609 else if((eMessage == GAMEMESSAGE_SWAP_UNITS))2610 {2611 gDLL->sendSwapUnits(pkSelectedUnit->GetID(), ((MissionTypes)iData2), iData3, iData4, iFlags, bShift);2612 }2613 else2614 {2615 CvAssert(false);2616 }2617 }2618 }2619}