func write(p uint) { // if stat[p] == satisfied { scr.Colour(thinkColour) writePlate(p, false) scr.WriteGr(text[stat[p]], xt[p]-12*4, yt[p]-8) img.Get(image[p], uint(xt[p])-50, uint(yt[p])-50) } else { img.Get(image[max], uint(xt[p]-50), uint(yt[p])-50) scr.Colour(colour[p]) writePlate(p, false) scr.WriteGr(text[stat[p]], xt[p]-12*4, yt[p]-8) } switch stat[p] { case satisfied: writePlate(p, true) scr.Colour(notUsedColour) writeFork(left(p)) writeFork(p) case hungry: case starving: case hasRightFork: writeFork(p) case hasLeftFork: writeFork(left(p)) case dining: writePlate(p, true) writeFork(p) writeFork(left(p)) } }
func (B *Imp) Clr(L, C uint) { // if B.width == 0 { return } scr.Lock() scr.Colours(col.ScreenF, col.ScreenB) scr.WriteGr(Clr(B.width), int(scr.NX1()*C), int(scr.NY1()*L)) scr.Unlock() }
func (B *Imp) WriteGr(s string, x, y int) { // if uint(y) >= scr.NY() { return } if uint(x) >= scr.NX()-scr.NX1() { return } n, b := uint(len(s)), B.width if B.width == 0 { B.width = n } if uint(x)+B.width*scr.NX1() > scr.NX() { B.width = (scr.NX() - uint(x)) / scr.NX1() } if B.width > n { B.width = n } if B.width < n { Norm(&s, B.width) } if B.numerical || B.TRnumerical { Move(&s, false) } scr.Lock() scr.Colours(B.cF, B.cB) if B.transparent { scr.SwitchTransparence(true) } scr.WriteGr(s, x, y) if B.transparent { scr.SwitchTransparence(false) } scr.Unlock() B.width = b }
func (x *Imp) Write(aktuell bool) { // xx, yy := scale.Scale(x.breite, x.länge) lw := scr.ActLinewidth() scr.SetLinewidth(scr.Thin) if aktuell { scr.Colours(linie.Farbe[x.linie], col.ScreenB) } else { // umstieg scr.Colours(col.Black, col.ScreenB) } const r = 2 if xx >= r && yy >= r { scr.Circle(xx, yy, r) // scr.Colour (col.ScreenB) scr.CircleFull(xx, yy, r-1) } scr.SetLinewidth(lw) n := int(str.ProperLen(x.name)) if n <= 2 { return } n1 := int(str.ProperLen(x.name1)) if n1 > n { n = n1 } xn, yn := 0, 0 w, h := int(scr.NX1()), int(scr.NY1()) switch x.beschriftung { case 'r': xn = xx + w + 1 if n1 == 0 { yn = yy - h/2 } else { yn = yy - h } case 'o': xn = xx - (n*w)/2 + 1 if n1 == 0 { yn = yy - h - 1 } else { yn = yy - 2*h - 1 } case 'l': xn = xx - n*w - w + 1 if n1 == 0 { yn = yy - h/2 } else { yn = yy - h } case 'u': xn = xx - (n*w)/2 + 1 yn = yy + h/2 - 2 default: xn = xx - (n*w)/2 + 1 if n1 == 0 { yn = yy - h/2 } else { yn = yy - h } } xxx := x.name for i := uint(0); i < uint(len(xxx)); i++ { if xxx[i] == '_' { str.Replace(&xxx, i, ' ') } } xxx1 := x.name1 for i := uint(0); i < uint(len(xxx1)); i++ { if xxx1[i] == '_' { str.Replace(&xxx1, i, ' ') } } if aktuell { scr.Colours(linie.Farbe[x.linie], col.ScreenB) } else { // umstieg scr.Colours(col.Black, col.ScreenB) scr.Colours(col.Black, col.Pink) } scr.WriteGr(xxx, xn, yn) scr.WriteGr(xxx1, xn, yn+h+0) }