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

Function SyncInitPlrPos

Source/player.cpp:3808–3856  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3806}
3807
3808void SyncInitPlrPos(int pnum)
3809{
3810 int x, y, xx, yy, range;
3811 DWORD i;
3812 BOOL posOk;
3813
3814 plr[pnum]._ptargx = plr[pnum].WorldX;
3815 plr[pnum]._ptargy = plr[pnum].WorldY;
3816
3817 if (gbMaxPlayers == 1 || plr[pnum].plrlevel != currlevel) {
3818 return;
3819 }
3820
3821 for (i = 0; i < 8; i++) {
3822 x = plr[pnum].WorldX + plrxoff2[i];
3823 y = plr[pnum].WorldY + plryoff2[i];
3824 if (PosOkPlayer(pnum, x, y)) {
3825 break;
3826 }
3827 }
3828
3829 if (!PosOkPlayer(pnum, x, y)) {
3830 posOk = FALSE;
3831 for (range = 1; range < 50 && !posOk; range++) {
3832 for (yy = -range; yy <= range && !posOk; yy++) {
3833 y = yy + plr[pnum].WorldY;
3834 for (xx = -range; xx <= range && !posOk; xx++) {
3835 x = xx + plr[pnum].WorldX;
3836 if (PosOkPlayer(pnum, x, y) && !PosOkPortal(currlevel, x, y)) {
3837 posOk = TRUE;
3838 }
3839 }
3840 }
3841 }
3842 }
3843
3844 plr[pnum].WorldX = x;
3845 plr[pnum].WorldY = y;
3846 dPlayer[x][y] = pnum + 1;
3847
3848 if (pnum == myplr) {
3849 plr[pnum]._px = x;
3850 plr[pnum]._py = y;
3851 plr[pnum]._ptargx = x;
3852 plr[pnum]._ptargy = y;
3853 ViewX = x;
3854 ViewY = y;
3855 }
3856}
3857
3858void SyncInitPlr(int pnum)
3859{

Callers 2

LoadGameLevelFunction · 0.85
SyncInitPlrFunction · 0.85

Calls 2

PosOkPlayerFunction · 0.85
PosOkPortalFunction · 0.85

Tested by

no test coverage detected