87ddf1499d
Cross-platform Krunker.io game client forked from Krunker Police Client with all KPD/moderator features stripped: no KPD auth, OBS recording, evidence uploads, yt-dlp, bytenode, or code obfuscation. Retained: unlimited FPS (custom Electron 42), ad blocking, resource swapper, matchmaker, userscripts, chat translator, Discord RPC, alt account manager, configurable keybinds, and advanced Chromium flags. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
179 lines
4.2 KiB
TypeScript
179 lines
4.2 KiB
TypeScript
import Store from 'electron-store';
|
|
import { detectPlatform } from './platform';
|
|
|
|
export interface Keybind {
|
|
key: string;
|
|
ctrl: boolean;
|
|
shift: boolean;
|
|
alt: boolean;
|
|
}
|
|
|
|
export interface SavedAccount {
|
|
label: string;
|
|
username: string;
|
|
password: string;
|
|
}
|
|
|
|
export interface AppConfig {
|
|
window: {
|
|
width: number;
|
|
height: number;
|
|
x: number | undefined;
|
|
y: number | undefined;
|
|
maximized: boolean;
|
|
fullscreen: boolean;
|
|
};
|
|
performance: {
|
|
fpsUnlocked: boolean;
|
|
hardwareAccel: boolean;
|
|
gpuPreference: 'high-performance' | 'low-power' | 'default';
|
|
};
|
|
game: {
|
|
lastServer: string;
|
|
socialTabBehaviour: 'New Window' | 'Same Window';
|
|
joinAsSpectator: boolean;
|
|
};
|
|
swapper: {
|
|
enabled: boolean;
|
|
path: string;
|
|
};
|
|
matchmaker: {
|
|
enabled: boolean;
|
|
regions: string[];
|
|
gamemodes: string[];
|
|
minPlayers: number;
|
|
maxPlayers: number;
|
|
minRemainingTime: number;
|
|
openServerBrowser: boolean;
|
|
};
|
|
keybinds: {
|
|
reload: Keybind;
|
|
newMatch: Keybind;
|
|
copyGameLink: Keybind;
|
|
joinFromClipboard: Keybind;
|
|
devTools: Keybind;
|
|
matchmaker: Keybind;
|
|
matchmakerAccept: Keybind;
|
|
matchmakerCancel: Keybind;
|
|
pauseChat: Keybind;
|
|
fullscreenToggle: Keybind;
|
|
};
|
|
userscripts: {
|
|
enabled: boolean;
|
|
path: string;
|
|
};
|
|
ui: {
|
|
showExitButton: boolean;
|
|
deathscreenAnimation: boolean;
|
|
hideMenuPopups: boolean;
|
|
};
|
|
discord: {
|
|
enabled: boolean;
|
|
};
|
|
translator: {
|
|
enabled: boolean;
|
|
targetLanguage: string;
|
|
showLanguageTag: boolean;
|
|
};
|
|
advanced: {
|
|
removeUselessFeatures: boolean;
|
|
gpuRasterizing: boolean;
|
|
helpfulFlags: boolean;
|
|
disableAccelerated2D: boolean;
|
|
increaseLimits: boolean;
|
|
lowLatency: boolean;
|
|
experimentalFlags: boolean;
|
|
angleBackend: string;
|
|
};
|
|
accounts: SavedAccount[];
|
|
platform: {
|
|
detectedOS: string;
|
|
gpuBackend: string;
|
|
};
|
|
}
|
|
|
|
export const DEFAULT_KEYBINDS: AppConfig['keybinds'] = {
|
|
reload: { key: 'F5', ctrl: false, shift: false, alt: false },
|
|
newMatch: { key: 'F4', ctrl: false, shift: false, alt: false },
|
|
copyGameLink: { key: 'l', ctrl: true, shift: false, alt: false },
|
|
joinFromClipboard: { key: 'j', ctrl: true, shift: false, alt: false },
|
|
devTools: { key: 'F12', ctrl: false, shift: false, alt: false },
|
|
matchmaker: { key: 'F6', ctrl: false, shift: false, alt: false },
|
|
matchmakerAccept: { key: 'Enter', ctrl: false, shift: false, alt: false },
|
|
matchmakerCancel: { key: 'Escape', ctrl: false, shift: false, alt: false },
|
|
pauseChat: { key: 'F10', ctrl: false, shift: false, alt: false },
|
|
fullscreenToggle: { key: 'F11', ctrl: false, shift: false, alt: false },
|
|
};
|
|
|
|
const platformInfo = detectPlatform();
|
|
|
|
export const config = new Store<AppConfig>({
|
|
name: 'krunker-civilian-config',
|
|
defaults: {
|
|
window: {
|
|
width: 1600,
|
|
height: 900,
|
|
x: undefined,
|
|
y: undefined,
|
|
maximized: false,
|
|
fullscreen: false,
|
|
},
|
|
performance: {
|
|
fpsUnlocked: true,
|
|
hardwareAccel: true,
|
|
gpuPreference: 'high-performance',
|
|
},
|
|
game: {
|
|
lastServer: '',
|
|
socialTabBehaviour: 'New Window',
|
|
joinAsSpectator: false,
|
|
},
|
|
swapper: {
|
|
enabled: true,
|
|
path: '',
|
|
},
|
|
matchmaker: {
|
|
enabled: true,
|
|
regions: [],
|
|
gamemodes: [],
|
|
minPlayers: 1,
|
|
maxPlayers: 6,
|
|
minRemainingTime: 120,
|
|
openServerBrowser: true,
|
|
},
|
|
keybinds: DEFAULT_KEYBINDS,
|
|
userscripts: {
|
|
enabled: true,
|
|
path: '',
|
|
},
|
|
ui: {
|
|
showExitButton: true,
|
|
deathscreenAnimation: true,
|
|
hideMenuPopups: false,
|
|
},
|
|
discord: {
|
|
enabled: false,
|
|
},
|
|
translator: {
|
|
enabled: true,
|
|
targetLanguage: 'en',
|
|
showLanguageTag: true,
|
|
},
|
|
advanced: {
|
|
removeUselessFeatures: true,
|
|
gpuRasterizing: false,
|
|
helpfulFlags: true,
|
|
disableAccelerated2D: false,
|
|
increaseLimits: false,
|
|
lowLatency: false,
|
|
experimentalFlags: false,
|
|
angleBackend: 'default',
|
|
},
|
|
accounts: [],
|
|
platform: {
|
|
detectedOS: platformInfo.os,
|
|
gpuBackend: platformInfo.gpuBackend,
|
|
},
|
|
},
|
|
});
|