diff options
Diffstat (limited to 'game/src/Game/Theme/StyleBoxWithSound.gd')
-rw-r--r-- | game/src/Game/Theme/StyleBoxWithSound.gd | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/game/src/Game/Theme/StyleBoxWithSound.gd b/game/src/Game/Theme/StyleBoxWithSound.gd new file mode 100644 index 0000000..8c29b34 --- /dev/null +++ b/game/src/Game/Theme/StyleBoxWithSound.gd @@ -0,0 +1,34 @@ +## WARNING: This will not work with togglable UI elements, a special implementation is needed for them. +@tool +extends StyleBox +class_name StyleBoxWithSound + +@export +var style_box : StyleBox: + get: return style_box + set(v): + style_box = v + emit_changed() + +@export +var sound : AudioStream: + get: return sound + set(v): + sound = v + emit_changed() + +func _get_draw_rect(rect : Rect2) -> Rect2: + if style_box == null: return Rect2() + return style_box._get_draw_rect(rect) + +func _draw(to_canvas_item : RID, rect : Rect2) -> void: + # This is a hack + # Works fine for simple non-normal style cases + # Normal styles being drawn immediately tho will trigger sound on startup + # This would require further work to be applicable for release sounds + # Is there any other reason aside from release sounds (might be useful for toggles?) + # This should be fast enough to not cause draw issues + if sound != null: + SoundManager.play_effect_stream(sound) + if style_box != null: + style_box.draw(to_canvas_item, rect) |