Randoloot/tests/previews/loot_reveal_preview.gd
2026-10-26 21:06:32 +01:00

49 lines
2.0 KiB
GDScript

extends Node2D
const EFFECT := preload("res://scripts/items/loot_reveal_effect.gd")
func _ready() -> void:
RenderingServer.set_default_clear_color(Color("081420"))
var title := Label.new()
title.text = "ODZYSKANE WYPOSAŻENIE"
title.position = Vector2(85,65)
title.add_theme_font_size_override("font_size",28)
add_child(title)
var effects: Array[Node2D] = []
for index in 3:
var item := ItemInstance.new()
item.definition = preload("res://resources/items/reinforced_shield.tres")
item.rarity = index*2
for addon in index*2+1:
var modifier := ItemStatModifier.new()
modifier.stat_key = "shield_percent"
modifier.value = 1.0
item.additional_modifiers.append(modifier)
var pickup := Node2D.new()
pickup.set_script(preload("res://scripts/items/loot_pickup.gd"))
pickup.item = item
pickup.position = Vector2(250+index*350,350)
add_child(pickup)
var label := Label.new()
label.text = item.get_rarity_name()
label.position = pickup.position+Vector2(-65,85)
label.add_theme_font_size_override("font_size",18)
label.modulate = item.get_rarity_color()
add_child(label)
for child in get_children():
if child.get_script() == EFFECT: effects.append(child)
assert(effects.size() == 3)
var normal := EFFECT.sound(0)
assert(normal.get_length() > 0.6 and normal.data.size() > 20000)
assert(normal == EFFECT.sound(0) and normal != EFFECT.sound(1))
assert(normal.save_to_wav("res://artifacts/loot_drop_chime.wav") == OK)
await get_tree().create_timer(0.18).timeout
if DisplayServer.get_name() != "headless":
await RenderingServer.frame_post_draw
assert(get_viewport().get_texture().get_image().save_png("res://artifacts/loot_drop_effect.png") == OK)
await get_tree().create_timer(0.9).timeout
for effect in effects: assert(not is_instance_valid(effect))
assert(get_tree().get_nodes_in_group("loot").size() == 3)
print("LOOT REVEAL PASS: three rarity drops, cached sound synthesis, preview and WAV export, timed effect cleanup, loot retained")
get_tree().quit()