Colors...
This commit is contained in:
@ -41,7 +41,7 @@ type State struct {
|
|||||||
rowHeaders, colHeaders []header
|
rowHeaders, colHeaders []header
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(sectionSize, cellsPerSection int) *State {
|
func New(sectionSize, cellsPerSection int, reveal bool) *State {
|
||||||
s := &State{
|
s := &State{
|
||||||
sectionSize: sectionSize,
|
sectionSize: sectionSize,
|
||||||
cellsPerSection: cellsPerSection,
|
cellsPerSection: cellsPerSection,
|
||||||
@ -58,7 +58,33 @@ func New(sectionSize, cellsPerSection int) *State {
|
|||||||
s.initSection(Point{x, y})
|
s.initSection(Point{x, y})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO reveal 1 row per section, 1 col per sections/2
|
if reveal {
|
||||||
|
for i := 0; i < s.sectionSize; i++ {
|
||||||
|
reveal := i*s.cellsPerSection + rand.Intn(s.cellsPerSection)
|
||||||
|
s.history += fmt.Sprintf("ry(%d)", reveal)
|
||||||
|
for x := 0; x < s.size(); x++ {
|
||||||
|
p := Point{x, reveal}
|
||||||
|
if s.cells.state(p) {
|
||||||
|
s.mark(p)
|
||||||
|
} else {
|
||||||
|
s.flag(p)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if rand.Int()%2 == 0 {
|
||||||
|
reveal = i*s.cellsPerSection + rand.Intn(s.cellsPerSection)
|
||||||
|
s.history += fmt.Sprintf("rx(%d)", reveal)
|
||||||
|
for y := 0; y < s.size(); y++ {
|
||||||
|
p := Point{reveal, y}
|
||||||
|
if s.cells.state(p) {
|
||||||
|
s.mark(p)
|
||||||
|
} else {
|
||||||
|
s.flag(p)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
s.initialized = true
|
s.initialized = true
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,16 +7,18 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
complete = []string{"██ ", "██ "}
|
|
||||||
flagged = []string{"╲╱ ", "╱╲ "}
|
|
||||||
marked = []string{"╭╮ ", "╰╯ "}
|
|
||||||
blank = []string{".- ", " "}
|
|
||||||
|
|
||||||
cursorStyle = lipgloss.NewStyle().
|
cursorStyle = lipgloss.NewStyle().
|
||||||
Background(lipgloss.Color("#005566"))
|
Background(lipgloss.White)
|
||||||
|
|
||||||
gridStyle = lipgloss.NewStyle().
|
gridStyle = lipgloss.NewStyle().
|
||||||
Foreground(lipgloss.Black)
|
Foreground(lipgloss.Black)
|
||||||
|
|
||||||
|
markedStyle = lipgloss.NewStyle()
|
||||||
|
|
||||||
|
complete = []string{"██ ", "██ "}
|
||||||
|
flagged = []string{"╲╱ ", "╱╲ "}
|
||||||
|
marked = []string{" ", " "}
|
||||||
|
blank = []string{" ", " "}
|
||||||
)
|
)
|
||||||
|
|
||||||
func (c *cell) View() []string {
|
func (c *cell) View() []string {
|
||||||
@ -32,7 +34,7 @@ func (c *cell) View() []string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (f *field) View(p *Point, sectionSize, cellsPerSection int) string {
|
func (f *field) View(p *Point, sectionSize, cellsPerSection int) string {
|
||||||
res := gridStyle.Render("┌")
|
res := gridStyle.Render("┌─")
|
||||||
for c := 0; c < cellsPerSection*sectionSize*3; c++ {
|
for c := 0; c < cellsPerSection*sectionSize*3; c++ {
|
||||||
res += gridStyle.Render("─")
|
res += gridStyle.Render("─")
|
||||||
if c == cellsPerSection*sectionSize*3-1 {
|
if c == cellsPerSection*sectionSize*3-1 {
|
||||||
@ -40,7 +42,7 @@ func (f *field) View(p *Point, sectionSize, cellsPerSection int) string {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
if c%(cellsPerSection*3) == cellsPerSection*3-1 {
|
if c%(cellsPerSection*3) == cellsPerSection*3-1 {
|
||||||
res += gridStyle.Render("┬")
|
res += gridStyle.Render("┬─")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
resA := gridStyle.Render("│ ")
|
resA := gridStyle.Render("│ ")
|
||||||
@ -50,6 +52,11 @@ func (f *field) View(p *Point, sectionSize, cellsPerSection int) string {
|
|||||||
if i == f.i(*p) {
|
if i == f.i(*p) {
|
||||||
resA += cursorStyle.Render(cellRes[0])
|
resA += cursorStyle.Render(cellRes[0])
|
||||||
resB += cursorStyle.Render(cellRes[1])
|
resB += cursorStyle.Render(cellRes[1])
|
||||||
|
} else if c.marked() {
|
||||||
|
markedStyle = lipgloss.NewStyle().
|
||||||
|
Background(lipgloss.Color(fmt.Sprintf("%d", i%214+16)))
|
||||||
|
resA += markedStyle.Render(cellRes[0])
|
||||||
|
resB += markedStyle.Render(cellRes[1])
|
||||||
} else {
|
} else {
|
||||||
resA += cellRes[0]
|
resA += cellRes[0]
|
||||||
resB += cellRes[1]
|
resB += cellRes[1]
|
||||||
@ -64,19 +71,19 @@ func (f *field) View(p *Point, sectionSize, cellsPerSection int) string {
|
|||||||
resB = gridStyle.Render("│ ")
|
resB = gridStyle.Render("│ ")
|
||||||
}
|
}
|
||||||
if i != 0 && i%(cellsPerSection*cellsPerSection*sectionSize) == 0 {
|
if i != 0 && i%(cellsPerSection*cellsPerSection*sectionSize) == 0 {
|
||||||
res += gridStyle.Render("├")
|
res += gridStyle.Render("├─")
|
||||||
for section := 0; section < sectionSize; section++ {
|
for section := 0; section < sectionSize; section++ {
|
||||||
for sectionCell := 0; sectionCell < cellsPerSection; sectionCell++ {
|
for sectionCell := 0; sectionCell < cellsPerSection; sectionCell++ {
|
||||||
res += gridStyle.Render("───")
|
res += gridStyle.Render("───")
|
||||||
}
|
}
|
||||||
if section < sectionSize-1 {
|
if section < sectionSize-1 {
|
||||||
res += gridStyle.Render("┼")
|
res += gridStyle.Render("┼─")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
res += gridStyle.Render("┤") + "\n"
|
res += gridStyle.Render("┤") + "\n"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
res += gridStyle.Render("└")
|
res += gridStyle.Render("└─")
|
||||||
for c := 0; c < cellsPerSection*sectionSize*3; c++ {
|
for c := 0; c < cellsPerSection*sectionSize*3; c++ {
|
||||||
res += gridStyle.Render("─")
|
res += gridStyle.Render("─")
|
||||||
if c == cellsPerSection*sectionSize*3-1 {
|
if c == cellsPerSection*sectionSize*3-1 {
|
||||||
@ -84,7 +91,7 @@ func (f *field) View(p *Point, sectionSize, cellsPerSection int) string {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
if c%(cellsPerSection*3) == cellsPerSection*3-1 {
|
if c%(cellsPerSection*3) == cellsPerSection*3-1 {
|
||||||
res += gridStyle.Render("┴")
|
res += gridStyle.Render("┴─")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return res
|
return res
|
||||||
|
|||||||
@ -25,7 +25,7 @@ func NewModel(sectionSize, cellsPerSection int) model {
|
|||||||
fieldSize: sectionSize * cellsPerSection,
|
fieldSize: sectionSize * cellsPerSection,
|
||||||
sectionSize: sectionSize,
|
sectionSize: sectionSize,
|
||||||
cellsPerSection: cellsPerSection,
|
cellsPerSection: cellsPerSection,
|
||||||
state: state.New(sectionSize, cellsPerSection),
|
state: state.New(sectionSize, cellsPerSection, true),
|
||||||
}
|
}
|
||||||
|
|
||||||
return m
|
return m
|
||||||
|
|||||||
Reference in New Issue
Block a user