-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
66 lines (55 loc) · 1.77 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package main
import (
"log"
"flag"
)
var session = flag.String("session", "", "session to attach to")
var server = flag.String("server", "", "admin interface endoint")
var host = flag.String("host", "", "game host endpoint")
var lobby = flag.String("lobby", "localhost:8080", "lobby api endpoint")
var name = flag.String("name", "player", "player name")
func main() {
flag.Parse()
var err error
var player, glyph string
if *host != "" && *server != "" {
// use admin interface directly
log.Println("main: admin-mode")
hc := NewHttpAdminClient(*server)
if *session == "" {
*session, err = hc.CreateSession()
if err != nil {
log.Println("main: failed to create session", err)
return
}
log.Println("main: created session", *session)
}
player, glyph, err = hc.AttachPlayer(*session)
if err != nil {
log.Println("main: failed to attach to session", err)
return
}
log.Printf("main: attached to session '%s' as player '%s', glyph %s", *session, player,
glyph)
} else {
// use lobby registrator
log.Println("main: client-mode")
client := NewLobbyClient(*lobby)
*host, *session, player, glyph, err = client.NewGame(*name)
if err != nil {
log.Println("main: cannot join game: ", err)
return
}
}
c := NewClient(*host, *session, player, glyph)
err = c.Connect()
if err != nil {
log.Println("main: cannot establish connection", err)
return
}
err = runGame(c)
if err != nil {
log.Println("main: game finished with error: ", err)
}
log.Println("main: finished")
}