Files
CodenameEngine/source/funkin/menus/ui/effects/RegionEffect.hx
T

77 lines
2.0 KiB
Haxe

package funkin.menus.ui.effects;
import flixel.util.FlxColor;
class AlphabetRenderData {
public var parent:NewAlphabet;
public var letter:String;
public var offsetX:Float = 0;
public var offsetY:Float = 0;
public var color(get, set):FlxColor;
public var red:Float = 0;
public var green:Float = 0;
public var blue:Float = 0;
public var alpha:Float = 1;
public function new(parent:NewAlphabet) {
this.parent = parent;
}
public function reset(parent:NewAlphabet, red:Float, green:Float, blue:Float, alpha:Float, letter:String) {
this.parent = parent;
this.letter = letter;
this.offsetX = 0;
this.offsetY = 0;
this.red = red;
this.green = green;
this.blue = blue;
this.alpha = alpha;
}
function get_color():FlxColor {
return FlxColor.fromRGBFloat(red, green, blue);
}
function set_color(value:FlxColor):FlxColor {
red = value.redFloat;
green = value.greenFloat;
blue = value.blueFloat;
return value;
}
}
class RegionEffect {
public var effectTime:Float = 0;
public var speed:Float = 1;
public var enabled:Bool = true;
public var regionMin:Array<Int> = [];
public var regionMax:Array<Int> = [];
public function new() {}
public function resetRegions() {
regionMin.splice(0, regionMin.length);
regionMax.splice(0, regionMax.length);
}
public function addRegion(min:Int, max:Int) {
regionMin.push(min);
regionMax.push(max);
}
public function willModify(index:Int, lineIndex:Int, renderData:AlphabetRenderData):Bool {
if (!enabled) return false;
if (regionMin.length == 0) regionMin.push(0);
if (regionMax.length == 0) regionMax.push(-1);
for (i in 0...Std.int(Math.min(regionMin.length, regionMax.length))) {
var min = (regionMin[i] < 0) ? renderData.parent.text.length - regionMin[i] : regionMin[i];
var max = (regionMax[i] < 0) ? renderData.parent.text.length - regionMax[i] : regionMax[i];
if (index >= min && index <= max)
return true;
}
return false;
}
public function modify(index:Int, lineIndex:Int, renderData:AlphabetRenderData):Void {}
}