|
@@ -333,7 +333,7 @@ func DeckColorMenu() door.Menu {
|
|
|
"GREEN": door.ColorText("BRI GREEN ON BLUE"),
|
|
|
"MAGENTA": door.ColorText("BRI MAGENTA ON BLUE"),
|
|
|
"WHITE": door.ColorText("BRI WHITE ON BLUE"),
|
|
|
- "ALL": door.ColorText("WHITE ON BLUE")}
|
|
|
+ "ALL": door.ColorText("BRI WHITE ON BLUE")}
|
|
|
selectMap := map[string]string{"BLUE": door.ColorText("BRI BLUE ON BLACK"),
|
|
|
"BROWN": door.ColorText("BROWN ON BLACK"),
|
|
|
"RED": door.ColorText("BRI RED ON BLACK"),
|
|
@@ -341,7 +341,7 @@ func DeckColorMenu() door.Menu {
|
|
|
"GREEN": door.ColorText("BRI GREEN ON BLACK"),
|
|
|
"MAGENTA": door.ColorText("BRI MAGENTA ON BLACK"),
|
|
|
"WHITE": door.ColorText("BRI WHITE ON BLACK"),
|
|
|
- "ALL": door.ColorText("WHITE ON BLACK")}
|
|
|
+ "ALL": door.ColorText("BRI WHITE ON BLACK")}
|
|
|
|
|
|
m.SelectedR = MakeColorsRender(door.ColorText("BOLD CYAN"),
|
|
|
door.ColorText("BOLD BLUE"),
|
|
@@ -384,6 +384,7 @@ func DisplaySettings(d *door.Door) {
|
|
|
if key[0] == '_' {
|
|
|
continue
|
|
|
}
|
|
|
+ key = strings.Replace(key, "_", " ", -1)
|
|
|
l = door.Line{Text: fmt.Sprintf("%20s : %*s", key, -(W - 23), value), RenderF: renderF}
|
|
|
panel.Lines = append(panel.Lines, l)
|
|
|
}
|
|
@@ -422,6 +423,68 @@ func Configure(d *door.Door, db *DBData) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func Help() door.Panel {
|
|
|
+ W := 60
|
|
|
+ center_x := (door.Width - W) / 2
|
|
|
+ center_y := (door.Height - 16) / 2
|
|
|
+ help := door.Panel{X: center_x,
|
|
|
+ Y: center_y,
|
|
|
+ Width: W,
|
|
|
+ Style: door.DOUBLE,
|
|
|
+ BorderColor: door.ColorText("BOLD YELLOW ON BLUE")}
|
|
|
+ help.Lines = append(help.Lines, door.Line{Text: fmt.Sprintf("%*s", -W, "Help"),
|
|
|
+ DefaultColor: door.ColorText("BOLD CYAN ON BLUE")})
|
|
|
+ help.Lines = append(help.Lines, help.Spacer())
|
|
|
+ copyright := fmt.Sprintf("Space-Ace (C) 2022 Red Green Software")
|
|
|
+ help.Lines = append(help.Lines,
|
|
|
+ door.Line{Text: fmt.Sprintf("%*s", -W, copyright),
|
|
|
+ DefaultColor: door.ColorText("BOLD WHITE ON BLUE")})
|
|
|
+ for _, text := range []string{"",
|
|
|
+ "Use Left/Right arrow keys, or 4/6 keys to move marker.",
|
|
|
+ "The marker wraps around the sides of the screen.", "",
|
|
|
+ "Select card to play with Space or 5.",
|
|
|
+ "A card can play if it is higher or lower in rank by 1.",
|
|
|
+ "",
|
|
|
+ "Enter draws another card.",
|
|
|
+ "",
|
|
|
+ "Example: A Jack could play either a Ten or a Queen.",
|
|
|
+ "Example: A King could play either an Ace or a Queen.",
|
|
|
+ "",
|
|
|
+ "The more cards in your streak, the more points earn.",
|
|
|
+ } {
|
|
|
+ help.Lines = append(help.Lines, door.Line{Text: fmt.Sprintf("%*s", -W, text)})
|
|
|
+ }
|
|
|
+ return help
|
|
|
+}
|
|
|
+
|
|
|
+func About() door.Panel {
|
|
|
+ W := 60
|
|
|
+ center_x := (door.Width - W) / 2
|
|
|
+ center_y := (door.Height - 16) / 2
|
|
|
+ about := door.Panel{X: center_x,
|
|
|
+ Y: center_y,
|
|
|
+ Width: W,
|
|
|
+ Style: door.SINGLE_DOUBLE,
|
|
|
+ BorderColor: door.ColorText("BOLD YELLOW ON BLUE"),
|
|
|
+ }
|
|
|
+ about.Lines = append(about.Lines, door.Line{Text: fmt.Sprintf("%*s", -W, "About This Door"),
|
|
|
+ DefaultColor: door.ColorText("BOLD CYAN ON BLUE")})
|
|
|
+ about.Lines = append(about.Lines, about.Spacer())
|
|
|
+ copyright := fmt.Sprintf("Space-Ace (C) 2022 Red Green Software")
|
|
|
+ about.Lines = append(about.Lines,
|
|
|
+ door.Line{Text: fmt.Sprintf("%*s", -W, copyright),
|
|
|
+ DefaultColor: door.ColorText("BOLD WHITE ON BLUE")})
|
|
|
+ for _, text := range []string{"",
|
|
|
+ "This door was written by Bugz.",
|
|
|
+ "",
|
|
|
+ "It is written in Go, understands CP437 and unicode, adapts",
|
|
|
+ "to screen sizes, uses door32.sys, and runs on Linux and",
|
|
|
+ "Windows."} {
|
|
|
+ about.Lines = append(about.Lines, door.Line{Text: fmt.Sprintf("%*s", -W, text)})
|
|
|
+ }
|
|
|
+ return about
|
|
|
+}
|
|
|
+
|
|
|
func main() {
|
|
|
var message string
|
|
|
|
|
@@ -480,10 +543,10 @@ func main() {
|
|
|
SaveConfig(config_filename, Config)
|
|
|
}
|
|
|
|
|
|
- s := StarField{}
|
|
|
- s.Regenerate()
|
|
|
+ starfield := StarField{}
|
|
|
+ starfield.Regenerate(rng)
|
|
|
|
|
|
- s.Display(&d)
|
|
|
+ starfield.Display(&d)
|
|
|
d.Write(door.Goto(1, 1) + door.Reset)
|
|
|
|
|
|
// Get the last call value (if they have called before)
|
|
@@ -522,7 +585,7 @@ func main() {
|
|
|
|
|
|
for choice >= 0 {
|
|
|
d.Write(door.Clrscr)
|
|
|
- s.Display(&d)
|
|
|
+ starfield.Display(&d)
|
|
|
choice = mainmenu.Choose(&d)
|
|
|
|
|
|
if choice < 0 {
|
|
@@ -542,9 +605,13 @@ func main() {
|
|
|
Configure(&d, &db)
|
|
|
case 'H':
|
|
|
// Help
|
|
|
+ h := Help()
|
|
|
+ d.Write(door.Clrscr + h.Output() + door.Reset + door.CRNL)
|
|
|
press_a_key(&d)
|
|
|
case 'A':
|
|
|
// About
|
|
|
+ a := About()
|
|
|
+ d.Write(door.Clrscr + a.Output() + door.Reset + door.CRNL)
|
|
|
press_a_key(&d)
|
|
|
case 'Q':
|
|
|
choice = -1
|