MCPcopy Create free account
hub / github.com/bwapi/bwapi / updateInternalData

Method updateInternalData

bwapi/BWAPI/Source/BWAPI/UnitUpdate.cpp:48–194  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

46 }
47
48 void UnitImpl::updateInternalData()
49 {
50 BW::CUnit *o = getOriginalRawData;
51 if ( !o )
52 return;
53 int selfPlayerID = BroodwarImpl.server.getPlayerID(Broodwar->self());
54 self->replayID = BWAPI::BroodwarImpl.isFlagEnabled(Flag::CompleteMapInformation) ? BW::UnitTarget(o).getTarget() : 0;
55 if (isAlive)
56 {
57 _getPlayer = BroodwarImpl._getPlayer(getOriginalRawData->playerID); //_getPlayer
58 //------------------------------------------------------------------------------------------------------
59 //isVisible
60 for ( int i = 0; i < 9; ++i )
61 {
62 if ( i == selfPlayerID )
63 continue;
64 PlayerImpl* player = static_cast<PlayerImpl*>(Broodwar->getPlayer(i));
65 if ( !o->sprite || !player )
66 self->isVisible[i] = false;
67 else if (!BroodwarImpl.isReplay() && !BWAPI::BroodwarImpl.isFlagEnabled(Flag::CompleteMapInformation))
68 self->isVisible[i] = false;
69 else if ( _getPlayer == player )
70 self->isVisible[i] = true;
71 else if ( player->isNeutral() )
72 self->isVisible[i] = o->sprite->visibilityFlags > 0;
73 else
74 self->isVisible[i] = (o->sprite->visibilityFlags & (1 << player->getIndex())) != 0;
75 }
76 if (selfPlayerID >= 0)
77 {
78 if ( !o->sprite )
79 {
80 self->isVisible[selfPlayerID] = false;
81 self->isDetected = false;
82 }
83 else if (_getPlayer == BWAPI::BroodwarImpl.self())
84 {
85 self->isVisible[selfPlayerID] = true;
86 self->isDetected = true;
87 }
88 else if (o->unitType == UnitTypes::Spell_Scanner_Sweep)
89 {
90 self->isVisible[selfPlayerID] = isScannerVisible(o->position);
91 self->isDetected = true;
92 }
93 else
94 {
95 self->isVisible[selfPlayerID] = (o->sprite->visibilityFlags & (1 << BroodwarImpl.BWAPIPlayer->getIndex())) != 0;
96 if (o->statusFlag(BW::StatusFlags::RequiresDetection))
97 {
98 self->isVisible[selfPlayerID] &= ((o->visibilityStatus == -1) ||
99 ((o->visibilityStatus & (1 << BroodwarImpl.BWAPIPlayer->getIndex())) != 0) ||
100 o->movementFlag(BW::MovementFlags::Moving | BW::MovementFlags::Accelerating) ||
101 o->orderID == Orders::Move ||
102 o->groundWeaponCooldown > 0 ||
103 o->airWeaponCooldown > 0 ||
104 !o->statusFlag(BW::StatusFlags::Burrowed) );
105 }

Callers 1

computeUnitExistenceMethod · 0.80

Calls 15

UnitTargetClass · 0.85
isScannerVisibleFunction · 0.85
getPlayerIDMethod · 0.80
_getPlayerMethod · 0.80
statusFlagMethod · 0.80
movementFlagMethod · 0.80
isMineralFieldMethod · 0.80
isBuildingMethod · 0.80
isResourceContainerMethod · 0.80
UnitTypeClass · 0.70
PositionClass · 0.50
MemZeroFunction · 0.50

Tested by

no test coverage detected