- Add ESLint with typescript-eslint for unused code detection - Fix 33 unused variable/import warnings across codebase - Remove player_name from leaderboard insert (normalized design) - Add ensureUserProfile() to upsert user display_name to users table - Update leaderboard queries to join with users(display_name) - Add getDisplayName() helper for leaderboard entries 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { writable, get } from 'svelte/store';
|
|
import type { ControllerMapping } from '../ship/input/controllerMapping';
|
|
import { ControllerMappingConfig } from '../ship/input/controllerMapping';
|
|
|
|
const _STORAGE_KEY = 'space-game-controller-mapping';
|
|
|
|
function createControllerMappingStore() {
|
|
const config = ControllerMappingConfig.getInstance();
|
|
const initial = config.getMapping();
|
|
|
|
const { subscribe, set, update } = writable<ControllerMapping>(initial);
|
|
|
|
return {
|
|
subscribe,
|
|
update,
|
|
set: (value: ControllerMapping) => {
|
|
set(value);
|
|
config.setMapping(value);
|
|
},
|
|
save: () => {
|
|
const mapping = get(controllerMappingStore);
|
|
config.setMapping(mapping);
|
|
config.save();
|
|
console.log('[ControllerMapping Store] Saved');
|
|
},
|
|
reset: () => {
|
|
config.resetToDefault();
|
|
config.save();
|
|
set(config.getMapping());
|
|
console.log('[ControllerMapping Store] Reset to defaults');
|
|
},
|
|
validate: () => {
|
|
return config.validate();
|
|
},
|
|
};
|
|
}
|
|
|
|
export const controllerMappingStore = createControllerMappingStore();
|