feat: create game
This commit is contained in:
parent
30904da68d
commit
3f7a27b2de
@ -8,7 +8,7 @@
|
||||
logout/switch session
|
||||
</div>
|
||||
</template>
|
||||
<form v-else>
|
||||
<template v-else>
|
||||
<input
|
||||
v-model="authCode"
|
||||
class="playbutton__authinput"
|
||||
@ -21,7 +21,7 @@
|
||||
<div class="playbutton__errormessage" v-if="errorMessage">
|
||||
{{ errorMessage }}
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -3,13 +3,15 @@ package application
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/google/uuid"
|
||||
"math/rand"
|
||||
// "github.com/google/uuid"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
"sirlab.de/go/knowyt/game"
|
||||
"sirlab.de/go/knowyt/user"
|
||||
"strconv"
|
||||
"time"
|
||||
// "path"
|
||||
"sirlab.de/go/knowyt/game"
|
||||
)
|
||||
|
||||
type PlayerInfo struct {
|
||||
@ -35,7 +37,7 @@ func (app *Application) CreateGame(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
_, err = app.createUser(gm, name, authcode)
|
||||
_, err = app.createUser(gm, name, user.ROLE_GAMEMASTER, authcode)
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
fmt.Printf("%v\n", err)
|
||||
@ -55,5 +57,28 @@ func (app *Application) CreateGame(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
func (app *Application) createGame(gamename string) (*game.Game, error) {
|
||||
return nil, fmt.Errorf("createGame() not yet implemented")
|
||||
gameId := uuid.NewString()
|
||||
gameDirName := path.Join(app.config.DataDir, "games", gameId)
|
||||
gameFileName := path.Join(gameDirName, "game.json")
|
||||
quotesDirName := path.Join(gameDirName, "quotes")
|
||||
|
||||
if err := os.Mkdir(gameDirName, 0777); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := os.Mkdir(quotesDirName, 0777); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
fmt.Printf("createGame(\"%s\": \"%s\")\n", gameId, gamename)
|
||||
gm, err := game.NewGame(gameId, gameFileName, gamename)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := gm.SaveGame(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
app.addGame(gm)
|
||||
go gm.StartEngine()
|
||||
|
||||
return gm, nil
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ import (
|
||||
"sirlab.de/go/knowyt/user"
|
||||
)
|
||||
|
||||
func (app *Application) createUser(gm *game.Game, name, authcode string) (string, error) {
|
||||
func (app *Application) createUser(gm *game.Game, name, role, authcode string) (string, error) {
|
||||
if authcode != "" {
|
||||
if _, err := app.GetUserByAuthcode(authcode); err == nil {
|
||||
return "", fmt.Errorf("%s authcode already in use", gm.GetId())
|
||||
@ -19,7 +19,7 @@ func (app *Application) createUser(gm *game.Game, name, authcode string) (string
|
||||
userNewUuid := uuid.NewString()
|
||||
fileName := path.Join(dirName, userNewUuid+".json")
|
||||
newUser := user.CreateUser(fileName, gm.GetId())
|
||||
newUser.SetRole(user.ROLE_PLAYER)
|
||||
newUser.SetRole(role)
|
||||
newUser.SetName(name)
|
||||
newUser.SetAuthcode(authcode)
|
||||
if err := newUser.SaveUser(); err != nil {
|
||||
|
@ -41,7 +41,8 @@ func (app *Application) SavePlayer(usr *user.User, w http.ResponseWriter, r *htt
|
||||
return
|
||||
}
|
||||
} else {
|
||||
if newPlayerId, err := app.createUser(gm, name, authcode); err != nil {
|
||||
newPlayerId, err := app.createUser(gm, name, user.ROLE_PLAYER, authcode)
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
fmt.Printf("%v\n", err)
|
||||
fmt.Fprintf(w, "server error")
|
||||
|
@ -32,6 +32,20 @@ func NewGameFromFile(id, fileName string) (*Game, error) {
|
||||
}
|
||||
}
|
||||
|
||||
func NewGame(id, fileName, name string) (*Game, error) {
|
||||
gm := Game{
|
||||
id: id,
|
||||
filename: fileName,
|
||||
name: name,
|
||||
eng: engine.NewEngine(),
|
||||
players: make(map[string]playerInfo, 0),
|
||||
state: STATE_IDLE,
|
||||
quotes: make(map[string]*quote.Quote, 0),
|
||||
}
|
||||
|
||||
return &gm, nil
|
||||
}
|
||||
|
||||
func (gm *Game) SaveGame() error {
|
||||
gm.mu.Lock()
|
||||
defer gm.mu.Unlock()
|
||||
|
Loading…
Reference in New Issue
Block a user