MCPcopy Create free account
hub / github.com/diasurgical/devilution / DoVision

Function DoVision

Source/lighting.cpp:697–786  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

695}
696
697void DoVision(int nXPos, int nYPos, int nRadius, BOOL doautomap, BOOL visible)
698{
699 BOOL nBlockerFlag;
700 int nCrawlX, nCrawlY, nLineLen, nTrans;
701 int j, k, v, x1adj, x2adj, y1adj, y2adj;
702
703 if (nXPos >= 0 && nXPos <= MAXDUNX && nYPos >= 0 && nYPos <= MAXDUNY) {
704 if (doautomap) {
705 if (dFlags[nXPos][nYPos] >= 0) {
706 SetAutomapView(nXPos, nXPos);
707 }
708 dFlags[nXPos][nYPos] |= BFLAG_EXPLORED;
709 }
710 if (visible) {
711 dFlags[nXPos][nYPos] |= BFLAG_LIT;
712 }
713 dFlags[nXPos][nYPos] |= BFLAG_VISIBLE;
714 }
715
716 for (v = 0; v < 4; v++) {
717 for (j = 0; j < 23; j++) {
718 nBlockerFlag = FALSE;
719 nLineLen = 2 * (nRadius - RadiusAdj[j]);
720 for (k = 0; k < nLineLen && !nBlockerFlag; k += 2) {
721 x1adj = 0;
722 x2adj = 0;
723 y1adj = 0;
724 y2adj = 0;
725 switch (v) {
726 case 0:
727 nCrawlX = nXPos + vCrawlTable[j][k];
728 nCrawlY = nYPos + vCrawlTable[j][k + 1];
729 if (vCrawlTable[j][k] > 0 && vCrawlTable[j][k + 1] > 0) {
730 x1adj = -1;
731 y2adj = -1;
732 }
733 break;
734 case 1:
735 nCrawlX = nXPos - vCrawlTable[j][k];
736 nCrawlY = nYPos - vCrawlTable[j][k + 1];
737 if (vCrawlTable[j][k] > 0 && vCrawlTable[j][k + 1] > 0) {
738 y1adj = 1;
739 x2adj = 1;
740 }
741 break;
742 case 2:
743 nCrawlX = nXPos + vCrawlTable[j][k];
744 nCrawlY = nYPos - vCrawlTable[j][k + 1];
745 if (vCrawlTable[j][k] > 0 && vCrawlTable[j][k + 1] > 0) {
746 x1adj = -1;
747 y2adj = 1;
748 }
749 break;
750 case 3:
751 nCrawlX = nXPos - vCrawlTable[j][k];
752 nCrawlY = nYPos + vCrawlTable[j][k + 1];
753 if (vCrawlTable[j][k] > 0 && vCrawlTable[j][k + 1] > 0) {
754 y1adj = -1;

Callers 3

ProcessVisionListFunction · 0.85
InitMonstersFunction · 0.85
M_DiabloDeathFunction · 0.85

Calls 1

SetAutomapViewFunction · 0.85

Tested by

no test coverage detected