aboutsummaryrefslogtreecommitdiff
path: root/go/webtools
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2022-12-28 16:17:06 +0100
committerFlorian Fischer <florian.fischer@muhq.space>2023-01-26 22:17:17 +0100
commit2f49c5e7030b63e8f4d2a8d0d4cb55691ef1fb3a (patch)
tree8458b1d9d560db6e32f80dbe666b61e85130b8e4 /go/webtools
parent4400cbc329322ee7c0be154921cfe10dd9487752 (diff)
downloadmuhqs-game-2f49c5e7030b63e8f4d2a8d0d4cb55691ef1fb3a.tar.gz
muhqs-game-2f49c5e7030b63e8f4d2a8d0d4cb55691ef1fb3a.zip
add random tile selection from map to the web tools
Diffstat (limited to 'go/webtools')
-rw-r--r--go/webtools/main.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/go/webtools/main.go b/go/webtools/main.go
new file mode 100644
index 00000000..03fc9e37
--- /dev/null
+++ b/go/webtools/main.go
@@ -0,0 +1,45 @@
+package main
+
+import (
+ "syscall/js"
+
+ "muhq.space/muhqs-game/go/game"
+)
+
+const ()
+
+func jSRandomTileFromMap() js.Func {
+ jsonFunc := js.FuncOf(func(this js.Value, args []js.Value) any {
+ if len(args) != 2 {
+ return "Invalid number of arguments passed"
+ }
+
+ mapData := args[0].String()
+
+ symbols := make([]string, 0, args[1].Length())
+ for i := 0; i < args[1].Length(); i++ {
+ symbol := args[1].Index(i).String()
+ symbols = append(symbols, symbol)
+ }
+
+ position, err := randomTileFromMap(mapData, symbols)
+ if err != nil {
+ return err.Error()
+ }
+ return map[string]interface{}{"y": position.Y + 1, "x": position.X + 1}
+ })
+ return jsonFunc
+}
+
+func randomTileFromMap(mapData string, symbols []string) (game.Position, error) {
+ m, err := game.ParseMap([]byte(mapData))
+ if err != nil {
+ return game.INVALID_POSITION(), err
+ }
+ return m.RandomTileFromSymbols(symbols)
+}
+
+func main() {
+ js.Global().Set("randomTileFromSymbol", jSRandomTileFromMap())
+ <-make(chan bool)
+}