Render player and opponent hands
This commit is contained in:
parent
f8cb61b963
commit
f432cba495
|
@ -56,6 +56,7 @@ func (c *cardStackWidget) Draw(screen tcell.Screen) {
|
|||
|
||||
if i > 0 && cardWidget.selected && !c.Cards[i-1].selected {
|
||||
screen.SetContent(stackX+(i*cardBufferX), stackY+cardOffsetY+1, tcell.RuneRTee, nil, tcell.StyleDefault)
|
||||
screen.SetContent(stackX+(i*cardBufferX)+(cardBufferX)+2, (stackY+cardOffsetY+cardHeight)-1, tcell.RuneTTee, nil, tcell.StyleDefault)
|
||||
}
|
||||
|
||||
if i > 0 && (i > 1 && !cardWidget.selected && c.Cards[i-1].selected && !c.Cards[i-2].selected) {
|
||||
|
@ -86,7 +87,7 @@ func (c *cardStackWidget) MouseHandler() func(action cview.MouseAction, event *t
|
|||
for i := range c.Cards {
|
||||
card := c.Cards[(len(c.Cards)-1)-i]
|
||||
if card.InRect(event.Position()) {
|
||||
if c.MaxSelection > 0 && !card.selected {
|
||||
if c.MaxSelection != 0 && !card.selected {
|
||||
selected := 0
|
||||
for i := range c.Cards {
|
||||
if c.Cards[i].selected {
|
||||
|
|
|
@ -27,7 +27,7 @@ func (c *cardWidget) Draw(screen tcell.Screen) {
|
|||
|
||||
color := tcell.ColorDefault
|
||||
if c.Card.Suit == joker.SuitHearts || c.Card.Suit == joker.SuitDiamonds {
|
||||
color = tcell.ColorRed
|
||||
color = tcell.NewHexColor(0xFF3232)
|
||||
}
|
||||
|
||||
x, y, w, h := c.GetInnerRect()
|
||||
|
|
2
game.go
2
game.go
|
@ -26,7 +26,7 @@ type GameState struct {
|
|||
|
||||
Hand1 joker.Cards `json:"hand1"`
|
||||
Hand2 joker.Cards `json:"hand2"`
|
||||
Crib PlayerCards `json:"crib"`
|
||||
Crib joker.Cards `json:"crib"`
|
||||
Score1 int `json:"score1"`
|
||||
Score2 int `json:"score2"`
|
||||
|
||||
|
|
71
main.go
71
main.go
|
@ -10,17 +10,19 @@ import (
|
|||
"bytes"
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
"gitlab.com/tslocum/crib/pkg/render"
|
||||
"gitlab.com/tslocum/cview"
|
||||
"gitlab.com/tslocum/joker"
|
||||
)
|
||||
|
||||
var (
|
||||
app *cview.Application
|
||||
mainBuf *cview.TextView
|
||||
statusBuf *cview.TextView
|
||||
mainStack *cardStackWidget
|
||||
exit = make(chan bool)
|
||||
app *cview.Application
|
||||
mainBuf *cview.TextView
|
||||
statusBuf *cview.TextView
|
||||
mainHandStack *cardStackWidget
|
||||
mainCribStack *cardStackWidget
|
||||
oppHandStack *cardStackWidget
|
||||
oppCribStack *cardStackWidget
|
||||
exit = make(chan bool)
|
||||
)
|
||||
|
||||
func connect(address string) {
|
||||
|
@ -59,13 +61,40 @@ func connect(address string) {
|
|||
}
|
||||
|
||||
if gameState.Player > 0 {
|
||||
hand := gameState.Hand1
|
||||
playerHand := gameState.Hand1
|
||||
oppHand := gameState.Hand2
|
||||
if gameState.Player == 2 {
|
||||
hand = gameState.Hand2
|
||||
playerHand = gameState.Hand2
|
||||
oppHand = gameState.Hand1
|
||||
}
|
||||
|
||||
mainBuf.Clear()
|
||||
mainBuf.Write(combineBuffers(render.Cards(hand, 9, 9, 4), render.Cards(hand, 9, 9, 4), []byte(" ")))
|
||||
playerCrib := gameState.Crib
|
||||
var oppCrib joker.Cards
|
||||
if gameState.Dealer != gameState.Player {
|
||||
playerCrib = joker.Cards{}
|
||||
oppCrib = gameState.Crib
|
||||
}
|
||||
|
||||
mainHandStack.Cards = make([]*cardWidget, len(playerHand))
|
||||
mainCribStack.Cards = make([]*cardWidget, len(playerCrib))
|
||||
oppHandStack.Cards = make([]*cardWidget, len(oppHand))
|
||||
oppCribStack.Cards = make([]*cardWidget, len(oppCrib))
|
||||
|
||||
for i := 0; i < len(playerHand); i++ {
|
||||
mainHandStack.Cards[i] = NewCardWidget(playerHand[i])
|
||||
}
|
||||
|
||||
for i := 0; i < len(playerCrib); i++ {
|
||||
mainCribStack.Cards[i] = NewCardWidget(playerCrib[i])
|
||||
}
|
||||
|
||||
for i := 0; i < len(oppHand); i++ {
|
||||
oppHandStack.Cards[i] = NewCardWidget(oppHand[i])
|
||||
}
|
||||
|
||||
for i := 0; i < len(oppCrib); i++ {
|
||||
oppCribStack.Cards[i] = NewCardWidget(oppCrib[i])
|
||||
}
|
||||
}
|
||||
|
||||
statusBuf.Write([]byte(fmt.Sprintf("decode: %+v\n", gameState)))
|
||||
|
@ -123,14 +152,15 @@ func main() {
|
|||
|
||||
app = cview.NewApplication().EnableMouse(true)
|
||||
|
||||
mainStack = NewCardStackWidget()
|
||||
mainHandStack = NewCardStackWidget()
|
||||
mainCribStack = NewCardStackWidget()
|
||||
oppHandStack = NewCardStackWidget()
|
||||
oppCribStack = NewCardStackWidget()
|
||||
|
||||
mainStack.MaxSelection = 2
|
||||
|
||||
for _, card := range joker.StandardCards {
|
||||
cardWidget := NewCardWidget(card)
|
||||
mainStack.Cards = append(mainStack.Cards, cardWidget)
|
||||
}
|
||||
mainHandStack.MaxSelection = 2
|
||||
mainCribStack.MaxSelection = -1
|
||||
oppHandStack.MaxSelection = -1
|
||||
oppCribStack.MaxSelection = -1
|
||||
|
||||
g := cview.NewGrid()
|
||||
|
||||
|
@ -140,8 +170,11 @@ func main() {
|
|||
statusBuf = cview.NewTextView().SetWrap(true).SetWordWrap(true)
|
||||
|
||||
//g.AddItem(mainBuf, 0, 0, 1, 1, 0, 0, false)
|
||||
g.AddItem(mainStack, 0, 0, 1, 1, 0, 0, false)
|
||||
g.AddItem(statusBuf, 1, 0, 1, 1, 0, 0, false)
|
||||
g.AddItem(mainHandStack, 0, 0, 1, 1, 0, 0, false)
|
||||
g.AddItem(mainCribStack, 0, 1, 1, 1, 0, 0, false)
|
||||
g.AddItem(oppHandStack, 1, 0, 1, 1, 0, 0, false)
|
||||
g.AddItem(oppCribStack, 1, 1, 1, 1, 0, 0, false)
|
||||
g.AddItem(statusBuf, 2, 0, 1, 2, 0, 0, false)
|
||||
|
||||
app.SetRoot(g, true)
|
||||
|
||||
|
|
Loading…
Reference in New Issue