From 8804908923de64aa87bff61aff0757e990440fad Mon Sep 17 00:00:00 2001 From: Derek Stevens Date: Fri, 17 Feb 2023 23:35:29 -0700 Subject: [PATCH] save dice rolls to db; mongo int arrays are weird --- gametable/server.go | 7 +++++++ models/models.go | 10 +++++----- static/dice.js | 4 +--- static/socket.js | 7 ++++++- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/gametable/server.go b/gametable/server.go index 0cc7596..f1c14e5 100644 --- a/gametable/server.go +++ b/gametable/server.go @@ -205,6 +205,13 @@ func (self *GameTableServer) getCurrentState(tableKey models.TableKey) []byte { } func (self *GameTableServer) writeToDB(tableMsg models.TableMessage) error { + key := *tableMsg.Key + if tableMsg.DiceRoll != nil { + err := self.dbAdapter.InsertDiceRoll(key, *tableMsg.DiceRoll) + if err != nil { + fmt.Println(err.Error()) + } + } return nil } diff --git a/models/models.go b/models/models.go index 1145354..8362286 100644 --- a/models/models.go +++ b/models/models.go @@ -36,9 +36,9 @@ type Table struct { } type TableMessage struct { - Key *TableKey `json:"key"` - Roll *DiceRoll `json:"roll"` - Token *Token `json:"token"` - MapImg *string `json:"mapImg"` - AuxMsg *string `json:"auxMsg"` + Key *TableKey `json:"key"` + DiceRoll *DiceRoll `json:"diceRoll"` + Token *Token `json:"token"` + MapImg *string `json:"mapImg"` + AuxMsg *string `json:"auxMsg"` } diff --git a/static/dice.js b/static/dice.js index 2e30f84..d21eec3 100644 --- a/static/dice.js +++ b/static/dice.js @@ -15,16 +15,14 @@ function rollDice() { } if (numDice && faces && note) { - console.log("here?") const n = Number(numDice.value); const d = Number(faces.value); r = new Uint8Array(n); crypto.getRandomValues(r); const rolls = []; for (const i of r) { - rolls.push(r%d + 1) + rolls.push(i%d + 1) } - console.log(rolls); publish({diceRoll: { faces: d, roll: rolls, diff --git a/static/socket.js b/static/socket.js index 484e6d3..5ea04b8 100644 --- a/static/socket.js +++ b/static/socket.js @@ -27,12 +27,17 @@ function dial() { console.info("socket connected"); }); conn.addEventListener("message", e => { - console.log(e.data); + const data = JSON.parse(e.data); if (table == null) { + // first fetch comes from mongo, so the rolls array in each diceRoll is a byte array and needs to be decoded + data.diceRolls.forEach(r=>{ + r.roll = Uint8Array.from(atob(r.roll), c => c.charCodeAt(0)) + }) table = JSON.parse(e.data); } else { // UPDATE THE TABLE! } + console.log(data); }); } }