Allow specifying match points
This commit is contained in:
parent
91392d4239
commit
078ec92722
5 changed files with 112 additions and 78 deletions
|
@ -1,3 +1,6 @@
|
|||
1.0.2:
|
||||
- Allow specifying match points
|
||||
|
||||
1.0.1:
|
||||
- Fix checker alignment issues
|
||||
- Fix checker borders
|
||||
|
|
76
game/game.go
76
game/game.go
|
@ -10,6 +10,7 @@ import (
|
|||
"log"
|
||||
"os"
|
||||
"path"
|
||||
"regexp"
|
||||
"runtime/pprof"
|
||||
"strings"
|
||||
"time"
|
||||
|
@ -30,6 +31,8 @@ import (
|
|||
|
||||
const MaxDebug = 1
|
||||
|
||||
var onlyNumbers = regexp.MustCompile(`[0-9]+`)
|
||||
|
||||
//go:embed assets
|
||||
var assetsFS embed.FS
|
||||
|
||||
|
@ -303,7 +306,7 @@ func setViewBoard(view bool) {
|
|||
|
||||
// Exit create game dialog, if open.
|
||||
game.lobby.showCreateGame = false
|
||||
game.lobby.createGameFocusPassword = false
|
||||
game.lobby.createGameFocus = 0
|
||||
game.lobby.createGameName.Field.SetText("")
|
||||
game.lobby.createGamePassword.Field.SetText("")
|
||||
game.lobby.bufferDirty = true
|
||||
|
@ -442,6 +445,7 @@ func NewGame() *Game {
|
|||
{
|
||||
headerLabel := etk.NewText("Create match")
|
||||
nameLabel := etk.NewText("Name")
|
||||
pointsLabel := etk.NewText("Points")
|
||||
passwordLabel := etk.NewText("Password")
|
||||
|
||||
g.lobby.createGameName = etk.NewInput("", "", func(text string) (handled bool) {
|
||||
|
@ -449,6 +453,11 @@ func NewGame() *Game {
|
|||
})
|
||||
g.lobby.createGameName.Field.SetHandleKeyboard(true)
|
||||
|
||||
g.lobby.createGamePoints = etk.NewInput("", "", func(text string) (handled bool) {
|
||||
return false
|
||||
})
|
||||
g.lobby.createGamePoints.Field.SetHandleKeyboard(false)
|
||||
|
||||
g.lobby.createGamePassword = etk.NewInput("", "", func(text string) (handled bool) {
|
||||
return false
|
||||
})
|
||||
|
@ -458,12 +467,14 @@ func NewGame() *Game {
|
|||
grid.SetColumnPadding(int(g.Board.horizontalBorderSize / 2))
|
||||
grid.SetRowPadding(20)
|
||||
grid.SetColumnSizes(10, 200)
|
||||
grid.SetRowSizes(60, 50, 50)
|
||||
grid.SetRowSizes(60, 50, 50, 50)
|
||||
grid.AddChildAt(headerLabel, 0, 0, 3, 1)
|
||||
grid.AddChildAt(nameLabel, 1, 1, 1, 1)
|
||||
grid.AddChildAt(g.lobby.createGameName, 2, 1, 1, 1)
|
||||
grid.AddChildAt(passwordLabel, 1, 2, 1, 1)
|
||||
grid.AddChildAt(g.lobby.createGamePassword, 2, 2, 1, 1)
|
||||
grid.AddChildAt(pointsLabel, 1, 2, 1, 1)
|
||||
grid.AddChildAt(g.lobby.createGamePoints, 2, 2, 1, 1)
|
||||
grid.AddChildAt(passwordLabel, 1, 3, 1, 1)
|
||||
grid.AddChildAt(g.lobby.createGamePassword, 2, 3, 1, 1)
|
||||
createGameGrid = grid
|
||||
}
|
||||
|
||||
|
@ -760,32 +771,66 @@ func (g *Game) Update() error {
|
|||
x, y := ebiten.CursorPosition()
|
||||
p := image.Point{x, y}
|
||||
if p.In(g.lobby.createGameName.Rect()) {
|
||||
g.lobby.createGameFocusPassword = false
|
||||
g.lobby.createGameFocus = 0
|
||||
g.lobby.createGameName.Field.SetHandleKeyboard(true)
|
||||
g.lobby.createGameName.Field.SetSuffix("_")
|
||||
g.lobby.createGamePoints.Field.SetHandleKeyboard(false)
|
||||
g.lobby.createGamePoints.Field.SetSuffix("")
|
||||
g.lobby.createGamePassword.Field.SetHandleKeyboard(false)
|
||||
g.lobby.createGamePassword.Field.SetSuffix("")
|
||||
} else if p.In(g.lobby.createGamePoints.Rect()) {
|
||||
g.lobby.createGameFocus = 1
|
||||
g.lobby.createGameName.Field.SetHandleKeyboard(false)
|
||||
g.lobby.createGameName.Field.SetSuffix("")
|
||||
g.lobby.createGamePoints.Field.SetHandleKeyboard(true)
|
||||
g.lobby.createGamePoints.Field.SetSuffix("_")
|
||||
g.lobby.createGamePassword.Field.SetHandleKeyboard(false)
|
||||
g.lobby.createGamePassword.Field.SetSuffix("")
|
||||
} else if p.In(g.lobby.createGamePassword.Rect()) {
|
||||
g.lobby.createGameFocusPassword = true
|
||||
g.lobby.createGameFocus = 2
|
||||
g.lobby.createGameName.Field.SetHandleKeyboard(false)
|
||||
g.lobby.createGameName.Field.SetSuffix("")
|
||||
g.lobby.createGamePoints.Field.SetHandleKeyboard(false)
|
||||
g.lobby.createGamePoints.Field.SetSuffix("")
|
||||
g.lobby.createGamePassword.Field.SetHandleKeyboard(true)
|
||||
g.lobby.createGamePassword.Field.SetSuffix("_")
|
||||
}
|
||||
}
|
||||
|
||||
if inpututil.IsKeyJustPressed(ebiten.KeyTab) {
|
||||
g.lobby.createGameFocusPassword = !g.lobby.createGameFocusPassword
|
||||
if g.lobby.createGameFocusPassword {
|
||||
g.lobby.createGameName.Field.SetHandleKeyboard(false)
|
||||
g.lobby.createGameName.Field.SetSuffix("")
|
||||
g.lobby.createGamePassword.Field.SetHandleKeyboard(true)
|
||||
g.lobby.createGamePassword.Field.SetSuffix("_")
|
||||
if ebiten.IsKeyPressed(ebiten.KeyShift) {
|
||||
g.lobby.createGameFocus--
|
||||
if g.lobby.createGameFocus < 0 {
|
||||
g.lobby.createGameFocus = 2
|
||||
}
|
||||
} else {
|
||||
g.lobby.createGameFocus++
|
||||
if g.lobby.createGameFocus > 2 {
|
||||
g.lobby.createGameFocus = 0
|
||||
}
|
||||
}
|
||||
|
||||
if g.lobby.createGameFocus == 0 {
|
||||
g.lobby.createGameName.Field.SetHandleKeyboard(true)
|
||||
g.lobby.createGameName.Field.SetSuffix("_")
|
||||
g.lobby.createGamePoints.Field.SetHandleKeyboard(false)
|
||||
g.lobby.createGamePoints.Field.SetSuffix("")
|
||||
g.lobby.createGamePassword.Field.SetHandleKeyboard(false)
|
||||
g.lobby.createGamePassword.Field.SetSuffix("")
|
||||
} else if g.lobby.createGameFocus == 1 {
|
||||
g.lobby.createGameName.Field.SetHandleKeyboard(false)
|
||||
g.lobby.createGameName.Field.SetSuffix("")
|
||||
g.lobby.createGamePoints.Field.SetHandleKeyboard(true)
|
||||
g.lobby.createGamePoints.Field.SetSuffix("_")
|
||||
g.lobby.createGamePassword.Field.SetHandleKeyboard(false)
|
||||
g.lobby.createGamePassword.Field.SetSuffix("")
|
||||
} else {
|
||||
g.lobby.createGameName.Field.SetHandleKeyboard(false)
|
||||
g.lobby.createGameName.Field.SetSuffix("")
|
||||
g.lobby.createGamePoints.Field.SetHandleKeyboard(false)
|
||||
g.lobby.createGamePoints.Field.SetSuffix("")
|
||||
g.lobby.createGamePassword.Field.SetHandleKeyboard(true)
|
||||
g.lobby.createGamePassword.Field.SetSuffix("_")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -794,6 +839,13 @@ func (g *Game) Update() error {
|
|||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
if g.lobby.showCreateGame {
|
||||
pointsText := g.lobby.createGamePoints.Text()
|
||||
if pointsText != "" {
|
||||
g.lobby.createGamePoints.Field.SetText(strings.Join(onlyNumbers.FindAllString(pointsText, -1), ""))
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
g.Board.Update()
|
||||
|
|
|
@ -6,6 +6,7 @@ import (
|
|||
"image/color"
|
||||
"math"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
|
@ -86,12 +87,13 @@ type lobby struct {
|
|||
|
||||
runeBuffer []rune
|
||||
|
||||
showCreateGame bool
|
||||
createGameNamePrev string
|
||||
createGamePasswordPrev string
|
||||
createGameName *etk.Input
|
||||
createGamePassword *etk.Input
|
||||
createGameFocusPassword bool
|
||||
showCreateGame bool
|
||||
createGameNamePrev string
|
||||
createGamePasswordPrev string
|
||||
createGameName *etk.Input
|
||||
createGamePoints *etk.Input
|
||||
createGamePassword *etk.Input
|
||||
createGameFocus int
|
||||
|
||||
showJoinGame bool
|
||||
joinGameID int
|
||||
|
@ -173,7 +175,7 @@ func (l *lobby) drawBuffer() {
|
|||
// Create game dialog is drawn by etk.
|
||||
} else {
|
||||
var img *ebiten.Image
|
||||
drawEntry := func(cx float64, cy float64, colA string, colB string, highlight bool, title bool) {
|
||||
drawEntry := func(cx float64, cy float64, colA string, colB string, colC string, highlight bool, title bool) {
|
||||
labelColor := triangleA
|
||||
if highlight {
|
||||
labelColor = lightCheckerColor
|
||||
|
@ -200,6 +202,7 @@ func (l *lobby) drawBuffer() {
|
|||
|
||||
text.Draw(img, colA, mediumFont, 4, standardLineHeight, labelColor)
|
||||
text.Draw(img, colB, mediumFont, int(250*ebiten.DeviceScaleFactor()), standardLineHeight, labelColor)
|
||||
text.Draw(img, colC, mediumFont, int(500*ebiten.DeviceScaleFactor()), standardLineHeight, labelColor)
|
||||
//text.Draw(img, colC, mediumFont, int(500*ebiten.DeviceScaleFactor()), standardLineHeight, labelColor)
|
||||
|
||||
op := &ebiten.DrawImageOptions{}
|
||||
|
@ -210,7 +213,7 @@ func (l *lobby) drawBuffer() {
|
|||
titleOffset := 2.0
|
||||
|
||||
if !l.loaded {
|
||||
drawEntry(l.padding, l.padding-titleOffset, "Loading...", "Please wait...", false, true)
|
||||
drawEntry(l.padding, l.padding-titleOffset, "Loading...", "Please", "wait...", false, true)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -221,11 +224,11 @@ func (l *lobby) drawBuffer() {
|
|||
}
|
||||
|
||||
cx, cy := 0.0, 0.0 // Cursor
|
||||
drawEntry(cx+l.padding, cy+l.padding-titleOffset, "Status", "Name", false, true)
|
||||
drawEntry(cx+l.padding, cy+l.padding-titleOffset, "Status", "Points", "Name", false, true)
|
||||
cy += l.entryH
|
||||
|
||||
if len(l.games) == 0 {
|
||||
drawEntry(cx+l.padding, cy+l.padding, "No matches available. Please create one.", "", false, false)
|
||||
drawEntry(cx+l.padding, cy+l.padding, "No matches available. Please create one.", "", "", false, false)
|
||||
} else {
|
||||
i := 0
|
||||
var status string
|
||||
|
@ -241,7 +244,7 @@ func (l *lobby) drawBuffer() {
|
|||
}
|
||||
}
|
||||
|
||||
drawEntry(cx+l.padding, cy+l.padding, status, entry.Name, i == l.selected, false)
|
||||
drawEntry(cx+l.padding, cy+l.padding, status, strconv.Itoa(entry.Points), entry.Name, i == l.selected, false)
|
||||
|
||||
cy += l.entryH
|
||||
}
|
||||
|
@ -328,7 +331,7 @@ func (l *lobby) click(x, y int) {
|
|||
switch buttonIndex {
|
||||
case lobbyButtonCreateCancel:
|
||||
game.lobby.showCreateGame = false
|
||||
game.lobby.createGameFocusPassword = false
|
||||
game.lobby.createGameFocus = 0
|
||||
game.lobby.createGameName.Field.SetText("")
|
||||
game.lobby.createGamePassword.Field.SetText("")
|
||||
l.bufferDirty = true
|
||||
|
@ -338,7 +341,11 @@ func (l *lobby) click(x, y int) {
|
|||
if len(strings.TrimSpace(game.lobby.createGamePassword.Text())) > 0 {
|
||||
typeAndPassword = fmt.Sprintf("private %s", strings.ReplaceAll(game.lobby.createGamePassword.Text(), " ", "_"))
|
||||
}
|
||||
l.c.Out <- []byte(fmt.Sprintf("c %s %s", typeAndPassword, game.lobby.createGameName.Text()))
|
||||
points, err := strconv.Atoi(game.lobby.createGamePoints.Text())
|
||||
if err != nil {
|
||||
points = 1
|
||||
}
|
||||
l.c.Out <- []byte(fmt.Sprintf("c %s %d %s", typeAndPassword, points, game.lobby.createGameName.Text()))
|
||||
}
|
||||
return
|
||||
} else if l.showJoinGame {
|
||||
|
@ -367,6 +374,7 @@ func (l *lobby) click(x, y int) {
|
|||
namePlural += "'s"
|
||||
}
|
||||
l.createGameName.Field.SetText(namePlural + " match")
|
||||
l.createGamePoints.Field.SetText("1")
|
||||
l.createGamePassword.Field.SetText("")
|
||||
l.bufferDirty = true
|
||||
l.bufferButtonsDirty = true
|
||||
|
|
16
go.mod
16
go.mod
|
@ -3,14 +3,14 @@ module code.rocket9labs.com/tslocum/boxcars
|
|||
go 1.17
|
||||
|
||||
require (
|
||||
code.rocket9labs.com/tslocum/bgammon v0.0.0-20230930205031-db3870b9fec9
|
||||
code.rocket9labs.com/tslocum/bgammon v0.0.0-20231019025948-f96a4fdb1a66
|
||||
code.rocketnine.space/tslocum/etk v0.0.0-20230930052629-6c8d555b7d99
|
||||
code.rocketnine.space/tslocum/kibodo v1.0.0
|
||||
code.rocketnine.space/tslocum/messeji v1.0.4-0.20230929042029-6dd617c348a7
|
||||
github.com/hajimehoshi/ebiten/v2 v2.6.0
|
||||
github.com/hajimehoshi/ebiten/v2 v2.6.2
|
||||
github.com/llgcode/draw2d v0.0.0-20230723155556-e595d7c7e75e
|
||||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
|
||||
golang.org/x/image v0.12.0
|
||||
golang.org/x/image v0.13.0
|
||||
nhooyr.io/websocket v1.8.7
|
||||
)
|
||||
|
||||
|
@ -18,10 +18,10 @@ require (
|
|||
github.com/ebitengine/purego v0.5.0 // indirect
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
|
||||
github.com/jezek/xgb v1.1.0 // indirect
|
||||
github.com/klauspost/compress v1.17.0 // indirect
|
||||
golang.org/x/exp/shiny v0.0.0-20230905200255-921286631fa9 // indirect
|
||||
golang.org/x/mobile v0.0.0-20230922142353-e2f452493d57 // indirect
|
||||
golang.org/x/sync v0.3.0 // indirect
|
||||
golang.org/x/sys v0.12.0 // indirect
|
||||
github.com/klauspost/compress v1.17.1 // indirect
|
||||
golang.org/x/exp/shiny v0.0.0-20231006140011-7918f672742d // indirect
|
||||
golang.org/x/mobile v0.0.0-20231006135142-2b44d11868fe // indirect
|
||||
golang.org/x/sync v0.4.0 // indirect
|
||||
golang.org/x/sys v0.13.0 // indirect
|
||||
golang.org/x/text v0.13.0 // indirect
|
||||
)
|
||||
|
|
61
go.sum
61
go.sum
|
@ -1,5 +1,5 @@
|
|||
code.rocket9labs.com/tslocum/bgammon v0.0.0-20230930205031-db3870b9fec9 h1:ok+0arGO9ATI2uENfpEFjxY4jesLL5EDxi0drmJA938=
|
||||
code.rocket9labs.com/tslocum/bgammon v0.0.0-20230930205031-db3870b9fec9/go.mod h1:LS/m5Zq7/93dP8XJrLkL1T5ZTwtddkN8X9TyRrrdCkQ=
|
||||
code.rocket9labs.com/tslocum/bgammon v0.0.0-20231019025948-f96a4fdb1a66 h1:0G4AFLMqI3a4WrVJMvBAoiY/Np9jwqKSG952rveNgC0=
|
||||
code.rocket9labs.com/tslocum/bgammon v0.0.0-20231019025948-f96a4fdb1a66/go.mod h1:LS/m5Zq7/93dP8XJrLkL1T5ZTwtddkN8X9TyRrrdCkQ=
|
||||
code.rocketnine.space/tslocum/etk v0.0.0-20230930052629-6c8d555b7d99 h1:mpNRo6zUdHlpZnxiqfF/1ZoiC1SBvnfAYPVbNpZjWfU=
|
||||
code.rocketnine.space/tslocum/etk v0.0.0-20230930052629-6c8d555b7d99/go.mod h1:WmeSEakGsdgM/dmfUbEQrL5ueFAdoozlwCVUOz8j1mg=
|
||||
code.rocketnine.space/tslocum/kibodo v1.0.0 h1:/xs59UCuo+NGs89ABilARlowQnmIsjbNVjss57W5O7k=
|
||||
|
@ -38,15 +38,15 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/
|
|||
github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM=
|
||||
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/hajimehoshi/bitmapfont/v3 v3.0.0 h1:r2+6gYK38nfztS/et50gHAswb9hXgxXECYgE8Nczmi4=
|
||||
github.com/hajimehoshi/ebiten/v2 v2.6.0 h1:nh09FUhjNGFVcUUPsx6oTMbD1pHerNvTKPE+494y3cU=
|
||||
github.com/hajimehoshi/ebiten/v2 v2.6.0/go.mod h1:TZtorL713an00UW4LyvMeKD8uXWnuIuCPtlH11b0pgI=
|
||||
github.com/hajimehoshi/ebiten/v2 v2.6.2 h1:tVa3ZJbp4Uz/VSjmpgtQIOvwd7aQH290XehHBLr2iWk=
|
||||
github.com/hajimehoshi/ebiten/v2 v2.6.2/go.mod h1:TZtorL713an00UW4LyvMeKD8uXWnuIuCPtlH11b0pgI=
|
||||
github.com/jezek/xgb v1.1.0 h1:wnpxJzP1+rkbGclEkmwpVFQWpuE2PUGNUzP8SbfFobk=
|
||||
github.com/jezek/xgb v1.1.0/go.mod h1:nrhwO0FX/enq75I7Y7G8iN1ubpSGZEiA3v9e9GyRFlk=
|
||||
github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns=
|
||||
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||
github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM=
|
||||
github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
||||
github.com/klauspost/compress v1.17.1 h1:NE3C767s2ak2bweCZo3+rdP4U/HoyVXLv/X9f2gPS5g=
|
||||
github.com/klauspost/compress v1.17.1/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
||||
github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
|
||||
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
|
||||
github.com/llgcode/draw2d v0.0.0-20230723155556-e595d7c7e75e h1:hqFckor7F0B63l6cV/PoAsuQUOmDji/1oVF0+24EMUI=
|
||||
|
@ -68,51 +68,22 @@ github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo=
|
|||
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
|
||||
github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=
|
||||
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/exp/shiny v0.0.0-20230905200255-921286631fa9 h1:rvxT0xShhCtCvCCmF3wMK57nkbTYSaf/0Tp7TAllhMs=
|
||||
golang.org/x/exp/shiny v0.0.0-20230905200255-921286631fa9/go.mod h1:UH99kUObWAZkDnWqppdQe5ZhPYESUw8I0zVV1uWBR+0=
|
||||
golang.org/x/image v0.12.0 h1:w13vZbU4o5rKOFFR8y7M+c4A5jXDC0uXTdHYRP8X2DQ=
|
||||
golang.org/x/image v0.12.0/go.mod h1:Lu90jvHG7GfemOIcldsh9A2hS01ocl6oNO7ype5mEnk=
|
||||
golang.org/x/mobile v0.0.0-20230922142353-e2f452493d57 h1:Q6NT8ckDYNcwmi/bmxe+XbiDMXqMRW1xFBtJ+bIpie4=
|
||||
golang.org/x/mobile v0.0.0-20230922142353-e2f452493d57/go.mod h1:wEyOn6VvNW7tcf+bW/wBz1sehi2s2BZ4TimyR7qZen4=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
|
||||
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/exp/shiny v0.0.0-20231006140011-7918f672742d h1:grE48C8cjIY0aiHVmFyYgYxxSARQWBABLXKZfQPrBhY=
|
||||
golang.org/x/exp/shiny v0.0.0-20231006140011-7918f672742d/go.mod h1:UH99kUObWAZkDnWqppdQe5ZhPYESUw8I0zVV1uWBR+0=
|
||||
golang.org/x/image v0.13.0 h1:3cge/F/QTkNLauhf2QoE9zp+7sr+ZcL4HnoZmdwg9sg=
|
||||
golang.org/x/image v0.13.0/go.mod h1:6mmbMOeV28HuMTgA6OSRkdXKYw/t5W9Uwn2Yv1r3Yxk=
|
||||
golang.org/x/mobile v0.0.0-20231006135142-2b44d11868fe h1:lrXv4yHeD9FA8PSJATWowP1QvexpyAPWmPia+Kbzql8=
|
||||
golang.org/x/mobile v0.0.0-20231006135142-2b44d11868fe/go.mod h1:BrnXpEObnFxpaT75Jo9hsCazwOWcp7nVIa8NNuH5cuA=
|
||||
golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ=
|
||||
golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
|
||||
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
|
||||
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
|
||||
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
|
|
Loading…
Reference in a new issue