Files
CodenameEngine/source/funkin/desktop/DesktopMain.hx
T
2022-10-20 22:53:11 +02:00

93 lines
2.7 KiB
Haxe

package funkin.desktop;
import lime.app.Application;
import openfl.display.BitmapData;
import flixel.system.scaleModes.BaseScaleMode;
import flixel.system.scaleModes.FixedScaleAdjustSizeScaleMode;
import flixel.FlxG;
import flixel.FlxSprite;
import flixel.math.FlxPoint;
import funkin.desktop.editors.HelloWorld;
import funkin.desktop.windows.*;
class DesktopMain extends MusicBeatState {
public var oldScaleMode:BaseScaleMode;
public var wallpaper:FlxSprite;
public var screenSize:FlxPoint;
public var windows:WindowGroup;
public static var instance:DesktopMain;
public var mouseInput:MouseInput = new MouseInput();
public override function create() {
super.create();
instance = this;
FlxG.mouse.useSystemCursor = FlxG.mouse.visible = true;
oldScaleMode = FlxG.scaleMode;
FlxG.scaleMode = new FixedScaleAdjustSizeScaleMode(false, false);
wallpaper = new FlxSprite();
#if windows
try {
wallpaper.loadGraphic(BitmapData.fromFile('${Sys.getEnv("AppData")}\\Microsoft\\Windows\\Themes\\TranscodedWallpaper'));
} catch(e) #end wallpaper.loadGraphic(Paths.image("menuBG"));
wallpaper.scrollFactor.set(0, 0); // anchor at top left
wallpaper.antialiasing = true;
add(wallpaper);
screenSize = new FlxPoint(-1, -1);
windows = new WindowGroup();
add(windows);
}
public override function update(elapsed:Float) {
mouseInput.set(FlxG.mouse.pressed, FlxG.mouse.justPressed, FlxG.mouse.justReleased);
super.update(elapsed);
if (screenSize.x != FlxG.width || screenSize.y != FlxG.height) {
screenSize.set(FlxG.width, FlxG.height);
updateScreenRes();
}
// debug window
if (FlxG.keys.justPressed.SPACE)
windows.add(new Window(new HelloWorld()));
}
public function updateScreenRes() {
// update wallpaper
wallpaper.setUnstretchedGraphicSize(FlxG.width, FlxG.height);
}
public override function destroy() {
super.destroy();
FlxG.scaleMode = oldScaleMode;
FlxG.mouse.useSystemCursor = FlxG.mouse.visible = false;
// TODO: switch back while using config
FlxG.resizeGame(1280, 720);
}
}
class MouseInput {
public var pressed:Bool = false;
public var justPressed:Bool = false;
public var justReleased:Bool = false;
public function cancel() {
pressed = justPressed = justReleased = false;
}
public function new() {}
public function set(pressed:Bool, justPressed:Bool, justReleased:Bool) {
this.pressed = pressed;
this.justPressed = justPressed;
this.justReleased = justReleased;
}
}