Add padding to left and top of screen
This commit is contained in:
parent
2d0385ffb4
commit
b8a04f9b27
7 changed files with 150 additions and 31 deletions
|
@ -24,24 +24,12 @@ var (
|
|||
inputActive bool
|
||||
showDetails bool
|
||||
|
||||
app *tview.Application
|
||||
titleGrid *tview.Grid
|
||||
titleContainerGrid *tview.Grid
|
||||
playerSettingsForm *tview.Form
|
||||
playerSettingsGrid *tview.Grid
|
||||
playerSettingsContainerGrid *tview.Grid
|
||||
gameSettingsForm *tview.Form
|
||||
gameSettingsGrid *tview.Grid
|
||||
gameSettingsContainerGrid *tview.Grid
|
||||
gameGrid *tview.Grid
|
||||
titleName *tview.TextView
|
||||
titleL *tview.TextView
|
||||
titleR *tview.TextView
|
||||
inputView *tview.InputField
|
||||
mtx *tview.TextView
|
||||
side *tview.TextView
|
||||
buffer *tview.TextView
|
||||
recent *tview.TextView
|
||||
app *tview.Application
|
||||
inputView *tview.InputField
|
||||
mtx *tview.TextView
|
||||
side *tview.TextView
|
||||
buffer *tview.TextView
|
||||
recent *tview.TextView
|
||||
|
||||
joinedGame bool
|
||||
|
||||
|
@ -52,6 +40,7 @@ var (
|
|||
renderBuffer bytes.Buffer
|
||||
|
||||
multiplayerMatrixSize int
|
||||
extraScreenPadding int
|
||||
|
||||
screenW, screenH int
|
||||
newScreenW, newScreenH int
|
||||
|
@ -89,6 +78,8 @@ var renderBlock = map[mino.Block][]byte{
|
|||
var (
|
||||
renderHLine = []byte(string(tcell.RuneHLine))
|
||||
renderVLine = []byte(string(tcell.RuneVLine))
|
||||
renderULCorner = []byte(string(tcell.RuneULCorner))
|
||||
renderURCorner = []byte(string(tcell.RuneURCorner))
|
||||
renderLLCorner = []byte(string(tcell.RuneLLCorner))
|
||||
renderLRCorner = []byte(string(tcell.RuneLRCorner))
|
||||
)
|
||||
|
@ -115,7 +106,7 @@ func initGUI() (*tview.Application, error) {
|
|||
|
||||
gameGrid = tview.NewGrid().
|
||||
SetBorders(false).
|
||||
SetRows(2+(20*blockSize), -1)
|
||||
SetRows(2+(20*blockSize)+extraScreenPadding, -1)
|
||||
|
||||
mtx = tview.NewTextView().
|
||||
SetScrollable(false).
|
||||
|
@ -376,25 +367,38 @@ func handleResize(screen tcell.Screen) {
|
|||
}
|
||||
}
|
||||
|
||||
multiplayerMatrixSize = (screenW - ((10 * blockSize) + 16)) / ((10 * blockSize) + 4)
|
||||
|
||||
inputHeight = 1
|
||||
mainHeight = (20 * blockSize) + 2
|
||||
if screenH > mainHeight+5 {
|
||||
mainHeight += 2
|
||||
inputHeight++
|
||||
} else if screenH > mainHeight+2 {
|
||||
if screenH > mainHeight+9 {
|
||||
extraScreenPadding = 3
|
||||
mainHeight++
|
||||
inputHeight = 2
|
||||
} else if screenH > mainHeight+7 {
|
||||
extraScreenPadding = 2
|
||||
mainHeight++
|
||||
inputHeight = 2
|
||||
} else if screenH > mainHeight+5 {
|
||||
extraScreenPadding = 1
|
||||
mainHeight++
|
||||
inputHeight = 1
|
||||
} else if screenH > mainHeight+2 {
|
||||
extraScreenPadding = 0
|
||||
mainHeight++
|
||||
inputHeight = 1
|
||||
} else {
|
||||
extraScreenPadding = 0
|
||||
inputHeight = 1
|
||||
}
|
||||
|
||||
newLogLines = (screenH - mainHeight) - inputHeight
|
||||
multiplayerMatrixSize = ((screenW - extraScreenPadding) - ((10 * blockSize) + 16)) / ((10 * blockSize) + 4)
|
||||
|
||||
newLogLines = ((screenH - mainHeight) - inputHeight) - extraScreenPadding
|
||||
if newLogLines > 0 {
|
||||
showLogLines = newLogLines
|
||||
} else {
|
||||
showLogLines = 1
|
||||
}
|
||||
|
||||
gameGrid.SetRows(mainHeight, inputHeight, -1).SetColumns(1, 4+(10*blockSize), 10, -1)
|
||||
gameGrid.SetRows(mainHeight+extraScreenPadding, inputHeight, -1).SetColumns(1+extraScreenPadding, 4+(10*blockSize), 10, -1)
|
||||
|
||||
logMutex.Lock()
|
||||
renderLogMessages = true
|
||||
|
@ -623,6 +627,18 @@ func renderMatrix(m *mino.Matrix) {
|
|||
bs = 1
|
||||
}
|
||||
|
||||
for i := 0; i < extraScreenPadding; i++ {
|
||||
if m.Type == mino.MatrixStandard && i == extraScreenPadding-1 {
|
||||
renderBuffer.Write(renderULCorner)
|
||||
for x := 0; x < m.W*bs; x++ {
|
||||
renderBuffer.Write(renderHLine)
|
||||
}
|
||||
renderBuffer.Write(renderURCorner)
|
||||
}
|
||||
|
||||
renderBuffer.WriteRune('\n')
|
||||
}
|
||||
|
||||
for y := m.H - 1; y >= 0; y-- {
|
||||
for j := 0; j < bs; j++ {
|
||||
if m.Type == mino.MatrixStandard {
|
||||
|
@ -708,6 +724,24 @@ func renderMatrixes(mx []*mino.Matrix) {
|
|||
|
||||
height := mx[0].H
|
||||
|
||||
for i := 0; i < extraScreenPadding; i++ {
|
||||
if i == extraScreenPadding-1 {
|
||||
for i := range mx {
|
||||
if i > 0 {
|
||||
renderBuffer.WriteString(div)
|
||||
}
|
||||
|
||||
renderBuffer.Write(renderULCorner)
|
||||
for x := 0; x < mx[i].W*blockSize; x++ {
|
||||
renderBuffer.Write(renderHLine)
|
||||
}
|
||||
renderBuffer.Write(renderURCorner)
|
||||
}
|
||||
}
|
||||
|
||||
renderBuffer.WriteRune('\n')
|
||||
}
|
||||
|
||||
for y := height - 1; y >= 0; y-- {
|
||||
for j := 0; j < blockSize; j++ {
|
||||
for i := range mx {
|
||||
|
|
|
@ -17,6 +17,22 @@ var (
|
|||
titleSelectedButton int
|
||||
drawTitle = make(chan struct{}, game.CommandQueueSize)
|
||||
|
||||
titleGrid *tview.Grid
|
||||
titleContainerGrid *tview.Grid
|
||||
|
||||
playerSettingsForm *tview.Form
|
||||
playerSettingsGrid *tview.Grid
|
||||
playerSettingsContainerGrid *tview.Grid
|
||||
|
||||
gameSettingsForm *tview.Form
|
||||
gameSettingsGrid *tview.Grid
|
||||
gameSettingsContainerGrid *tview.Grid
|
||||
gameGrid *tview.Grid
|
||||
|
||||
titleName *tview.TextView
|
||||
titleL *tview.TextView
|
||||
titleR *tview.TextView
|
||||
|
||||
titleMatrixL = newTitleMatrixSide()
|
||||
titleMatrix = newTitleMatrixName()
|
||||
titleMatrixR = newTitleMatrixSide()
|
||||
|
|
3
go.mod
3
go.mod
|
@ -9,6 +9,7 @@ require (
|
|||
github.com/gdamore/tcell v1.3.0
|
||||
github.com/gliderlabs/ssh v0.2.2
|
||||
github.com/mattn/go-isatty v0.0.10
|
||||
github.com/tslocum/tview v0.0.0-20191018010543-3246547dc836
|
||||
github.com/tslocum/tview v0.0.0-20191018041445-09b275a4b660
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550
|
||||
golang.org/x/sys v0.0.0-20191018095205-727590c5006e // indirect
|
||||
)
|
||||
|
|
6
go.sum
6
go.sum
|
@ -20,8 +20,8 @@ github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/
|
|||
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||
github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY=
|
||||
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
github.com/tslocum/tview v0.0.0-20191018010543-3246547dc836 h1:Lh1HUlmWHmVY+wJUlNpZEOSdxxzU61VOSIkYDPYqYWs=
|
||||
github.com/tslocum/tview v0.0.0-20191018010543-3246547dc836/go.mod h1:vUK8oe0CfwPjo5JouPDJq6g9+KsPiASsJP4yndpkzTg=
|
||||
github.com/tslocum/tview v0.0.0-20191018041445-09b275a4b660 h1:f/g7DFokEN2PRyGN4vIadgCDTTOoBoxiIxf4q1Re9PI=
|
||||
github.com/tslocum/tview v0.0.0-20191018041445-09b275a4b660/go.mod h1:vUK8oe0CfwPjo5JouPDJq6g9+KsPiASsJP4yndpkzTg=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
|
@ -33,6 +33,8 @@ golang.org/x/sys v0.0.0-20190626150813-e07cf5db2756/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191010194322-b09406accb47 h1:/XfQ9z7ib8eEJX2hdgFTZJ/ntt0swNk5oYBziWeTCvY=
|
||||
golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191018095205-727590c5006e h1:ZtoklVMHQy6BFRHkbG6JzK+S6rX82//Yeok1vMlizfQ=
|
||||
golang.org/x/sys v0.0.0-20191018095205-727590c5006e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
||||
|
|
45
goreleaser.yml
Normal file
45
goreleaser.yml
Normal file
|
@ -0,0 +1,45 @@
|
|||
project_name: netris
|
||||
|
||||
builds:
|
||||
-
|
||||
id: netris
|
||||
binary: netris
|
||||
main: ./cmd/netris
|
||||
env:
|
||||
- CGO_ENABLED=0
|
||||
# ldflags:
|
||||
# - -s -w -X git.sr.ht/~tslocum/netris/pkg/netris.Version={{.Version}}
|
||||
goos:
|
||||
- darwin
|
||||
- freebsd
|
||||
- linux
|
||||
- windows
|
||||
goarch:
|
||||
- 386
|
||||
- amd64
|
||||
-
|
||||
id: netris-server
|
||||
binary: netris-server
|
||||
main: ./cmd/netris-server
|
||||
# ldflags:
|
||||
# - -s -w -X git.sr.ht/~tslocum/netris/pkg/netris.Version={{.Version}}
|
||||
goos:
|
||||
- darwin
|
||||
- freebsd
|
||||
- linux
|
||||
- windows
|
||||
goarch:
|
||||
- 386
|
||||
- amd64
|
||||
archive:
|
||||
replacements:
|
||||
386: i386
|
||||
format_overrides:
|
||||
- goos: windows
|
||||
format: zip
|
||||
files:
|
||||
- CONFIGURATION.md
|
||||
- LICENSE
|
||||
- README.md
|
||||
checksum:
|
||||
name_template: 'checksums.txt'
|
|
@ -1,3 +1,5 @@
|
|||
//+build !windows
|
||||
|
||||
package ssh
|
||||
|
||||
import (
|
||||
|
|
19
pkg/game/ssh/server_windows.go
Normal file
19
pkg/game/ssh/server_windows.go
Normal file
|
@ -0,0 +1,19 @@
|
|||
//+build windows
|
||||
|
||||
package ssh
|
||||
|
||||
import "git.sr.ht/~tslocum/netris/pkg/game"
|
||||
|
||||
// SSH server is unsupported on Windows
|
||||
|
||||
type SSHServer struct {
|
||||
ListenAddress string
|
||||
NetrisBinary string
|
||||
NetrisAddress string
|
||||
}
|
||||
|
||||
func (s *SSHServer) Host(newPlayers chan<- *game.IncomingPlayer) {
|
||||
}
|
||||
|
||||
func (s *SSHServer) Shutdown(reason string) {
|
||||
}
|
Loading…
Reference in a new issue