Android build v1.1.41
This commit is contained in:
Binary file not shown.
@@ -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 121
|
versionCode 122
|
||||||
versionName "1.1.40"
|
versionName "1.1.41"
|
||||||
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.
|
||||||
|
|||||||
+30
@@ -1437,6 +1437,36 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 1000px) and (max-height: 620px) {
|
@media (max-width: 1000px) and (max-height: 620px) {
|
||||||
|
.pause-screen.iwt2-arena-overlay {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pause-screen.iwt2-arena-overlay > .iwt2-result-panel {
|
||||||
|
gap: 8px;
|
||||||
|
max-height: calc(100dvh - 20px);
|
||||||
|
max-width: 460px;
|
||||||
|
min-width: min(460px, calc(100vw - 20px));
|
||||||
|
padding: 12px 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.iwt2-result-panel .iwt2-result-crest {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.iwt2-result-panel h1 {
|
||||||
|
font-size: 1.35rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.iwt2-result-summary {
|
||||||
|
gap: 6px;
|
||||||
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||||
|
}
|
||||||
|
|
||||||
|
.iwt2-result-summary span {
|
||||||
|
min-height: 42px;
|
||||||
|
padding: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
.iwt2-arena-layout {
|
.iwt2-arena-layout {
|
||||||
grid-template-columns: 154px minmax(0, 1fr);
|
grid-template-columns: 154px minmax(0, 1fr);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,7 +84,9 @@ export function AuthScreen({ onContinue }: Props) {
|
|||||||
const result = await loadIwt2OnlineSave()
|
const result = await loadIwt2OnlineSave()
|
||||||
if (cancelled()) return
|
if (cancelled()) return
|
||||||
setOnlineSave(result.save)
|
setOnlineSave(result.save)
|
||||||
setMessage(result.save ? 'Online save ready. Choose its local destination slot.' : 'Account has no online IWT2 save yet.')
|
setMessage(result.save
|
||||||
|
? 'Online save ready. Load it below, or continue a local slot and upload it from Cloud Backup.'
|
||||||
|
: 'No online save yet. Continue a local slot, then use Cloud Backup to upload it.')
|
||||||
setMessageIsError(false)
|
setMessageIsError(false)
|
||||||
} catch (reason) {
|
} catch (reason) {
|
||||||
if (cancelled()) return
|
if (cancelled()) return
|
||||||
@@ -127,7 +129,7 @@ export function AuthScreen({ onContinue }: Props) {
|
|||||||
if (!save) return
|
if (!save) return
|
||||||
selectActiveIwt2SaveSlot(slot)
|
selectActiveIwt2SaveSlot(slot)
|
||||||
selectOfflineMode()
|
selectOfflineMode()
|
||||||
onContinue({ localSlot: slot, save, onlineBackupsAvailable: false })
|
onContinue({ localSlot: slot, save, onlineBackupsAvailable: Boolean(account) })
|
||||||
}
|
}
|
||||||
|
|
||||||
function openCharacterEditor(slot: Iwt2LocalSaveSlot) {
|
function openCharacterEditor(slot: Iwt2LocalSaveSlot) {
|
||||||
@@ -151,7 +153,7 @@ export function AuthScreen({ onContinue }: Props) {
|
|||||||
replaceIwt2Save(save, slot)
|
replaceIwt2Save(save, slot)
|
||||||
selectActiveIwt2SaveSlot(slot)
|
selectActiveIwt2SaveSlot(slot)
|
||||||
selectOfflineMode()
|
selectOfflineMode()
|
||||||
onContinue({ localSlot: slot, save, onlineBackupsAvailable: false })
|
onContinue({ localSlot: slot, save, onlineBackupsAvailable: Boolean(account) })
|
||||||
}
|
}
|
||||||
|
|
||||||
async function signIn(event: React.FormEvent) {
|
async function signIn(event: React.FormEvent) {
|
||||||
|
|||||||
@@ -59,10 +59,14 @@ type OverlayNavEntry = {
|
|||||||
column: number
|
column: number
|
||||||
}
|
}
|
||||||
|
|
||||||
const DEFAULT_OVERLAY_NAV_ENTRIES: OverlayNavEntry[] = [
|
const PAUSE_OVERLAY_NAV_ENTRIES: OverlayNavEntry[] = [
|
||||||
{ action: 'primary', row: 0, column: 0 },
|
{ action: 'primary', row: 0, column: 0 },
|
||||||
{ action: 'menu', row: 1, column: 0 },
|
{ action: 'menu', row: 1, column: 0 },
|
||||||
]
|
]
|
||||||
|
const RESULT_OVERLAY_NAV_ENTRIES: OverlayNavEntry[] = [
|
||||||
|
{ action: 'primary', row: 0, column: 0 },
|
||||||
|
{ action: 'menu', row: 0, column: 1 },
|
||||||
|
]
|
||||||
const PVP_RESULT_OVERLAY_NAV_ENTRIES: OverlayNavEntry[] = [
|
const PVP_RESULT_OVERLAY_NAV_ENTRIES: OverlayNavEntry[] = [
|
||||||
{ action: 'primary', row: 0, column: 0 },
|
{ action: 'primary', row: 0, column: 0 },
|
||||||
{ action: 'requeue', row: 0, column: 1 },
|
{ action: 'requeue', row: 0, column: 1 },
|
||||||
@@ -693,8 +697,9 @@ function rewardDifficultySlugForKill(
|
|||||||
}
|
}
|
||||||
|
|
||||||
function overlayNavEntriesFor(status: ArenaStatus, pvpRoguelike: boolean): OverlayNavEntry[] {
|
function overlayNavEntriesFor(status: ArenaStatus, pvpRoguelike: boolean): OverlayNavEntry[] {
|
||||||
|
if (status === 'paused') return PAUSE_OVERLAY_NAV_ENTRIES
|
||||||
if (pvpRoguelike && (status === 'victory' || status === 'defeat')) return PVP_RESULT_OVERLAY_NAV_ENTRIES
|
if (pvpRoguelike && (status === 'victory' || status === 'defeat')) return PVP_RESULT_OVERLAY_NAV_ENTRIES
|
||||||
return DEFAULT_OVERLAY_NAV_ENTRIES
|
return RESULT_OVERLAY_NAV_ENTRIES
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatBossEncounterTitle(bosses: Iwt2ArenaState['bosses']): string {
|
function formatBossEncounterTitle(bosses: Iwt2ArenaState['bosses']): string {
|
||||||
|
|||||||
@@ -1886,7 +1886,9 @@ export function Iwt2CloudSaveScreen({
|
|||||||
const [onlineSave, setOnlineSave] = useState<Iwt2Save | null>(null)
|
const [onlineSave, setOnlineSave] = useState<Iwt2Save | null>(null)
|
||||||
const [syncingOnlineSave, setSyncingOnlineSave] = useState(false)
|
const [syncingOnlineSave, setSyncingOnlineSave] = useState(false)
|
||||||
const [message, setMessage] = useState('')
|
const [message, setMessage] = useState('')
|
||||||
const statusMessage = message || (!onlineBackupsAvailable ? 'Online save unavailable in offline mode.' : '')
|
const statusMessage = message || (!onlineBackupsAvailable
|
||||||
|
? 'Sign in at character select to upload or download this local save.'
|
||||||
|
: '')
|
||||||
|
|
||||||
const checkOnlineSave = useCallback(async (isCancelled: () => boolean) => {
|
const checkOnlineSave = useCallback(async (isCancelled: () => boolean) => {
|
||||||
setSyncingOnlineSave(true)
|
setSyncingOnlineSave(true)
|
||||||
@@ -1923,7 +1925,7 @@ export function Iwt2CloudSaveScreen({
|
|||||||
|
|
||||||
const handleUseLocalSave = useCallback(async () => {
|
const handleUseLocalSave = useCallback(async () => {
|
||||||
if (!onlineBackupsAvailable) {
|
if (!onlineBackupsAvailable) {
|
||||||
setMessage('Using local save. Sign in online to update the server copy.')
|
setMessage('Using local save. Sign in at character select to update the server copy.')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
setSyncingOnlineSave(true)
|
setSyncingOnlineSave(true)
|
||||||
|
|||||||
Reference in New Issue
Block a user