Skip to content

Commit b059824

Browse files
committed
Make compatible with newest go-client
1 parent aa44777 commit b059824

File tree

4 files changed

+52
-54
lines changed

4 files changed

+52
-54
lines changed

new_client.go

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,7 @@ func CreateNewClient(projectName string) error {
3131
return err
3232
}
3333

34-
url := external.TrimURL(data.URL)
35-
baseURL := external.BaseURL("http", external.IsTLS(url), url)
36-
api, err := server.NewAPI(baseURL)
34+
api, err := server.NewAPI(data.URL)
3735
if err != nil {
3836
return err
3937
}
@@ -69,12 +67,12 @@ func CreateNewClient(projectName string) error {
6967
return err
7068
}
7169

72-
eventNames, commandNames, err := cggenevents.GetEventNames(baseURL, cgeVersion)
70+
eventNames, commandNames, err := cggenevents.GetEventNames(api.BaseURL(), cgeVersion)
7371
if err != nil {
7472
return err
7573
}
7674

77-
err = createClientTemplate(module, data.Name, url, libraryURL, eventNames, commandNames)
75+
err = createClientTemplate(module, data.Name, libraryURL, eventNames, commandNames)
7876
if err != nil {
7977
return err
8078
}
@@ -90,8 +88,8 @@ func CreateNewClient(projectName string) error {
9088
return nil
9189
}
9290

93-
func createClientTemplate(modulePath, gameName, serverURL, libraryURL string, eventNames, commandNames []string) error {
94-
return execClientTemplate(modulePath, gameName, serverURL, libraryURL, eventNames, commandNames, false)
91+
func createClientTemplate(modulePath, gameName, libraryURL string, eventNames, commandNames []string) error {
92+
return execClientTemplate(modulePath, gameName, libraryURL, eventNames, commandNames, false)
9593
}
9694

9795
func getClientLibraryURL(clientVersion string) (url string, tag string, err error) {
@@ -108,7 +106,7 @@ func getClientLibraryURL(clientVersion string) (url string, tag string, err erro
108106
return path, tag, nil
109107
}
110108

111-
func execClientTemplate(modulePath, gameName, serverURL, libraryURL string, eventNames, commandNames []string, update bool) error {
109+
func execClientTemplate(modulePath, gameName, libraryURL string, eventNames, commandNames []string, update bool) error {
112110
gamePackageName := strings.ReplaceAll(strings.ReplaceAll(gameName, "-", ""), "_", "")
113111
gameDir := strings.ReplaceAll(strings.ReplaceAll(gameName, "-", ""), "_", "")
114112

@@ -151,14 +149,12 @@ func execClientTemplate(modulePath, gameName, serverURL, libraryURL string, even
151149
}
152150

153151
data := struct {
154-
URL string
155152
LibraryURL string
156153
PackageName string
157154
ModulePath string
158155
Events []event
159156
Commands []event
160157
}{
161-
URL: serverURL,
162158
LibraryURL: libraryURL,
163159
PackageName: gamePackageName,
164160
ModulePath: modulePath,
@@ -167,7 +163,7 @@ func execClientTemplate(modulePath, gameName, serverURL, libraryURL string, even
167163
}
168164

169165
if !update {
170-
err := ExecTemplate(clientMainTemplate, filepath.Join("main.go"), data)
166+
err := ExecTemplate(clientMainTemplate, "main.go", data)
171167
if err != nil {
172168
return err
173169
}

templates/new/client/game.go.tmpl

Lines changed: 40 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -45,27 +45,30 @@ type Player struct {
4545
// Init parses command line arguments with pflag and calls either CreateAndJoinGame, CreateAndSpectateGame, JoinGame, SpectateGame or ReconnectGame depending on the provided commands:
4646
//
4747
// Operations:\n")
48-
// create <username> Create a new game.
49-
// join <game_id> <username> Join an existing game.
50-
// reconnect <username> Reconnect to a previous session.
48+
// create <username> Create a new game.
49+
// join <game_id> <username> <join_secret?> Join an existing game.
50+
// reconnect <username> Reconnect to a previous session.
5151
// Flags:
5252
// --public Make the created game public.
53+
// --protected Make the created game protected.
5354
// --spectate Spectate the created/joined game. The username is not neccessary if this flag is set.
5455
//
5556
// This function calls pflag.Parse() internally. If you want to add your own flags, you will need to register them with pflag *before* calling this function.
5657
func Init(config GameConfig) (*Game, error) {
5758
pflag.Usage = func() {
5859
fmt.Fprintf(os.Stderr, "USAGE: %s [OPTIONS] <operation>\n", os.Args[0])
5960
fmt.Fprintf(os.Stderr, "\nOperations:\n")
60-
fmt.Fprintf(os.Stderr, " create <username> Create a new game.\n")
61-
fmt.Fprintf(os.Stderr, " join <game_id> <username> Join an existing game.\n")
62-
fmt.Fprintf(os.Stderr, " reconnect <username> Reconnect to a previous session.\n")
61+
fmt.Fprintf(os.Stderr, " create <username> Create a new game.\n")
62+
fmt.Fprintf(os.Stderr, " join <game_id> <username> <join_secret?> Join an existing game.\n")
63+
fmt.Fprintf(os.Stderr, " reconnect <username> Reconnect to a previous session.\n")
6364
fmt.Fprintf(os.Stderr, "\nFlags:\n")
6465
pflag.PrintDefaults()
6566
}
6667

6768
var public bool
6869
pflag.BoolVarP(&public, "public", "p", false, "Make the created game public.")
70+
var protected bool
71+
pflag.BoolVarP(&protected, "protected", "p", false, "Make the created game protected.")
6972
var spectate bool
7073
pflag.BoolVarP(&spectate, "spectate", "s", false, "Spectate the created/joined game. The username is not neccessary if this flag is set.")
7174
pflag.Parse()
@@ -86,10 +89,15 @@ func Init(config GameConfig) (*Game, error) {
8689
var err error
8790
switch operation {
8891
case "create":
92+
var joinSecret string
8993
if spectate {
90-
game, err = CreateAndSpectateGame(public, config)
94+
game, joinSecret, err = CreateAndSpectateGame(public, protected, config)
9195
} else {
92-
game, err = CreateAndJoinGame(public, pflag.Arg(1), config)
96+
game, joinSecret, err = CreateAndJoinGame(public, protected, pflag.Arg(1), config)
97+
}
98+
fmt.Println("Game ID:", game.Id)
99+
if joinSecret != "" {
100+
fmt.Println("Join secret:", joinSecret)
93101
}
94102
case "join":
95103
if (!spectate && pflag.NArg() < 3) || (spectate && pflag.NArg() < 2) {
@@ -100,7 +108,11 @@ func Init(config GameConfig) (*Game, error) {
100108
if spectate {
101109
game, err = SpectateGame(pflag.Arg(1))
102110
} else {
103-
game, err = JoinGame(pflag.Arg(1), pflag.Arg(2))
111+
var joinSecret string
112+
if pflag.NArg() > 3 {
113+
joinSecret = pflag.Arg(3)
114+
}
115+
game, err = JoinGame(pflag.Arg(1), pflag.Arg(2), joinSecret)
104116
}
105117
case "reconnect":
106118
game, err = ReconnectGame(pflag.Arg(1))
@@ -117,59 +129,60 @@ func Init(config GameConfig) (*Game, error) {
117129
}
118130

119131
// CreateAndJoinGame creates a new game and joins it immediately after.
120-
func CreateAndJoinGame(public bool, username string, config GameConfig) (*Game, error) {
132+
func CreateAndJoinGame(public, protected bool, username string, config GameConfig) (*Game, string, error) {
121133
socket, err := cg.NewSocket(URL)
122134
if err != nil {
123-
return nil, fmt.Errorf("failed to connect to server: %s", err)
135+
return nil, "", fmt.Errorf("failed to connect to server: %s", err)
124136
}
125137

126-
gameId, err := socket.Create(public, config)
138+
gameId, joinSecret, err := socket.CreateGame(public, protected, config)
127139
if err != nil {
128-
return nil, fmt.Errorf("failed to create game: %s", err)
140+
return nil, "", fmt.Errorf("failed to create game: %s", err)
129141
}
130142

131-
err = socket.Join(gameId, username)
143+
err = socket.Join(gameId, username, joinSecret)
132144
if err != nil {
133-
return nil, fmt.Errorf("failed to join game: %s", err)
145+
return nil, "", fmt.Errorf("failed to join game: %s", err)
134146
}
135147

136148
return &Game{
137149
Id: gameId,
138150
socket: socket,
139-
}, nil
151+
}, joinSecret, nil
140152
}
141153

142154
// CreateAndSpectateGame creates a new game and spectates it immediately after.
143-
func CreateAndSpectateGame(public bool, config GameConfig) (*Game, error) {
155+
func CreateAndSpectateGame(public, protected bool, config GameConfig) (*Game, string, error) {
144156
socket, err := cg.NewSocket(URL)
145157
if err != nil {
146-
return nil, fmt.Errorf("failed to connect to server: %s", err)
158+
return nil, "", fmt.Errorf("failed to connect to server: %s", err)
147159
}
148160

149-
gameId, err := socket.Create(public, config)
161+
gameId, joinSecret, err := socket.CreateGame(public, protected, config)
150162
if err != nil {
151-
return nil, fmt.Errorf("failed to create game: %s", err)
163+
return nil, "", fmt.Errorf("failed to create game: %s", err)
152164
}
153165

154166
err = socket.Spectate(gameId)
155167
if err != nil {
156-
return nil, fmt.Errorf("failed to spectate game: %s", err)
168+
return nil, "", fmt.Errorf("failed to spectate game: %s", err)
157169
}
158170

159171
return &Game{
160172
Id: gameId,
161173
socket: socket,
162-
}, nil
174+
}, joinSecret, nil
163175
}
164176

165177
// JoinGame joins the game with the specified id.
166-
func JoinGame(gameId, username string) (*Game, error) {
178+
// Leave joinSecret empty if the game is not protected.
179+
func JoinGame(gameId, username, joinSecret string) (*Game, error) {
167180
socket, err := cg.NewSocket(URL)
168181
if err != nil {
169182
return nil, fmt.Errorf("failed to connect to server: %s", err)
170183
}
171184

172-
err = socket.Join(gameId, username)
185+
err = socket.Join(gameId, username, joinSecret)
173186
if err != nil {
174187
return nil, fmt.Errorf("failed to join game: %s", err)
175188
}
@@ -230,9 +243,9 @@ func (g *Game) Update() error {
230243
return err
231244
}
232245

233-
// ResolveUsername returns the username associated with playerId.
234-
func (g *Game) ResolveUsername(playerId string) string {
235-
return g.socket.ResolveUsername(playerId)
246+
// Username returns the username associated with playerId.
247+
func (g *Game) Username(playerId string) string {
248+
return g.socket.Username(playerId)
236249
}
237250

238251
// Session returns details of the current session.
@@ -244,8 +257,3 @@ func (g *Game) Session() cg.Session {
244257
func (g *Game) Disconnect() error {
245258
return g.socket.Close()
246259
}
247-
248-
// Leave leaves the game and removes the session from disk.
249-
func (g *Game) Leave() error {
250-
return g.socket.Leave()
251-
}

templates/new/client/main.go.tmpl

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
package main
22

33
import (
4-
"fmt"
54
"log"
65
"{{.ModulePath}}/{{.PackageName}}"
7-
8-
"{{.LibraryURL}}"
96
)
107

118
func main() {
12-
game, err := {{.PackageName}}.Init()
9+
game, err := {{.PackageName}}.Init({{.PackageName}}.GameConfig{})
1310
if err != nil {
1411
log.Fatal(err)
1512
}
16-
fmt.Println("Game ID:", game.Id)
1713

1814
// TODO: register event listeners
1915

update.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"github.com/code-game-project/go-utils/cgfile"
88
"github.com/code-game-project/go-utils/cggenevents"
99
"github.com/code-game-project/go-utils/exec"
10-
"github.com/code-game-project/go-utils/external"
1110
"github.com/code-game-project/go-utils/modules"
1211
"github.com/code-game-project/go-utils/server"
1312
)
@@ -33,8 +32,7 @@ func Update() error {
3332
}
3433

3534
func updateClient(libraryVersion string, config *cgfile.CodeGameFileData) error {
36-
baseURL := external.BaseURL("http", external.IsTLS(config.URL), config.URL)
37-
api, err := server.NewAPI(baseURL)
35+
api, err := server.NewAPI(config.URL)
3836
libraryURL, libraryTag, err := getClientLibraryURL(libraryVersion)
3937
if err != nil {
4038
return err
@@ -59,7 +57,7 @@ func updateClient(libraryVersion string, config *cgfile.CodeGameFileData) error
5957
return err
6058
}
6159

62-
err = updateClientTemplate(module, config.Game, config.URL, libraryURL, eventNames, commandNames)
60+
err = updateClientTemplate(module, config.Game, libraryURL, eventNames, commandNames)
6361
if err != nil {
6462
return err
6563
}
@@ -81,8 +79,8 @@ func updateClient(libraryVersion string, config *cgfile.CodeGameFileData) error
8179
return nil
8280
}
8381

84-
func updateClientTemplate(modulePath, gameName, serverURL, libraryURL string, eventNames, commandNames []string) error {
85-
return execClientTemplate(modulePath, gameName, serverURL, libraryURL, eventNames, commandNames, true)
82+
func updateClientTemplate(modulePath, gameName, libraryURL string, eventNames, commandNames []string) error {
83+
return execClientTemplate(modulePath, gameName, libraryURL, eventNames, commandNames, true)
8684
}
8785

8886
func updateServer(libraryVersion string) error {

0 commit comments

Comments
 (0)