func Play(pp []Piece, d *draw.Display) { pieces = pp N = len(pieces[0].d) initPieces() display = d screen = d.ScreenImage mousectl = d.InitMouse() kbdctl = d.InitKeyboard() rand.Seed(int64(time.Now().UnixNano() % (1e9 - 1))) for i, col := range txpix { tx[i], _ = d.AllocImage(image.Rect(0, 0, 1, 1), screen.Pix, true, col) } whitemask, _ = display.AllocImage(image.Rect(0, 0, 1, 1), draw.ARGB32, true, 0x7F7F7F7F) tsleep = 50 timerc = time.Tick(time.Duration(tsleep/2) * time.Millisecond) suspc = make(chan bool) mousec = make(chan draw.Mouse) kbdc = make(chan rune) go suspproc() redraw(false) play() }
func (m *SpacewarPDP1) Init(d *draw.Display) { m.disp = d m.mc = d.InitMouse() m.kc = d.InitKeyboard() m.screen = d.ScreenImage m.dx = m.screen.R.Dx() m.dy = m.screen.R.Dy() m.pix = make([][]uint8, m.dy) m.oldpix = make([][]uint8, m.dy) for i := range m.pix { m.pix[i] = make([]uint8, m.dx) m.oldpix[i] = make([]uint8, m.dx) } m.cmap = make([]*draw.Image, 256) for i := range m.cmap { var r, g, b draw.Color r = draw.Color(min(0, 255)) g = draw.Color(min(i*2, 255)) b = draw.Color(min(0, 255)) m.cmap[i], _ = d.AllocImage(image.Rect(0, 0, 1, 1), d.ScreenImage.Pix, true, r<<24|g<<16|b<<8|0xff) } m.screen.Draw(m.screen.R, d.Black, nil, image.ZP) }