package sharedDistribution type SkirdaGame interface { // SkirdaGameId string GetSkirdaGameId() string GetInterfaceAsset(gameId string) JSGameInterface GetLaunchArgs() []string // Launch(gameId string) error } type SkirdaGames struct { Steam []SteamGame Minecraft MinecraftGame //TODO: To slice } func (games SkirdaGames) GetGameTypeById(skirdaGameId string) (string, error) { if games.Minecraft.GetSkirdaGameId() == skirdaGameId { return "minecraft", nil } for _, game := range games.Steam { if game.GetSkirdaGameId() == skirdaGameId { return "steam", nil } } return "", nil //TODO: Right error return } func (games SkirdaGames) Test(skirdaGameId string) (interface{}, error) { return games.Minecraft, nil } func (games SkirdaGames) GetInterfaceAssets() []JSGameInterface { assets := []JSGameInterface{} assets = append(assets, games.Minecraft.GetInterfaceAsset()) for _, game := range games.Steam { assets = append(assets, game.GetInterfaceAsset()) } return assets } func (games SteamGame) Test(skirdaGameId string) (interface{}, error) { return SteamGame{}, nil } func (game SteamGame) GetSkirdaGameId() string { return game.SkirdaGameId } func (game MinecraftGame) GetSkirdaGameId() string { return game.SkirdaGameId } func (game MinecraftGame) GetMinecraftVersion() string { return game.CurrentVersion } func (games SkirdaGames) GetLaunchCmd(skirdaGameId string, os string) (string, []string, error) { gameType, err := games.GetGameTypeById(skirdaGameId) if err != nil { return "", nil, nil } switch gameType { case "minecraft": switch os { case "windows": return "notepad", []string{""}, nil default: return "", []string{}, nil } default: return "", nil, nil } } // func (games SkirdaGames) FindGameByID(gameId string) (SkirdaGame, error) { // for _, game := range games { // if game.GetSkirdaGameId() == gameId { // return game, nil // } // } // kek := SkirdaGame // return game, nil //TODO: Right error return // } // func (game MinecraftGame) GetLaunchArgs() (string, []string, error) { // switch os := runtime.GOOS; os { // case "windows": // return "java", []string{"-version"}, nil // default: // return "", []string{}, nil // } // } func (game SteamGame) GetInterfaceAsset() JSGameInterface { return JSGameInterface{ GameID: game.SkirdaGameId, Title: game.Assets.Title, Icon: game.Assets.Icon, Description: game.Assets.Description, } } func (game MinecraftGame) GetInterfaceAsset() JSGameInterface { return JSGameInterface{ GameID: game.SkirdaGameId, Title: game.Assets.Title, Icon: game.Assets.Icon, Description: game.Assets.Description, } } type MinecraftGame struct { SkirdaGameId string Assets GameInterfaceAssets CurrentVersion string } type SteamGame struct { SkirdaGameId string SteamId string Args []Argument OptionalArgs []Argument //TODO: Settings?? Assets GameInterfaceAssets Platforms map[string]bool } type LocalGame struct { GameId string } type GameInterfaceAssets struct { Title string Icon string Description string Backgrounds []GameInterfaceBackground } type GameInterfaceBackground struct { File string } type JSGameInterface struct { GameID string `json:"gameId"` Title string `json:"title"` Icon string `json:"icon"` Description string `json:"description"` } type Argument struct { Body string Value string }