some organizations

This commit is contained in:
lunarcleint
2024-07-26 13:20:46 -07:00
parent ddcd413487
commit 5085810bf0
4 changed files with 91 additions and 120 deletions
@@ -10,6 +10,7 @@ import flixel.math.FlxPoint;
import funkin.backend.system.framerate.Framerate;
import funkin.backend.utils.XMLUtil.AnimData;
import funkin.editors.ui.UIContextMenu.UIContextMenuOption;
import funkin.editors.ui.UIContextMenu.UIContextMenuOptionSpr;
import funkin.game.Character;
import haxe.xml.Access;
import haxe.xml.Printer;
@@ -112,6 +113,19 @@ class CharacterEditor extends UIState {
label: "Redo",
keybinds: [[CONTROL, Y], [CONTROL, SHIFT, Z]],
onSelect: _edit_redo
},
null,
{
label: "Edit information",
color: 0xFF959829, icon: 4,
onCreate: function (button:UIContextMenuOptionSpr) {button.label.offset.x = button.icon.offset.x = -2;},
onSelect: _edit_info
},
{
label: "Edit sprite",
color: 0xFF959829, icon: 4,
onCreate: function (button:UIContextMenuOptionSpr) {button.label.offset.x = button.icon.offset.x = -2;},
onSelect: _edit_sprite
}
]
},
@@ -434,6 +448,10 @@ class CharacterEditor extends UIState {
function _edit_undo(_) {}
function _edit_redo(_) {}
function _edit_info(_)
characterPropertiesWindow.editCharacterInfoUI();
function _edit_sprite(_) {}
function _offsets_left(_) _change_offset(-1, 0);
function _offsets_up(_) _change_offset(0, -1);
function _offsets_down(_) _change_offset(0, 1);
@@ -1,53 +0,0 @@
package funkin.editors.character;
import openfl.geom.Point;
import openfl.geom.Rectangle;
import openfl.display.BitmapData;
import flixel.util.FlxColor;
using funkin.backend.utils.BitmapUtil;
// DONT DELETE I MIGHT USE LATER -lunar
class CharacterIconDisplay extends UISprite {
public var healthBarBG:FlxSprite;
public var healthBar:FlxSprite;
public var textProperties:UIText;
public function new(x:Float, y:Float, name:String, icon:String, color:Null<FlxColor>, barWidth:Int) {
super(x, y);
var path:String = Paths.image('icons/${icon}');
if (!Assets.exists(path)) path = Paths.image('icons/face');
var imageBitmap:BitmapData = Assets.getBitmapData(path, true, false);
var iconBitmap:BitmapData = new BitmapData(150, 150, true, 0x00000000);
iconBitmap.copyPixels(imageBitmap, new Rectangle(0, 0, 150, 150), new Point(0,0));
loadGraphic(FlxG.bitmap.add(iconBitmap.crop()));
scale.x = scale.y = 40/pixels.height;
updateHitbox();
// bye guys :((
imageBitmap.dispose(); iconBitmap.dispose();
antialiasing = true;
healthBarBG = new FlxSprite(x+(width/2), y+(height*(2.25/4))+2).makeSolid(barWidth-Std.int(width), 10, 0xFF000000);
healthBar = new FlxSprite(healthBarBG.x+2, healthBarBG.y+2).makeSolid(
Std.int(healthBarBG.width-4), Std.int(healthBarBG.height-4),
color != null ? color : 0xFFFFFFFF
);
textProperties = new UIText(x+width+2, healthBarBG.y-14, 0, 'Character Properties of ${name}...', 13);
members.push(healthBarBG);
members.push(healthBar);
members.push(textProperties);
}
public override function draw() {
drawMembers();
drawSuper();
}
}
@@ -112,71 +112,4 @@ class CharacterInfoScreen extends UISubstateWindow {
]
});
}
}
class UIIconColorPicker extends UISliceSprite {
public var colorWheel:UIColorwheel;
public var iconSprite:FlxSprite;
public var iconTextBox:UITextBox;
public var pickerButton:UIButton;
public var pickerIcon:FlxSprite;
public function new(x:Float, y:Float, icon:String, antialaising:Bool, colorWheel:UIColorwheel) {
super(x, y, 12+125+12, 4+125+4+32+12, 'editors/ui/inputbox');
this.colorWheel = colorWheel;
iconTextBox = new UITextBox(x+12, y+4+125+4, icon, 125);
iconTextBox.onChange = (newIcon:String) -> {updateIcon(newIcon);}
members.push(iconTextBox);
members.push(iconSprite = new FlxSprite());
iconSprite.antialiasing = antialaising;
pickerButton = new UIButton(x+12+125-26, y+12, "", colorPick, 26, 26);
pickerButton.frames = Paths.getFrames('editors/ui/inputbox');
members.push(pickerButton);
pickerIcon = new FlxSprite(pickerButton.x+7, pickerButton.y+7).loadGraphic(Paths.image("editors/ui/picker"));
members.push(pickerIcon);
updateIcon(icon);
}
var __path:String = null;
public function updateIcon(icon:String) {
if (iconSprite.animation.exists(icon)) return;
@:privateAccess iconSprite.animation.clearAnimations();
var path:String = Paths.image('icons/$icon');
if (!Assets.exists(path)) path = Paths.image('icons/face');
iconSprite.loadGraphic(__path = path, true, 150, 150);
iconSprite.animation.add(icon, [0], 0, false);
iconSprite.animation.play(icon);
iconSprite.scale.set(125/150, 125/150);
iconSprite.updateHitbox();
iconSprite.setPosition(x+12, y+4);
__cachedColor = null;
}
var __cachedColor:Null<FlxColor> = null;
public function colorPick() {
if (__cachedColor == null) {
var imageBitmap:BitmapData = Assets.getBitmapData(__path, true, false);
__cachedColor = imageBitmap.getMostPresentColor();
imageBitmap.dispose();
}
if (colorWheel != null) {
colorWheel.hue = __cachedColor.hue;
colorWheel.saturation = __cachedColor.saturation;
colorWheel.brightness = __cachedColor.brightness;
colorWheel.updateWheel();
}
}
}
@@ -0,0 +1,73 @@
package funkin.editors.ui;
import openfl.display.BitmapData;
import flixel.util.FlxColor;
using funkin.backend.utils.BitmapUtil;
class UIIconColorPicker extends UISliceSprite {
public var colorWheel:UIColorwheel;
public var iconSprite:FlxSprite;
public var iconTextBox:UITextBox;
public var pickerButton:UIButton;
public var pickerIcon:FlxSprite;
public function new(x:Float, y:Float, icon:String, antialaising:Bool, colorWheel:UIColorwheel) {
super(x, y, 12+125+12, 4+125+4+32+12, 'editors/ui/inputbox');
this.colorWheel = colorWheel;
iconTextBox = new UITextBox(x+12, y+4+125+4, icon, 125);
iconTextBox.onChange = (newIcon:String) -> {updateIcon(newIcon);}
members.push(iconTextBox);
members.push(iconSprite = new FlxSprite());
iconSprite.antialiasing = antialaising;
pickerButton = new UIButton(x+12+125-26, y+12, "", colorPick, 26, 26);
pickerButton.frames = Paths.getFrames('editors/ui/inputbox');
members.push(pickerButton);
pickerIcon = new FlxSprite(pickerButton.x+7, pickerButton.y+7).loadGraphic(Paths.image("editors/ui/picker"));
members.push(pickerIcon);
updateIcon(icon);
}
var __path:String = null;
public function updateIcon(icon:String) {
if (iconSprite.animation.exists(icon)) return;
@:privateAccess iconSprite.animation.clearAnimations();
var path:String = Paths.image('icons/$icon');
if (!Assets.exists(path)) path = Paths.image('icons/face');
iconSprite.loadGraphic(__path = path, true, 150, 150);
iconSprite.animation.add(icon, [0], 0, false);
iconSprite.animation.play(icon);
iconSprite.scale.set(125/150, 125/150);
iconSprite.updateHitbox();
iconSprite.setPosition(x+12, y+4);
__cachedColor = null;
}
var __cachedColor:Null<FlxColor> = null;
public function colorPick() {
if (__cachedColor == null) {
var imageBitmap:BitmapData = Assets.getBitmapData(__path, true, false);
__cachedColor = imageBitmap.getMostPresentColor();
imageBitmap.dispose();
}
if (colorWheel != null) {
colorWheel.hue = __cachedColor.hue;
colorWheel.saturation = __cachedColor.saturation;
colorWheel.brightness = __cachedColor.brightness;
colorWheel.updateWheel();
}
}
}