96 lines
3.6 KiB
GDScript
96 lines
3.6 KiB
GDScript
class_name PetBattleVsOverlay
|
|
extends RefCounted
|
|
|
|
const FRAME_SECONDS := 0.03
|
|
const FINAL_FRAME_HOLD_SECONDS := 3.0
|
|
const FRAME_TEXTURES := [
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0000.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0001.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0002.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0003.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0004.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0005.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0006.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0007.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0008.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0009.png"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0010.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0011.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0012.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0013.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0014.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0015.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0016.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0017.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0018.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0019.png"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0020.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0021.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0022.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0023.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0024.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0025.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0026.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0027.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0028.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0029.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0030.webp"),
|
|
preload("res://assets/replacement/pet_battle_vs/vs_0031.webp"),
|
|
]
|
|
|
|
var _owner: Control
|
|
var _layer: Control
|
|
var _frame: TextureRect
|
|
var _frames: Array[Texture2D] = []
|
|
var _playing := false
|
|
|
|
|
|
func setup(owner: Control) -> void:
|
|
_owner = owner
|
|
_load_frames()
|
|
_create_layer()
|
|
|
|
|
|
func play() -> void:
|
|
if _owner == null or _frame == null or _frames.is_empty():
|
|
return
|
|
while _playing:
|
|
await _owner.get_tree().create_timer(0.05).timeout
|
|
_playing = true
|
|
_layer.visible = true
|
|
_frame.modulate = Color(1.0, 1.0, 1.0, 1.0)
|
|
for texture in _frames:
|
|
_frame.texture = texture
|
|
await _owner.get_tree().create_timer(FRAME_SECONDS).timeout
|
|
await _owner.get_tree().create_timer(FINAL_FRAME_HOLD_SECONDS).timeout
|
|
_layer.visible = false
|
|
_playing = false
|
|
|
|
|
|
func _load_frames() -> void:
|
|
_frames.clear()
|
|
for texture in FRAME_TEXTURES:
|
|
if texture != null:
|
|
_frames.append(texture)
|
|
|
|
|
|
func _create_layer() -> void:
|
|
if _owner == null:
|
|
return
|
|
_layer = Control.new()
|
|
_layer.name = "PetBattleVsOverlay"
|
|
_layer.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
|
_layer.set_anchors_preset(Control.PRESET_FULL_RECT)
|
|
_layer.z_index = 2500
|
|
_layer.visible = false
|
|
_owner.add_child(_layer)
|
|
|
|
_frame = TextureRect.new()
|
|
_frame.name = "Frame"
|
|
_frame.position = Vector2(0.0, 220.0)
|
|
_frame.size = Vector2(640.0, 480.0)
|
|
_frame.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
|
|
_frame.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
|
|
_frame.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
|
_layer.add_child(_frame)
|