summary refs log tree commit diff stats
path: root/res/scripts/common.lua
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2021-07-05 11:58:29 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2021-07-05 11:58:29 -0400
commit324346a87c114f0991a092ac8653afecada364b5 (patch)
treef88ac730897056918b366e7fabaad2b136383d59 /res/scripts/common.lua
parentd983ef6b8d66d916ed7502cf6d35b573c5366257 (diff)
downloadtanetane-324346a87c114f0991a092ac8653afecada364b5.tar.gz
tanetane-324346a87c114f0991a092ac8653afecada364b5.tar.bz2
tanetane-324346a87c114f0991a092ac8653afecada364b5.zip
Added background scripts
Background scripts are scripts that are launched when a map is loaded. They differ in use from a map's init script in that they are expected to contain an infinite loop. These scripts are linked to a sprite and will be killed when that sprite is destroyed (usually when the map is unloaded, but if the sprite is made persistent then it may last longer). The thread running the script is given no warning that it is being killed; the coroutine is simply never called again, and the thread is disposed of. Because of this, background scripts MUST ensure the game is in a consistent state before coroutine yielding, because it is not guaranteed that the coroutine will ever be called again.
Diffstat (limited to 'res/scripts/common.lua')
-rw-r--r--res/scripts/common.lua14
1 files changed, 14 insertions, 0 deletions
diff --git a/res/scripts/common.lua b/res/scripts/common.lua index 2e95f26..35eec22 100644 --- a/res/scripts/common.lua +++ b/res/scripts/common.lua
@@ -579,6 +579,20 @@ function FaceTowardSpriteCardinally(spriteName, targetName)
579 SetDirection(spriteName, dir) 579 SetDirection(spriteName, dir)
580end 580end
581 581
582--- Checks whether the given sprite is facing another sprite.
583-- @param spriteName the name of the sprite whose facing direction is relevant
584-- @param targetName the name of the sprite that is or isn't being looked at
585function IsFacingTowardSprite(spriteName, targetName)
586 local spriteId = getSpriteByAlias(spriteName)
587 local targetId = getSpriteByAlias(targetName)
588 local sprite = getSprite(spriteId)
589 local target = getSprite(targetId)
590 local diff = vec2i.new(target.loc:x() - sprite.loc:x(), target.loc:y() - sprite.loc:y())
591 local dir = directionFacingPoint(diff)
592
593 return sprite.dir == dir
594end
595
582--- Detaches the sprite's followers and erases their following trails. 596--- Detaches the sprite's followers and erases their following trails.
583function BreakUpParty(spriteName) 597function BreakUpParty(spriteName)
584 local spriteId = getSpriteByAlias(spriteName) 598 local spriteId = getSpriteByAlias(spriteName)