diff --git a/projects/hollywoo-flixel/src/hollywoo_flixel/ActorFlxSprite.kiss b/projects/hollywoo-flixel/src/hollywoo_flixel/ActorFlxSprite.kiss index 3391d011..fd125029 100644 --- a/projects/hollywoo-flixel/src/hollywoo_flixel/ActorFlxSprite.kiss +++ b/projects/hollywoo-flixel/src/hollywoo_flixel/ActorFlxSprite.kiss @@ -1,7 +1,7 @@ -(defNew [:String assetPath &opt :Int frameWidth :Int frameHeight :Map animations] +(defNew [:String assetPath &opt frameWidth frameHeight :Map animations] (super) (if (and frameWidth frameHeight) - (loadGraphic assetPath frameWidth frameHeight) + (loadGraphic assetPath true frameWidth frameHeight) (loadGraphic assetPath)) (when animations (doFor =>name animationArgs animations diff --git a/projects/hollywoo-flixel/src/hollywoo_flixel/FlxDirector.kiss b/projects/hollywoo-flixel/src/hollywoo_flixel/FlxDirector.kiss index 06e5fcd4..221f9cb1 100644 --- a/projects/hollywoo-flixel/src/hollywoo_flixel/FlxDirector.kiss +++ b/projects/hollywoo-flixel/src/hollywoo_flixel/FlxDirector.kiss @@ -11,11 +11,24 @@ (set actionManager.resetOnStateSwitch NONE)) (method :Void showScene [:Scene scene :Appearance appearance :Continuation cc] + // TODO on the first appearance, give a super (for some scenes but probably not others... hm....) (FlxG.switchState (cast scene SceneFlxState)) (cc)) +(var STAGE_LEFT_X 40) +(var STAGE_RIGHT_X 1240) +(var ACTOR_Y 500) + (method :Void showCharacter [:Character character :Appearance appearance :Continuation cc] - (print "Character shneezy") + // TODO on the first appearance, show name and description (maybe? also probably not for all?) + // TODO flip sprite if facing left, and also allow for manually defined flipped frames so text doesn't mirror + (set character.actor.x (case character.stagePosition + (Left + STAGE_LEFT_X) + (Right + STAGE_RIGHT_X))) + (set character.actor.y ACTOR_Y) + (FlxG.state.add character.actor) (cc)) (prop &mut :Null nextCC) diff --git a/projects/hollywoo/src/hollywoo/Movie.hx b/projects/hollywoo/src/hollywoo/Movie.hx index a5af2a0d..a6f96302 100644 --- a/projects/hollywoo/src/hollywoo/Movie.hx +++ b/projects/hollywoo/src/hollywoo/Movie.hx @@ -3,6 +3,7 @@ package hollywoo; import kiss.AsyncEmbeddedScript; import kiss.Prelude; import hollywoo.Scene; +import hollywoo.Director; /** * Model/controller of a Hollywoo film, and main execution script diff --git a/projects/hollywoo/src/hollywoo/Movie.kiss b/projects/hollywoo/src/hollywoo/Movie.kiss index da75a7e9..a68ffb38 100644 --- a/projects/hollywoo/src/hollywoo/Movie.kiss +++ b/projects/hollywoo/src/hollywoo/Movie.kiss @@ -6,6 +6,17 @@ // Mutable representation of frames in time: // var scenes:Map> = []; (prop :Map shownScenes (new Map)) +(prop :Map shownCharacters (new Map)) +(function :Appearance appearanceFlag [:Map map :String key] + (if (dictGet map key) + ReAppearance + { + (dictSet map key true) + FirstAppearance + })) + +(prop &mut :String sceneKey "") +(method _currentScene [] (dictGet scenes sceneKey)) (defNew [ @@ -36,16 +47,30 @@ (cc)) (method setScene [name :Continuation cc] + (set sceneKey name) (director.showScene (dictGet scenes name) - (if (dictGet shownScenes name) - ReAppearance - { - (dictSet shownScenes name true) - FirstAppearance - }) + (appearanceFlag shownScenes name) cc)) (method newActor [name :Actor actor :Continuation cc] (dictSet actors name actor) - (cc)) \ No newline at end of file + (cc)) + +(method addCharacter [actorName :StagePosition position :StageFacing facing :Continuation cc] + (let [character (object stagePosition position stageFacing facing actor (dictGet actors actorName))] + (dictSet .characters (_currentScene) actorName character) + (director.showCharacter + character + (appearanceFlag shownCharacters actorName) + cc) + )) + +/* TODO +(method removeCharacter [ + +]) +*/ + +// TODO moveCharacter remove them, add them to another scene +// TODO moveCharacterAndFollow remove them, add them to another scene, set that the scene \ No newline at end of file