diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2022-12-28 16:17:06 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2025-01-27 16:43:43 +0100 |
| commit | 41d16fb4910fc0402b6b081302c953f7dabc8cf9 (patch) | |
| tree | 334507bffb28b11760907e04c95602b9fa29efb8 /go/webtools | |
| parent | 7f7389422834f628c9e45278e90fab6911173b25 (diff) | |
| download | muhqs-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.go | 45 |
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) +} |
