Allow nice sky sprites :)

This commit is contained in:
2023-05-26 16:44:41 -06:00
parent b0fc15cdd3
commit 3a24189de4
3 changed files with 32 additions and 13 deletions

View File

@@ -7,6 +7,7 @@ import flixel.FlxSprite;
import flixel.input.actions.FlxAction; import flixel.input.actions.FlxAction;
import flixel.input.actions.FlxActionManager; import flixel.input.actions.FlxActionManager;
import flixel.input.mouse.FlxMouseButton; import flixel.input.mouse.FlxMouseButton;
import flixel.math.FlxRect;
import flixel.group.FlxGroup; import flixel.group.FlxGroup;
import flixel.tweens.FlxTween; import flixel.tweens.FlxTween;
import hollywoo.Movie; import hollywoo.Movie;

View File

@@ -22,6 +22,7 @@
(spriteLayers.push g) (spriteLayers.push g)
(FlxG.state.add g)))) (FlxG.state.add g))))
(prop :Map<SceneTime,FlxSprite> skySprites (new Map))
(prop &mut :FlxSprite skySprite) (prop &mut :FlxSprite skySprite)
(prop :FlxKeyShortcutHandler<Continuation->Void> sh (new FlxKeyShortcutHandler)) (prop :FlxKeyShortcutHandler<Continuation->Void> sh (new FlxKeyShortcutHandler))
@@ -97,18 +98,31 @@
(setSprite.updateHitbox) (setSprite.updateHitbox)
(setSprite.screenCenter)) (setSprite.screenCenter))
(otherwise)) (otherwise))
// TODO draw a sky background depending on time of day, int/ext // draw a sky background depending on time of day, int/ext
(let [skyColor (case time (ifLet [specialSkySprite (.clone (dictGet skySprites time))]
((or Morning Day) DAY_SKY_COLOR) {
(Evening EVENING_SKY_COLOR) (set skySprite specialSkySprite)
(Night NIGHT_SKY_COLOR) (skySprite.setGraphicSize (Std.int setSprite.width))
(never null))] (skySprite.updateHitbox)
(set skySprite (new FlxSprite)) (unless (>= skySprite.height setSprite.height)
(skySprite.makeGraphic (Std.int setSprite.width) (Std.int setSprite.height) skyColor true) (skySprite.setGraphicSize 0 (Std.int setSprite.height))
(set skySprite.cameras [camera]) (skySprite.updateHitbox)
(set skySprite.x setSprite.x) (let [hOverflow (- skySprite.width setSprite.width)
(set skySprite.y setSprite.y) unscaledOverflow (/ hOverflow skySprite.scale.x)
(.add (first spriteLayers) skySprite)) half (iHalf unscaledOverflow)]
(set skySprite.clipRect (new FlxRect 0 0 (Std.int (- skySprite.frameWidth unscaledOverflow)) skySprite.frameHeight))))
}
(let [skyColor (case time
((or Morning Day) DAY_SKY_COLOR)
(Evening EVENING_SKY_COLOR)
(Night NIGHT_SKY_COLOR)
(never null))]
(set skySprite (new FlxSprite))
(skySprite.makeGraphic (Std.int setSprite.width) (Std.int setSprite.height) skyColor true)))
(set skySprite.x setSprite.x)
(set skySprite.y 0)
(set skySprite.cameras [camera])
(.add (first spriteLayers) skySprite)
(FlxG.cameras.remove flxMovie.uiCamera false) (FlxG.cameras.remove flxMovie.uiCamera false)
(FlxG.cameras.remove flxMovie.screenCamera false) (FlxG.cameras.remove flxMovie.screenCamera false)

View File

@@ -174,4 +174,8 @@
(withSceneSetCC sceneKey bg (withSceneSetCC sceneKey bg
(p.setGraphicSize (Std.int bg.width) (Std.int bg.height)) (p.setGraphicSize (Std.int bg.width) (Std.int bg.height))
(p.updateHitbox) (p.updateHitbox)
(addProp propKey (new StagePosition bg.x bg.y 1) cc))))) (addProp propKey (new StagePosition bg.x bg.y 1) cc)))))
(method loadSkySprite [time path &opt :Void->Void cc]
(dictSet flxDirector.skySprites time (.loadGraphic (new FlxSprite) path))
(when cc (cc)))