Sfoglia il codice sorgente

Building art.go from space.ans works.

Steve Thielemann 3 anni fa
parent
commit
ef2b955721
5 ha cambiato i file con 28 aggiunte e 24 eliminazioni
  1. 1 0
      .gitignore
  2. 6 3
      Makefile
  3. 7 2
      ansi-to-go.py
  4. 2 2
      door/door.go
  5. 12 17
      testdoor/testdoor.go

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+testdoor/art.go

+ 6 - 3
Makefile

@@ -1,10 +1,13 @@
 
-all: door32 testdoor/testdoor
+all: door32 testdoor/testdoor testdoor/art.go
 
 
 door32: door32.c
 	gcc -o door32 door32.c
 
-testdoor/testdoor: testdoor/testdoor.go door/*.go
-	cd testdoor; go build testdoor.go
+testdoor/art.go: space.ans
+	./ansi-to-go.py main space.ans > testdoor/art.go
+
+testdoor/testdoor: testdoor/art.go testdoor/*.go door/*.go
+	cd testdoor; go build
 

+ 7 - 2
ansi-to-go.py

@@ -8,6 +8,7 @@ import sys
 
 filenames = sys.argv
 filenames.pop(0)
+package = filenames.pop(0)
 
 if not filenames:
     print("I need filename(s) to convert.")
@@ -59,7 +60,8 @@ def readfile(filename):
             line = line.rstrip("\r\n")
             lines.append(line)
 
-    print("{0} := [...]string {{".format(basename.upper()))
+    print("func {0}() [{1}]string {{".format(basename.upper(), len(lines)))
+    print("  return [{1}]string {{".format(basename.upper(), len(lines)))
     # print("std::array<const char *,{1}> {0} = {{".format(basename, len(lines)))
     # first = True
     for line in lines:
@@ -69,10 +71,13 @@ def readfile(filename):
         #    first = False
         print("    \"{0}\",".format(my_repr(line)))
     print(" }\n")
-
+    print("}\n\n")
+    
 # Begin the output process
 # print("#include <array>\n")
 
+print("package", package,"\n")
+
 # Process each file given
 for filename in filenames:
     readfile(filename)

+ 2 - 2
door/door.go

@@ -64,7 +64,7 @@ type DropfileConfig struct {
 	User_number    int
 	Real_name      string
 	Handle         string
-	security_level int
+	Security_level int
 	time_left      int
 	emulation      int
 	Node           int
@@ -117,7 +117,7 @@ func (d *Door) ReadDropfile(filename string) {
 	d.Config.User_number, err = strconv.Atoi(lines[4])
 	d.Config.Real_name = lines[5]
 	d.Config.Handle = lines[6]
-	d.Config.security_level, err = strconv.Atoi(lines[7])
+	d.Config.Security_level, err = strconv.Atoi(lines[7])
 	d.Config.time_left, err = strconv.Atoi(lines[8])
 	d.Config.emulation, err = strconv.Atoi(lines[9])
 	d.Config.Node, err = strconv.Atoi(lines[10])

+ 12 - 17
testdoor/testdoor.go

@@ -4,6 +4,7 @@ import (
 	"fmt"
 	"red-green/door"
 	"strconv"
+	"strings"
 	"time"
 )
 
@@ -72,6 +73,8 @@ func display_information(d *door.Door) {
 	d.Write(nice_format("BBS Software", d.Config.BBSID))
 	d.Write(nice_format("Real Name", d.Config.Real_name))
 	d.Write(nice_format("Handle", d.Config.Handle))
+	d.Write(nice_format("User #", strconv.Itoa(d.Config.User_number)))
+	d.Write(nice_format("Security Level", strconv.Itoa(d.Config.Security_level)))
 	d.Write(nice_format("Node #", strconv.Itoa(d.Config.Node)))
 	d.Write(nice_format("Unicode", strconv.FormatBool(door.Unicode)))
 	d.Write(nice_format("CP437", strconv.FormatBool(door.CP437)))
@@ -79,21 +82,9 @@ func display_information(d *door.Door) {
 }
 
 func display_ansi(d *door.Door) {
-	SPACE := [...]string{
-		"\x1b[?7h\x1b[255D\x1b[0;1;32m\xdc\x1b[42m\xb2\xb2\xb2\xb2\xdb\x1b[40m\xdc \x1b[42m\xb1\xb1\xb2\xb2\xdb\xdb\x1b[4C\xb1\xb2\xb2\xdb\x1b[4C\xb1\xb2\xb2\xdb\xdb\x1b[3C\xb1\xb2\xb2\xdb\xdb\x1b[11C\xb1\xb2\xb2\xdb\x1b[4C\xb1\xb2\xb2\xdb\xdb\x1b[3C\xb1\xb2\xb2\xdb\xdb\x1b[40m",
-		"\x1b[42m\xb1\xb1\x1b[4C\xdb\x1b[2C\xb1\xb1\x1b[2C\xdb\xdb\x1b[2C\xb0\xb1\x1b[2C\xb2\xdb\x1b[2C\xb0\xb1\x1b[3C\xdb\xdb\x1b[1C\xb0\xb1\x1b[3C\xdb\xdb\x1b[9C\xb0\xb1\x1b[2C\xb2\xdb\x1b[2C\xb0\xb1\x1b[3C\xdb\xdb\x1b[1C\xb0\xb1\x1b[3C\xdb\xdb\x1b[40m",
-		"\x1b[42m\xb0\xb1\x1b[40m\xdc\xdc\xdc\xdc   \x1b[42m\xb0\xb1\x1b[2C\xb2\xdb\x1b[1C \xb0\x1b[4C\xb2\xdb\x1b[1C\xb0\xb0\x1b[6C\xb0\xb0\x1b[0;32m\xdc\xdc\x1b[11C\x1b[42m \x1b[1m\xb0\x1b[4C\xb2\xdb\x1b[1C\xb0\xb0\x1b[6C\xb0\xb0\x1b[0;32m\xdc\xdc",
-		" \x1b[1m\xdf\xdf\xdf\xdf\x1b[42m\xb2\xb2\x1b[2C\xb0\xb0\xb1\xb1\xb2\x1b[2C  \xb0\xb0\xb1\xb1\xb2\xb2\x1b[1C \xb0\x1b[6C \xb0\x1b[0;32m\xdf\xdf\x1b[11C\x1b[42m  \x1b[1m\xb0\xb0\xb1\xb1\xb2\xb2\x1b[1C \xb0\x1b[6C \xb0\x1b[0;32m\xdf\xdf",
-		"\xdb    \x1b[1;42m\xb1\xb2\x1b[2C \xb0\x1b[5C  \x1b[4C\xb1\xb2\x1b[1C  \x1b[3C\xb1\xb2\x1b[1C  \x1b[3C\xb1\xb2\x1b[8C  \x1b[4C\xb1\xb2\x1b[1C  \x1b[3C\xb1\xb2\x1b[1C  \x1b[3C\xb1\xb2\x1b[40m",
-		"\x1b[0;32m\xdf\x1b[42m \x1b[40m\xdb\x1b[1;42m\xb0\xb0\xb1\x1b[0;32m\xdf \x1b[42m  \x1b[7C  \x1b[2C\x1b[1m\xb0\xb1\x1b[3C  \xb0\xb0\xb1\x1b[3C  \xb0\xb0\xb1\x1b[10C  \x1b[2C\xb0\xb1\x1b[3C  \xb0\xb0\xb1\x1b[3C  \xb0\xb0\xb1\x1b[40m",
-		"",
-		"",
-		"\x1b[37mBugz in space, with a deck of cards",
-		"\x1b[0m",
-	}
-
+	space := SPACE()
 	d.Write(door.Clrscr)
-	for _, line := range SPACE {
+	for _, line := range space {
 		if door.Unicode {
 			d.Write(door.CP437_to_Unicode(line) + door.CRNL)
 		} else {
@@ -157,10 +148,10 @@ func progress_bars(d *door.Door) {
 		percentage = int64(f * 100)
 
 		update_bars()
-
 		d.Write(bar_start + bar.Output() + "  " + door.Reset + bar2.Output() + door.Reset + "  " + bar3.Output())
 
 		if d.Disconnected {
+			// don't continue to sleep if we're disconnected
 			break
 		}
 
@@ -177,6 +168,9 @@ func panel_demo(d *door.Door) {
 	lineColor := door.ColorText("BRIGHT WHI ON BLUE")
 	// Add lines to the panel
 	for _, line := range []string{"The BBS Door Panel Demo", "(C) 2021 Red Green Software, https://red-green.com"} {
+		if door.Unicode {
+			line = strings.Replace(line, "(C)", "\u00a9", -1)
+		}
 		l := door.Line{Text: fmt.Sprintf(fmtStr, line), DefaultColor: lineColor}
 		p.Lines = append(p.Lines, l)
 	}
@@ -258,13 +252,14 @@ func main() {
 	message = fmt.Sprintf("Returning to the %s BBS..."+door.CRNL, d.Config.BBSID)
 	d.Write(message)
 
-	d.WaitKey(2, 0)
+	d.WaitKey(1, 0)
 	left = d.TimeLeft()
 
 	message = fmt.Sprintf("You had %0.2f minutes / %0.2f seconds remaining!"+door.CRNL, left.Minutes(), left.Seconds())
 	d.Write(message)
+
 	left = d.TimeUsed()
-	d.Write(fmt.Sprintf("You used %0.2f seconds, or %0.2f minutes."+door.CRNL, left.Seconds(), left.Minutes()))
+	d.Write(fmt.Sprintf("You used %0.2f seconds / %0.2f minutes."+door.CRNL, left.Seconds(), left.Minutes()))
 
 	fmt.Println("Ending testdoor.go")
 }