Improve map lock and smart heading behavior
This commit is contained in:
@@ -42,6 +42,7 @@ type MapPageData = MapEngineViewState & {
|
||||
compassLabels: CompassLabelData[]
|
||||
sideButtonMode: SideButtonMode
|
||||
sideToggleIconSrc: string
|
||||
sideButton2Class: string
|
||||
sideButton4Class: string
|
||||
sideButton11Class: string
|
||||
sideButton16Class: string
|
||||
@@ -49,7 +50,7 @@ type MapPageData = MapEngineViewState & {
|
||||
showRightButtonGroups: boolean
|
||||
showBottomDebugButton: boolean
|
||||
}
|
||||
const INTERNAL_BUILD_VERSION = 'map-build-207'
|
||||
const INTERNAL_BUILD_VERSION = 'map-build-213'
|
||||
const CLASSIC_REMOTE_GAME_CONFIG_URL = 'https://oss-mbh5.colormaprun.com/gotomars/event/classic-sequential.json'
|
||||
const SCORE_O_REMOTE_GAME_CONFIG_URL = 'https://oss-mbh5.colormaprun.com/gotomars/event/score-o.json'
|
||||
let mapEngine: MapEngine | null = null
|
||||
@@ -131,13 +132,19 @@ function getSideActionButtonClass(state: SideActionButtonState): string {
|
||||
return 'map-side-button map-side-button--default'
|
||||
}
|
||||
|
||||
function buildSideButtonState(data: Pick<MapPageData, 'sideButtonMode' | 'showGameInfoPanel' | 'skipButtonEnabled' | 'gameSessionStatus'>) {
|
||||
function buildSideButtonState(data: Pick<MapPageData, 'sideButtonMode' | 'showGameInfoPanel' | 'skipButtonEnabled' | 'gameSessionStatus' | 'gpsLockEnabled' | 'gpsLockAvailable'>) {
|
||||
const sideButton2State: SideActionButtonState = !data.gpsLockAvailable
|
||||
? 'muted'
|
||||
: data.gpsLockEnabled
|
||||
? 'active'
|
||||
: 'default'
|
||||
const sideButton4State: SideActionButtonState = data.gameSessionStatus === 'idle' ? 'default' : 'active'
|
||||
const sideButton11State: SideActionButtonState = data.showGameInfoPanel ? 'active' : 'default'
|
||||
const sideButton16State: SideActionButtonState = data.skipButtonEnabled ? 'default' : 'muted'
|
||||
|
||||
return {
|
||||
sideToggleIconSrc: getSideToggleIconSrc(data.sideButtonMode),
|
||||
sideButton2Class: getSideActionButtonClass(sideButton2State),
|
||||
sideButton4Class: getSideActionButtonClass(sideButton4State),
|
||||
sideButton11Class: getSideActionButtonClass(sideButton11State),
|
||||
sideButton16Class: getSideActionButtonClass(sideButton16State),
|
||||
@@ -180,6 +187,8 @@ Page({
|
||||
panelProgressText: '0/0',
|
||||
gameSessionStatus: 'idle',
|
||||
gameModeText: '顺序赛',
|
||||
gpsLockEnabled: false,
|
||||
gpsLockAvailable: false,
|
||||
locationSourceMode: 'real',
|
||||
locationSourceText: '真实定位',
|
||||
mockBridgeConnected: false,
|
||||
@@ -239,6 +248,8 @@ Page({
|
||||
showGameInfoPanel: false,
|
||||
skipButtonEnabled: false,
|
||||
gameSessionStatus: 'idle',
|
||||
gpsLockEnabled: false,
|
||||
gpsLockAvailable: false,
|
||||
}),
|
||||
} as unknown as MapPageData,
|
||||
|
||||
@@ -306,6 +317,8 @@ Page({
|
||||
panelProgressText: '0/0',
|
||||
gameSessionStatus: 'idle',
|
||||
gameModeText: '顺序赛',
|
||||
gpsLockEnabled: false,
|
||||
gpsLockAvailable: false,
|
||||
locationSourceMode: 'real',
|
||||
locationSourceText: '真实定位',
|
||||
mockBridgeConnected: false,
|
||||
@@ -363,6 +376,8 @@ Page({
|
||||
showGameInfoPanel: false,
|
||||
skipButtonEnabled: false,
|
||||
gameSessionStatus: 'idle',
|
||||
gpsLockEnabled: false,
|
||||
gpsLockAvailable: false,
|
||||
}),
|
||||
})
|
||||
},
|
||||
@@ -723,9 +738,21 @@ Page({
|
||||
},
|
||||
|
||||
handleForceExitGame() {
|
||||
if (mapEngine) {
|
||||
mapEngine.handleForceExitGame()
|
||||
if (!mapEngine || this.data.gameSessionStatus === 'idle') {
|
||||
return
|
||||
}
|
||||
|
||||
wx.showModal({
|
||||
title: '确认退出',
|
||||
content: '确认强制结束当前对局并返回开始前状态?',
|
||||
confirmText: '确认退出',
|
||||
cancelText: '取消',
|
||||
success: (result) => {
|
||||
if (result.confirm && mapEngine) {
|
||||
mapEngine.handleForceExitGame()
|
||||
}
|
||||
},
|
||||
})
|
||||
},
|
||||
|
||||
handleSkipAction() {
|
||||
@@ -781,6 +808,8 @@ Page({
|
||||
showGameInfoPanel: true,
|
||||
skipButtonEnabled: this.data.skipButtonEnabled,
|
||||
gameSessionStatus: this.data.gameSessionStatus,
|
||||
gpsLockEnabled: this.data.gpsLockEnabled,
|
||||
gpsLockAvailable: this.data.gpsLockAvailable,
|
||||
}),
|
||||
})
|
||||
},
|
||||
@@ -793,6 +822,8 @@ Page({
|
||||
showGameInfoPanel: false,
|
||||
skipButtonEnabled: this.data.skipButtonEnabled,
|
||||
gameSessionStatus: this.data.gameSessionStatus,
|
||||
gpsLockEnabled: this.data.gpsLockEnabled,
|
||||
gpsLockAvailable: this.data.gpsLockAvailable,
|
||||
}),
|
||||
})
|
||||
},
|
||||
@@ -832,9 +863,16 @@ Page({
|
||||
showGameInfoPanel: this.data.showGameInfoPanel,
|
||||
skipButtonEnabled: this.data.skipButtonEnabled,
|
||||
gameSessionStatus: this.data.gameSessionStatus,
|
||||
gpsLockEnabled: this.data.gpsLockEnabled,
|
||||
gpsLockAvailable: this.data.gpsLockAvailable,
|
||||
}),
|
||||
})
|
||||
},
|
||||
handleToggleGpsLock() {
|
||||
if (mapEngine) {
|
||||
mapEngine.handleToggleGpsLock()
|
||||
}
|
||||
},
|
||||
handleToggleMapRotateMode() {
|
||||
if (!mapEngine) {
|
||||
return
|
||||
@@ -856,6 +894,8 @@ Page({
|
||||
showGameInfoPanel: false,
|
||||
skipButtonEnabled: this.data.skipButtonEnabled,
|
||||
gameSessionStatus: this.data.gameSessionStatus,
|
||||
gpsLockEnabled: this.data.gpsLockEnabled,
|
||||
gpsLockAvailable: this.data.gpsLockAvailable,
|
||||
}),
|
||||
})
|
||||
},
|
||||
@@ -868,6 +908,8 @@ Page({
|
||||
showGameInfoPanel: this.data.showGameInfoPanel,
|
||||
skipButtonEnabled: this.data.skipButtonEnabled,
|
||||
gameSessionStatus: this.data.gameSessionStatus,
|
||||
gpsLockEnabled: this.data.gpsLockEnabled,
|
||||
gpsLockAvailable: this.data.gpsLockAvailable,
|
||||
}),
|
||||
})
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user