forked from LeenkxTeam/LNXSDK
Update Files
This commit is contained in:
75
Kha/Tests/Gamepads/src/AnalogPadDisplay.hx
Normal file
75
Kha/Tests/Gamepads/src/AnalogPadDisplay.hx
Normal file
@ -0,0 +1,75 @@
|
||||
package;
|
||||
|
||||
using kha.graphics2.GraphicsExtension;
|
||||
|
||||
class AnalogPadDisplay {
|
||||
var id : Int;
|
||||
var x : Float;
|
||||
var y : Float;
|
||||
var available = false;
|
||||
|
||||
var axis = [for (i in 0...6) 0.0];
|
||||
var buttons = [for (i in 0...36) false];
|
||||
|
||||
var dz = 0.2;
|
||||
|
||||
public function new( id : Int, x : Float, y : Float ) {
|
||||
this.id = id;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
|
||||
if (kha.input.Gamepad.get(id) != null) {
|
||||
available = true;
|
||||
kha.input.Gamepad.get(id).notify(gamepad_axisHandler, gamepad_buttonHandler);
|
||||
}
|
||||
}
|
||||
|
||||
function gamepad_axisHandler( axisId : Int, value : Float ) {
|
||||
axis[axisId] = value;
|
||||
trace('gamepad_axisHandler ${axisId} - ${value}');
|
||||
}
|
||||
|
||||
function gamepad_buttonHandler( buttonId : Int, value : Float ) {
|
||||
buttons[buttonId] = value > dz || value < -dz;
|
||||
trace('gamepad_buttonHandler ${buttonId} - ${value}');
|
||||
}
|
||||
|
||||
public function render( g : kha.graphics2.Graphics ) {
|
||||
var lg = kha.Color.fromBytes(200, 200, 200);
|
||||
var bl = kha.Color.Black;
|
||||
var gr = kha.Color.Green;
|
||||
var dg = kha.Color.fromBytes(100, 100, 100);
|
||||
var dz = 0.2;
|
||||
|
||||
// rect
|
||||
g.color = lg;
|
||||
g.fillRect(x + 64, y + 16, 288, 256);
|
||||
g.color = bl;
|
||||
g.drawRect(x + 64, y + 16, 288, 256, 4);
|
||||
|
||||
// big left
|
||||
g.color = lg;
|
||||
g.fillCircle(x + 64, y + 64, 64);
|
||||
g.color = bl;
|
||||
g.drawCircle(x + 64, y + 64, 64, 4);
|
||||
g.color = dg;
|
||||
g.fillRect(x + 32, y + 32, 64, 64);
|
||||
|
||||
// analog left
|
||||
g.color = gr;
|
||||
g.fillCircle(x + 64 + axis[0] * 32, y + 64 + axis[1] * 32, 8);
|
||||
g.color = bl;
|
||||
g.fillCircle(x + 64 + axis[0] * 32, y + 64 + axis[1] * 32, 1);
|
||||
|
||||
// buttons
|
||||
for (by in 0...6) {
|
||||
for (bx in 0...6) {
|
||||
var buttonIndex = by * 6 + bx;
|
||||
g.color = !buttons[buttonIndex] ? lg : gr;
|
||||
g.fillCircle(160 + x + bx * 32, 64 + y + by * 32, 12);
|
||||
g.color = bl;
|
||||
g.drawCircle(160 + x + bx * 32, 64 + y + by * 32, 12, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
109
Kha/Tests/Gamepads/src/DigitalPadDisplay.hx
Normal file
109
Kha/Tests/Gamepads/src/DigitalPadDisplay.hx
Normal file
@ -0,0 +1,109 @@
|
||||
package;
|
||||
|
||||
using kha.graphics2.GraphicsExtension;
|
||||
|
||||
class DigitalPadDisplay {
|
||||
var id : Int;
|
||||
var x : Float;
|
||||
var y : Float;
|
||||
var available = false;
|
||||
|
||||
var axis = [for (i in 0...6) 0.0];
|
||||
var buttons = [for (i in 0...16) false];
|
||||
|
||||
var dz = 0.2;
|
||||
|
||||
public function new( id : Int, x : Float, y : Float ) {
|
||||
this.id = id;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
|
||||
if (kha.input.Gamepad.get(id) != null) {
|
||||
available = true;
|
||||
kha.input.Gamepad.get(id).notify(gamepad_axisHandler, gamepad_buttonHandler);
|
||||
}
|
||||
}
|
||||
|
||||
function gamepad_axisHandler( axisId : Int, value : Float ) {
|
||||
axis[axisId] = value;
|
||||
trace('gamepad_axisHandler ${axisId} - ${value}');
|
||||
}
|
||||
|
||||
function gamepad_buttonHandler( buttonId : Int, value : Float ) {
|
||||
buttons[buttonId] = value > dz || value < -dz;
|
||||
trace('gamepad_buttonHandler ${buttonId} - ${value}');
|
||||
}
|
||||
|
||||
public function render( g : kha.graphics2.Graphics ) {
|
||||
var lg = kha.Color.fromBytes(200, 200, 200);
|
||||
var bl = kha.Color.Black;
|
||||
var gr = kha.Color.Green;
|
||||
var dz = 0.2;
|
||||
|
||||
// rect
|
||||
g.color = lg;
|
||||
g.fillRect(x + 64, y + 16, 192, 80);
|
||||
g.color = bl;
|
||||
g.drawRect(x + 64, y + 16, 192, 80, 4);
|
||||
|
||||
// big left
|
||||
g.color = lg;
|
||||
g.fillCircle(x + 64, y + 64, 64);
|
||||
g.color = bl;
|
||||
g.drawCircle(x + 64, y + 64, 64, 4);
|
||||
|
||||
// dpad left
|
||||
g.color = axis[0] > -dz ? lg : gr;
|
||||
g.fillRect(x + 16, y + 48, 24, 24);
|
||||
g.color = bl;
|
||||
g.drawRect(x + 16, y + 48, 24, 24, 2);
|
||||
|
||||
// dpad right
|
||||
g.color = axis[0] < dz ? lg : gr;
|
||||
g.fillRect(x + 88, y + 48, 24, 24);
|
||||
g.color = bl;
|
||||
g.drawRect(x + 88, y + 48, 24, 24, 2);
|
||||
|
||||
// dpad top
|
||||
g.color = axis[1] > -dz ? lg : gr;
|
||||
g.fillRect(x + 52, y + 16, 24, 24);
|
||||
g.color = bl;
|
||||
g.drawRect(x + 52, y + 16, 24, 24, 2);
|
||||
|
||||
// dpad bottom
|
||||
g.color = axis[1] < dz ? lg : gr;
|
||||
g.fillRect(x + 52, y + 80, 24, 24);
|
||||
g.color = bl;
|
||||
g.drawRect(x + 52, y + 80, 24, 24, 2);
|
||||
|
||||
// big right
|
||||
g.color = lg;
|
||||
g.fillCircle(x + 256, y + 64, 64);
|
||||
g.color = bl;
|
||||
g.drawCircle(x + 256, y + 64, 64, 4);
|
||||
|
||||
// button left
|
||||
g.color = !buttons[0] ? lg : gr;
|
||||
g.fillCircle(x + 224, y + 64, 16);
|
||||
g.color = bl;
|
||||
g.drawCircle(x + 224, y + 64, 16, 2);
|
||||
|
||||
// button top
|
||||
g.color = !buttons[1] ? lg : gr;
|
||||
g.fillCircle(x + 256, y + 32, 16);
|
||||
g.color = bl;
|
||||
g.drawCircle(x + 256, y + 32, 16, 2);
|
||||
|
||||
// button right
|
||||
g.color = !buttons[2] ? lg : gr;
|
||||
g.fillCircle(x + 288, y + 64, 16);
|
||||
g.color = bl;
|
||||
g.drawCircle(x + 288, y + 64, 16, 2);
|
||||
|
||||
// button bottom
|
||||
g.color = !buttons[3] ? lg : gr;
|
||||
g.fillCircle(x + 256, y + 96, 16);
|
||||
g.color = bl;
|
||||
g.drawCircle(x + 256, y + 96, 16, 2);
|
||||
}
|
||||
}
|
29
Kha/Tests/Gamepads/src/Main.hx
Normal file
29
Kha/Tests/Gamepads/src/Main.hx
Normal file
@ -0,0 +1,29 @@
|
||||
package;
|
||||
|
||||
class PadExample {
|
||||
public function new() {
|
||||
kha.System.notifyOnRender(render);
|
||||
}
|
||||
|
||||
function render( fb : kha.Framebuffer ) {
|
||||
var g = fb.g2;
|
||||
|
||||
g.begin(true, kha.Color.Purple);
|
||||
for (pad in pads) {
|
||||
pad.render(g);
|
||||
}
|
||||
g.end();
|
||||
}
|
||||
|
||||
var pads = [new AnalogPadDisplay(0, 32, 32), new AnalogPadDisplay(1, 448, 32), new AnalogPadDisplay(2, 32, 352), new AnalogPadDisplay(3, 448, 352)];
|
||||
}
|
||||
|
||||
class Main {
|
||||
public static function main() {
|
||||
kha.System.init({ title : 'PadExample', width : 1024, height : 704 }, kha.Assets.loadEverything.bind(assets_loadedHandler));
|
||||
}
|
||||
|
||||
static function assets_loadedHandler() {
|
||||
new PadExample();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user