Skip to content

Commit cbecfdb

Browse files
authored
Implement macro repeat mode support (repeatMode and repeatCount)
1 parent b92ecb1 commit cbecfdb

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

Moblin/Various/Model/ModelMacros.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ extension Model {
88
}
99
macro.running = true
1010
macro.nextActionIndex = 0
11+
macro.repeatCurrentCount = 0
1112
macro.stack = [macro]
1213
executeNextAction(macro: macro)
1314
}
@@ -60,6 +61,23 @@ extension Model {
6061
currentMacro.finished = false
6162
}
6263
macro.stack.removeLast()
64+
if macro.stack.isEmpty {
65+
macro.repeatCurrentCount += 1
66+
let shouldRepeat: Bool = switch macro.repeatMode {
67+
case .forever:
68+
true
69+
case .count:
70+
macro.repeatCurrentCount < macro.repeatCount
71+
case .off:
72+
false
73+
}
74+
if shouldRepeat {
75+
macro.running = true
76+
macro.finished = false
77+
macro.nextActionIndex = 0
78+
macro.stack = [macro]
79+
}
80+
}
6381
executeNextAction(macro: macro)
6482
return
6583
}

Moblin/Various/Settings/SettingsMacros.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ class SettingsMacrosMacro: Identifiable, Codable, ObservableObject, Named {
230230
@Published var repeatMode: SettingsMacrosMacroRepeatMode = .off
231231
@Published var repeatCount: Int = 5
232232
var nextActionIndex: Int = 0
233+
var repeatCurrentCount: Int = 0
233234
let delayTimer = SimpleTimer(queue: .main)
234235
let finishedTimer = SimpleTimer(queue: .main)
235236
var stack: [SettingsMacrosMacro] = []

0 commit comments

Comments
 (0)