From d491d532bbe6adeeaf514da281bc247911b80d6f Mon Sep 17 00:00:00 2001 From: nick black Date: Wed, 25 Mar 2020 22:27:23 -0400 Subject: [PATCH] Tetris: gradient stain on fixed pieces #421 --- src/tetris/background.h | 1 + src/tetris/movedown.h | 25 +++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/tetris/background.h b/src/tetris/background.h index 5dfbc8b83..376370d90 100644 --- a/src/tetris/background.h +++ b/src/tetris/background.h @@ -12,6 +12,7 @@ void DrawBackground(const std::string& s) { if(backg_->render(0, 0, -1, -1) <= 0){ throw TetrisNotcursesErr("render(): " + s); } + backg_->get_plane()->greyscale(); } // draw the background on the standard plane, then create a new plane for the play area. diff --git a/src/tetris/movedown.h b/src/tetris/movedown.h index 4be1dee03..1000ca0b6 100644 --- a/src/tetris/movedown.h +++ b/src/tetris/movedown.h @@ -8,13 +8,34 @@ bool MoveDown() { return true; } curpiece_->mergedown(*board_); + if(!board_->cursor_move(0, 1)){ + throw TetrisNotcursesErr("cursor_move()"); + } + int bdimy, bdimx; + board_->get_dim(&bdimy, &bdimx); + uint64_t tl, tr, bl, br; + tl = tr = bl = br = 0; + channels_set_bg_alpha(&tl, CELL_ALPHA_TRANSPARENT); + channels_set_bg_alpha(&tr, CELL_ALPHA_TRANSPARENT); + channels_set_bg_alpha(&bl, CELL_ALPHA_TRANSPARENT); + channels_set_bg_alpha(&br, CELL_ALPHA_TRANSPARENT); + channels_set_fg(&tl, 0xff0000); + channels_set_fg(&tr, 0x00ff00); + channels_set_fg(&bl, 0x0000ff); + channels_set_fg(&br, 0x00ffff); + if(!board_->stain(bdimy - 2, bdimx - 2, tl, tr, bl, br)){ + throw TetrisNotcursesErr("stain()"); + } curpiece_ = NewPiece(); }else{ ++y; - if(!curpiece_->move(y, x) || !nc_.render()){ - throw TetrisNotcursesErr("move() or render()"); + if(!curpiece_->move(y, x)){ + throw TetrisNotcursesErr("move()"); } } + if(!nc_.render()){ + throw TetrisNotcursesErr("render()"); + } } return false; }