/** * @file track.cpp * * Implementation of functionality tracking what the mouse cursor is pointing at. */ #include "all.h" DEVILUTION_BEGIN_NAMESPACE namespace { BYTE sgbIsScrolling; Uint32 sgdwLastWalk; bool sgbIsWalking; } void track_process() { if (!sgbIsWalking) return; if (cursmx < 0 || cursmx >= MAXDUNX - 1 || cursmy < 0 || cursmy >= MAXDUNY - 1) return; if (plr[myplr]._pVar8 <= 6 && plr[myplr]._pmode != PM_STAND) return; if (cursmx != plr[myplr]._ptargx || cursmy != plr[myplr]._ptargy) { Uint32 tick = SDL_GetTicks(); if ((int)(tick - sgdwLastWalk) >= tick_delay * 6) { sgdwLastWalk = tick; NetSendCmdLoc(true, CMD_WALKXY, cursmx, cursmy); if (!sgbIsScrolling) sgbIsScrolling = true; } } } void track_repeat_walk(bool rep) { if (sgbIsWalking == rep) return; sgbIsWalking = rep; if (rep) { sgbIsScrolling = false; sgdwLastWalk = SDL_GetTicks() - tick_delay; NetSendCmdLoc(true, CMD_WALKXY, cursmx, cursmy); } else if (sgbIsScrolling) { sgbIsScrolling = false; } } bool track_isscrolling() { return sgbIsScrolling; } DEVILUTION_END_NAMESPACE