115 lines
3.2 KiB
Go
115 lines
3.2 KiB
Go
package baishun
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// toListItem 把联表行模型转换成游戏列表项。
|
|
func (r gameListRow) toListItem() RoomGameListItem {
|
|
return RoomGameListItem{
|
|
ID: r.ConfigID,
|
|
GameID: r.InternalGameID,
|
|
GameType: r.gameTypeName(),
|
|
VendorType: defaultIfBlank(r.VendorType, baishunVendorType),
|
|
VendorGameID: r.vendorGameIDInt(),
|
|
Name: r.name(),
|
|
Cover: r.cover(),
|
|
Category: r.Category,
|
|
Sort: r.Sort,
|
|
LaunchMode: r.launchMode(),
|
|
FullScreen: r.FullScreen,
|
|
GameMode: r.gameMode(),
|
|
SafeHeight: r.safeHeight(),
|
|
Orientation: r.orientation(),
|
|
PackageVersion: r.packageVersion(),
|
|
Status: defaultIfBlank(r.CatalogStatus, baishunCatalogEnabled),
|
|
LaunchParams: r.launchParams(),
|
|
}
|
|
}
|
|
|
|
// name 返回游戏展示名称,优先取目录名称。
|
|
func (r gameListRow) name() string {
|
|
return defaultIfBlank(r.Name, r.CatalogName)
|
|
}
|
|
|
|
// cover 返回游戏封面,优先取目录封面。
|
|
func (r gameListRow) cover() string {
|
|
return defaultIfBlank(r.Cover, defaultIfBlank(r.CatalogCover, r.previewURL()))
|
|
}
|
|
|
|
// previewURL 返回游戏预览地址。
|
|
func (r gameListRow) previewURL() string {
|
|
return defaultIfBlank(r.ExtPreviewURL, r.CatalogPreviewURL)
|
|
}
|
|
|
|
// downloadURL 返回游戏下载地址。
|
|
func (r gameListRow) downloadURL() string {
|
|
return defaultIfBlank(r.PackageURL, r.CatalogDownloadURL)
|
|
}
|
|
|
|
// entryURL 返回游戏实际启动入口。
|
|
func (r gameListRow) entryURL() string {
|
|
switch r.launchMode() {
|
|
case baishunLaunchModeLocalZip:
|
|
if strings.TrimSpace(r.PackageURL) != "" {
|
|
return r.PackageURL
|
|
}
|
|
}
|
|
if strings.TrimSpace(r.CatalogDownloadURL) != "" {
|
|
return r.CatalogDownloadURL
|
|
}
|
|
return defaultIfBlank(r.PackageURL, defaultIfBlank(r.ExtPreviewURL, "mock://baishun"))
|
|
}
|
|
|
|
// packageVersion 返回游戏包版本。
|
|
func (r gameListRow) packageVersion() string {
|
|
return defaultIfBlank(r.ExtPackageVersion, r.CatalogPackageVersion)
|
|
}
|
|
|
|
// safeHeight 返回游戏安全区域高度。
|
|
func (r gameListRow) safeHeight() int {
|
|
if r.ExtSafeHeight > 0 {
|
|
return r.ExtSafeHeight
|
|
}
|
|
return r.CatalogSafeHeight
|
|
}
|
|
|
|
// orientation 返回游戏屏幕方向。
|
|
func (r gameListRow) orientation() int {
|
|
if r.ExtOrientation != nil {
|
|
return *r.ExtOrientation
|
|
}
|
|
return derefInt(r.CatalogOrientation)
|
|
}
|
|
|
|
// launchMode 返回游戏启动模式。
|
|
func (r gameListRow) launchMode() string {
|
|
return defaultIfBlank(r.LaunchMode, baishunLaunchModeRemote)
|
|
}
|
|
|
|
// gameMode 返回游戏模式。
|
|
func (r gameListRow) gameMode() int {
|
|
return baishunFixedGameMode
|
|
}
|
|
|
|
// vendorGameIDInt 返回厂商游戏 ID 的整数值。
|
|
func (r gameListRow) vendorGameIDInt() int {
|
|
parsed, _ := strconv.Atoi(strings.TrimSpace(r.VendorGameID))
|
|
return parsed
|
|
}
|
|
|
|
// currencyIcon 返回货币图标地址。
|
|
func (r gameListRow) currencyIcon() string {
|
|
return r.CurrencyIcon
|
|
}
|
|
|
|
// launchParams 返回 Flutter 统一启动接口使用的扩展参数。
|
|
func (r gameListRow) launchParams() map[string]any {
|
|
return launchParamsWithGameType(r.ExtExtraJSON, r.gameTypeName())
|
|
}
|
|
|
|
func (r gameListRow) gameTypeName() string {
|
|
return gameTypeFromExtraJSON(r.ExtExtraJSON, defaultIfBlank(r.VendorType, baishunVendorType))
|
|
}
|