package;
import kha.Game;
import kha.Framebuffer;
import kha.Color;
import kha.graphics2.Graphics;
import kha.Image;
import kha.Loader;
import kha.Scaler;
import kha.math.FastMatrix3;
import kha.Scheduler;
import kha.Configuration;
import kha.LoadingScreen;
import kha.input.Mouse;
import kha.input.Surface;
import haxe.ds.Vector;
class Empty extends Game {
var backbuffer:Image;
var g:Graphics;
var mouse:kha.input.Mouse;
var mouseX:Int = 0;
var mouseY:Int = 0;
var mouseButton:Bool = false;
//touch vars
var __touch:Surface;
var touch:Vector<Bool>;
var touchX:Vector<Int>;
var touchY:Vector<Int>;
public function new() {
super("Empty", false);
}
override function init(): Void
{
//setup mouse
mouse = kha.input.Mouse.get(0);
if (mouse != null)mouse.notify(TestMouseDown, TestMouseUp, TestMouseMove, TestMouseWheel);
//setup touch
touch = new Vector(10);
touchX = new Vector(10);
touchY = new Vector(10);
__touch = Surface.get(0);
if (__touch != null)__touch.notify(touchDown, touchUp, touchMove);
for (i in 0...10)
{
touch[i] = false;
}
backbuffer = Image.createRenderTarget(width, height);
Configuration.setScreen(this);
}
override function render(frame: Framebuffer): Void
{
g = backbuffer.g2;
g.begin();
g.clear(Color.Black);
g.transformation = FastMatrix3.identity();
if (mouseButton)
{
g.set_color(Color.Blue);
g.fillRect(mouseX -20, mouseY -20, 40, 40);
}
for (i in 0...10)
{
if (touch[i])
{
g.set_color(Color.Red);
g.fillRect(touchX[i] -20, touchY[i] -20, 40, 40);
}
}
g.end();
startRender(frame);
Scaler.scale(backbuffer, frame, kha.Sys.screenRotation);
endRender(frame);
}
override function update()
{
}
//<mouse stuff>
private function TestMouseDown(button:Int, x:Int, y:Int)
{
mouseButton = true;
mouseX = x;
mouseY = y;
}
private function TestMouseUp(button:Int, x:Int, y:Int)
{
mouseButton = false;
mouseX = x;
mouseY = y;
}
private function TestMouseMove(x:Int, y:Int,xMovement:Int,yMovement:Int)
{
mouseX = x;
mouseY = y;
}
private function TestMouseWheel(wheel:Int)
{
//not done...
}
//</mouse stuff>
//<touch stuff>
public function touchDown(touchNum:Int,x:Int,y:Int)
{
touch[touchNum] = true;
touchX[touchNum] = x;
touchY[touchNum] = y;
}
public function touchUp(touchNum:Int,x:Int,y:Int)
{
touch[touchNum] = false;
touchX[touchNum] = x;
touchY[touchNum] = y;
}
public function touchMove(touchNum:Int,x:Int,y:Int)
{
touch[touchNum] = true;
touchX[touchNum] = x;
touchY[touchNum] = y;
}
//</touch stuff>
}