Add padding to left and top of screen

This commit is contained in:
Trevor Slocum 2019-10-18 16:32:05 -07:00
parent 2d0385ffb4
commit b8a04f9b27
7 changed files with 150 additions and 31 deletions

View file

@ -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 {

View file

@ -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
View file

@ -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
View file

@ -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
View 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'

View file

@ -1,3 +1,5 @@
//+build !windows
package ssh
import (

View 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) {
}