From d30cc8688f9274f60cb2e2a6bd723c7a4cca2b84 Mon Sep 17 00:00:00 2001 From: thepaperpilot <thepaperpilot@gmail.com> Date: Tue, 17 Aug 2021 22:30:49 -0500 Subject: [PATCH] Made setupFeatures use more accurate types --- src/game/layers.ts | 41 ++++++++++++++++++++--------------------- src/typings/layer.d.ts | 4 ++-- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/src/game/layers.ts b/src/game/layers.ts index c4c9783..ccf4292 100644 --- a/src/game/layers.ts +++ b/src/game/layers.ts @@ -92,11 +92,10 @@ export function addLayer(layer: RawLayer, player?: Partial<PlayerData>): void { } } if (layer.upgrades) { - setupFeatures< - RawGridFeatures<GridFeatures<Upgrade>, Upgrade>, - GridFeatures<Upgrade>, - Upgrade - >(layer.id, layer.upgrades); + setupFeatures<NonNullable<RawLayer["upgrades"]>, NonNullable<Layer["upgrades"]>, Upgrade>( + layer.id, + layer.upgrades + ); setRowCol(layer.upgrades); for (const id in layer.upgrades.data) { layer.upgrades.data[id].bought = function() { @@ -190,8 +189,8 @@ export function addLayer(layer: RawLayer, player?: Partial<PlayerData>): void { } if (layer.achievements) { setupFeatures< - RawGridFeatures<GridFeatures<Achievement>, Achievement>, - GridFeatures<Achievement>, + NonNullable<RawLayer["achievements"]>, + NonNullable<Layer["achievements"]>, Achievement >(layer.id, layer.achievements); setRowCol(layer.achievements); @@ -209,8 +208,8 @@ export function addLayer(layer: RawLayer, player?: Partial<PlayerData>): void { } if (layer.challenges) { setupFeatures< - RawGridFeatures<GridFeatures<Challenge>, Challenge>, - GridFeatures<Challenge>, + NonNullable<RawLayer["challenges"]>, + NonNullable<Layer["challenges"]>, Challenge >(layer.id, layer.challenges); setRowCol(layer.challenges); @@ -301,11 +300,10 @@ export function addLayer(layer: RawLayer, player?: Partial<PlayerData>): void { } } if (layer.buyables) { - setupFeatures< - RawGridFeatures<GridFeatures<Buyable>, Buyable>, - GridFeatures<Buyable>, - Buyable - >(layer.id, layer.buyables); + setupFeatures<NonNullable<RawLayer["buyables"]>, NonNullable<Layer["buyables"]>, Buyable>( + layer.id, + layer.buyables + ); setRowCol(layer.buyables); setDefault(layer.buyables, "respec", undefined, false); setDefault( @@ -353,8 +351,8 @@ export function addLayer(layer: RawLayer, player?: Partial<PlayerData>): void { } if (layer.clickables) { setupFeatures< - RawGridFeatures<GridFeatures<Clickable>, Clickable>, - GridFeatures<Clickable>, + NonNullable<RawLayer["clickables"]>, + NonNullable<Layer["clickables"]>, Clickable >(layer.id, layer.clickables); setRowCol(layer.clickables); @@ -375,10 +373,11 @@ export function addLayer(layer: RawLayer, player?: Partial<PlayerData>): void { } } if (layer.milestones) { - setupFeatures<RawFeatures<Features<Milestone>, Milestone>, Features<Milestone>, Milestone>( - layer.id, - layer.milestones - ); + setupFeatures< + NonNullable<RawLayer["milestones"]>, + NonNullable<Layer["milestones"]>, + Milestone + >(layer.id, layer.milestones); for (const id in layer.milestones.data) { layer.milestones.data[id].earned = function() { return ( @@ -416,7 +415,7 @@ export function addLayer(layer: RawLayer, player?: Partial<PlayerData>): void { } } if (layer.grids) { - setupFeatures<RawFeatures<Features<Grid>, Grid>, Features<Grid>, Grid>( + setupFeatures<NonNullable<RawLayer["grids"]>, NonNullable<Layer["grids"]>, Grid>( layer.id, layer.grids ); diff --git a/src/typings/layer.d.ts b/src/typings/layer.d.ts index a03bd14..9059174 100644 --- a/src/typings/layer.d.ts +++ b/src/typings/layer.d.ts @@ -37,7 +37,7 @@ export interface RawLayer extends RawFeature<Layer> { subtabs?: Record<string, RawFeature<Subtab>>; microtabs?: Record<string, RawMicrotabFamily>; upgrades?: RawGridFeatures<NonNullable<Layer["upgrades"]>, Upgrade>; - startData?: () => Record<string, any>; + startData?: () => Record<string, State>; } export interface Layer extends Feature { @@ -115,7 +115,7 @@ export interface Layer extends Feature { activeSubtab?: Subtab | undefined; microtabs?: Record<string, MicrotabFamily>; upgrades?: GridFeatures<Upgrade>; - startData?: () => Record<string, any>; + startData?: () => Record<string, State>; click?: () => void; automate?: () => void; reset: (force?: boolean) => void;