From 7a5c47a951cd2e3d0c42604decccc089b6ea6c46 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Sat, 24 Apr 2021 18:50:08 -0600 Subject: [PATCH] [asciilib] setting up graphics backend --- projects/asciilib2/src/asciilib/Game.hx | 4 ++++ projects/asciilib2/src/asciilib/Game.kiss | 18 ++++++++++++++++++ projects/asciilib2/src/asciilib/GameLogic.hx | 6 ++++++ projects/asciilib2/src/asciilib/Graphics.hx | 4 ++++ projects/asciilib2/src/asciilib/Graphics.kiss | 2 ++ .../asciilib2/src/asciilib/GraphicsBackend.hx | 6 ++++++ 6 files changed, 40 insertions(+) create mode 100644 projects/asciilib2/src/asciilib/Game.hx create mode 100644 projects/asciilib2/src/asciilib/Game.kiss create mode 100644 projects/asciilib2/src/asciilib/GameLogic.hx create mode 100644 projects/asciilib2/src/asciilib/Graphics.hx create mode 100644 projects/asciilib2/src/asciilib/Graphics.kiss create mode 100644 projects/asciilib2/src/asciilib/GraphicsBackend.hx diff --git a/projects/asciilib2/src/asciilib/Game.hx b/projects/asciilib2/src/asciilib/Game.hx new file mode 100644 index 00000000..1a5e00fe --- /dev/null +++ b/projects/asciilib2/src/asciilib/Game.hx @@ -0,0 +1,4 @@ +package asciilib; + +@:build(kiss.Kiss.build("src/asciilib/Game.kiss")) +class Game {} diff --git a/projects/asciilib2/src/asciilib/Game.kiss b/projects/asciilib2/src/asciilib/Game.kiss new file mode 100644 index 00000000..f0b20d12 --- /dev/null +++ b/projects/asciilib2/src/asciilib/Game.kiss @@ -0,0 +1,18 @@ +(defnew [:String title + :Int width + :Int height + :Int letterWidth + :Int letterHeight + :GameLogic gameLogic + :GraphicsBackend _graphicsBackend] + [graphics (new Graphics width height) + logic gameLogic + graphicsBackend _graphicsBackend] + + (graphicsBackend.initialize title width height letterWidth letterHeight)) + +(defmethod update [:Float deltaSeconds] + (gameLogic.update deltaSeconds)) + +(defmethod draw [] + (graphicsBackend.draw graphics)) \ No newline at end of file diff --git a/projects/asciilib2/src/asciilib/GameLogic.hx b/projects/asciilib2/src/asciilib/GameLogic.hx new file mode 100644 index 00000000..e015230f --- /dev/null +++ b/projects/asciilib2/src/asciilib/GameLogic.hx @@ -0,0 +1,6 @@ +package asciilib; + +interface GameLogic { + public function update(deltaSeconds:Float):Void; + public function draw(graphics:Graphics):Void; +} diff --git a/projects/asciilib2/src/asciilib/Graphics.hx b/projects/asciilib2/src/asciilib/Graphics.hx new file mode 100644 index 00000000..957567c9 --- /dev/null +++ b/projects/asciilib2/src/asciilib/Graphics.hx @@ -0,0 +1,4 @@ +package asciilib; + +@:build(kiss.Kiss.build("src/asciilib/Graphics.kiss")) +class Graphics {} diff --git a/projects/asciilib2/src/asciilib/Graphics.kiss b/projects/asciilib2/src/asciilib/Graphics.kiss new file mode 100644 index 00000000..ae8c3e63 --- /dev/null +++ b/projects/asciilib2/src/asciilib/Graphics.kiss @@ -0,0 +1,2 @@ +(defnew [width height] + [surface (new Surface width height)]) \ No newline at end of file diff --git a/projects/asciilib2/src/asciilib/GraphicsBackend.hx b/projects/asciilib2/src/asciilib/GraphicsBackend.hx new file mode 100644 index 00000000..41e730d1 --- /dev/null +++ b/projects/asciilib2/src/asciilib/GraphicsBackend.hx @@ -0,0 +1,6 @@ +package asciilib; + +interface GraphicsBackend { + function initialize(title:String, width:Int, height:Int, letterWidth:Int, letterHeight:Int):Void; + function draw(graphics:Graphics):Void; +}