Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | 1x 1x 17x 16x 16x 16x 16x 16x 16x 16x 16x 16x 16x 16x 17x 1x 17x 15x 15x 17x 2x 17x 14x 14x 17x 1x 17x 15x 15x 16x 16x 16x 16x 16x | import { exactGlyphLength } from '@/constants/restrictions'; export function glyphs2Coords(glyphs: string) { if (glyphs.length !== exactGlyphLength) return ''; const X_Z_POS_SHIFT = 2049; const X_Z_NEG_SHIFT = 2047; const Y_POS_SHIFT = 129; const Y_NEG_SHIFT = 127; const x_glyphs = parseInt(glyphs.substring(9, 12), 16); // NoSonar X coordinate part const y_glyphs = parseInt(glyphs.substring(4, 6), 16); // NoSonar Y coordinate part const z_glyphs = parseInt(glyphs.substring(6, 9), 16); // NoSonar Z coordinate part const system_idx = glyphs.substring(1, 4); // NoSonar system index part let coords_x = 0; let coords_y = 0; let coords_z = 0; if (x_glyphs >= X_Z_POS_SHIFT) { coords_x = x_glyphs - X_Z_POS_SHIFT; } else { coords_x = x_glyphs + X_Z_NEG_SHIFT; } if (z_glyphs >= X_Z_POS_SHIFT) { coords_z = z_glyphs - X_Z_POS_SHIFT; } else { coords_z = z_glyphs + X_Z_NEG_SHIFT; } if (y_glyphs >= Y_POS_SHIFT) { coords_y = y_glyphs - Y_POS_SHIFT; } else { coords_y = y_glyphs + Y_NEG_SHIFT; } const coordData = [coords_x, coords_y, coords_z]; const coordinates = coordData.map((coord) => coord.toString(16).toUpperCase().padStart(4, '0')); coordinates[3] = system_idx.padStart(4, '0').toUpperCase(); // NoSonar the 4 is to bump it to a length of 4 return coordinates.join(':'); } |