diff options
author | Gabriel Rodrigues Couto <gabriel@rodriguescouto.com.br> | 2016-02-23 16:25:12 -0300 |
---|---|---|
committer | Gabriel Rodrigues Couto <gabriel@rodriguescouto.com.br> | 2016-02-23 16:25:12 -0300 |
commit | afbc6cea8e646c397a68cf4e6d5cf49c9ba7310d (patch) | |
tree | e2c92bcf544e31b4c77b4fc17cbe7a08db284ec2 | |
parent | d3c23581de1a0ce042fe60d36069b1bb083b3543 (diff) | |
parent | 8143319230a17547d03b5f3356c84daf69a64697 (diff) | |
download | php-terminal-gameboy-emulator-afbc6cea8e646c397a68cf4e6d5cf49c9ba7310d.zip php-terminal-gameboy-emulator-afbc6cea8e646c397a68cf4e6d5cf49c9ba7310d.tar.gz php-terminal-gameboy-emulator-afbc6cea8e646c397a68cf4e6d5cf49c9ba7310d.tar.bz2 |
Merge pull request #20 from henriquemoody/buffer
Move cursor to the top after show the fist frame
-rw-r--r-- | src/Canvas/TerminalCanvas.php | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/Canvas/TerminalCanvas.php b/src/Canvas/TerminalCanvas.php index ce5b3aa..056dc65 100644 --- a/src/Canvas/TerminalCanvas.php +++ b/src/Canvas/TerminalCanvas.php @@ -12,6 +12,9 @@ class TerminalCanvas implements DrawContextInterface protected $framesInSecond = 0; protected $fps = 0; + private $width = 0; + private $height = 0; + public function __construct() { $this->canvas = new Canvas(); @@ -51,9 +54,21 @@ class TerminalCanvas implements DrawContextInterface ++$this->framesInSecond; } - echo "\e[H\e[2J"; - echo 'FPS: ' . $this->fps . ' - Frame Skip: ' . Settings::$settings[4] . PHP_EOL; - echo $this->canvas->frame(); + $frame = $this->canvas->frame(); + $content = "\e[H\e[2J"; + + if ($this->height > 0 && $this->width > 0) { + $content = "\e[{$this->height}A\e[{$this->width}D"; + } + + $content .= sprintf('FPS: %d - Frame Skip: %s'.PHP_EOL, $this->fps, Settings::$settings[4]); + $content .= $frame; + + echo $content; + $this->canvas->clear(); + + $this->height = substr_count($frame, PHP_EOL) + 1; + $this->width = strpos($frame, PHP_EOL); } } |