mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-13 15:14:52 +09:00
Fix lint, use of sync method in web UI
This commit is contained in:
1 parent
c4d4cb3afd
commit
70ef8a60ad
3 files changed
+36
-30
No files matched your search
@@ -5,31 +5,31 @@ import { BinaryData, sliceData, readUInt8, readUInt16BE, readUInt32BE, isNode }
|
||||
*/
|
||||
export interface ParsedPlayerPositions {
|
||||
/** Player name -> player ID mappings from SessionStart records */
|
||||
playerSessions: Map<string, number>;
|
||||
playerSessions: Map<string, number>;
|
||||
/** Maximum player ID found in the file */
|
||||
maxPlayerId: number;
|
||||
maxPlayerId: number;
|
||||
/** All position records in the file */
|
||||
positions: PlayerPositionRecord[];
|
||||
positions: PlayerPositionRecord[];
|
||||
}
|
||||
|
||||
export interface PlayerPositionRecord {
|
||||
type: number;
|
||||
playerId: number;
|
||||
type: number;
|
||||
playerId: number;
|
||||
// Position record fields
|
||||
tSec?: number;
|
||||
sec?: number;
|
||||
xTiles?: number;
|
||||
yTiles?: number;
|
||||
tSec?: number;
|
||||
sec?: number;
|
||||
xTiles?: number;
|
||||
yTiles?: number;
|
||||
// Session record fields
|
||||
tMs?: number;
|
||||
playerName?: string;
|
||||
tMs?: number;
|
||||
playerName?: string;
|
||||
}
|
||||
|
||||
export interface ParsedPlayerPos {
|
||||
name: string;
|
||||
x: number;
|
||||
y: number;
|
||||
sec: number;
|
||||
name: string;
|
||||
x: number;
|
||||
y: number;
|
||||
sec: number;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -121,13 +121,13 @@ export function parsePlayerPositionsBinary(buf: BinaryData): ParsedPlayerPositio
|
||||
* @returns Processing result with position data and new offset
|
||||
*/
|
||||
function parsePositionRecord(buf: BinaryData, offset: number): {
|
||||
success: boolean;
|
||||
newOffset: number;
|
||||
playerId: number;
|
||||
tSec: number;
|
||||
sec: number;
|
||||
xTiles: number;
|
||||
yTiles: number;
|
||||
success: boolean;
|
||||
newOffset: number;
|
||||
playerId: number;
|
||||
tSec: number;
|
||||
sec: number;
|
||||
xTiles: number;
|
||||
yTiles: number;
|
||||
} {
|
||||
// Position record: 4 + 4 + 3 + 3 + 2 = 16 bytes
|
||||
if (offset + 16 > buf.length) {
|
||||
@@ -248,12 +248,12 @@ export function parseAndDeduplicatePlayerPositions(buf: BinaryData): Map<number,
|
||||
const x = record.xTiles * 32;
|
||||
const y = record.yTiles * 32;
|
||||
|
||||
playerTimelines.get(record.playerId)!.push({
|
||||
name,
|
||||
x,
|
||||
y,
|
||||
sec: record.sec,
|
||||
});
|
||||
playerTimelines.get(record.playerId)!.push({
|
||||
name,
|
||||
x,
|
||||
y,
|
||||
sec: record.sec,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,12 +69,18 @@ const CHUNK_SIZE = 32; // 32x32 pixels per chunk
|
||||
const TILE_SIZE = 256; // 256x256 pixels per tile (8x8 chunks)
|
||||
const CHUNKS_PER_TILE = 8;
|
||||
|
||||
const inflateAsync = (data: Uint8Array): Promise<Uint8Array> => new Promise((resolve, reject) => {
|
||||
zlib.inflate(data, (err, result) => {
|
||||
if (err) { reject(err); }
|
||||
resolve(result);
|
||||
});
|
||||
});
|
||||
|
||||
// Convert raw chart data to ImageData
|
||||
async function chartDataToImageData(chartData: string): Promise<ImageData> {
|
||||
// Decode base64 and decompress
|
||||
const compressedData = Buffer.from(chartData, "base64");
|
||||
const decompressed = zlib.inflateSync(compressedData);
|
||||
const decompressed = Buffer.from(await inflateAsync(compressedData));
|
||||
|
||||
// Create RGBA image data (32x32 pixels)
|
||||
const imageData = new Uint8ClampedArray(32 * 32 * 4);
|
||||
|
||||
@@ -3,7 +3,7 @@ const path = require("path");
|
||||
const webpack = require("webpack");
|
||||
const { merge } = require("webpack-merge");
|
||||
|
||||
// eslint-disable-next-line node/no-unpublished-require
|
||||
|
||||
const common = require("@clusterio/web_ui/webpack.common");
|
||||
|
||||
module.exports = (env = {}) => merge(common(env), {
|
||||
|
||||
Reference in new issue
Block a user