all repos — felt @ 8804908923de64aa87bff61aff0757e990440fad

virtual tabletop for dungeons and dragons (and similar) using Go, MongoDB, and websockets

save dice rolls to db; mongo int arrays are weird
Iris Lightshard nilix@nilfm.cc
PGP Signature
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEkFh6dA+k/6CXFXU4O3+8IhROY5gFAmPwcbEACgkQO3+8IhRO
Y5i9Hw//V/OjWr4XqaPdXqu8bmLIc67qk8zHZyFWA+ePZU89njGzUAEOx0M/42Lp
Q0oaiNxRF8c3YiGSD+Wh54g/kUuefM3HGhnwcL2WrVTYb+MxthdBcy2HS2SfucFR
4bTuCu1cKHOfmpF7mCJhyAX19zQs/kqdSm9T41Q4qIqq30Wef2d/v8i68a0ByJff
xDrPJfKyHhjQM+9Sad3Mzg0/Z7wsKVJ+YGtn7mds//oko73rymTxFMJw4poOHU0b
KhVKqL2e8MPHCbkKeNQmRBXgSzBeDR3+rm/GCsCituIlabI/wK33HFWJKcl6j0Mm
VVw6W+LSkB/CKkFJ9iH4+DJui3EAVookjDjZ58RhY2r8OlvAblYdqBELRMROQKRd
9HJSejUDL3NAbBVYRVucWLuY4JORj76ZDZlEusisYhUbpuU+6cIXnoZrWtpdCXeq
AXHH8wBDAORqhT47JGTgYfEyRqHJPUW4Z1+JiRRpeVgqslykJVh8+G5OOfJ4qwu2
rpWdauvtaRMyhZIY5rwqU+L8D9m4XeRggUOvac9TFK2lgX4NWtMTL7gCqs83tJ+W
Su617We/tZlV7I5jrR09q3LcZlT945JhNgs7+w5/lKd/f/e+MObsw479Gy+WWJSt
YzsCU5vFsAKlfsU87yO5r97R509wV1A/29qdDCRsTSlAIVtBMRY=
=kkbo
-----END PGP SIGNATURE-----
commit

8804908923de64aa87bff61aff0757e990440fad

parent

2bf3c1af8bc49811ebaf17fcb775b269a9ab9445

4 files changed, 19 insertions(+), 9 deletions(-)

jump to
M gametable/server.gogametable/server.go

@@ -205,6 +205,13 @@ return []byte("{\"error\": \"table not found\"}")

} 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 }
M models/models.gomodels/models.go

@@ -36,9 +36,9 @@ AuxMessage string `json:"auxMessage"`

} 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"` }
M static/dice.jsstatic/dice.js

@@ -15,16 +15,14 @@ return;

} 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,
M static/socket.jsstatic/socket.js

@@ -27,12 +27,17 @@ // TODO: add message to let user know they are at the table

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); }); } }