168 lines
4.2 KiB
GDScript
168 lines
4.2 KiB
GDScript
extends Node
|
|
## Fährt das Spiel mit Fenster und legt Screenshots ab, um die Welt
|
|
## auch optisch zu prüfen.
|
|
|
|
const OUT := "user://shots/"
|
|
var main: Node3D
|
|
var n := 0
|
|
|
|
|
|
func _process(_d: float) -> void:
|
|
# Maus des Nutzers nicht einfangen, während die Bilder entstehen
|
|
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
|
|
|
|
|
func _ready() -> void:
|
|
DirAccess.make_dir_recursive_absolute(ProjectSettings.globalize_path(OUT))
|
|
main = load("res://scenes/main.tscn").instantiate()
|
|
add_child(main)
|
|
await get_tree().process_frame
|
|
await get_tree().process_frame
|
|
await knipse("01_intro")
|
|
|
|
main.ui.schliessen()
|
|
main.player.global_position = Vector3(0, 4.0, 34.0)
|
|
main.player.yaw = 0.0
|
|
main.player.pitch = -0.14
|
|
Game.time_h = 10.0
|
|
await warte(30)
|
|
await knipse("02_traumwelt")
|
|
|
|
main.player.global_position = Vector3(0, 12.0, 30.0)
|
|
main.player.pitch = -0.5
|
|
await warte(20)
|
|
await knipse("03_traumdorf_ueberblick")
|
|
|
|
var haus := Orte.center(DreamDB.PLACES, "haus_ailen")
|
|
main.player.global_position = haus + Vector3(0, 2.0, 12.0)
|
|
main.player.yaw = 0.0
|
|
main.player.pitch = -0.18
|
|
await warte(20)
|
|
await knipse("04_haus_aussen")
|
|
|
|
# ein Wesen in seinem Haus
|
|
var ailen: Bewohner = null
|
|
for w in main.welt.bewohner:
|
|
if w.data["id"] == "ailen":
|
|
ailen = w
|
|
for i in range(900):
|
|
main._process(0.05)
|
|
for k in main.welt.get_children():
|
|
if k is Bewohner:
|
|
k._process(0.05)
|
|
Game.time_h = 10.0
|
|
if ailen.place == "haus_ailen" and ailen._path.is_empty():
|
|
break
|
|
main.player.global_position = ailen.global_position + Vector3(3.0, 0.6, 1.2)
|
|
main.player.yaw = -PI * 0.32
|
|
main.player.pitch = -0.06
|
|
await warte(20)
|
|
await knipse("05_haus_innen")
|
|
|
|
main.ui.journal_panel("techniken")
|
|
await warte(6)
|
|
await knipse("06_journal_techniken")
|
|
main.ui.schliessen()
|
|
|
|
Game.learn("pomodoro")
|
|
Game.learn("zerlegen")
|
|
Game.learn("box_atmung")
|
|
|
|
main.ui.journal_panel("missionen")
|
|
await warte(6)
|
|
await knipse("07_journal_missionen")
|
|
main.ui.schliessen()
|
|
Game.accept_mission("lena")
|
|
|
|
# Lichtung, wenn sich die Wesen dort treffen
|
|
for i in range(1200):
|
|
main._process(0.05)
|
|
for k in main.welt.get_children():
|
|
if k is Bewohner:
|
|
k._process(0.05)
|
|
Game.time_h = 19.5
|
|
main.player.global_position = Vector3(0.0, 1.0, 22.0)
|
|
main.player.yaw = 0.0
|
|
main.player.pitch = -0.20
|
|
await warte(20)
|
|
await knipse("08_lichtung")
|
|
|
|
var tor := Orte.center(DreamDB.PLACES, "tor")
|
|
main.player.global_position = tor + Vector3(0, 2.5, 14.0)
|
|
main.player.yaw = 0.0
|
|
main.player.pitch = -0.12
|
|
await warte(20)
|
|
await knipse("09_tor_zur_erde")
|
|
|
|
main._erde()
|
|
Game.time_h = 10.5
|
|
await warte(40)
|
|
main.player.global_position = Vector3(0, 26.0, 42.0)
|
|
main.player.pitch = -0.62
|
|
main.player.yaw = 0.0
|
|
await warte(20)
|
|
await knipse("10_erde_uebersicht")
|
|
|
|
var lena: Bewohner = null
|
|
for m in main.welt.humans:
|
|
if m.data["id"] == "lena":
|
|
lena = m
|
|
for i in range(900):
|
|
main._process(0.05)
|
|
for k in main.welt.get_children():
|
|
if k is Bewohner:
|
|
k._process(0.05)
|
|
Game.time_h = 10.5
|
|
if lena.place == "haus_lena" and lena._path.is_empty():
|
|
break
|
|
main.player.global_position = lena.global_position + Vector3(0, 1.2, -4.5)
|
|
main.player.yaw = PI
|
|
main.player.pitch = -0.15
|
|
await warte(20)
|
|
await knipse("11_lena_zoegert")
|
|
|
|
main.ui.anwenden_panel(lena)
|
|
await warte(6)
|
|
await knipse("12_anwenden")
|
|
main.ui._anwenden("pomodoro")
|
|
await warte(25)
|
|
await knipse("13_reaktion")
|
|
|
|
Game.time_h = 13.5
|
|
for i in range(1200):
|
|
main._process(0.05)
|
|
for k in main.welt.get_children():
|
|
if k is Bewohner:
|
|
k._process(0.05)
|
|
Game.time_h = 13.5
|
|
main.player.global_position = Vector3(0, 11.0, -14.0)
|
|
main.player.yaw = PI
|
|
main.player.pitch = -0.5
|
|
await warte(20)
|
|
await knipse("14_cafe_mittag")
|
|
|
|
Game.time_h = 22.5
|
|
await warte(40)
|
|
main.player.global_position = Vector3(0, 18.0, 34.0)
|
|
main.player.yaw = 0.0
|
|
main.player.pitch = -0.5
|
|
await warte(20)
|
|
await knipse("15_nacht")
|
|
|
|
print("Screenshots: %d" % n)
|
|
print("Ordner: %s" % ProjectSettings.globalize_path(OUT))
|
|
get_tree().quit()
|
|
|
|
|
|
func warte(frames: int) -> void:
|
|
for i in range(frames):
|
|
await get_tree().process_frame
|
|
|
|
|
|
func knipse(bezeichnung: String) -> void:
|
|
await RenderingServer.frame_post_draw
|
|
var img := get_viewport().get_texture().get_image()
|
|
img.save_png(OUT + bezeichnung + ".png")
|
|
n += 1
|
|
print(" Bild: " + bezeichnung)
|