Compare commits

...
1 Commits
Author SHA1 Message Date
Warren H a121b2ef74 Android build v1.1.13 2026-07-03 01:01:32 -04:00
4 changed files with 18 additions and 18 deletions
+1
View File
@@ -11,6 +11,7 @@
## Input Requirements ## Input Requirements
- Every game screen, menu, dialog, overlay, and gameplay interaction must be fully navigable by controller at all times. - Every game screen, menu, dialog, overlay, and gameplay interaction must be fully navigable by controller at all times.
- Any time a screen, menu, dialog, overlay, or gameplay interaction is added or changed, verify controller navigation still works for that surface before considering the work complete.
- Controller navigation must not depend on touch, mouse, keyboard, or hidden developer-only shortcuts. - Controller navigation must not depend on touch, mouse, keyboard, or hidden developer-only shortcuts.
- Focus state must always be visible and predictable when controller navigation is active. - Focus state must always be visible and predictable when controller navigation is active.
- Avoid interaction patterns that trap focus, lose focus, or require precise pointer input. - Avoid interaction patterns that trap focus, lose focus, or require precise pointer input.
Binary file not shown.
+2 -2
View File
@@ -7,8 +7,8 @@ android {
applicationId "com.warren.iwanttoheal" applicationId "com.warren.iwanttoheal"
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 91 versionCode 92
versionName "1.1.12" versionName "1.1.13"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
aaptOptions { aaptOptions {
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
+9 -10
View File
@@ -944,24 +944,23 @@ export function PvpStadiumScreen({
const finishShop = useCallback(() => { const finishShop = useCallback(() => {
if (shopReady || status !== 'shop') return if (shopReady || status !== 'shop') return
const liveMatch = liveMatchRef.current
if (!liveMatch) {
startNextRound()
return
}
setShopReady(true) setShopReady(true)
submittedShopRef.current = true submittedShopRef.current = true
setPlayerSide((current) => { const readyPlayer = { ...playerRef.current, shopReady: true }
const next = { ...current, shopReady: true } playerRef.current = readyPlayer
playerRef.current = next setPlayerSide(readyPlayer)
return next submitPvpUpgradeChoice(liveMatch.id, {
})
if (liveMatchRef.current) {
submitPvpUpgradeChoice(liveMatchRef.current.id, {
encounterIndex: roundIndex, encounterIndex: roundIndex,
buffId: 'stadium-shop', buffId: 'stadium-shop',
debuffId: '', debuffId: '',
purchases: playerRef.current.buffs, purchases: playerRef.current.buffs,
shopReady: true, shopReady: true,
}).catch(() => undefined) }).catch(() => undefined)
return
}
startNextRound()
}, [roundIndex, shopReady, startNextRound, status]) }, [roundIndex, shopReady, startNextRound, status])
const { rematchRequested, rematchMessage, handleRematch } = usePvpLiveMatchSync<StadiumSideState, LivePvpMatch>({ const { rematchRequested, rematchMessage, handleRematch } = usePvpLiveMatchSync<StadiumSideState, LivePvpMatch>({