49 lines
2.0 KiB
GDScript
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()
|