Przeglądaj źródła

CP437 bug in WOPR.

Steve Thielemann 1 rok temu
rodzic
commit
5aadb407c6
2 zmienionych plików z 14 dodań i 4 usunięć
  1. 13 3
      door/line.go
  2. 1 1
      door/wopr.go

+ 13 - 3
door/line.go

@@ -129,16 +129,24 @@ func (l *Line) LineLength(text *bytes.Buffer) {
 	var length int
 
 	if Unicode {
-		var ubuff *bytes.Buffer = bytes.NewBuffer(text.Bytes())
+		if l.render == nil {
+			l.render = &bytes.Buffer{}
+		}
+		l.render.Reset()
+		l.render.Write(text.Bytes())
+		/*
+			var ubuff *bytes.Buffer = bytes.NewBuffer(text.Bytes())
+		*/
 		var e error
 		var r rune
 		for {
-			r, _, e = ubuff.ReadRune()
+			r, _, e = l.render.ReadRune()
 			if e != nil {
 				break
 			}
 			length += UnicodeWidth(r)
 		}
+		l.render.Reset()
 	} else {
 		length = text.Len()
 	}
@@ -170,7 +178,9 @@ func (l *Line) Output() []byte {
 
 	if l.RenderF == nil {
 		l.render.Reset()
-		l.render.WriteString(l.DefaultColor)
+		if l.DefaultColor != "" {
+			l.render.WriteString(l.DefaultColor)
+		}
 		l.render.Write(l.Text.Bytes())
 		return l.render.Bytes()
 		// return l.DefaultColor + l.Text

+ 1 - 1
door/wopr.go

@@ -116,7 +116,7 @@ func (w *WOPR) Init(elapsed time.Time, remaining time.Time, color string) {
 		} else {
 			for i := 0; i < 16; i++ {
 				if i == w.Index {
-					u.WriteRune('\xfe')
+					u.WriteByte('\xfe')
 				} else {
 					u.WriteByte(' ')
 				}