2026-05-12 19:34:47 +08:00

71 lines
2.1 KiB
Go

package http
import gamev1 "hyapp.local/api/proto/game/v1"
type gameListData struct {
Games []gameItemData `json:"games"`
ServerTimeMS int64 `json:"server_time_ms"`
}
type gameItemData struct {
GameID string `json:"game_id"`
PlatformCode string `json:"platform_code"`
NameKey string `json:"name_key"`
Name string `json:"name"`
IconURL string `json:"icon_url"`
CoverURL string `json:"cover_url"`
Category string `json:"category"`
LaunchMode string `json:"launch_mode"`
Orientation string `json:"orientation"`
MinCoin int64 `json:"min_coin"`
Enabled bool `json:"enabled"`
Maintenance bool `json:"maintenance"`
SortOrder int32 `json:"sort_order"`
}
type gameLaunchData struct {
SessionID string `json:"session_id"`
LaunchURL string `json:"launch_url"`
ExpiresAtMS int64 `json:"expires_at_ms"`
Orientation string `json:"orientation"`
ServerTimeMS int64 `json:"server_time_ms"`
}
func gameListDataFromProto(resp *gamev1.ListGamesResponse) gameListData {
if resp == nil {
return gameListData{}
}
items := make([]gameItemData, 0, len(resp.GetGames()))
for _, item := range resp.GetGames() {
items = append(items, gameItemData{
GameID: item.GetGameId(),
PlatformCode: item.GetPlatformCode(),
NameKey: item.GetNameKey(),
Name: item.GetName(),
IconURL: item.GetIconUrl(),
CoverURL: item.GetCoverUrl(),
Category: item.GetCategory(),
LaunchMode: item.GetLaunchMode(),
Orientation: item.GetOrientation(),
MinCoin: item.GetMinCoin(),
Enabled: item.GetEnabled(),
Maintenance: item.GetMaintenance(),
SortOrder: item.GetSortOrder(),
})
}
return gameListData{Games: items, ServerTimeMS: resp.GetServerTimeMs()}
}
func gameLaunchDataFromProto(resp *gamev1.LaunchGameResponse) gameLaunchData {
if resp == nil {
return gameLaunchData{}
}
return gameLaunchData{
SessionID: resp.GetSessionId(),
LaunchURL: resp.GetLaunchUrl(),
ExpiresAtMS: resp.GetExpiresAtMs(),
Orientation: resp.GetOrientation(),
ServerTimeMS: resp.GetServerTimeMs(),
}
}