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>2025-01-27 16:43:43 +0100
commit41d16fb4910fc0402b6b081302c953f7dabc8cf9 (patch)
tree334507bffb28b11760907e04c95602b9fa29efb8 /go/webtools
parent7f7389422834f628c9e45278e90fab6911173b25 (diff)
downloadmuhqs-game-41d16fb4910fc0402b6b081302c953f7dabc8cf9.tar.gz
muhqs-game-41d16fb4910fc0402b6b081302c953f7dabc8cf9.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)
+}