Skip to content

Commit da4bd09

Browse files
authored
Merge pull request #3496 from ikemen-engine/fix2
fix: storyboard fading regression
2 parents 1304810 + fd83ef0 commit da4bd09

2 files changed

Lines changed: 11 additions & 5 deletions

File tree

src/motif.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5347,7 +5347,7 @@ func (hi *MotifHiscore) step(m *Motif) {
53475347
(!sys.gameRunning && sys.motif.AttractMode.Enabled && sys.credits > 0)
53485348
if cancel || (!hi.input && hi.counter == hi.endTime) {
53495349
if !hi.noFade {
5350-
startFadeOut(m.HiscoreInfo.FadeOut.FadeData, m.fadeOut, cancel, m.fadePolicy)
5350+
startFadeOut(m.HiscoreInfo.FadeOut.FadeData, m.fadeOut, false, m.fadePolicy)
53515351
}
53525352
hi.endTimer = hi.counter + m.fadeOut.timeRemaining
53535353
}
@@ -6258,7 +6258,7 @@ func (vi *MotifVictory) step(m *Motif) {
62586258
timeUp := vi.lineFullyRendered && vi.counter >= m.VictoryScreen.Time
62596259

62606260
if userInterrupt || timeUp {
6261-
startFadeOut(m.VictoryScreen.FadeOut.FadeData, m.fadeOut, userInterrupt, m.fadePolicy)
6261+
startFadeOut(m.VictoryScreen.FadeOut.FadeData, m.fadeOut, false, m.fadePolicy)
62626262
vi.endTimer = vi.counter + m.fadeOut.timeRemaining
62636263
//fmt.Printf("[Victory] Starting fadeout: counter=%d time=%d endTimer=%d userInterrupt=%v timeUp=%v\n", vi.counter, m.VictoryScreen.Time, vi.endTimer, userInterrupt, timeUp)
62646264
}
@@ -6757,7 +6757,7 @@ func (wi *MotifWin) step(m *Motif) {
67576757
if wi.endTimer == -1 {
67586758
cancel := sys.esc || sys.uiRawInput(wi.keyCancel, -1)
67596759
if cancel || wi.counter == wi.time {
6760-
startFadeOut(wi.fadeOut, m.fadeOut, cancel, m.fadePolicy)
6760+
startFadeOut(wi.fadeOut, m.fadeOut, false, m.fadePolicy)
67616761
wi.endTimer = wi.counter + m.fadeOut.timeRemaining
67626762
}
67636763
}

src/rect.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@ func (fa *Fade) draw() {
7777
}
7878
}
7979

80+
// True while the fade still has progression remaining.
81+
// Use this for transition/policy logic, not for drawing.
82+
func (fa *Fade) isTransitioning() bool {
83+
return fa != nil && fa.active && fa.timeRemaining > 0 && fa.time > 0
84+
}
85+
8086
func (fa *Fade) isActive() bool {
8187
return fa != nil && fa.active && fa.timeRemaining >= 0 && fa.time > 0
8288
}
@@ -117,7 +123,7 @@ func startFadeOut(tmpl *Fade, dest *Fade, overrideBlack bool, policy FadeStartPo
117123

118124
// FadeStop semantics:
119125
// If this is an explicit user interruption OR a fade-in is active, cut immediately.
120-
if policy == FadeStop && (overrideBlack || (fi != nil && fi.isActive())) {
126+
if policy == FadeStop && (overrideBlack || (fi != nil && fi.isTransitioning())) {
121127
if fi != nil {
122128
fi.reset()
123129
}
@@ -134,7 +140,7 @@ func startFadeOut(tmpl *Fade, dest *Fade, overrideBlack bool, policy FadeStartPo
134140
}
135141

136142
// If no fade-in is active, all policies behave the same here: start now.
137-
if fi == nil || !fi.isActive() {
143+
if fi == nil || !fi.isTransitioning() {
138144
startFresh()
139145
return
140146
}

0 commit comments

Comments
 (0)