diff --git a/src/main/kotlin/de/moritzruth/lampenfieber/Main.kt b/src/main/kotlin/de/moritzruth/lampenfieber/Main.kt index e841134..7996738 100644 --- a/src/main/kotlin/de/moritzruth/lampenfieber/Main.kt +++ b/src/main/kotlin/de/moritzruth/lampenfieber/Main.kt @@ -347,6 +347,7 @@ val show = createShow { FrontLights.right.forEach { it.brightness.off(5.seconds) } Washs.both.forEach { it.brightness.off(5.seconds) } sideLight.colors.forEach { it.fade(Color(190.degrees, brightness = 0.percent), 5.seconds) } + spotRight.brightness.off(5.seconds) // TODO: Nebel aus } } @@ -363,70 +364,105 @@ val show = createShow { } scene("2.2") { - - - step { - trigger = StepCue.Stub + step(StepCue.MusicEnd) { + actors { + // TODO: Von wo? + +"Heike" + +"Sven" + } onRun { - // Umbau, vorm Vorhang - FrontLights.all.forEach { it.brightness.fade(75.percent, 4.seconds) } + FrontLights.all.forEach { it.brightness.fade(50.percent, 8.seconds) } } + + // TODO: Nebel für die Außerirdischen, falls der Vorhang noch zu } } scene("2.3") { - step { - trigger = StepCue.Stub + step(StepCue.Text("Sven", "Okay!")) { + actors { + // TODO: Wohin? + -"Heike" + -"Sven" + +"Paula / sitzt auf Sofa" + } onRun { // Vorhang auf - FrontLights.left.forEach { it.brightness.fade(0.percent, 4.seconds) } - FrontLights.center.forEach { it.brightness.fade(0.percent, 4.seconds) } + (FrontLights.left + FrontLights.right).forEach { it.brightness.off(5.seconds) } - // Außerirdische in der Mitte und gehen nach links ab + // Fernsehsimulation + bar.color.fadeRandomAround(180.degrees, 180.degrees, 400.milliseconds) } } - step { - trigger = StepCue.MusicEnd + step(StepCue.Text("Paula", "Sterilux, was ist denn das?", "1s nach Ende")) { + actors { + +"Ajax / durch die Mitte" + +"Lenora / durch die Mitte" + +"Leila / durch die Mitte" + +"Proper / durch die Mitte" + +"Astronaut / liegt in der Mitte der Bühne" + } + + rightSpotTarget = "Paula (rechtzeitig positionieren!)" onRun { - FrontLights.right.forEach { it.brightness.off() } - spotRight.brightness.static(100.percent) + FrontLights.center.forEach { it.brightness.off() } + spotRight.brightness.static(50.percent) + bar.color.static(Color(140.degrees)) + + sideLight.brightness.static(100.percent) + sideLight.color1.fadeRandomAround(300.degrees, 10.degrees, 4.seconds) + sideLight.color2.fadeRandomAround(140.degrees, 10.degrees, 3.seconds) + sideLight.color3.fadeRandomAround(235.degrees, 10.degrees, 6.seconds) + sideLight.color4.fadeRandomAround(235.degrees, 10.degrees, 8.seconds) } } - step { - trigger = StepCue.MusicStart("Eine Rolle spielen I", 69.seconds) + step(StepCue.Text("Lenora", "da kommt der General")) { + actors { + +"General / durch die Mitte" + } onRun { - // kühle Farben, sitzt rechts und steht dann auf zur Mitte + bar.color.fade(Color(0.degrees), 8.seconds) } } - step { - trigger = StepCue.MusicEnd - } - - step { - trigger = StepCue.Stub + step(StepCue.Text("Astronaut", "Ich hau ab!")) { + actors { + // TODO: Wohin? + -"Ajax" + -"Lenora" + -"Leila" + -"Proper" + -"General" + -"Astronaut" + } onRun { - spotRight.brightness.off() - // Vorhang zu + spotRight.brightness.fade(100.percent, 5.seconds) + sideLight.brightness.off(10.seconds) + bar.brightness.off(10.seconds) } } - step { - trigger = StepCue.MusicStart("Eine Rolle spielen II", 69.seconds) + // TODO: Bis zum Ende des Aktes - onRun { - // instrumental, Umbau - } + step(StepCue.MusicStart("Eine Rolle spielen I", 69.seconds)) { + } + + step(StepCue.MusicEnd) { + } + + step(StepCue.MusicStart("Eine Rolle spielen II", 69.seconds)) { } } + } + act("Dritter Akt") { scene("3.1") { step { trigger = StepCue.Stub diff --git a/src/main/kotlin/de/moritzruth/theaterdsl/device/DynamicValue.kt b/src/main/kotlin/de/moritzruth/theaterdsl/device/DynamicValue.kt index 34818f1..4f4fa30 100644 --- a/src/main/kotlin/de/moritzruth/theaterdsl/device/DynamicValue.kt +++ b/src/main/kotlin/de/moritzruth/theaterdsl/device/DynamicValue.kt @@ -208,8 +208,8 @@ class ColorDV(private val initialStaticValue: Color = Color.WHITE) : DynamicValu val startRandom = Random((elapsedTime / s.interval).toInt() - 1) val endRandom = Random((elapsedTime / s.interval).toInt()) val progress = (elapsedTime / s.interval).mod(1.0) - val startHue = s.hue.degrees - (s.deviation.degrees / 2) + startRandom.nextFloat() * s.deviation.degrees - val endHue = s.hue.degrees - (s.deviation.degrees / 2) + endRandom.nextFloat() * s.deviation.degrees + val startHue = s.hue.degrees - s.deviation.degrees + startRandom.nextFloat() * s.deviation.degrees * 2 + val endHue = s.hue.degrees - s.deviation.degrees + endRandom.nextFloat() * s.deviation.degrees * 2 val delta = endHue - startHue Color(hue = Angle((progress * delta).toFloat()))