package main import ( "math/rand" "syscall/js" "time" "muhq.space/muhqs-game/go/game" ) var r *rand.Rand 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]any{"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(r, symbols) } func main() { r = rand.New(rand.NewSource(time.Now().UnixNano())) js.Global().Set("randomTileFromSymbol", jSRandomTileFromMap()) <-make(chan bool) }