MCPcopy Create free account
hub / github.com/TurningWheel/Barony / tooltipInRange

Method tooltipInRange

src/player.cpp:3491–4014  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3489}
3490
3491real_t Player::WorldUI_t::tooltipInRange(Entity& tooltip)
3492{
3493 if ( !players[player.playernum]->isLocalPlayerAlive() && !player.ghost.isActive() )
3494 {
3495 return 0.0;
3496 }
3497
3498 Entity* playerEntity = Player::getPlayerInteractEntity(player.playernum);
3499 if ( !playerEntity )
3500 {
3501 return 0.0;
3502 }
3503
3504 real_t dist = entityDist(&tooltip, playerEntity);
3505 Entity* parent = uidToEntity(tooltip.parent);
3506
3507 real_t maxDist = 24.0;
3508 real_t minDist = 4.0;
3509
3510 bool selectInteract = false;
3511 bool callout = false;
3512 bool spellInteract = false;
3513 if ( FollowerMenu[player.playernum].followerMenuIsOpen() && FollowerMenu[player.playernum].selectMoveTo )
3514 {
3515 selectInteract = (FollowerMenu[player.playernum].optionSelected == ALLY_CMD_ATTACK_SELECT);
3516 maxDist = 256;
3517 }
3518 else if ( CalloutMenu[player.playernum].calloutMenuIsOpen() && CalloutMenu[player.playernum].selectMoveTo )
3519 {
3520 selectInteract = (CalloutMenu[player.playernum].optionSelected == CalloutRadialMenu::CALLOUT_CMD_SELECT);
3521 callout = true;
3522 maxDist = 256;
3523 }
3524 else if ( cast_animation[player.playernum].active && cast_animation[player.playernum].rangefinder == RANGEFINDER_TOUCH_INTERACT_TEST )
3525 {
3526 selectInteract = true;
3527 spellInteract = true;
3528 maxDist = 64.0;
3529 }
3530 else if ( parent
3531 && (parent->getMonsterTypeFromSprite() == SHOPKEEPER
3532 || parent->monsterCanTradeWith(player.playernum)
3533 || (parent->behavior == &actFloorDecoration && parent->sprite == 991 /* sign */)
3534 || (parent->behavior == &actMonster && (monsterIsFriendlyForTooltip(player.playernum, *parent)))
3535 || (parent->monsterAllyGetPlayerLeader()
3536 && parent->monsterAllyGetPlayerLeader() == players[player.playernum]->entity)) )
3537 {
3538 maxDist = TOUCHRANGE;
3539 }
3540 if ( parent && (parent->behavior == &actDoor || parent->behavior == &actIronDoor) && parent->doorStatus == 0 ) // min dist 0.0 when door closed, just in case we're stuck inside.
3541 {
3542 minDist = 0.0;
3543 }
3544
3545 if ( dist < maxDist && dist > minDist )
3546 {
3547 real_t tangent = atan2(tooltip.y - playerEntity->y, tooltip.x - playerEntity->x);
3548 while ( tangent >= 2 * PI )

Callers 1

handleTooltipsMethod · 0.80

Calls 15

entityDistFunction · 0.85
lineTraceTargetFunction · 0.85
spawnMagicParticleFunction · 0.85
isLocalPlayerAliveMethod · 0.80
followerMenuIsOpenMethod · 0.80
calloutMenuIsOpenMethod · 0.80
monsterCanTradeWithMethod · 0.80
isPlayerEnemyMethod · 0.80

Tested by

no test coverage detected