Skip to content

Commit 5ad6157

Browse files
committed
inital input scheme uuids
1 parent 82134c9 commit 5ad6157

6 files changed

Lines changed: 29 additions & 12 deletions

File tree

fission/src/systems/analytics/AnalyticsSystem.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ export interface AnalyticsEvents {
7474
// Scheme Events
7575
"Scheme Applied": {
7676
isCustomized: boolean
77+
schemeId: String
7778
schemeName: string
7879
}
7980

fission/src/systems/input/DefaultInputs.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { TouchControlsAxes } from "@/ui/components/TouchControls"
33
import type { InputScheme, ModifierState } from "./InputTypes"
44
import AxisInput from "./inputs/AxisInput"
55
import ButtonInput from "./inputs/ButtonInput"
6+
import * as uuid from "uuid"
67

78
type InputSupplier = () => InputScheme
89
/** The purpose of this class is to store any defaults related to the input system. */
@@ -15,6 +16,7 @@ class DefaultInputs {
1516
meta: false,
1617
}
1718
return {
19+
schemeId: "7e3893a0-bfe1-48f5-b9cb-d0a2e8735aff",
1820
schemeName: "Ernie",
1921
descriptiveName: "WASD",
2022
customized: false,
@@ -46,6 +48,7 @@ class DefaultInputs {
4648
meta: false,
4749
}
4850
return {
51+
schemeId: "d3679b65-3660-444b-984e-5f97a1a0f0a1",
4952
schemeName: "Bert",
5053
descriptiveName: "WSIK",
5154
customized: false,
@@ -77,6 +80,7 @@ class DefaultInputs {
7780
meta: false,
7881
}
7982
return {
83+
schemeId: "2552cda2-8784-46b6-9661-227b2b6a323f",
8084
schemeName: "Luna",
8185
descriptiveName: "Arrow Keys",
8286
customized: false,
@@ -102,6 +106,7 @@ class DefaultInputs {
102106

103107
public static jax: InputSupplier = () => {
104108
return {
109+
schemeId: "48d1db69-2a71-4244-9b21-cf544af19d5d",
105110
schemeName: "Jax",
106111
descriptiveName: "Full Controller",
107112
customized: false,
@@ -129,6 +134,7 @@ class DefaultInputs {
129134
/** We like this guy */
130135
public static hunter: InputSupplier = () => {
131136
return {
137+
schemeId: "1cd109b1-91cc-4458-a5d9-bdaa9c5c38d2",
132138
schemeName: "Hunter",
133139
descriptiveName: "Left Stick",
134140
customized: false,
@@ -151,6 +157,7 @@ class DefaultInputs {
151157

152158
public static carmela: InputSupplier = () => {
153159
return {
160+
schemeId: "fcce7958-1471-420e-b886-4541b236faff",
154161
schemeName: "Carmela",
155162
descriptiveName: "Right Stick",
156163
customized: false,
@@ -173,6 +180,7 @@ class DefaultInputs {
173180

174181
public static brandon: InputSupplier = () => {
175182
return {
183+
schemeId: "416b39da-6019-49ed-b850-b94e350c61f3",
176184
schemeName: "Brandon",
177185
descriptiveName: "Touch Controls",
178186
customized: false,
@@ -187,6 +195,7 @@ class DefaultInputs {
187195
}
188196
public static julian: InputSupplier = () => {
189197
return {
198+
schemeId: "39b7c8e4-2253-4f07-aa97-35cad79c473e",
190199
schemeName: "Julian",
191200
descriptiveName: "Touch Controls",
192201
customized: false,
@@ -208,6 +217,7 @@ class DefaultInputs {
208217
meta: false,
209218
}
210219
return {
220+
schemeId: "7e9a4167-e2a0-47dd-a596-60e043177c42",
211221
schemeName: "Felix",
212222
descriptiveName: "WASD + Arrows (Swerve)",
213223
customized: false,
@@ -236,6 +246,7 @@ class DefaultInputs {
236246

237247
public static gizmo: InputSupplier = () => {
238248
return {
249+
schemeId: "8cbe6b7e-10ca-4d15-b26b-feedf690f762",
239250
schemeName: "Gizmo",
240251
descriptiveName: "Dual Stick (Swerve)",
241252
customized: false,
@@ -295,6 +306,7 @@ class DefaultInputs {
295306
break
296307
}
297308
return {
309+
schemeId: uuid.v4(),
298310
schemeName: "",
299311
descriptiveName: "",
300312
customized: true,

fission/src/systems/input/InputSchemeManager.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,9 @@ class InputSchemeManager {
8484
}
8585

8686
public static rebindOldBrainSchemes() {
87-
const schemesByName = new Map(this.allInputSchemes.map(s => [s.schemeName, s] as const))
87+
const schemesById = new Map(this.allInputSchemes.map(s => [s.schemeId, s] as const))
8888
for (const [brainIndex, scheme] of InputSystem.brainIndexSchemeMap) {
89-
const reverted = schemesByName.get(scheme.schemeName)
89+
const reverted = schemesById.get(scheme.schemeId)
9090
if (reverted && scheme.customized) {
9191
InputSystem.brainIndexSchemeMap.set(brainIndex, reverted)
9292
}
@@ -104,9 +104,10 @@ class InputSchemeManager {
104104

105105
// Remove schemes that have conflicts
106106
const usedKeyMap = new Map<KeyDescriptor, string[]>()
107+
// maps scheme ids to availability
107108
const result: Record<string, InputSchemeAvailability> = {}
108109
for (const scheme of InputSystem.brainIndexSchemeMap.values()) {
109-
result[scheme.schemeName] = {
110+
result[scheme.schemeId] = {
110111
scheme,
111112
status: InputSchemeUseType.IN_USE,
112113
}
@@ -116,9 +117,9 @@ class InputSchemeManager {
116117
.forEach(key => {
117118
const entry = usedKeyMap.get(key)
118119
if (entry != null) {
119-
entry.push(scheme.schemeName)
120+
entry.push(scheme.schemeId)
120121
} else {
121-
usedKeyMap.set(key, [scheme.schemeName])
122+
usedKeyMap.set(key, [scheme.schemeId])
122123
}
123124
})
124125
})
@@ -129,13 +130,13 @@ class InputSchemeManager {
129130
input.keysUsed.flatMap(key => usedKeyMap.get(key) ?? [])
130131
)
131132
if (conflictingSchemes.length > 0) {
132-
result[scheme.schemeName] ??= {
133+
result[scheme.schemeId] ??= {
133134
scheme,
134135
status: InputSchemeUseType.CONFLICT,
135136
conflictingSchemeNames: [...new Set(conflictingSchemes)].join(", "),
136137
}
137138
} else {
138-
result[scheme.schemeName] ??= {
139+
result[scheme.schemeId] ??= {
139140
scheme,
140141
status: InputSchemeUseType.AVAILABLE,
141142
}

fission/src/systems/input/InputSystem.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class InputSystem extends WorldSystem {
3434
InputSystem.brainIndexSchemeMap.set(index, scheme)
3535
World.analyticsSystem?.event("Scheme Applied", {
3636
isCustomized: scheme.customized,
37+
schemeId: scheme.schemeId,
3738
schemeName: scheme.schemeName,
3839
})
3940
}

fission/src/systems/input/InputTypes.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ export type ModifierState = Readonly<{
2323
}>
2424

2525
export type InputScheme = {
26+
// UUID
27+
schemeId: string
2628
schemeName: string
2729
descriptiveName: string
2830
customized: boolean

fission/src/ui/panels/configuring/initial-config/InputSchemeSelection.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ const SchemeSelector: React.FC<SchemeSelectorProps> = ({
3333
}): ReactElement | null => {
3434
if (scheme.usesTouchControls && !matchMedia("(hover: none)").matches) return null
3535
return (
36-
<Tooltip title={message} key={scheme.schemeName} placement={"left"}>
36+
<Tooltip title={message} key={scheme.schemeId} placement={"left"}>
3737
<Stack
3838
direction="row"
3939
justifyContent={"space-between"}
4040
alignItems={"center"}
4141
gap={"1rem"}
42-
key={scheme.schemeName}
42+
key={scheme.schemeId}
4343
>
4444
<Label size="sm">
4545
{`${scheme.schemeName} | ${scheme.customized ? "Custom" : scheme.descriptiveName}`}
@@ -145,7 +145,7 @@ export default function InputSchemeSelection({ brainIndex, onSelect, panelId }:
145145
.map(scheme => {
146146
return (
147147
<SchemeSelector
148-
key={`available-${scheme.scheme.schemeName}`}
148+
key={`available-${scheme.scheme.schemeId}`}
149149
scheme={scheme.scheme}
150150
panelId={panelId}
151151
brainIndex={brainIndex}
@@ -158,7 +158,7 @@ export default function InputSchemeSelection({ brainIndex, onSelect, panelId }:
158158
?.filter(scheme => scheme.status == InputSchemeUseType.CONFLICT)
159159
.map((scheme, i) => {
160160
return (
161-
<div key={`conflict-${scheme.scheme.schemeName}`}>
161+
<div key={`conflict-${scheme.scheme.schemeId}`}>
162162
{i == 0 && <Divider />}
163163
<SchemeSelector
164164
scheme={scheme.scheme}
@@ -175,7 +175,7 @@ export default function InputSchemeSelection({ brainIndex, onSelect, panelId }:
175175
?.filter(scheme => scheme.status == InputSchemeUseType.IN_USE)
176176
.map((scheme, i) => {
177177
return (
178-
<div key={`in-use-${scheme.scheme.schemeName}`}>
178+
<div key={`in-use-${scheme.scheme.schemeId}`}>
179179
{i == 0 && <Divider />}
180180
<SchemeSelector
181181
scheme={scheme.scheme}

0 commit comments

Comments
 (0)