MCPcopy Create free account
hub / github.com/diasurgical/DevilutionX / DrawPlayer

Function DrawPlayer

Source/engine/render/scrollrt.cpp:430–465  ·  view source on GitHub ↗

* @brief Render a player sprite * @param out Output buffer * @param player Player reference * @param tilePosition dPiece coordinates * @param targetBufferPosition Output buffer coordinates */

Source from the content-addressed store, hash-verified

428 * @param targetBufferPosition Output buffer coordinates
429 */
430void DrawPlayer(const Surface &out, const Player &player, Point tilePosition, Point targetBufferPosition)
431{
432 if (!IsTileLit(tilePosition) && !MyPlayer->_pInfraFlag && !MyPlayer->isOnArenaLevel() && leveltype != DTYPE_TOWN) {
433 return;
434 }
435
436 const ClxSprite sprite = player.previewCelSprite ? *player.previewCelSprite : player.AnimInfo.currentSprite();
437
438 Point spriteBufferPosition = targetBufferPosition - Displacement { CalculateWidth2(sprite.width()), 0 };
439
440 if (static_cast<size_t>(pcursplr) < Players.size() && &player == &Players[pcursplr])
441 ClxDrawOutlineSkipColorZero(out, 165, spriteBufferPosition, sprite);
442
443 if (&player == MyPlayer && IsNoneOf(leveltype, DTYPE_NEST, DTYPE_CRYPT)) {
444 ClxDraw(out, spriteBufferPosition, sprite);
445 DrawPlayerIcons(out, player, targetBufferPosition, false);
446 return;
447 }
448
449 if (!IsTileLit(tilePosition) || ((MyPlayer->_pInfraFlag || MyPlayer->isOnArenaLevel()) && LightTableIndex > 8)) {
450 ClxDrawTRN(out, spriteBufferPosition, sprite, GetInfravisionTRN());
451 DrawPlayerIcons(out, player, targetBufferPosition, true);
452 return;
453 }
454
455 int l = LightTableIndex;
456 if (LightTableIndex < 5)
457 LightTableIndex = 0;
458 else
459 LightTableIndex -= 5;
460
461 ClxDrawLight(out, spriteBufferPosition, sprite, LightTableIndex);
462 DrawPlayerIcons(out, player, targetBufferPosition, false);
463
464 LightTableIndex = l;
465}
466
467/**
468 * @brief Render a player sprite

Callers 2

DrawDeadPlayerFunction · 0.85
DrawPlayerHelperFunction · 0.85

Calls 13

IsTileLitFunction · 0.85
CalculateWidth2Function · 0.85
IsNoneOfFunction · 0.85
ClxDrawFunction · 0.85
DrawPlayerIconsFunction · 0.85
ClxDrawTRNFunction · 0.85
GetInfravisionTRNFunction · 0.85
ClxDrawLightFunction · 0.85
isOnArenaLevelMethod · 0.80
widthMethod · 0.80
currentSpriteMethod · 0.45

Tested by

no test coverage detected