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 = [ "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; private static function get_fullScreenSignal():Signal { 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; } }