Files
puzzlez/src/haxe/ru/m/Device.hx
2020-03-23 22:00:54 +03:00

78 lines
2.1 KiB
Haxe

package ru.m;
import flash.display.StageDisplayState;
import flash.events.FullScreenEvent;
import flash.Lib;
import haxework.signal.Signal;
enum abstract Platform(String) from String to String {
var ANDROID = "android";
var LINUX = "linux";
var WINDOWS = "windows";
var FLASH = "flash";
var HTML5 = "html5";
var UNKNOWN = "unknown";
}
class Device {
public static var platform(get, null):Platform;
private static function get_platform():Platform {
#if android
return ANDROID;
#elseif linux
return LINUX;
#elseif windows
return WINDOWS;
#elseif flash
return FLASH;
#elseif html5
return HTML5;
#else
return UNKNOWN;
#end
}
private static var MOBILES(default, never):Array<String> = [
"Android", "webOS", "iPhone", "iPad", "iPod", "BlackBerry", "Windows Phone",
];
public static function isMobile():Bool {
#if android
return true;
#elseif js
var userAgent = js.Browser.navigator.userAgent;
for (mobile in MOBILES) {
if (userAgent.indexOf(mobile) > -1) {
return true;
}
}
return false;
#else
return false;
#end
}
public static var fullScreenSignal(get, null):Signal<Bool>;
private static function get_fullScreenSignal():Signal<Bool> {
if (fullScreenSignal == null) {
fullScreenSignal = new Signal();
Lib.current.stage.addEventListener(FullScreenEvent.FULL_SCREEN, (event:FullScreenEvent) -> fullScreenSignal.emit(event.fullScreen));
}
return fullScreenSignal;
}
public static var fullScreenSupport(get, never):Bool;
public static function get_fullScreenSupport():Bool {
return Lib.current.stage.allowsFullScreen;
}
public static function toggleFullScreen():Void {
Lib.current.stage.displayState = Lib.current.stage.displayState == StageDisplayState.NORMAL ?
StageDisplayState.FULL_SCREEN : StageDisplayState.NORMAL;
}
}