summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabriel Rodrigues Couto <gabriel@rodriguescouto.com.br>2016-02-23 16:25:12 -0300
committerGabriel Rodrigues Couto <gabriel@rodriguescouto.com.br>2016-02-23 16:25:12 -0300
commitafbc6cea8e646c397a68cf4e6d5cf49c9ba7310d (patch)
treee2c92bcf544e31b4c77b4fc17cbe7a08db284ec2
parentd3c23581de1a0ce042fe60d36069b1bb083b3543 (diff)
parent8143319230a17547d03b5f3356c84daf69a64697 (diff)
downloadphp-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.php21
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);
}
}