NScumm.Sky.AutoRoute.InitWalkGrid C# (CSharp) Method

InitWalkGrid() private method

private InitWalkGrid ( byte screen, byte width ) : void
screen byte
width byte
return void
        private void InitWalkGrid(byte screen, byte width)
        {
            byte stretch = 0;
            var screenGrid = _grid.GiveGrid(screen);
            var screenGridPos = Logic.GRID_SIZE;
            var wGridPos = new UShortAccess(_routeGrid, ((RouteGridSize >> 1) - RouteGridWidth - 2) * 2);

            Array.Clear(_routeGrid, 0, _routeGrid.Length);
            byte bitsLeft = 0;
            uint gridData = 0;
            for (byte gridCntY = 0; gridCntY < RouteGridHeight - 2; gridCntY++)
            {
                for (byte gridCntX = 0; gridCntX < RouteGridWidth - 2; gridCntX++)
                {
                    if (bitsLeft == 0)
                    {
                        screenGridPos -= 4;
                        gridData = screenGrid.ToUInt32(screenGridPos);
                        bitsLeft = 32;
                    }
                    if ((gridData & 1) != 0)
                    {
                        wGridPos[0] = 0xFFFF; // block is not accessible
                        stretch = width;
                    }
                    else if (stretch != 0)
                    {
                        wGridPos[0] = 0xFFFF;
                        stretch--;
                    }
                    wGridPos.Offset -= 2;
                    bitsLeft--;
                    gridData >>= 1;
                }
                wGridPos.Offset -= 4;
                stretch = 0;
            }
        }