Hello, World!

This commit is contained in:
Yoshman29
2022-10-21 13:26:24 +02:00
parent f16efed426
commit 30acc86065
4 changed files with 96 additions and 15 deletions
+16 -1
View File
@@ -5,7 +5,7 @@ import flixel.addons.ui.FlxUIText;
class HelloWorld extends WindowContent {
public override function new() {
super("Test Window", 250, 250, 640, 480);
super("Test Window", 100, 100, 640, 480);
}
public override function create() {
@@ -16,5 +16,20 @@ class HelloWorld extends WindowContent {
helloWorldText.scrollFactor.set(0.5, 0.5);
helloWorldText.cameraCenter(camera);
add(helloWorldText);
var t = new FlxUIText(0, 0, 0, "Bottom right text!");
t.color = 0xFF000000;
t.setPosition(630 - t.width, 470 - t.height);
t.scrollFactor.set(1, 1);
add(t);
}
public var time:Float = 0;
public override function update(elapsed:Float) {
super.update(elapsed);
time += elapsed;
width = 500 + Std.int(Math.cos(time * Math.PI) * 250);
height = 500 + Std.int(Math.sin(time * Math.PI) * 250);
parent.updateWindowFrame();
}
}
+43 -11
View File
@@ -14,6 +14,13 @@ import flixel.tweens.FlxTween;
import flixel.tweens.FlxEase;
import flixel.group.FlxSpriteGroup.FlxTypedSpriteGroup;
typedef WindowCam = {
var camera:FlxCamera;
var resizeScroll:Bool;
var width:Int;
var height:Int;
}
class Window extends FlxTypedGroup<FlxBasic> {
public var windowFrame:FlxUI9SliceSprite;
public var captionButtons:FlxTypedSpriteGroup<WindowCaptionButton>;
@@ -22,20 +29,25 @@ class Window extends FlxTypedGroup<FlxBasic> {
public var windowHeight:Int = 0;
public var windowCaptionCamera:FlxCamera;
public var windowCameras:Array<FlxCamera> = [];
public var windowCameras:Array<WindowCam> = [];
private var __captionTweens:Array<FlxTween> = [];
public var content:WindowContent;
public var caption:FlxUIText;
public var icon:FlxSprite;
public function loadIcon(path:String) {
icon.loadGraphic(path);
icon.setUnstretchedGraphicSize(16, 16, false);
}
public function new(content:WindowContent) {
super();
windowFrame = new FlxUI9SliceSprite(0, 0, Paths.image('desktop/windowFrame'), new Rectangle(10, 10), [3, 3, 6, 6]);
add(windowFrame);
caption = new FlxUIText(4, 4, 0, content.title);
caption = new FlxUIText(24, 4, 0, content.title);
captionButtons = new FlxTypedSpriteGroup<WindowCaptionButton>();
for(i in 0...3) {
var btn = new WindowCaptionButton(this, i);
@@ -43,6 +55,11 @@ class Window extends FlxTypedGroup<FlxBasic> {
captionButtons.add(btn);
}
add(caption);
icon = new FlxSprite(4, 4);
add(icon);
loadIcon(content.icon);
add(captionButtons);
this.content = content;
@@ -65,23 +82,30 @@ class Window extends FlxTypedGroup<FlxBasic> {
}
content.cameras = [content.windowCamera];
content.parent = this;
addCamera(content.windowCamera);
content.create();
add(content);
windowWidth = content.width;
windowHeight = content.height;
FlxG.cameras.add(content.windowCamera, false);
windowCameras.push(content.windowCamera);
popupCamera(windowCaptionCamera);
for(e in windowCameras) popupCamera(e);
for(e in windowCameras) popupCamera(e.camera);
resize(content.width, content.height);
move(content.winX, content.winY);
}
public function addCamera(camera:FlxCamera, useResizeTechnique:Bool = true) {
FlxG.cameras.add(camera, false);
windowCameras.push({
camera: camera,
resizeScroll: useResizeTechnique,
width: camera.width,
height: camera.height
});
}
public function changeCaption(text:String) {
caption.text = text;
}
@@ -98,7 +122,12 @@ class Window extends FlxTypedGroup<FlxBasic> {
super.destroy();
for(e in __captionTweens) e.cancel();
FlxG.cameras.remove(windowCaptionCamera, true);
for(cam in windowCameras) FlxG.cameras.remove(cam, true);
for(cam in windowCameras) {
FlxG.cameras.remove(cam.camera, true);
}
windowCameras = null;
windowCaptionCamera = null;
__captionTweens = null;
}
public function resize(width:Int, height:Int) {
@@ -111,8 +140,8 @@ class Window extends FlxTypedGroup<FlxBasic> {
windowCaptionCamera.x = x;
windowCaptionCamera.y = y;
for(e in windowCameras) {
e.x = x + 4;
e.y = y + 23;
e.camera.x = x + 4;
e.camera.y = y + 23;
}
}
@@ -126,7 +155,10 @@ class Window extends FlxTypedGroup<FlxBasic> {
windowCaptionCamera.setSize(windowWidth + 4 + 4, windowHeight + 23 + 4);
captionButtons.setPosition(windowWidth + 4, 4);
for(e in windowCameras) {
e.setSize(windowWidth, windowHeight);
e.camera.setSize(windowWidth, windowHeight);
if (e.resizeScroll) {
e.camera.scroll.set(-Std.int(e.camera.width - e.width), -Std.int(e.camera.height - e.height));
}
}
}
}
+36 -2
View File
@@ -8,13 +8,33 @@ class WindowContent extends FlxTypedGroup<FlxSprite> {
public var winX(default, set):Float = 0;
public var winY(default, set):Float = 0;
public var title(default, set):String = "Window";
public var icon(default, set):String = 'flixel/images/logo/default.png';
public var windowCamera:FlxCamera = null;
public var parent:Window = null;
public var width:Int = 0;
public var height:Int = 0;
public var width(default, set):Int = 0;
public var height(default, set):Int = 0;
private var __noParentUpdate:Bool = false;
private function set_width(w:Int):Int {
width = w;
if (parent != null) {
parent.windowWidth = w;
if (!__noParentUpdate)
parent.updateWindowFrame();
}
return width;
}
private function set_height(h:Int):Int {
height = h;
if (parent != null) {
parent.windowHeight = h;
if (!__noParentUpdate)
parent.updateWindowFrame();
}
return height;
}
private function set_winX(v:Float):Float {
winX = v;
if (parent != null) parent.move(winX, winY);
@@ -26,12 +46,26 @@ class WindowContent extends FlxTypedGroup<FlxSprite> {
if (parent != null) parent.changeCaption(title);
return title;
}
private function set_title(text:String):String {
icon = text;
if (parent != null) parent.loadIcon(icon);
return icon;
}
private function set_winY(v:Float):Float {
winY = v;
if (parent != null) parent.move(winX, winY);
return winY;
}
public function setSize(width:Int, height:Int) {
__noParentUpdate = true;
this.width = width;
this.height = height;
__noParentUpdate = false;
if (parent != null) parent.updateWindowFrame();
}
public function new(caption:String, x:Float, y:Float, width:Int, height:Int) {
super();
this.width = width;