1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
SpeakerType = {
NONE = 0,
MAN = 1,
WOMAN = 2,
BOY = 3,
GIRL = 4,
NONHUMAN = 5
}
Direction = {
UP = 0,
UP_RIGHT = 1,
RIGHT = 2,
DOWN_RIGHT = 3,
DOWN = 4,
DOWN_LEFT = 5,
LEFT = 6,
UP_LEFT = 7
}
function DisplayMessage(msg, name, type)
message():displayMessage(msg, name, type)
end
function WaitForEndOfMessage()
while (message().isMessageActive) do
coroutine.yield()
end
end
function HideCutsceneBars()
WaitForEndOfMessage()
message():hideCutsceneBars()
end
function SetAnimation(spriteName, animName)
local spriteId = getSpriteByAlias(spriteName)
animation():setSpriteAnimation(spriteId, animName)
end
function PlaySound(filename)
mixer():playSound("../res/sfx/" .. filename)
end
function LoopSound(filename)
return mixer():loopSound("../res/sfx/" .. filename)
end
function StopSound(soundId)
mixer():stopChannel(soundId)
end
function FadeToBlack(length)
local progress = 0.0
while progress < length do
progress = progress + coroutine.yield()
setFadeoutProgress(progress / length)
end
setFadeoutProgress(1.0)
end
function RemoveFadeout(length)
local progress = length
while progress > 0 do
progress = progress - coroutine.yield()
setFadeoutProgress(progress / length)
end
setFadeoutProgress(0.0)
end
function SetPartyDirection(spriteId, direction)
animation():setSpriteDirection(spriteId, direction)
local sprite = getSprite(spriteId)
for i=1,#sprite.followers do
animation():setSpriteDirection(sprite.followers[i], direction)
end
end
function ChangeMap(map, warp)
local playerId = getControllableSprite()
local playerSprite = getSprite(playerId)
local direction = playerSprite.dir
FadeToBlack(150)
loadMap("../res/maps/" .. map .. ".tmx", warp)
local newPlayerId = getControllableSprite()
SetPartyDirection(newPlayerId, direction)
coroutine.yield()
RemoveFadeout(150)
end
|