Skip to content

Commit

Permalink
feat: Operators
Browse files Browse the repository at this point in the history
  • Loading branch information
oliversalzburg committed Sep 12, 2024
1 parent e2de2fb commit 179cf84
Show file tree
Hide file tree
Showing 54 changed files with 4,506 additions and 119 deletions.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

9 changes: 8 additions & 1 deletion packages/kitten-analysts/source/entrypoint-backend.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { isNil } from "@oliversalzburg/js-utils/data/nil.js";
import { redirectErrorsToConsole } from "@oliversalzburg/js-utils/errors/console.js";
import Koa from "koa";
import Router from "koa-router";
import { compressToUTF16, decompressFromUTF16 } from "lz-string";
import { writeFileSync } from "node:fs";
import { readdir, readFile } from "node:fs/promises";
import { join } from "node:path";
Expand All @@ -12,6 +13,7 @@ import {
KGNetSaveFromGame,
KGNetSavePersisted,
KGNetSaveUpdate,
KGSaveData,
LOCAL_STORAGE_PATH,
} from "./globals.js";
import {
Expand Down Expand Up @@ -216,12 +218,17 @@ routerNetwork.post("/kgnet/save/upload", context => {
saveStore.set(gameGUID, savegame);
writeFileSync(`${LOCAL_STORAGE_PATH}/${gameGUID}.json`, JSON.stringify(savegame));

// Rebuild payload to also contain the fixed-string telemetry GUID.
const uncompressed = JSON.parse(decompressFromUTF16(gameSave.saveData)) as KGSaveData;
uncompressed.telemetry.guid = "ka-internal-savestate";
const recompressedSaveData = compressToUTF16(JSON.stringify(uncompressed));

const savegameEphemeral: KGNetSavePersisted = {
archived: false,
guid: "ka-internal-savestate",
index: { calendar: { day: calendar.day, year: calendar.year } },
label: "Background Game",
saveData: gameSave.saveData,
saveData: recompressedSaveData,
size: context.request.length,
timestamp: Date.now(),
};
Expand Down
21 changes: 21 additions & 0 deletions packages/kitten-analysts/source/globals.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,27 @@ export const LOCAL_STORAGE_PATH = "/local_storage";

// KGNet Savegame Storage

export interface KGSaveData {
saveVersion: number;
resources: unknown;
telemetry: {
guid: string;
};
game: {
forceShowLimits: unknown;
isCMBREnabled: unknown;
useWorkers: unknown;
colorScheme: unknown;
unlockedSchemes: unknown;
karmaKittens: unknown;
karmaZebras: unknown;
ironWill: unknown;
deadKittens: unknown;
cheatMode: unknown;
opts: unknown;
lastBackup: unknown;
};
}
export interface KGNetSaveFromGame {
guid: string;
metadata: {
Expand Down
6 changes: 5 additions & 1 deletion packages/kitten-analysts/source/network/KittensGameRemote.ts
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,11 @@ export class KittensGameRemote {
console.debug(`<= ${identifyExchange(message)}...`);

const request = new Promise<KittenAnalystsMessage<TMessage> | null>((resolve, reject) => {
if (!socket.isAlive || socket.ws.readyState === WebSocket.CLOSED) {
if (
!socket.isAlive ||
socket.ws.readyState === WebSocket.CLOSED ||
socket.ws.readyState === WebSocket.CLOSING
) {
console.warn("Send request can't be handled, because socket is dead!");
socket.isAlive = false;
resolve(null);
Expand Down
Loading

0 comments on commit 179cf84

Please sign in to comment.