Update dice image
This commit is contained in:
parent
5a84d2da7b
commit
dbba3541a7
6 changed files with 53 additions and 31 deletions
|
@ -1,3 +1,8 @@
|
|||
1.4.3:
|
||||
- Print error message when connection fails
|
||||
- Support navigating lists using arrow keys
|
||||
- Update dice image
|
||||
|
||||
1.4.2:
|
||||
- Add About dialog
|
||||
- Redesign dark checkers
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 12 KiB |
|
@ -1382,25 +1382,24 @@ func (b *board) Draw(screen *ebiten.Image) {
|
|||
}
|
||||
|
||||
dividerHeight := float64(etk.Scale(15))
|
||||
|
||||
r := b.spaceRects[bgammon.SpaceHomePlayer]
|
||||
checkerY := float64(b.y+int(b.verticalBorderSize)+r[1]+r[3]) + 3
|
||||
checkerHeight := (b.spaceWidth + b.overlapSize*4 - dividerHeight*2) / 15
|
||||
|
||||
checkerY := float64(b.y+b.h-int(b.verticalBorderSize)) - checkerHeight - float64(etk.Scale(4))
|
||||
checkers := len(b.spaceSprites[bgammon.SpaceHomePlayer])
|
||||
var checkerOffset float64
|
||||
for i := 0; i < checkers; i++ {
|
||||
checkerOffset = 0
|
||||
if i >= 10 {
|
||||
checkerOffset = dividerHeight * 2
|
||||
checkerOffset = dividerHeight*2 - float64(etk.Scale(2))
|
||||
} else if i >= 5 {
|
||||
checkerOffset = dividerHeight
|
||||
checkerOffset = dividerHeight - float64(etk.Scale(2))
|
||||
} else {
|
||||
checkerOffset = 0
|
||||
}
|
||||
b.drawChecker(screen, imgCheckerSideLight, float64(b.x+b.w)-b.spaceWidth, checkerY-checkerHeight*float64(i+1)-checkerOffset, b.flipBoard, true)
|
||||
}
|
||||
|
||||
checkerY = float64(b.y+int(b.verticalBorderSize)) + 1
|
||||
checkerY = float64(b.y+int(b.verticalBorderSize)) - checkerHeight - 3
|
||||
checkers = len(b.spaceSprites[bgammon.SpaceHomeOpponent])
|
||||
for i := 0; i < checkers; i++ {
|
||||
checkerOffset = 0
|
||||
|
|
65
game/game.go
65
game/game.go
|
@ -33,13 +33,12 @@ import (
|
|||
"github.com/hajimehoshi/ebiten/v2/audio/wav"
|
||||
"github.com/hajimehoshi/ebiten/v2/ebitenutil"
|
||||
"github.com/hajimehoshi/ebiten/v2/inpututil"
|
||||
"github.com/nfnt/resize"
|
||||
"golang.org/x/image/font/opentype"
|
||||
"golang.org/x/text/language"
|
||||
)
|
||||
|
||||
const (
|
||||
AppVersion = "v1.4.2"
|
||||
AppVersion = "v1.4.3"
|
||||
baseButtonHeight = 54
|
||||
MaxDebug = 2
|
||||
DefaultServerAddress = "wss://ws.bgammon.org:1338"
|
||||
|
@ -195,6 +194,30 @@ var (
|
|||
cubesImageSize = 0.0
|
||||
)
|
||||
|
||||
func resizeImage(source *ebiten.Image, size int) *ebiten.Image {
|
||||
if size == 0 {
|
||||
size = 1
|
||||
}
|
||||
bounds := source.Bounds()
|
||||
if bounds.Dx() == size && bounds.Dy() == size {
|
||||
return source
|
||||
}
|
||||
scale, yScale := float64(size)/float64(bounds.Dx()), float64(size)/float64(bounds.Dy())
|
||||
if yScale < scale {
|
||||
scale = yScale
|
||||
}
|
||||
op := &ebiten.DrawImageOptions{}
|
||||
op.Filter = ebiten.FilterLinear
|
||||
op.GeoM.Scale(scale, scale)
|
||||
dx := float64(size) - float64(bounds.Dx())*scale
|
||||
op.GeoM.Translate(dx/2, 0)
|
||||
dy := float64(size) - float64(bounds.Dy())*scale
|
||||
op.GeoM.Translate(0, dy/2)
|
||||
img := ebiten.NewImage(size, size)
|
||||
img.DrawImage(source, op)
|
||||
return img
|
||||
}
|
||||
|
||||
func loadImageAssets(width int) {
|
||||
if width == loadedCheckerWidth {
|
||||
return
|
||||
|
@ -206,7 +229,7 @@ func loadImageAssets(width int) {
|
|||
imgCheckerSideLight = loadAsset("asset/image/checker_side_light.png", width)
|
||||
imgCheckerSideDark = loadAsset("asset/image/checker_side_dark.png", width)
|
||||
|
||||
resizeDice := func(img image.Image, scale float64) *ebiten.Image {
|
||||
resizeDice := func(img *ebiten.Image, scale float64) *ebiten.Image {
|
||||
if game == nil {
|
||||
panic("nil game")
|
||||
}
|
||||
|
@ -228,24 +251,24 @@ func loadImageAssets(width int) {
|
|||
} else {
|
||||
cubesImageSize = float64(diceSize) * scale
|
||||
}
|
||||
return ebiten.NewImageFromImage(resize.Resize(uint(float64(diceSize)*scale), 0, img, resize.Lanczos3))
|
||||
return resizeImage(img, int(float64(diceSize)*scale))
|
||||
}
|
||||
|
||||
const size = 184
|
||||
imgDice = ebiten.NewImageFromImage(loadImage("asset/image/dice.png"))
|
||||
imgDice1 = resizeDice(imgDice.SubImage(image.Rect(0, 0, size*1, size*1)), 1)
|
||||
imgDice2 = resizeDice(imgDice.SubImage(image.Rect(size*1, 0, size*2, size*1)), 1)
|
||||
imgDice3 = resizeDice(imgDice.SubImage(image.Rect(size*2, 0, size*3, size*1)), 1)
|
||||
imgDice4 = resizeDice(imgDice.SubImage(image.Rect(0, size*1, size*1, size*2)), 1)
|
||||
imgDice5 = resizeDice(imgDice.SubImage(image.Rect(size*1, size*1, size*2, size*2)), 1)
|
||||
imgDice6 = resizeDice(imgDice.SubImage(image.Rect(size*2, size*1, size*3, size*2)), 1)
|
||||
imgDice1 = resizeDice(imgDice.SubImage(image.Rect(0, 0, size*1, size*1)).(*ebiten.Image), 1)
|
||||
imgDice2 = resizeDice(imgDice.SubImage(image.Rect(size*1, 0, size*2, size*1)).(*ebiten.Image), 1)
|
||||
imgDice3 = resizeDice(imgDice.SubImage(image.Rect(size*2, 0, size*3, size*1)).(*ebiten.Image), 1)
|
||||
imgDice4 = resizeDice(imgDice.SubImage(image.Rect(0, size*1, size*1, size*2)).(*ebiten.Image), 1)
|
||||
imgDice5 = resizeDice(imgDice.SubImage(image.Rect(size*1, size*1, size*2, size*2)).(*ebiten.Image), 1)
|
||||
imgDice6 = resizeDice(imgDice.SubImage(image.Rect(size*2, size*1, size*3, size*2)).(*ebiten.Image), 1)
|
||||
imgCubes = ebiten.NewImageFromImage(loadImage("asset/image/cubes.png"))
|
||||
imgCubes2 = resizeDice(imgCubes.SubImage(image.Rect(0, 0, size*1, size*1)), 0.6)
|
||||
imgCubes4 = resizeDice(imgCubes.SubImage(image.Rect(size*1, 0, size*2, size*1)), 0.6)
|
||||
imgCubes8 = resizeDice(imgCubes.SubImage(image.Rect(size*2, 0, size*3, size*1)), 0.6)
|
||||
imgCubes16 = resizeDice(imgCubes.SubImage(image.Rect(0, size*1, size*1, size*2)), 0.6)
|
||||
imgCubes32 = resizeDice(imgCubes.SubImage(image.Rect(size*1, size*1, size*2, size*2)), 0.6)
|
||||
imgCubes64 = resizeDice(imgCubes.SubImage(image.Rect(size*2, size*1, size*3, size*2)), 0.6)
|
||||
imgCubes2 = resizeDice(imgCubes.SubImage(image.Rect(0, 0, size*1, size*1)).(*ebiten.Image), 0.6)
|
||||
imgCubes4 = resizeDice(imgCubes.SubImage(image.Rect(size*1, 0, size*2, size*1)).(*ebiten.Image), 0.6)
|
||||
imgCubes8 = resizeDice(imgCubes.SubImage(image.Rect(size*2, 0, size*3, size*1)).(*ebiten.Image), 0.6)
|
||||
imgCubes16 = resizeDice(imgCubes.SubImage(image.Rect(0, size*1, size*1, size*2)).(*ebiten.Image), 0.6)
|
||||
imgCubes32 = resizeDice(imgCubes.SubImage(image.Rect(size*1, size*1, size*2, size*2)).(*ebiten.Image), 0.6)
|
||||
imgCubes64 = resizeDice(imgCubes.SubImage(image.Rect(size*2, size*1, size*3, size*2)).(*ebiten.Image), 0.6)
|
||||
|
||||
imgProfileBirthday1 = ebiten.NewImageFromImage(loadImage("asset/image/profile_birthday_1.png"))
|
||||
|
||||
|
@ -306,7 +329,7 @@ func loadAudioAssets() {
|
|||
randomizeByteSlice(homeMultiSounds)
|
||||
}
|
||||
|
||||
func loadImage(assetPath string) image.Image {
|
||||
func loadImage(assetPath string) *ebiten.Image {
|
||||
f, err := assetFS.Open(assetPath)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
|
@ -317,17 +340,15 @@ func loadImage(assetPath string) image.Image {
|
|||
log.Fatal(err)
|
||||
}
|
||||
|
||||
return img
|
||||
return ebiten.NewImageFromImage(img)
|
||||
}
|
||||
|
||||
func loadAsset(assetPath string, width int) *ebiten.Image {
|
||||
img := loadImage(assetPath)
|
||||
|
||||
if width > 0 {
|
||||
imgResized := resize.Resize(uint(width), 0, img, resize.Lanczos3)
|
||||
return ebiten.NewImageFromImage(imgResized)
|
||||
return resizeImage(img, width)
|
||||
}
|
||||
return ebiten.NewImageFromImage(img)
|
||||
return img
|
||||
}
|
||||
|
||||
func LoadBytes(p string) []byte {
|
||||
|
|
1
go.mod
1
go.mod
|
@ -13,7 +13,6 @@ require (
|
|||
github.com/coder/websocket v1.8.12
|
||||
github.com/hajimehoshi/ebiten/v2 v2.8.1
|
||||
github.com/llgcode/draw2d v0.0.0-20240627062922-0ed1ff131195
|
||||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
|
||||
golang.org/x/image v0.21.0
|
||||
golang.org/x/sys v0.26.0
|
||||
golang.org/x/text v0.19.0
|
||||
|
|
2
go.sum
2
go.sum
|
@ -99,8 +99,6 @@ github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa1
|
|||
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
|
||||
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
|
||||
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
|
||||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
|
||||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
|
||||
github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
|
||||
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
|
||||
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
|
||||
|
|
Loading…
Reference in a new issue