space-game/src/stores/gameConfig.ts
Michael Mainguy eccf101b73
All checks were successful
Build / build (push) Successful in 1m20s
Implement Svelte-based UI architecture with component system
Major refactoring of the UI layer to use Svelte components:
- Replace inline HTML with modular Svelte components
- Add authentication system with UserProfile component
- Implement navigation store for view management
- Create comprehensive settings and controls screens
- Add level editor with JSON validation
- Implement progression tracking system
- Update level configurations and base station model

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:01:17 -06:00

72 lines
1.8 KiB
TypeScript

import { writable, get } from 'svelte/store';
const STORAGE_KEY = 'game-config';
export interface GameConfigData {
physicsEnabled: boolean;
debugEnabled: boolean;
progressionEnabled: boolean;
shipPhysics: {
maxLinearVelocity: number;
maxAngularVelocity: number;
linearForceMultiplier: number;
angularForceMultiplier: number;
};
}
const defaultConfig: GameConfigData = {
physicsEnabled: true,
debugEnabled: false,
progressionEnabled: true,
shipPhysics: {
maxLinearVelocity: 200,
maxAngularVelocity: 1.4,
linearForceMultiplier: 800,
angularForceMultiplier: 15,
},
};
function loadFromStorage(): GameConfigData {
try {
const stored = localStorage.getItem(STORAGE_KEY);
if (stored) {
const parsed = JSON.parse(stored);
return { ...defaultConfig, ...parsed };
}
} catch (error) {
console.warn('[GameConfig Store] Failed to load from localStorage:', error);
}
return { ...defaultConfig };
}
function createGameConfigStore() {
const initial = loadFromStorage();
const { subscribe, set, update } = writable<GameConfigData>(initial);
return {
subscribe,
update,
set,
save: () => {
const config = get(gameConfigStore);
try {
localStorage.setItem(STORAGE_KEY, JSON.stringify(config));
console.log('[GameConfig Store] Saved to localStorage');
} catch (error) {
console.error('[GameConfig Store] Failed to save:', error);
}
},
reset: () => {
set({ ...defaultConfig });
try {
localStorage.setItem(STORAGE_KEY, JSON.stringify(defaultConfig));
console.log('[GameConfig Store] Reset to defaults');
} catch (error) {
console.error('[GameConfig Store] Failed to save defaults:', error);
}
},
};
}
export const gameConfigStore = createGameConfigStore();