From 41d16fb4910fc0402b6b081302c953f7dabc8cf9 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Wed, 28 Dec 2022 16:17:06 +0100 Subject: add random tile selection from map to the web tools --- go/webtools/main.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 go/webtools/main.go (limited to 'go/webtools') 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) +} -- cgit v1.2.3