Allow nice sky sprites :)
This commit is contained in:
@@ -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;
|
||||||
|
@@ -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)
|
||||||
|
@@ -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)))
|
Reference in New Issue
Block a user