forked from LeenkxTeam/LNXSDK
Update Files
This commit is contained in:
89
Kha/Backends/HTML5-Worker/kha/Starter.hx
Normal file
89
Kha/Backends/HTML5-Worker/kha/Starter.hx
Normal file
@ -0,0 +1,89 @@
|
||||
package kha;
|
||||
|
||||
import kha.Game;
|
||||
import kha.input.Gamepad;
|
||||
import kha.input.Keyboard;
|
||||
import kha.js.WorkerGraphics;
|
||||
import kha.Key;
|
||||
import kha.Loader;
|
||||
|
||||
class Starter {
|
||||
var gameToStart: Game;
|
||||
|
||||
static var frame: Framebuffer = null;
|
||||
static var keyboard: Keyboard;
|
||||
static var mouse: kha.input.Mouse;
|
||||
static var gamepad: Gamepad;
|
||||
|
||||
public static var mouseX: Int;
|
||||
public static var mouseY: Int;
|
||||
|
||||
public function new() {
|
||||
Worker.handleMessages(messageHandler);
|
||||
keyboard = new Keyboard();
|
||||
mouse = new kha.input.Mouse();
|
||||
gamepad = new Gamepad();
|
||||
|
||||
Loader.init(new kha.js.Loader());
|
||||
Scheduler.init();
|
||||
}
|
||||
|
||||
public function start(game: Game): Void {
|
||||
gameToStart = game;
|
||||
Configuration.setScreen(new EmptyScreen(Color.fromBytes(0, 0, 0)));
|
||||
Loader.the.loadProject(loadFinished);
|
||||
}
|
||||
|
||||
public function loadFinished() {
|
||||
Loader.the.initProject();
|
||||
|
||||
gameToStart.width = Loader.the.width;
|
||||
gameToStart.height = Loader.the.height;
|
||||
|
||||
Sys.init(gameToStart.width, gameToStart.height);
|
||||
frame = new Framebuffer(new WorkerGraphics(gameToStart.width, gameToStart.height), null);
|
||||
Scheduler.start();
|
||||
|
||||
Configuration.setScreen(gameToStart);
|
||||
|
||||
gameToStart.loadFinished();
|
||||
}
|
||||
|
||||
public function lockMouse(): Void {}
|
||||
|
||||
public function unlockMouse(): Void {}
|
||||
|
||||
public function canLockMouse(): Bool {
|
||||
return false;
|
||||
}
|
||||
|
||||
public function isMouseLocked(): Bool {
|
||||
return false;
|
||||
}
|
||||
|
||||
public function notifyOfMouseLockChange(func: Void->Void, error: Void->Void): Void {}
|
||||
|
||||
public function removeFromMouseLockChange(func: Void->Void, error: Void->Void): Void {}
|
||||
|
||||
function messageHandler(value: Dynamic): Void {
|
||||
switch (value.data.command) {
|
||||
case 'loadedBlob':
|
||||
cast(Loader.the, kha.js.Loader).loadedBlob(value.data);
|
||||
case 'loadedImage':
|
||||
cast(Loader.the, kha.js.Loader).loadedImage(value.data);
|
||||
case 'loadedSound':
|
||||
cast(Loader.the, kha.js.Loader).loadedSound(value.data);
|
||||
case 'loadedMusic':
|
||||
cast(Loader.the, kha.js.Loader).loadedMusic(value.data);
|
||||
case 'frame':
|
||||
if (frame != null) {
|
||||
Scheduler.executeFrame();
|
||||
Configuration.screen().render(frame);
|
||||
}
|
||||
case 'keyDown':
|
||||
Configuration.screen().keyDown(Key.createByIndex(value.data.key), value.data.char);
|
||||
case 'keyUp':
|
||||
Configuration.screen().keyUp(Key.createByIndex(value.data.key), value.data.char);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user