forked from LeenkxTeam/LNXSDK
		
	
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| 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);
 | |
| 		}
 | |
| 	}
 | |
| }
 |