you can maximize windows now + messageboxes
This commit is contained in:
@@ -3,13 +3,11 @@
|
|||||||
<captionActive path="caption" textColor="255,255,255" left="5" top="30" right="5" bottom="5" />
|
<captionActive path="caption" textColor="255,255,255" left="5" top="30" right="5" bottom="5" />
|
||||||
<captionInactive path="captionInactive" textColor="216,228,248" left="5" top="30" right="5" bottom="5" />
|
<captionInactive path="captionInactive" textColor="216,228,248" left="5" top="30" right="5" bottom="5" />
|
||||||
<captionButtons path="captionButtons" size="21,21" margin="2,0" offset="4,6" />
|
<captionButtons path="captionButtons" size="21,21" margin="2,0" offset="4,6" />
|
||||||
|
<window color="#ECE9D8" textColor="0,0,0" font="file://C:/Windows/fonts/tahoma.ttf" fontSize="11"/>
|
||||||
|
|
||||||
<!-- BUTTONS !-->
|
<!-- BUTTONS !-->
|
||||||
<normalButton path="button" textColor="0,0,0" left="4" top="4" right="4" bottom="4" />
|
<normalButton path="button" textColor="0,0,0" left="4" top="4" right="4" bottom="4" />
|
||||||
<hoverButton path="buttonHover" textColor="0,0,0" left="4" top="4" right="4" bottom="4" />
|
<hoverButton path="buttonHover" textColor="0,0,0" left="4" top="4" right="4" bottom="4" />
|
||||||
<pressedButton path="buttonPressed" textColor="0,0,0" left="4" top="4" right="4" bottom="4" />
|
<pressedButton path="buttonPressed" textColor="0,0,0" left="4" top="4" right="4" bottom="4" />
|
||||||
<disabledButton path="buttonDisabled" textColor="128,128,128" left="4" top="4" right="4" bottom="4" />
|
<disabledButton path="buttonDisabled" textColor="128,128,128" left="4" top="4" right="4" bottom="4" />
|
||||||
|
|
||||||
<!-- TEXT !-->
|
|
||||||
<text font="%WinDir%/fonts/tahoma.ttf" size="11"/>
|
|
||||||
</theme>
|
</theme>
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 19 KiB |
+1
-1
@@ -1 +1 @@
|
|||||||
779
|
807
|
||||||
@@ -3,13 +3,11 @@
|
|||||||
<captionActive path="caption" textColor="255,255,255" left="5" top="30" right="5" bottom="5" />
|
<captionActive path="caption" textColor="255,255,255" left="5" top="30" right="5" bottom="5" />
|
||||||
<captionInactive path="captionInactive" textColor="216,228,248" left="5" top="30" right="5" bottom="5" />
|
<captionInactive path="captionInactive" textColor="216,228,248" left="5" top="30" right="5" bottom="5" />
|
||||||
<captionButtons path="captionButtons" size="21,21" margin="2,0" offset="4,6" />
|
<captionButtons path="captionButtons" size="21,21" margin="2,0" offset="4,6" />
|
||||||
|
<window color="#ECE9D8" textColor="0,0,0" font="file://C:/Windows/fonts/tahoma.ttf" fontSize="11"/>
|
||||||
|
|
||||||
<!-- BUTTONS !-->
|
<!-- BUTTONS !-->
|
||||||
<normalButton path="button" textColor="0,0,0" left="4" top="4" right="4" bottom="4" />
|
<normalButton path="button" textColor="0,0,0" left="4" top="4" right="4" bottom="4" />
|
||||||
<hoverButton path="buttonHover" textColor="0,0,0" left="4" top="4" right="4" bottom="4" />
|
<hoverButton path="buttonHover" textColor="0,0,0" left="4" top="4" right="4" bottom="4" />
|
||||||
<pressedButton path="buttonPressed" textColor="0,0,0" left="4" top="4" right="4" bottom="4" />
|
<pressedButton path="buttonPressed" textColor="0,0,0" left="4" top="4" right="4" bottom="4" />
|
||||||
<disabledButton path="buttonDisabled" textColor="128,128,128" left="4" top="4" right="4" bottom="4" />
|
<disabledButton path="buttonDisabled" textColor="128,128,128" left="4" top="4" right="4" bottom="4" />
|
||||||
|
|
||||||
<!-- TEXT !-->
|
|
||||||
<text font="%WinDir%/fonts/tahoma.ttf" size="11"/>
|
|
||||||
</theme>
|
</theme>
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 19 KiB |
File diff suppressed because one or more lines are too long
@@ -70,9 +70,16 @@ class DesktopMain extends MusicBeatState {
|
|||||||
windows.add(new Window(new CharacterEditor('dad')));
|
windows.add(new Window(new CharacterEditor('dad')));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function openWindow(content:WindowContent) {
|
||||||
|
return windows.add(new Window(content));
|
||||||
|
}
|
||||||
|
|
||||||
public function updateScreenRes() {
|
public function updateScreenRes() {
|
||||||
// update wallpaper
|
// update wallpaper
|
||||||
wallpaper.setUnstretchedGraphicSize(FlxG.width, FlxG.height);
|
wallpaper.setUnstretchedGraphicSize(FlxG.width, FlxG.height);
|
||||||
|
for(e in windows) {
|
||||||
|
e.onDesktopSizeChange(FlxG.width, FlxG.height);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override function destroy() {
|
public override function destroy() {
|
||||||
@@ -130,6 +137,11 @@ class MouseInput {
|
|||||||
public function overlapsRect(spr:FlxBasic, rect:Rectangle, ?camera:FlxCamera) {
|
public function overlapsRect(spr:FlxBasic, rect:Rectangle, ?camera:FlxCamera) {
|
||||||
if (__cancelled) return false;
|
if (__cancelled) return false;
|
||||||
if (camera == null) camera = FlxG.camera;
|
if (camera == null) camera = FlxG.camera;
|
||||||
|
if (spr is FlxObject) {
|
||||||
|
var obj = cast(spr, FlxObject);
|
||||||
|
rect.x -= camera.scroll.x * obj.scrollFactor.x;
|
||||||
|
rect.y -= camera.scroll.y * obj.scrollFactor.y;
|
||||||
|
}
|
||||||
var pos = FlxG.mouse.getScreenPosition(camera);
|
var pos = FlxG.mouse.getScreenPosition(camera);
|
||||||
|
|
||||||
return ((pos.x > rect.x) && (pos.x < rect.x + rect.width)) && ((pos.y > rect.y) && (pos.y < rect.y + rect.height));
|
return ((pos.x > rect.x) && (pos.x < rect.x + rect.width)) && ((pos.y > rect.y) && (pos.y < rect.y + rect.height));
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package funkin.desktop.editors;
|
|||||||
import flixel.util.FlxDestroyUtil.IFlxDestroyable;
|
import flixel.util.FlxDestroyUtil.IFlxDestroyable;
|
||||||
import flixel.addons.ui.FlxUIText;
|
import flixel.addons.ui.FlxUIText;
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
import funkin.desktop.sprites.*;
|
|
||||||
|
|
||||||
class HelloWorld extends WindowContent {
|
class HelloWorld extends WindowContent {
|
||||||
public override function new() {
|
public override function new() {
|
||||||
@@ -13,26 +12,23 @@ class HelloWorld extends WindowContent {
|
|||||||
public override function create() {
|
public override function create() {
|
||||||
super.create();
|
super.create();
|
||||||
|
|
||||||
var helloWorldText = new FlxUIText(0, 0, 0, "Hello, World!");
|
var helloWorldText = new WindowText(0, 0, 0, "Hello, World!");
|
||||||
helloWorldText.color = 0xFF000000;
|
|
||||||
helloWorldText.scrollFactor.set(0.5, 0.5);
|
helloWorldText.scrollFactor.set(0.5, 0.5);
|
||||||
helloWorldText.cameraCenter(camera);
|
helloWorldText.cameraCenter(camera);
|
||||||
add(helloWorldText);
|
add(helloWorldText);
|
||||||
|
|
||||||
var t = new FlxUIText(0, 0, 0, "Bottom right text!");
|
var t = new WindowText(0, 0, 0, "Bottom right text!");
|
||||||
t.color = 0xFF000000;
|
|
||||||
t.setPosition(630 - t.width, 470 - t.height);
|
t.setPosition(630 - t.width, 470 - t.height);
|
||||||
t.scrollFactor.set(1, 1);
|
t.scrollFactor.set(1, 1);
|
||||||
add(t);
|
add(t);
|
||||||
|
|
||||||
var t = new FlxUIText(0, 0, 0, "Top right text!");
|
var t = new WindowText(0, 0, 0, "Top right text!");
|
||||||
t.color = 0xFF000000;
|
|
||||||
t.setPosition(630 - t.width, 10);
|
t.setPosition(630 - t.width, 10);
|
||||||
t.scrollFactor.set(1, 0);
|
t.scrollFactor.set(1, 0);
|
||||||
add(t);
|
add(t);
|
||||||
|
|
||||||
var butt = new Button(10, 10, "Test", function() {
|
var butt = new Button(10, 10, "Test", function() {
|
||||||
trace("help");
|
parent.showMessage("Test", "Test", ERROR);
|
||||||
});
|
});
|
||||||
butt.scrollFactor.set();
|
butt.scrollFactor.set();
|
||||||
add(butt);
|
add(butt);
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
package funkin.desktop.editors;
|
||||||
|
|
||||||
|
import flixel.util.typeLimit.OneOfTwo;
|
||||||
|
import flixel.util.FlxDestroyUtil.IFlxDestroyable;
|
||||||
|
import flixel.addons.ui.FlxUIText;
|
||||||
|
import flixel.FlxG;
|
||||||
|
|
||||||
|
class MessageBox extends WindowContent {
|
||||||
|
public var caption:String;
|
||||||
|
public var message:String;
|
||||||
|
public var msgIcon:MessageBoxIcon;
|
||||||
|
public var callback:Int->Void = null;
|
||||||
|
private var __buttons:Array<OneOfTwo<String, Butt>> = null;
|
||||||
|
|
||||||
|
public override function new(caption:String, message:String, icon:MessageBoxIcon, ?buttons:Array<OneOfTwo<String, Butt>>, ?callback:Int->Void) {
|
||||||
|
super(caption, 100, 100, 500, 500);
|
||||||
|
this.caption = caption;
|
||||||
|
this.message = message;
|
||||||
|
this.msgIcon = icon;
|
||||||
|
this.callback = callback;
|
||||||
|
this.__buttons = buttons;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override function create() {
|
||||||
|
super.create();
|
||||||
|
parent.canMinimize = parent.resizeable = false;
|
||||||
|
var text = new WindowText(10, 10, 0, message);
|
||||||
|
if (text.width > 500)
|
||||||
|
text.fieldWidth = 500;
|
||||||
|
add(text);
|
||||||
|
setSize(Std.int(Math.max(text.width + 20, 240)), Std.int(text.height + 20));
|
||||||
|
|
||||||
|
|
||||||
|
if (__buttons == null) __buttons = ["OK"];
|
||||||
|
else if (__buttons.length <= 0) __buttons.push("OK");
|
||||||
|
|
||||||
|
var firstButt:Button = null;
|
||||||
|
for(k=>b in __buttons) {
|
||||||
|
var label:String = null;
|
||||||
|
var callback:Void->Void = null;
|
||||||
|
if (b is String) {
|
||||||
|
label = cast(b, String);
|
||||||
|
} else if (b is Dynamic) {
|
||||||
|
label = Reflect.field(b, "label");
|
||||||
|
callback = Reflect.field(b, "callback");
|
||||||
|
}
|
||||||
|
var button = new Button(490, 490, label, function() {
|
||||||
|
parent.close();
|
||||||
|
if (callback != null) callback();
|
||||||
|
if (this.callback != null) this.callback(k);
|
||||||
|
});
|
||||||
|
button.x -= button.width;
|
||||||
|
button.y -= button.height;
|
||||||
|
add(button);
|
||||||
|
if (firstButt == null) firstButt = button;
|
||||||
|
}
|
||||||
|
setSize(Std.int(width), Std.int(height + firstButt.height + 10));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@:enum
|
||||||
|
abstract MessageBoxIcon(Int) {
|
||||||
|
var ERROR = 0;
|
||||||
|
var ALERT = 1;
|
||||||
|
var INFORMATION = 2;
|
||||||
|
var QUESTION = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// HAHA BUTT!! *minion laugh*
|
||||||
|
typedef Butt = {
|
||||||
|
var label:String;
|
||||||
|
@:optional var callback:Void->Void;
|
||||||
|
}
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
package funkin.desktop.editors;
|
package funkin.desktop.editors;
|
||||||
|
|
||||||
import funkin.desktop.windows.*;
|
import funkin.desktop.windows.*;
|
||||||
|
import funkin.desktop.sprites.*;
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package funkin.desktop.sprites;
|
package funkin.desktop.sprites;
|
||||||
|
|
||||||
|
import funkin.desktop.theme.Theme;
|
||||||
import flixel.FlxObject;
|
import flixel.FlxObject;
|
||||||
import flixel.addons.ui.FlxUIText;
|
import flixel.addons.ui.FlxUIText;
|
||||||
import flixel.FlxSprite;
|
import flixel.FlxSprite;
|
||||||
@@ -18,7 +19,15 @@ class Button extends FlxObject {
|
|||||||
public var pressedSprite:SpliceSprite;
|
public var pressedSprite:SpliceSprite;
|
||||||
public var disabledSprite:SpliceSprite;
|
public var disabledSprite:SpliceSprite;
|
||||||
|
|
||||||
public var label:FlxUIText;
|
public var label:WindowText;
|
||||||
|
|
||||||
|
private override function get_width() {
|
||||||
|
return normalSprite.width;
|
||||||
|
}
|
||||||
|
|
||||||
|
private override function get_height() {
|
||||||
|
return normalSprite.height;
|
||||||
|
}
|
||||||
|
|
||||||
public function new(x:Float, y:Float, text:String = "", callback:Void->Void) {
|
public function new(x:Float, y:Float, text:String = "", callback:Void->Void) {
|
||||||
super();
|
super();
|
||||||
@@ -38,7 +47,8 @@ class Button extends FlxObject {
|
|||||||
pressedSprite = new SpliceSprite(Paths.image(pressedButton.sprite), x, y, 75, 24, pressedButton.left, pressedButton.top, pressedButton.bottom, pressedButton.right);
|
pressedSprite = new SpliceSprite(Paths.image(pressedButton.sprite), x, y, 75, 24, pressedButton.left, pressedButton.top, pressedButton.bottom, pressedButton.right);
|
||||||
disabledSprite = new SpliceSprite(Paths.image(disabledButton.sprite), x, y, 75, 24, disabledButton.left, disabledButton.top, disabledButton.bottom, disabledButton.right);
|
disabledSprite = new SpliceSprite(Paths.image(disabledButton.sprite), x, y, 75, 24, disabledButton.left, disabledButton.top, disabledButton.bottom, disabledButton.right);
|
||||||
|
|
||||||
label = new FlxUIText(0, 0, 75, text);
|
label = new WindowText(0, 0, 75, text);
|
||||||
|
label.alignment = CENTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override function update(elapsed:Float) {
|
public override function update(elapsed:Float) {
|
||||||
@@ -97,7 +107,9 @@ class Button extends FlxObject {
|
|||||||
sprite.cameras = cameras;
|
sprite.cameras = cameras;
|
||||||
sprite.setPosition(x, y);
|
sprite.setPosition(x, y);
|
||||||
sprite.scrollFactor.set(scrollFactor.x, scrollFactor.y);
|
sprite.scrollFactor.set(scrollFactor.x, scrollFactor.y);
|
||||||
sprite.draw();
|
|
||||||
}
|
}
|
||||||
|
spr.draw();
|
||||||
|
label.y += (height - label.height) / 2;
|
||||||
|
label.draw();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package funkin.desktop.sprites;
|
||||||
|
|
||||||
|
import flixel.text.FlxText;
|
||||||
|
import flixel.addons.ui.FlxUIText;
|
||||||
|
import funkin.desktop.theme.Theme.ThemeData;
|
||||||
|
|
||||||
|
class WindowText extends FlxText {
|
||||||
|
// TODO: VISUAL STYLES SHIT
|
||||||
|
public function new(x:Float, y:Float, w:Float, t:String) {
|
||||||
|
super(x, y, w, t);
|
||||||
|
color = 0xFF000000;
|
||||||
|
scrollFactor.set();
|
||||||
|
applyFontSettings(DesktopMain.theme.window);
|
||||||
|
// setFormat(Paths.font(.font))
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyFontSettings(data:ThemeData) {
|
||||||
|
var fontPath = Paths.font(data.font);
|
||||||
|
if (data.font.startsWith("file://")) {
|
||||||
|
fontPath = data.font.substr(7);
|
||||||
|
while(fontPath.charAt(0) == "/") fontPath = fontPath.substr(1);
|
||||||
|
}
|
||||||
|
setFormat(fontPath, Std.int(data.fontSize), data.textColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -24,8 +24,9 @@ class Theme {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CAPTION
|
* CAPTION & WINDOW
|
||||||
*/
|
*/
|
||||||
|
public var window:ThemeData = new ThemeData();
|
||||||
public var captionActive:ThemeData = new ThemeData();
|
public var captionActive:ThemeData = new ThemeData();
|
||||||
public var captionInactive:ThemeData = new ThemeData();
|
public var captionInactive:ThemeData = new ThemeData();
|
||||||
public var captionButtons:ThemeData = new ThemeData();
|
public var captionButtons:ThemeData = new ThemeData();
|
||||||
@@ -52,6 +53,9 @@ class Theme {
|
|||||||
|
|
||||||
if (element.has.path) data.sprite = '$prefix${element.att.path.trim()}';
|
if (element.has.path) data.sprite = '$prefix${element.att.path.trim()}';
|
||||||
if (element.has.textColor) data.textColor = element.att.textColor.getColorFromDynamic();
|
if (element.has.textColor) data.textColor = element.att.textColor.getColorFromDynamic();
|
||||||
|
if (element.has.font) data.font = element.att.font;
|
||||||
|
if (element.has.color) data.color = element.att.color.getColorFromDynamic();
|
||||||
|
if (element.has.fontSize) data.fontSize = Std.parseFloat(element.att.fontSize).getDefault(0);
|
||||||
if (element.has.left) data.left = Std.parseFloat(element.att.left).getDefault(0);
|
if (element.has.left) data.left = Std.parseFloat(element.att.left).getDefault(0);
|
||||||
if (element.has.right) data.right = Std.parseFloat(element.att.right).getDefault(0);
|
if (element.has.right) data.right = Std.parseFloat(element.att.right).getDefault(0);
|
||||||
if (element.has.top) data.top = Std.parseFloat(element.att.top).getDefault(0);
|
if (element.has.top) data.top = Std.parseFloat(element.att.top).getDefault(0);
|
||||||
@@ -86,7 +90,11 @@ class Theme {
|
|||||||
class ThemeData implements IFlxDestroyable {
|
class ThemeData implements IFlxDestroyable {
|
||||||
public var sprite:String = "";
|
public var sprite:String = "";
|
||||||
|
|
||||||
public var textColor:FlxColor = FlxColor.WHITE;
|
public var font:String = "";
|
||||||
|
public var fontSize:Float = 12;
|
||||||
|
|
||||||
|
public var textColor:FlxColor = FlxColor.BLACK;
|
||||||
|
public var color:FlxColor = FlxColor.WHITE;
|
||||||
|
|
||||||
public var left:Float = 4;
|
public var left:Float = 4;
|
||||||
public var bottom:Float = 4;
|
public var bottom:Float = 4;
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ import flixel.tweens.FlxTween;
|
|||||||
import flixel.tweens.FlxEase;
|
import flixel.tweens.FlxEase;
|
||||||
import flixel.group.FlxSpriteGroup.FlxTypedSpriteGroup;
|
import flixel.group.FlxSpriteGroup.FlxTypedSpriteGroup;
|
||||||
import funkin.desktop.sprites.*;
|
import funkin.desktop.sprites.*;
|
||||||
|
import funkin.desktop.editors.MessageBox.MessageBoxIcon;
|
||||||
|
import funkin.desktop.editors.MessageBox;
|
||||||
|
|
||||||
|
|
||||||
typedef WindowCam = {
|
typedef WindowCam = {
|
||||||
@@ -44,6 +46,11 @@ class Window extends FlxTypedGroup<FlxBasic> {
|
|||||||
|
|
||||||
public var moveable:Bool = true;
|
public var moveable:Bool = true;
|
||||||
public var resizeable:Bool = true;
|
public var resizeable:Bool = true;
|
||||||
|
public var canClose:Bool = true;
|
||||||
|
public var canMinimize:Bool = true;
|
||||||
|
public var canHelp:Bool = false;
|
||||||
|
|
||||||
|
public var maximized:Bool = false;
|
||||||
|
|
||||||
public var focused(get, null):Bool;
|
public var focused(get, null):Bool;
|
||||||
|
|
||||||
@@ -57,6 +64,14 @@ class Window extends FlxTypedGroup<FlxBasic> {
|
|||||||
return DesktopMain.instance.windows.members.last() == this;
|
return DesktopMain.instance.windows.members.last() == this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function showMessage(caption:String, message:String, icon:MessageBoxIcon) {
|
||||||
|
var win = DesktopMain.instance.openWindow(new MessageBox(caption, message, icon));
|
||||||
|
curDialog = win;
|
||||||
|
win.move(
|
||||||
|
windowCaptionCamera.x + ((windowCaptionCamera.width - win.windowCaptionCamera.width) / 2),
|
||||||
|
windowCaptionCamera.y + ((windowCaptionCamera.height - win.windowCaptionCamera.height) / 2));
|
||||||
|
}
|
||||||
|
|
||||||
public function loadIcon(path:String) {
|
public function loadIcon(path:String) {
|
||||||
icon.loadGraphic(path);
|
icon.loadGraphic(path);
|
||||||
icon.setUnstretchedGraphicSize(16, 16, false);
|
icon.setUnstretchedGraphicSize(16, 16, false);
|
||||||
@@ -112,7 +127,7 @@ class Window extends FlxTypedGroup<FlxBasic> {
|
|||||||
if (content.windowCamera == null) {
|
if (content.windowCamera == null) {
|
||||||
content.windowCamera = new FlxCamera(Std.int(content.winX + 4), Std.int(content.winY + 23), Std.int(content.width), Std.int(content.height), 1);
|
content.windowCamera = new FlxCamera(Std.int(content.winX + 4), Std.int(content.winY + 23), Std.int(content.width), Std.int(content.height), 1);
|
||||||
content.windowCamera.pixelPerfectRender = true;
|
content.windowCamera.pixelPerfectRender = true;
|
||||||
content.windowCamera.bgColor = -1; // walter white
|
content.windowCamera.bgColor = DesktopMain.theme.window.color;
|
||||||
}
|
}
|
||||||
content.cameras = [content.windowCamera];
|
content.cameras = [content.windowCamera];
|
||||||
content.parent = this;
|
content.parent = this;
|
||||||
@@ -140,6 +155,41 @@ class Window extends FlxTypedGroup<FlxBasic> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function onDesktopSizeChange(width:Int, height:Int) {
|
||||||
|
if (maximized) {
|
||||||
|
resize(width, height);
|
||||||
|
}
|
||||||
|
content.onDesktopSizeChange(width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function maximize() {
|
||||||
|
if (maximized != (maximized = true)) {
|
||||||
|
// maximizing!!
|
||||||
|
captionButtons.members[1].animation.play("restore", true);
|
||||||
|
move(-DesktopMain.theme.window.left, -DesktopMain.theme.window.left);
|
||||||
|
resize(FlxG.width, FlxG.height); // TODO: taskbar stuff
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function minimize() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function restore() {
|
||||||
|
if (maximized != (maximized = false)) {
|
||||||
|
// maximizing!!
|
||||||
|
captionButtons.members[1].animation.play("maximize", true);
|
||||||
|
move(100, 100);
|
||||||
|
var w:Int = 320;
|
||||||
|
var h:Int = 320;
|
||||||
|
if (windowCameras[0] != null) {
|
||||||
|
w = windowCameras[0].width;
|
||||||
|
h = windowCameras[0].height;
|
||||||
|
}
|
||||||
|
resize(w, h); // TODO: taskbar stuff
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function changeCaption(text:String) {
|
public function changeCaption(text:String) {
|
||||||
caption.text = text;
|
caption.text = text;
|
||||||
}
|
}
|
||||||
@@ -197,19 +247,19 @@ class Window extends FlxTypedGroup<FlxBasic> {
|
|||||||
|
|
||||||
var shouldCancel = DesktopMain.instance.mouseInput.overlapsRect(this, new Rectangle(0, 0, windowCaptionCamera.width, windowCaptionCamera.height), windowCaptionCamera);
|
var shouldCancel = DesktopMain.instance.mouseInput.overlapsRect(this, new Rectangle(0, 0, windowCaptionCamera.width, windowCaptionCamera.height), windowCaptionCamera);
|
||||||
|
|
||||||
if (shouldCancel && DesktopMain.instance.mouseInput.justPressed)
|
|
||||||
DesktopMain.instance.focusWindow(this);
|
|
||||||
|
|
||||||
if (curDialog != null && curDialog.exists) {
|
if (curDialog != null && curDialog.exists) {
|
||||||
if (shouldCancel) {
|
if (shouldCancel) {
|
||||||
DesktopMain.instance.mouseInput.cancel();
|
|
||||||
if (DesktopMain.instance.mouseInput.justPressed) {
|
if (DesktopMain.instance.mouseInput.justPressed) {
|
||||||
// TODO: sounds
|
// TODO: sounds
|
||||||
DesktopMain.instance.focusWindow(curDialog);
|
DesktopMain.instance.focusWindow(curDialog);
|
||||||
}
|
}
|
||||||
|
DesktopMain.instance.mouseInput.cancel();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
} else if (shouldCancel && DesktopMain.instance.mouseInput.justPressed)
|
||||||
|
DesktopMain.instance.focusWindow(this);
|
||||||
// updates them backwards!!
|
// updates them backwards!!
|
||||||
while(i > 0) {
|
while(i > 0) {
|
||||||
i--;
|
i--;
|
||||||
|
|||||||
@@ -6,15 +6,9 @@ class WindowCaptionButton extends FlxSprite {
|
|||||||
public var icon:FlxSprite;
|
public var icon:FlxSprite;
|
||||||
public var window:Window;
|
public var window:Window;
|
||||||
|
|
||||||
public static var anims:Array<String> = ["minimize", "maximize", "close", "restore", "help"];
|
public static var anims:Array<String> = ["close", "maximize", "minimize", "help", "restore"];
|
||||||
|
|
||||||
public function new(window:Window, i:Int) {
|
public function new(window:Window, i:Int) {
|
||||||
// super(0, 0, "", function() {
|
|
||||||
// switch(i) {
|
|
||||||
// case 0:
|
|
||||||
// window.close();
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
super(0, 0);
|
super(0, 0);
|
||||||
this.window = window;
|
this.window = window;
|
||||||
ID = i;
|
ID = i;
|
||||||
@@ -22,12 +16,9 @@ class WindowCaptionButton extends FlxSprite {
|
|||||||
loadGraphic(Paths.image(DesktopMain.theme.captionButtons.sprite), true, Std.int(DesktopMain.theme.captionButtons.size.x), Std.int(DesktopMain.theme.captionButtons.size.y));
|
loadGraphic(Paths.image(DesktopMain.theme.captionButtons.sprite), true, Std.int(DesktopMain.theme.captionButtons.size.x), Std.int(DesktopMain.theme.captionButtons.size.y));
|
||||||
|
|
||||||
for(k=>e in anims) {
|
for(k=>e in anims) {
|
||||||
animation.add(e, [for(l in 0...6) k + (l * anims.length)], 0, true);
|
animation.add(e, [for(l in 0...8) k + (l * anims.length)], 0, true);
|
||||||
}
|
}
|
||||||
animation.play(anims[ID]);
|
animation.play(anims[ID]);
|
||||||
|
|
||||||
// resize(18, 18);
|
|
||||||
// color = (i > 0) ? 0xFF8888FF : 0xFFFF0000;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override function draw() {
|
public override function draw() {
|
||||||
@@ -40,26 +31,45 @@ class WindowCaptionButton extends FlxSprite {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var mouseInput = DesktopMain.instance.mouseInput;
|
var mouseInput = DesktopMain.instance.mouseInput;
|
||||||
if (DesktopMain.instance.mouseInput.overlaps(this, camera)) {
|
|
||||||
if (mouseInput.justReleased) {
|
visible = switch(ID) {
|
||||||
switch(ID) {
|
case 1 | 2: window.resizeable || window.canMinimize;
|
||||||
case 0:
|
case 3: window.canHelp;
|
||||||
window.close();
|
default: true;
|
||||||
case 1:
|
};
|
||||||
|
|
||||||
|
if(switch(ID) {
|
||||||
|
case 0: window.canClose;
|
||||||
|
case 1: window.resizeable;
|
||||||
|
case 2: window.canMinimize;
|
||||||
|
case 3: window.canHelp;
|
||||||
|
default: true;
|
||||||
|
}) {
|
||||||
|
if (DesktopMain.instance.mouseInput.overlaps(this, camera)) {
|
||||||
|
if (mouseInput.justReleased) {
|
||||||
|
switch(ID) {
|
||||||
|
case 0:
|
||||||
|
if (window.canClose) window.close();
|
||||||
|
case 1:
|
||||||
|
if (window.resizeable) (window.maximized ? window.restore : window.maximize)();
|
||||||
|
case 2:
|
||||||
|
if (window.canMinimize) window.minimize();
|
||||||
|
}
|
||||||
|
mouseInput.cancel();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
mouseInput.cancel();
|
if (mouseInput.pressed || mouseInput.justPressed) {
|
||||||
return;
|
animation.curAnim.curFrame = 2;
|
||||||
}
|
} else {
|
||||||
if (mouseInput.pressed || mouseInput.justPressed) {
|
animation.curAnim.curFrame = 1;
|
||||||
animation.curAnim.curFrame = 2;
|
}
|
||||||
} else {
|
mouseInput.cancel(); // prevents controls behind this one from updating input
|
||||||
animation.curAnim.curFrame = 1;
|
} else
|
||||||
}
|
animation.curAnim.curFrame = 0;
|
||||||
mouseInput.cancel(); // prevents controls behind this one from updating input
|
} else {
|
||||||
} else
|
animation.curAnim.curFrame = 3;
|
||||||
animation.curAnim.curFrame = 0;
|
}
|
||||||
if (!window.focused) animation.curAnim.curFrame += 3;
|
if (!window.focused) animation.curAnim.curFrame += 4;
|
||||||
|
|
||||||
super.update(elapsed);
|
super.update(elapsed);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ class WindowContent extends WindowGroup<FlxBasic> {
|
|||||||
|
|
||||||
public function new(caption:String, x:Float, y:Float, width:Int, height:Int) {
|
public function new(caption:String, x:Float, y:Float, width:Int, height:Int) {
|
||||||
super();
|
super();
|
||||||
|
this.title = caption;
|
||||||
this.width = width;
|
this.width = width;
|
||||||
this.height = height;
|
this.height = height;
|
||||||
this.winX = x;
|
this.winX = x;
|
||||||
@@ -78,4 +79,9 @@ class WindowContent extends WindowGroup<FlxBasic> {
|
|||||||
public function create() {
|
public function create() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function onDesktopSizeChange(width:Int, height:Int) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -767,14 +767,14 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
var iconOffset:Int = 26;
|
var iconOffset:Int = 26;
|
||||||
|
|
||||||
iconP1.x = healthBar.x + (healthBar.width * (FlxMath.remapToRange(healthBar.percent, 0, 100, 100, 0) * 0.01) - iconOffset);
|
iconP1.x = healthBar.x + (healthBar.width * (FlxMath.remapToRange(healthBar.percent, 0, 100, 1, 0)) - iconOffset);
|
||||||
iconP2.x = healthBar.x + (healthBar.width * (FlxMath.remapToRange(healthBar.percent, 0, 100, 100, 0) * 0.01)) - (iconP2.width - iconOffset);
|
iconP2.x = healthBar.x + (healthBar.width * (FlxMath.remapToRange(healthBar.percent, 0, 100, 1, 0))) - (iconP2.width - iconOffset);
|
||||||
|
|
||||||
if (health > 2)
|
if (health > 2)
|
||||||
health = 2;
|
health = 2;
|
||||||
|
|
||||||
iconP1.health = healthBar.percent;
|
iconP1.health = healthBar.percent / 100;
|
||||||
iconP2.health = 1 - (healthBar.percent);
|
iconP2.health = 1 - (healthBar.percent / 100);
|
||||||
|
|
||||||
/* if (FlxG.keys.justPressed.NINE)
|
/* if (FlxG.keys.justPressed.NINE)
|
||||||
FlxG.switchState(new Charting()); */
|
FlxG.switchState(new Charting()); */
|
||||||
|
|||||||
Reference in New Issue
Block a user