From aad9c350153edfcdd1d4955b787231c2cec38e43 Mon Sep 17 00:00:00 2001 From: Mihai Alexandru <77043862+MAJigsaw77@users.noreply.github.com> Date: Wed, 20 Dec 2023 23:34:52 +0200 Subject: [PATCH 01/17] Fixed `FlxRuntimeShader` on the latest flixel commit. (#414) * Fixed `FlxRuntimeShader` on latest flixel. * Update flixel/addons/display/FlxRuntimeShader.hx Co-authored-by: George Kurelic * A bit of formatting * Update FlxRuntimeShader.hx * This should fix the compile now * fix flash --------- Co-authored-by: George Kurelic --- flixel/addons/display/FlxRuntimeShader.hx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/flixel/addons/display/FlxRuntimeShader.hx b/flixel/addons/display/FlxRuntimeShader.hx index 9ab2b6e8..423a6190 100644 --- a/flixel/addons/display/FlxRuntimeShader.hx +++ b/flixel/addons/display/FlxRuntimeShader.hx @@ -1,6 +1,10 @@ package flixel.addons.display; -#if (FLX_DRAW_QUADS && !flash) +#if (nme || flash) + #if FLX_NO_COVERAGE_TEST + #error "FlxRuntimeShader isn't available with nme or flash." + #end +#else import flixel.graphics.tile.FlxGraphicsShader; #if lime import lime.utils.Float32Array; From 19c281642d956e577bd2d6e495c53fe079ca7e26 Mon Sep 17 00:00:00 2001 From: itulau <102986935+itulau@users.noreply.github.com> Date: Fri, 22 Dec 2023 17:24:02 -0300 Subject: [PATCH 02/17] Fix FlxNestedSprite showing default icon incorrectly (#415) By adding a check for existence on _frame (which FlxSprite uses to insert the default png) when drawing the element this prevents the default behavior. --- flixel/addons/display/FlxNestedSprite.hx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flixel/addons/display/FlxNestedSprite.hx b/flixel/addons/display/FlxNestedSprite.hx index 3aed5722..1d71abb0 100644 --- a/flixel/addons/display/FlxNestedSprite.hx +++ b/flixel/addons/display/FlxNestedSprite.hx @@ -259,7 +259,8 @@ class FlxNestedSprite extends FlxSprite override public function draw():Void { - super.draw(); + if(_frame != null) + super.draw(); for (child in children) { From 3fce942fde2b4d8e436995a2fc7efa603df4695d Mon Sep 17 00:00:00 2001 From: George Kurelic Date: Thu, 4 Jan 2024 10:36:47 -0500 Subject: [PATCH 03/17] use setup-flixel v1 --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 850b5494..e5faab14 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -29,7 +29,7 @@ jobs: haxelib install haxelib 4.0.3 haxelib dev flixel-addons . - - uses: HaxeFlixel/setup-flixel@master + - uses: HaxeFlixel/setup-flixel@v1 with: haxe-version: current flixel-versions: dev From 1869a4b68f52c91c9dd9d2b00c8a2dffe3db5058 Mon Sep 17 00:00:00 2001 From: George Kurelic Date: Thu, 4 Jan 2024 14:53:57 -0600 Subject: [PATCH 04/17] set version 3.2.2 --- haxelib.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/haxelib.json b/haxelib.json index 40378a6b..1d77a7b5 100644 --- a/haxelib.json +++ b/haxelib.json @@ -4,7 +4,7 @@ "license": "MIT", "tags": ["game", "openfl", "flash", "neko", "cpp", "android", "ios", "cross"], "description": "flixel-addons is a set of useful, additional classes for HaxeFlixel.", - "version": "3.2.1", - "releasenote": "Deprecate FlxExtendedSprite", + "version": "3.2.2", + "releasenote": "Compatibility with flixel changes", "contributors": ["haxeflixel", "Gama11", "GeoKureli"] } From 719fd7b527ca9b75ba019c0a2b59d0ce0a79c15e Mon Sep 17 00:00:00 2001 From: George FunBook Date: Thu, 4 Jan 2024 15:55:01 -0600 Subject: [PATCH 05/17] add all current 3.2.2 changes --- CHANGELOG.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe72263b..4abba748 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,20 @@ -3.2.1 (September 26, 2023) +3.2.2 (TBD) ------------------------------ +#### Changes and improvements: +- `FlxFSM`: Fix `FlxPool` deprecation warnings from Flixel 5.4.0 ([#409](https://github.com/HaxeFlixel/flixel-addons/pull/409)) +- `TransitionData`: add `cameraMode` field to help ensure the transition shows on top ([#410](https://github.com/HaxeFlixel/flixel-addons/pull/410)) +- `FlxRuntimeShader`: Throw incompatibility error on nme or flash ([#414](https://github.com/HaxeFlixel/flixel-addons/pull/414)) +- `FlxNestedSprite`: Prevent drawing default png ([#412](https://github.com/HaxeFlixel/flixel-addons/pull/412)) + +#### Bugfixes: +- `TransitionFade`: Fix bug with persistent images ([#415](https://github.com/HaxeFlixel/flixel-addons/pull/415)) +3.2.1 (September 26, 2023) +------------------------------ #### Changes and improvements: - `FlxMouseSpring`: Now works with `FlxSprite` rather than just `FlxExtendedSprite` ([#405](https://github.com/HaxeFlixel/flixel-addons/pull/405)) - `FlxExtendedSprite`: Deprecated for `FlxExtendedMouseSprite`, no longer uses `FlxMouseControl` ([#405](https://github.com/HaxeFlixel/flixel-addons/pull/405)) - #### Bugfixes: - `FlxBackdrop`: Change spacing constructor args to floats ([#408](https://github.com/HaxeFlixel/flixel-addons/pull/408)) From b82db849603e250e0574c16ab71a13229e65b4ba Mon Sep 17 00:00:00 2001 From: George Kurelic Date: Thu, 4 Jan 2024 15:57:04 -0600 Subject: [PATCH 06/17] Add compatibility checks with flixel (#419) * check compatibility with flixel * update formatting settings * wrap in #if macro --- .vscode/settings.json | 3 +- .../effects/chainable/FlxEffectSprite.hx | 6 ++ .../addons/system/macros/FlxAddonDefines.hx | 64 +++++++++++++++++++ flixel/addons/text/FlxTypeText.hx | 6 ++ .../transition/FlxTransitionableState.hx | 6 ++ flixel/addons/weapon/FlxWeapon.hx | 6 ++ 6 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 flixel/addons/system/macros/FlxAddonDefines.hx diff --git a/.vscode/settings.json b/.vscode/settings.json index f1033154..b67c6dea 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,6 @@ { "[haxe]": { - "editor.formatOnSave": true + "editor.formatOnSave": true, + "editor.formatOnSaveMode": "modifications" } } \ No newline at end of file diff --git a/flixel/addons/effects/chainable/FlxEffectSprite.hx b/flixel/addons/effects/chainable/FlxEffectSprite.hx index 37d64ba3..cfc87a99 100644 --- a/flixel/addons/effects/chainable/FlxEffectSprite.hx +++ b/flixel/addons/effects/chainable/FlxEffectSprite.hx @@ -1,5 +1,11 @@ package flixel.addons.effects.chainable; +// TODO: remove this check when min flixel version is 5.6.0, +// So that FlxAddonDefines will handle this +#if (flixel < "5.3.0") +#error "Flixel-Addons is not compatible with flixel versions older than 5.3.0"; +#end + import flixel.FlxCamera; import flixel.FlxSprite; import flixel.graphics.FlxGraphic; diff --git a/flixel/addons/system/macros/FlxAddonDefines.hx b/flixel/addons/system/macros/FlxAddonDefines.hx new file mode 100644 index 00000000..8a7f9168 --- /dev/null +++ b/flixel/addons/system/macros/FlxAddonDefines.hx @@ -0,0 +1,64 @@ +package flixel.addons.system.macros; + +#if macro +import haxe.macro.Compiler; +import haxe.macro.Context; +import haxe.macro.Expr.Position; + +// private enum UserAddonDefines {} +// private enum HelperAddonDefines {} + +/** + * The purpose of these "defines" classes is mainly to properly communicate version compatibility + * among flixel libs, we shouldn't be overly concerned with backwards compatibility, but we do want + * to know when a change breaks compatibility between Flixel-Addons and Flixel. + * + * @since 3.2.2 + */ +@:allow(flixel.system.macros.FlxDefines) +@:access(flixel.system.macros.FlxDefines) +class FlxAddonDefines +{ + /** + * Called from `flixel.system.macros.FlxDefines` on versions 5.6.0 or later + */ + public static function run() + { + #if !display + checkCompatibility(); + #end + } + + static function checkCompatibility() + { + /** this function is only ran in flixel versions 5.6.0 or later, meaning this error will + * never happen. So we've added flixel version checks in the following modules: + * - `FlxEffectSprite` + * - `FlxTypeText` + * - `FlxTransitionableState` + * - `FlxWeapon` + * + * When the minimum version of flixel is changed to 5.6.0 or greater, remove the above + * checks and this comment. + */ + #if (flixel < "5.3.0") + FlxDefines.abortVersion("Flixel", "5.3.0 or newer", "flixel", (macro null).pos); + #end + } + + static function isValidUserDefine(define:Any) + { + return false; + } + + static function abortVersion(dependency:String, supported:String, found:String, pos:Position) + { + abort('Flixel-Addons: Unsupported $dependency version! Supported versions are $supported (found ${Context.definedValue(found)}).', pos); + } + + static function abort(message:String, pos:Position) + { + Context.fatalError(message, pos); + } +} +#end \ No newline at end of file diff --git a/flixel/addons/text/FlxTypeText.hx b/flixel/addons/text/FlxTypeText.hx index 7fd492cd..2774ef5f 100644 --- a/flixel/addons/text/FlxTypeText.hx +++ b/flixel/addons/text/FlxTypeText.hx @@ -1,5 +1,11 @@ package flixel.addons.text; +// TODO: remove this check when min flixel version is 5.6.0, +// So that FlxAddonDefines will handle this +#if (flixel < "5.3.0") +#error "Flixel-Addons is not compatible with flixel versions older than 5.3.0"; +#end + import flixel.FlxG; import flixel.input.keyboard.FlxKey; import flixel.math.FlxMath; diff --git a/flixel/addons/transition/FlxTransitionableState.hx b/flixel/addons/transition/FlxTransitionableState.hx index f298cc68..3dea1507 100644 --- a/flixel/addons/transition/FlxTransitionableState.hx +++ b/flixel/addons/transition/FlxTransitionableState.hx @@ -1,5 +1,11 @@ package flixel.addons.transition; +// TODO: remove this check when min flixel version is 5.6.0, +// So that FlxAddonDefines will handle this +#if (flixel < "5.3.0") +#error "Flixel-Addons is not compatible with flixel versions older than 5.3.0"; +#end + import flixel.FlxState; /** diff --git a/flixel/addons/weapon/FlxWeapon.hx b/flixel/addons/weapon/FlxWeapon.hx index 289786fe..0c43dd37 100644 --- a/flixel/addons/weapon/FlxWeapon.hx +++ b/flixel/addons/weapon/FlxWeapon.hx @@ -1,5 +1,11 @@ package flixel.addons.weapon; +// TODO: remove this check when min flixel version is 5.6.0, +// So that FlxAddonDefines will handle this +#if (flixel < "5.3.0") +#error "Flixel-Addons is not compatible with flixel versions older than 5.3.0"; +#end + import flixel.FlxBasic; import flixel.FlxG; import flixel.FlxObject; From fd536638635989020061fcd7725013a690c52347 Mon Sep 17 00:00:00 2001 From: George FunBook Date: Thu, 4 Jan 2024 15:59:30 -0600 Subject: [PATCH 07/17] add minimum versions --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4abba748..41a1985d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ 3.2.2 (TBD) ------------------------------ +#### Dependencies: +- Minimum versions allowed: + - Flixel: 5.3.0 + - OpenFl: 9.2.2 + - Lime: 8.0.2 + - Haxe: 4.2.5 + #### Changes and improvements: - `FlxFSM`: Fix `FlxPool` deprecation warnings from Flixel 5.4.0 ([#409](https://github.com/HaxeFlixel/flixel-addons/pull/409)) - `TransitionData`: add `cameraMode` field to help ensure the transition shows on top ([#410](https://github.com/HaxeFlixel/flixel-addons/pull/410)) From 535a78eff341dc449d1d3524e28021c4a95e2930 Mon Sep 17 00:00:00 2001 From: George Kurelic Date: Thu, 4 Jan 2024 17:59:48 -0600 Subject: [PATCH 08/17] fix plugin warnings (#418) --- flixel/addons/nape/FlxNapeSpace.hx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/flixel/addons/nape/FlxNapeSpace.hx b/flixel/addons/nape/FlxNapeSpace.hx index 9e6330bf..054aea43 100644 --- a/flixel/addons/nape/FlxNapeSpace.hx +++ b/flixel/addons/nape/FlxNapeSpace.hx @@ -64,7 +64,11 @@ class FlxNapeSpace extends FlxBasic */ public static function init():Void { + #if (flixel < "5.6.0") FlxG.plugins.add(new FlxNapeSpace()); + #else + FlxG.plugins.addPlugin(new FlxNapeSpace()); + #end if (space == null) space = new Space(new Vec2()); From ce8b9693a192de42adc9a29f52851e9efa7d14f9 Mon Sep 17 00:00:00 2001 From: George Kurelic Date: Wed, 28 Feb 2024 06:08:45 -0800 Subject: [PATCH 09/17] flixel 5.2 compat (#423) --- flixel/addons/display/FlxBackdrop.hx | 60 +++++++++++++--------------- 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/flixel/addons/display/FlxBackdrop.hx b/flixel/addons/display/FlxBackdrop.hx index 4927e3bd..90731e13 100644 --- a/flixel/addons/display/FlxBackdrop.hx +++ b/flixel/addons/display/FlxBackdrop.hx @@ -146,10 +146,8 @@ class FlxBackdrop extends FlxSprite camera = FlxG.camera; var bounds = getScreenBounds(_rect, camera); - var view = camera.getViewRect(); - if (repeatAxes.x) bounds.x = view.x; - if (repeatAxes.y) bounds.y = view.y; - view.put(); + if (repeatAxes.x) bounds.x = camera.viewMarginLeft; + if (repeatAxes.y) bounds.y = camera.viewMarginTop; return camera.containsRect(bounds); } @@ -158,20 +156,17 @@ class FlxBackdrop extends FlxSprite { var largest:FlxCamera = null; var largestArea = 0.0; - var view = FlxRect.get(); for (camera in cameras) { if (!camera.visible || !camera.exists || !isOnScreen(camera)) continue; - camera.getViewRect(view); - if (view.width * view.height > largestArea) + if (camera.viewWidth * camera.viewHeight > largestArea) { largest = camera; - largestArea = view.width * view.height; + largestArea = camera.viewWidth * camera.viewHeight; } } - view.put(); if (largest != null) regenGraphic(largest); @@ -208,24 +203,25 @@ class FlxBackdrop extends FlxSprite var tilesY = 1; if (repeatAxes != NONE) { - var view = camera.getViewRect(); + final viewMargins = camera.getViewMarginRect(); if (repeatAxes.x) { - final left = modMin(_point.x + frameWidth, tileSize.x, view.left) - frameWidth; - final right = modMax(_point.x, tileSize.x, view.right) + tileSize.x; + final left = modMin(_point.x + frameWidth, tileSize.x, viewMargins.left) - frameWidth; + final right = modMax(_point.x, tileSize.x, viewMargins.right) + tileSize.x; tilesX = Math.round((right - left) / tileSize.x); final origTileSizeX = frameWidth + spacing.x; - _point.x = modMin(_point.x + frameWidth, origTileSizeX, view.left) - frameWidth; + _point.x = modMin(_point.x + frameWidth, origTileSizeX, viewMargins.left) - frameWidth; } if (repeatAxes.y) { - final top = modMin(_point.y + frameHeight, tileSize.y, view.top) - frameHeight; - final bottom = modMax(_point.y, tileSize.y, view.bottom) + tileSize.y; + final top = modMin(_point.y + frameHeight, tileSize.y, viewMargins.top) - frameHeight; + final bottom = modMax(_point.y, tileSize.y, viewMargins.bottom) + tileSize.y; tilesY = Math.round((bottom - top) / tileSize.y); final origTileSizeY = frameHeight + spacing.y; - _point.y = modMin(_point.y + frameHeight, origTileSizeY, view.top) - frameHeight; + _point.y = modMin(_point.y + frameHeight, origTileSizeY, viewMargins.top) - frameHeight; } + viewMargins.put(); } if (drawBlit) @@ -311,13 +307,13 @@ class FlxBackdrop extends FlxSprite var tilesY = 1; if (repeatAxes != NONE) { - final view = camera.getViewRect(); + final viewMargins = camera.getViewMarginRect(); final bounds = getScreenBounds(camera); if (repeatAxes.x) { final origTileSizeX = (frameWidth + spacing.x) * scale.x; - final left = modMin(bounds.right, origTileSizeX, view.left) - bounds.width; - final right = modMax(bounds.left, origTileSizeX, view.right) + origTileSizeX; + final left = modMin(bounds.right, origTileSizeX, viewMargins.left) - bounds.width; + final right = modMax(bounds.left, origTileSizeX, viewMargins.right) + origTileSizeX; tilesX = Math.round((right - left) / tileSize.x); _point.x = left + _point.x - bounds.x; } @@ -325,12 +321,12 @@ class FlxBackdrop extends FlxSprite if (repeatAxes.y) { final origTileSizeY = (frameHeight + spacing.y) * scale.y; - final top = modMin(bounds.bottom, origTileSizeY, view.top) - bounds.height; - final bottom = modMax(bounds.top, origTileSizeY, view.bottom) + origTileSizeY; + final top = modMin(bounds.bottom, origTileSizeY, viewMargins.top) - bounds.height; + final bottom = modMax(bounds.top, origTileSizeY, viewMargins.bottom) + origTileSizeY; tilesY = Math.round((bottom - top) / tileSize.y); _point.y = top + _point.y - bounds.y; } - view.put(); + viewMargins.put(); bounds.put(); } _point.addPoint(origin); @@ -407,7 +403,7 @@ class FlxBackdrop extends FlxSprite (frameHeight + spacing.y) * scale.y ); - var view = camera.getViewRect(); + final viewMargins = camera.getViewMarginRect(); var tilesX = 1; var tilesY = 1; if (repeatAxes != NONE) @@ -416,22 +412,22 @@ class FlxBackdrop extends FlxSprite switch (blitMode) { case AUTO | SPLIT (1): - if (repeatAxes.x) tilesX = Math.ceil(view.width / tileSize.x) + 1; - if (repeatAxes.y) tilesY = Math.ceil(view.height / tileSize.y) + 1; + if (repeatAxes.x) tilesX = Math.ceil(viewMargins.width / tileSize.x) + 1; + if (repeatAxes.y) tilesY = Math.ceil(viewMargins.height / tileSize.y) + 1; case MAX_TILES(1) | MAX_TILES_XY(1, 1): case MAX_TILES(max): - if (repeatAxes.x) tilesX = min(max, Math.ceil(view.width / tileSize.x) + 1); - if (repeatAxes.y) tilesY = min(max, Math.ceil(view.height / tileSize.y) + 1); + if (repeatAxes.x) tilesX = min(max, Math.ceil(viewMargins.width / tileSize.x) + 1); + if (repeatAxes.y) tilesY = min(max, Math.ceil(viewMargins.height / tileSize.y) + 1); case MAX_TILES_XY(maxX, maxY): - if (repeatAxes.x) tilesX = min(maxX, Math.ceil(view.width / tileSize.x) + 1); - if (repeatAxes.y) tilesY = min(maxY, Math.ceil(view.height / tileSize.y) + 1); + if (repeatAxes.x) tilesX = min(maxX, Math.ceil(viewMargins.width / tileSize.x) + 1); + if (repeatAxes.y) tilesY = min(maxY, Math.ceil(viewMargins.height / tileSize.y) + 1); case SPLIT(portions): - if (repeatAxes.x) tilesX = repeatAxes.x ? Math.ceil(view.width / tileSize.x / portions + 1) : 1; - if (repeatAxes.y) tilesY = repeatAxes.y ? Math.ceil(view.height / tileSize.y / portions + 1) : 1; + if (repeatAxes.x) tilesX = repeatAxes.x ? Math.ceil(viewMargins.width / tileSize.x / portions + 1) : 1; + if (repeatAxes.y) tilesY = repeatAxes.y ? Math.ceil(viewMargins.height / tileSize.y / portions + 1) : 1; } } - view.put(); + viewMargins.put(); if (matchPrevDrawParams(tilesX, tilesY)) { From 74a9604542a8bc0e3cdcb0cd04344e36bd7bee46 Mon Sep 17 00:00:00 2001 From: George Kurelic Date: Sun, 10 Mar 2024 07:08:16 -0700 Subject: [PATCH 10/17] use FlxContainer and getCameras (#424) --- flixel/addons/display/FlxBackdrop.hx | 6 ++++++ flixel/addons/display/FlxSliceSprite.hx | 2 +- flixel/addons/display/FlxTiledSprite.hx | 2 +- flixel/addons/editors/spine/FlxSpine.hx | 2 +- flixel/addons/effects/FlxTrail.hx | 4 ++-- flixel/addons/transition/TransitionEffect.hx | 4 ++-- flixel/addons/ui/FlxButtonPlus.hx | 4 ++-- flixel/addons/ui/FlxClickArea.hx | 3 +++ flixel/addons/ui/FlxSlider.hx | 16 ++++++++++------ 9 files changed, 28 insertions(+), 15 deletions(-) diff --git a/flixel/addons/display/FlxBackdrop.hx b/flixel/addons/display/FlxBackdrop.hx index 90731e13..cdc498a5 100644 --- a/flixel/addons/display/FlxBackdrop.hx +++ b/flixel/addons/display/FlxBackdrop.hx @@ -113,6 +113,9 @@ class FlxBackdrop extends FlxSprite drawToLargestCamera(); } + #if (flixel >= "5.7.0") + final cameras = getCamerasLegacy(); + #end for (camera in cameras) { if (!camera.visible || !camera.exists || !isOnScreen(camera)) @@ -156,6 +159,9 @@ class FlxBackdrop extends FlxSprite { var largest:FlxCamera = null; var largestArea = 0.0; + #if (flixel >= "5.7.0") + final cameras = getCamerasLegacy(); // else use this.cameras + #end for (camera in cameras) { if (!camera.visible || !camera.exists || !isOnScreen(camera)) diff --git a/flixel/addons/display/FlxSliceSprite.hx b/flixel/addons/display/FlxSliceSprite.hx index 24dfbe1e..a948ec39 100644 --- a/flixel/addons/display/FlxSliceSprite.hx +++ b/flixel/addons/display/FlxSliceSprite.hx @@ -511,7 +511,7 @@ class FlxSliceSprite extends FlxStrip renderSprite.y = y; renderSprite.scale.copyFrom(scale); renderSprite.scrollFactor.set(scrollFactor.x, scrollFactor.y); - renderSprite.cameras = cameras; + renderSprite._cameras = _cameras; renderSprite.draw(); } else diff --git a/flixel/addons/display/FlxTiledSprite.hx b/flixel/addons/display/FlxTiledSprite.hx index b47b8efe..4fe74730 100644 --- a/flixel/addons/display/FlxTiledSprite.hx +++ b/flixel/addons/display/FlxTiledSprite.hx @@ -144,7 +144,7 @@ class FlxTiledSprite extends FlxStrip renderSprite.x = x; renderSprite.y = y; renderSprite.scrollFactor.set(scrollFactor.x, scrollFactor.y); - renderSprite.cameras = cameras; + renderSprite._cameras = _cameras; renderSprite.draw(); } else diff --git a/flixel/addons/editors/spine/FlxSpine.hx b/flixel/addons/editors/spine/FlxSpine.hx index bd95dcd2..7851c57c 100644 --- a/flixel/addons/editors/spine/FlxSpine.hx +++ b/flixel/addons/editors/spine/FlxSpine.hx @@ -268,7 +268,7 @@ class FlxSpine extends FlxSprite { wrapper.x = 0; wrapper.y = 0; - wrapper.cameras = cameras; + wrapper._cameras = _cameras; #if (flash || openfl >= "4.0.0") wrapper.vertices.length = verticesLength; diff --git a/flixel/addons/effects/FlxTrail.hx b/flixel/addons/effects/FlxTrail.hx index 186637fa..6f5112b1 100644 --- a/flixel/addons/effects/FlxTrail.hx +++ b/flixel/addons/effects/FlxTrail.hx @@ -4,7 +4,7 @@ import flixel.animation.FlxAnimation; import flixel.FlxG; import flixel.FlxSprite; import flixel.group.FlxGroup; -import flixel.group.FlxSpriteGroup; +import flixel.group.*; import flixel.system.FlxAssets; import flixel.util.FlxArrayUtil; import flixel.util.FlxDestroyUtil; @@ -17,7 +17,7 @@ import flixel.math.FlxPoint; * Feel free to use this class and adjust it to your needs. * @author Gama11 */ -class FlxTrail extends FlxSpriteGroup +class FlxTrail extends #if (flixel < "5.7.0") FlxSpriteGroup #else FlxSpriteContainer #end { /** * Stores the FlxSprite the trail is attached to. diff --git a/flixel/addons/transition/TransitionEffect.hx b/flixel/addons/transition/TransitionEffect.hx index fda10cc2..281d7af7 100644 --- a/flixel/addons/transition/TransitionEffect.hx +++ b/flixel/addons/transition/TransitionEffect.hx @@ -3,14 +3,14 @@ package flixel.addons.transition; import flixel.addons.transition.FlxTransitionSprite.TransitionStatus; import flixel.addons.transition.TransitionData; import flixel.group.FlxGroup; -import flixel.group.FlxSpriteGroup; +import flixel.group.*; import flixel.util.FlxTimer; /** * @author larsiusprime */ @:allow(flixel.addons.transition.Transition) -class TransitionEffect extends FlxSpriteGroup +class TransitionEffect extends #if (flixel < "5.7.0") FlxSpriteGroup #else FlxSpriteContainer #end { public var finishCallback:Void->Void; public var finished(default, null):Bool = false; diff --git a/flixel/addons/ui/FlxButtonPlus.hx b/flixel/addons/ui/FlxButtonPlus.hx index 2b13ca15..a2d2b93c 100644 --- a/flixel/addons/ui/FlxButtonPlus.hx +++ b/flixel/addons/ui/FlxButtonPlus.hx @@ -9,7 +9,7 @@ import flixel.FlxCamera; import flixel.FlxG; import flixel.FlxSprite; import flixel.graphics.FlxGraphic; -import flixel.group.FlxSpriteGroup; +import flixel.group.*; import flixel.text.FlxText; import flixel.util.FlxColor; import flixel.util.FlxDestroyUtil; @@ -24,7 +24,7 @@ import flixel.math.FlxMath; * @link http://www.photonstorm.com * @author Richard Davey / Photon Storm */ -class FlxButtonPlus extends FlxSpriteGroup +class FlxButtonPlus extends #if (flixel < "5.7.0") FlxSpriteGroup #else FlxSpriteContainer #end { public static inline var NORMAL:Int = 0; public static inline var HIGHLIGHT:Int = 1; diff --git a/flixel/addons/ui/FlxClickArea.hx b/flixel/addons/ui/FlxClickArea.hx index 8658b4a3..025d245f 100644 --- a/flixel/addons/ui/FlxClickArea.hx +++ b/flixel/addons/ui/FlxClickArea.hx @@ -127,6 +127,9 @@ class FlxClickArea extends FlxObject if (continueUpdate) { var offAll:Bool = true; + #if (flixel >= "5.7.0") + final cameras = getCameras(); // else use this.cameras + #end for (camera in cameras) { #if FLX_MOUSE diff --git a/flixel/addons/ui/FlxSlider.hx b/flixel/addons/ui/FlxSlider.hx index 360f1f62..9522d8e4 100644 --- a/flixel/addons/ui/FlxSlider.hx +++ b/flixel/addons/ui/FlxSlider.hx @@ -3,20 +3,20 @@ package flixel.addons.ui; #if FLX_MOUSE import flixel.FlxG; import flixel.FlxSprite; -import flixel.group.FlxSpriteGroup; -import flixel.text.FlxText; -import flixel.util.FlxDestroyUtil; +import flixel.group.*; import flixel.math.FlxMath; import flixel.math.FlxPoint; import flixel.math.FlxRect; -import flixel.util.FlxSpriteUtil; +import flixel.text.FlxText; import flixel.util.FlxColor; +import flixel.util.FlxDestroyUtil; +import flixel.util.FlxSpriteUtil; /** * A slider GUI element for float and integer manipulation. * @author Gama11 */ -class FlxSlider extends FlxSpriteGroup +class FlxSlider extends #if (flixel < "5.7.0") FlxSpriteGroup #else FlxSpriteContainer #end { /** * The horizontal line in the background. @@ -271,7 +271,11 @@ class FlxSlider extends FlxSpriteGroup override public function update(elapsed:Float):Void { // Clicking and sound logic - if (FlxMath.mouseInFlxRect(false, _bounds)) + #if (flixel >= "5.7.0") + final camera = getCameras()[0];// else use this.camera + #end + final mouse = FlxG.mouse.getScreenPosition(camera); + if (FlxMath.pointInFlxRect(mouse.x, mouse.y, _bounds)) { if (hoverAlpha != 1) { From e0a906afa39a009398b00998a1bb6007963465a5 Mon Sep 17 00:00:00 2001 From: George FunBook Date: Sun, 10 Mar 2024 09:10:56 -0500 Subject: [PATCH 11/17] release 3.2.2 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41a1985d..f804d725 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -3.2.2 (TBD) +3.2.2 (March 10, 2024) ------------------------------ #### Dependencies: - Minimum versions allowed: From 74215257c33409e2c8b14847fc05dc633182c9a8 Mon Sep 17 00:00:00 2001 From: George FunBook Date: Sun, 10 Mar 2024 12:04:22 -0500 Subject: [PATCH 12/17] fix version --- flixel/addons/util/FlxFSM.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flixel/addons/util/FlxFSM.hx b/flixel/addons/util/FlxFSM.hx index c34d9a0e..6167de6f 100644 --- a/flixel/addons/util/FlxFSM.hx +++ b/flixel/addons/util/FlxFSM.hx @@ -128,7 +128,7 @@ class FlxFSM implements IFlxDestroyable if (newName != null && !pools.exists(newName)) { - #if (flixel < version("5.4.0")) + #if (flixel < version("5.5.0")) final newStateConstructor = newStateClass; #else final newStateConstructor = ()->Type.createInstance(newStateClass, []); From 0d3b597b982e050386f6b927c5be204fec5ac33d Mon Sep 17 00:00:00 2001 From: George Kurelic Date: Tue, 19 Mar 2024 07:12:34 -0700 Subject: [PATCH 13/17] use FlxButtonState for 5.7.0 compat (#425) --- flixel/addons/ui/FlxClickArea.hx | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/flixel/addons/ui/FlxClickArea.hx b/flixel/addons/ui/FlxClickArea.hx index 025d245f..bc18acb1 100644 --- a/flixel/addons/ui/FlxClickArea.hx +++ b/flixel/addons/ui/FlxClickArea.hx @@ -9,6 +9,12 @@ import flixel.FlxObject; import flixel.ui.FlxButton; import flixel.math.FlxPoint; +#if (flixel < version("5.7.0")) +import flixel.ui.FlxButton.NORMAL; +import flixel.ui.FlxButton.HIGHLIGHT; +import flixel.ui.FlxButton.PRESSED; +#end + /** * Trimmed-down button, invisible click area, only responds to onUP */ @@ -56,7 +62,7 @@ class FlxClickArea extends FlxObject onUp = OnUp; - status = FlxButton.NORMAL; + status = NORMAL; _pressed = false; _initialized = false; @@ -151,7 +157,7 @@ class FlxClickArea extends FlxObject } if (offAll) { - status = FlxButton.NORMAL; + status = NORMAL; } } } @@ -169,11 +175,11 @@ class FlxClickArea extends FlxObject if (JustPressed) { - status = FlxButton.PRESSED; + status = PRESSED; } - if (status == FlxButton.NORMAL) + if (status == NORMAL) { - status = FlxButton.HIGHLIGHT; + status = HIGHLIGHT; } } @@ -185,7 +191,7 @@ class FlxClickArea extends FlxObject */ function onMouseUp(event:Event):Void { - if (!exists || !visible || !active || (status != FlxButton.PRESSED)) + if (!exists || !visible || !active || (status != PRESSED)) { return; } @@ -193,6 +199,6 @@ class FlxClickArea extends FlxObject { onUp(); } - status = FlxButton.NORMAL; + status = NORMAL; } } From bc6cd74b001c76ff10c4bf4ac49afa8026493afc Mon Sep 17 00:00:00 2001 From: MaybeMaru <97055307+MaybeMaru@users.noreply.github.com> Date: Sun, 14 Apr 2024 00:55:24 +0200 Subject: [PATCH 14/17] Avoid FlxBackdrop matrix leak (#426) * Update FlxBackdrop.hx * whoops missed these * revert certain changes, add tileSize.put calls --------- Co-authored-by: George Kurelic --- flixel/addons/display/FlxBackdrop.hx | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/flixel/addons/display/FlxBackdrop.hx b/flixel/addons/display/FlxBackdrop.hx index cdc498a5..fa12b5a9 100644 --- a/flixel/addons/display/FlxBackdrop.hx +++ b/flixel/addons/display/FlxBackdrop.hx @@ -51,6 +51,7 @@ class FlxBackdrop extends FlxSprite var _blitOffset:FlxPoint = FlxPoint.get(); var _blitGraphic:FlxGraphic = null; + var _tileMatrix:FlxMatrix = new FlxMatrix(); var _prevDrawParams:BackdropDrawParams = { graphicKey:null, @@ -82,9 +83,10 @@ class FlxBackdrop extends FlxSprite override function destroy():Void { - spacing = FlxDestroyUtil.destroy(spacing); - _blitOffset = FlxDestroyUtil.destroy(_blitOffset); + spacing = FlxDestroyUtil.put(spacing); + _blitOffset = FlxDestroyUtil.put(_blitOffset); _blitGraphic = FlxDestroyUtil.destroy(_blitGraphic); + _tileMatrix = null; super.destroy(); } @@ -200,7 +202,7 @@ class FlxBackdrop extends FlxSprite final frame = drawBlit ? _blitGraphic.imageFrame.frame : _frame; // The distance between repeated sprites, in screen space - var tileSize = FlxPoint.get(frame.frame.width, frame.frame.height); + final tileSize = FlxPoint.get(frame.frame.width, frame.frame.height); if (drawDirect) tileSize.addPoint(spacing); @@ -256,6 +258,7 @@ class FlxBackdrop extends FlxSprite } } + tileSize.put(); camera.buffer.unlock(); } @@ -275,7 +278,7 @@ class FlxBackdrop extends FlxSprite _matrix.translate(-origin.x, -origin.y); // The distance between repeated sprites, in screen space - var tileSize = FlxPoint.get(frame.frame.width, frame.frame.height); + final tileSize = FlxPoint.get(frame.frame.width, frame.frame.height); if (drawDirect) { @@ -339,33 +342,33 @@ class FlxBackdrop extends FlxSprite if (drawBlit) _point.addPoint(_blitOffset); - final mat = new FlxMatrix(); for (tileX in 0...tilesX) { for (tileY in 0...tilesY) { - mat.copyFrom(_matrix); + _tileMatrix.copyFrom(_matrix); - mat.translate(_point.x + (tileSize.x * tileX), _point.y + (tileSize.y * tileY)); + _tileMatrix.translate(_point.x + (tileSize.x * tileX), _point.y + (tileSize.y * tileY)); if (isPixelPerfectRender(camera)) { - mat.tx = Math.floor(mat.tx); - mat.ty = Math.floor(mat.ty); + _tileMatrix.tx = Math.floor(_tileMatrix.tx); + _tileMatrix.ty = Math.floor(_tileMatrix.ty); } if (FlxG.renderBlit) { final pixels = drawBlit ? _blitGraphic.bitmap: framePixels; - camera.drawPixels(frame, pixels, mat, colorTransform, blend, antialiasing, shader); + camera.drawPixels(frame, pixels, _tileMatrix, colorTransform, blend, antialiasing, shader); } else { - drawItem.addQuad(frame, mat, colorTransform); + drawItem.addQuad(frame, _tileMatrix, colorTransform); } } } + tileSize.put(); if (FlxG.renderBlit) camera.buffer.unlock(); } From 9eabccfa66ec783d846425fe3313c3c501bc965d Mon Sep 17 00:00:00 2001 From: George Kurelic Date: Wed, 15 May 2024 14:08:47 -0500 Subject: [PATCH 15/17] remove latest CI for now --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e5faab14..c1dcd0ff 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,7 +10,7 @@ jobs: build: strategy: matrix: - haxe-version: ["4.2.5", "4.3.3", latest] + haxe-version: ["4.2.5", "4.3.3"] target: [html5, hl, neko, flash, cpp] fail-fast: false runs-on: ubuntu-latest From c4a3d29be048910c21f40eb8b80338294349440b Mon Sep 17 00:00:00 2001 From: George Kurelic Date: Wed, 15 May 2024 15:54:15 -0500 Subject: [PATCH 16/17] fix docs (#429) * fix docs * remove commented code --- flixel/addons/display/FlxRuntimeShader.hx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flixel/addons/display/FlxRuntimeShader.hx b/flixel/addons/display/FlxRuntimeShader.hx index 423a6190..8134f9c5 100644 --- a/flixel/addons/display/FlxRuntimeShader.hx +++ b/flixel/addons/display/FlxRuntimeShader.hx @@ -1,8 +1,8 @@ package flixel.addons.display; #if (nme || flash) - #if FLX_NO_COVERAGE_TEST - #error "FlxRuntimeShader isn't available with nme or flash." + #if (FLX_NO_COVERAGE_TEST && !(doc_gen)) + #error "FlxRuntimeShader isn't available with nme or flash." #end #else import flixel.graphics.tile.FlxGraphicsShader; From 2759aff3d6f024b38aa4c4bfc30f93ad501292d7 Mon Sep 17 00:00:00 2001 From: George FunBook Date: Wed, 15 May 2024 16:07:16 -0500 Subject: [PATCH 17/17] release 3.2.3 --- CHANGELOG.md | 10 ++++++++++ haxelib.json | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f804d725..7937aac6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +3.2.3 (May 15, 2024) +------------------------------ + +#### Changes and improvements: +- `FlxClickArea`: Compatibility with Flixel 5.7.0 ([425](https://github.com/HaxeFlixel/flixel-addons/pull/425)) + +#### Bugfixes: +- `FlxBackdrop`: fix matrix leaks ([426](https://github.com/HaxeFlixel/flixel-addons/pull/426)) +- `FlxRuntimeShader`: Fix errors with flixel-docs CI ([429](https://github.com/HaxeFlixel/flixel-addons/pull/429)) + 3.2.2 (March 10, 2024) ------------------------------ #### Dependencies: diff --git a/haxelib.json b/haxelib.json index 1d77a7b5..9cda487a 100644 --- a/haxelib.json +++ b/haxelib.json @@ -4,7 +4,7 @@ "license": "MIT", "tags": ["game", "openfl", "flash", "neko", "cpp", "android", "ios", "cross"], "description": "flixel-addons is a set of useful, additional classes for HaxeFlixel.", - "version": "3.2.2", - "releasenote": "Compatibility with flixel changes", + "version": "3.2.3", + "releasenote": "Compatibility with flixel 5.7.0", "contributors": ["haxeflixel", "Gama11", "GeoKureli"] }