Skip to content

Commit

Permalink
Add clicksound support to Buttons
Browse files Browse the repository at this point in the history
Fix StyleBoxWithSound draw bug
Expose SoundSingleton audio stream load functions
Update OpenVicProject/OpenVic-Simulation@34d3227
  • Loading branch information
Spartan322 committed Feb 10, 2025
1 parent b8bc06a commit 91ae86f
Show file tree
Hide file tree
Showing 8 changed files with 244 additions and 219 deletions.
6 changes: 3 additions & 3 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@
"type": "cppdbg",
"request": "launch",
"name": "Debug",
"program": "/bin/godot4", // TODO: Set your Godot binary path
"program": "/bin/godot", // TODO: Set your Godot binary path
"args": [
"-e"
""
],
"cwd": "${workspaceFolder}/game",
"preLaunchTask": "dev_build",
// "preLaunchTask": "dev_build",
"windows": {
"cwd": "${workspaceFolder}\\game",
}
Expand Down
2 changes: 1 addition & 1 deletion extension/deps/openvic-simulation
Submodule openvic-simulation updated 41 files
+10 −3 SConstruct
+7 −0 src/openvic-simulation/DefinitionManager.cpp
+4 −0 src/openvic-simulation/DefinitionManager.hpp
+1 −1 src/openvic-simulation/GameManager.hpp
+4 −3 src/openvic-simulation/console/ConsoleInstance.cpp
+13 −8 src/openvic-simulation/dataloader/Dataloader.cpp
+5 −4 src/openvic-simulation/dataloader/NodeTools.cpp
+4 −3 src/openvic-simulation/history/HistoryMap.hpp
+4 −1 src/openvic-simulation/interface/GUI.cpp
+2 −2 src/openvic-simulation/interface/GUI.hpp
+3 −0 src/openvic-simulation/interface/UI.cpp
+5 −0 src/openvic-simulation/interface/UI.hpp
+1 −1 src/openvic-simulation/map/MapDefinition.cpp
+25 −15 src/openvic-simulation/misc/SoundEffect.cpp
+12 −9 src/openvic-simulation/misc/SoundEffect.hpp
+6 −0 src/openvic-simulation/types/Colour.cpp
+266 −43 src/openvic-simulation/types/Colour.hpp
+40 −165 src/openvic-simulation/types/Date.cpp
+347 −62 src/openvic-simulation/types/Date.hpp
+3 −2 src/openvic-simulation/types/IdentifierRegistry.hpp
+3 −3 src/openvic-simulation/types/OrderedContainers.hpp
+17 −0 src/openvic-simulation/types/Vector.cpp
+22 −3 src/openvic-simulation/types/Vector.hpp
+74 −32 src/openvic-simulation/types/VectorN.inc
+67 −102 src/openvic-simulation/types/fixed_point/FixedPoint.hpp
+1,910 −0 src/openvic-simulation/utility/Deque.hpp
+16 −0 src/openvic-simulation/utility/Getters.hpp
+6 −0 src/openvic-simulation/utility/Utility.hpp
+12 −7 tests/SCsub
+0 −15 tests/src/Helper.hpp
+6 −1 tests/src/pathfinding/PointMap.cpp
+100 −0 tests/src/types/Approx.hpp
+183 −0 tests/src/types/Colour.cpp
+217 −0 tests/src/types/Date.cpp
+207 −0 tests/src/types/FixedPoint.cpp
+27 −0 tests/src/types/Numeric.hpp
+67 −0 tests/src/types/Timespan.cpp
+80 −0 tests/src/types/Vector.hpp
+172 −0 tests/src/types/Vector2.cpp
+169 −0 tests/src/types/Vector3.cpp
+178 −0 tests/src/types/Vector4.cpp
4 changes: 4 additions & 0 deletions extension/doc_classes/StyleBoxWithSound.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,12 @@
<members>
<member name="audio_bus" type="StringName" setter="set_audio_bus" getter="get_audio_bus" default="&amp;&quot;Master&quot;">
</member>
<member name="audio_disabled" type="bool" setter="set_audio_disabled" getter="is_audio_disabled" default="false">
</member>
<member name="audio_stream" type="AudioStream" setter="set_audio_stream" getter="get_audio_stream">
</member>
<member name="audio_volume" type="float" setter="set_audio_volume" getter="get_audio_volume" default="0.0">
</member>
<member name="style_box" type="StyleBox" setter="set_style_box" getter="get_style_box">
</member>
</members>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ void StyleBoxWithSound::_bind_methods() {
OV_BIND_METHOD(StyleBoxWithSound::set_audio_bus, { "bus" });
OV_BIND_METHOD(StyleBoxWithSound::get_audio_stream);
OV_BIND_METHOD(StyleBoxWithSound::set_audio_stream, { "stream" });
OV_BIND_METHOD(StyleBoxWithSound::get_audio_volume);
OV_BIND_METHOD(StyleBoxWithSound::set_audio_volume, { "volume" });
OV_BIND_METHOD(StyleBoxWithSound::is_audio_disabled);
OV_BIND_METHOD(StyleBoxWithSound::set_audio_disabled, { "disabled" });

ADD_PROPERTY(
PropertyInfo(Variant::OBJECT, "style_box", PROPERTY_HINT_RESOURCE_TYPE, "StyleBox"), "set_style_box", "get_style_box"
Expand All @@ -31,6 +35,8 @@ void StyleBoxWithSound::_bind_methods() {
PropertyInfo(Variant::OBJECT, "audio_stream", PROPERTY_HINT_RESOURCE_TYPE, "AudioStream"), //
"set_audio_stream", "get_audio_stream"
);
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "audio_volume"), "set_audio_volume", "get_audio_volume");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "audio_disabled"), "set_audio_disabled", "is_audio_disabled");
}

StyleBoxWithSound::StyleBoxWithSound() {
Expand All @@ -50,7 +56,7 @@ StringName StyleBoxWithSound::get_audio_bus() const {
return audio_bus;
}

void StyleBoxWithSound::set_audio_bus(String const& bus) {
void StyleBoxWithSound::set_audio_bus(StringName const& bus) {
audio_bus = bus;
emit_changed();
}
Expand All @@ -64,6 +70,16 @@ void StyleBoxWithSound::set_audio_stream(Ref<AudioStream> const& stream) {
emit_changed();
}

void StyleBoxWithSound::set_audio_volume(float volume) {
audio_volume = volume;
emit_changed();
}

void StyleBoxWithSound::set_audio_disabled(bool disable) {
audio_disabled = disable;
emit_changed();
}

godot::Rect2 StyleBoxWithSound::_get_draw_rect(Rect2 const& rect) const {
if (style_box.is_null()) {
return Rect2();
Expand All @@ -76,19 +92,22 @@ void StyleBoxWithSound::_on_audio_finished(AudioStreamPlayer* player) {
}

void StyleBoxWithSound::_draw(RID const& canvas_item, Rect2 const& rect) const {
SceneTree* tree = Object::cast_to<SceneTree>(Engine::get_singleton()->get_main_loop());
if (tree != nullptr) {
if (audio_stream.is_valid()) {
AudioStreamPlayer* asp = memnew(AudioStreamPlayer);
asp->connect("finished", callable_mp_static(&StyleBoxWithSound::_on_audio_finished).bind(asp));
asp->set_bus(audio_bus);
asp->set_stream(audio_stream);
asp->set_autoplay(true);
tree->get_root()->add_child(asp, false, Node::INTERNAL_MODE_BACK);
if (!audio_disabled) {
SceneTree* tree = Object::cast_to<SceneTree>(Engine::get_singleton()->get_main_loop());
if (tree != nullptr) {
if (audio_stream.is_valid()) {
AudioStreamPlayer* asp = memnew(AudioStreamPlayer);
asp->connect("finished", callable_mp_static(&StyleBoxWithSound::_on_audio_finished).bind(asp));
asp->set_bus(audio_bus);
asp->set_stream(audio_stream);
asp->set_volume_db(audio_volume);
asp->set_autoplay(true);
tree->get_root()->add_child(asp, false, Node::INTERNAL_MODE_BACK);
}
}
}
if (style_box.is_valid()) {
style_box->_draw(canvas_item, rect);
style_box->draw(canvas_item, rect);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ namespace OpenVic {
godot::Ref<godot::StyleBox> style_box;
godot::StringName audio_bus;
godot::Ref<godot::AudioStream> audio_stream;
float PROPERTY(audio_volume, 0);
bool PROPERTY_CUSTOM_PREFIX(audio_disabled, is, false);

static void _on_audio_finished(godot::AudioStreamPlayer* player);

Expand All @@ -30,9 +32,11 @@ namespace OpenVic {
godot::Ref<godot::StyleBox> get_style_box() const;
void set_style_box(godot::Ref<godot::StyleBox> const& style);
godot::StringName get_audio_bus() const;
void set_audio_bus(godot::String const& bus);
void set_audio_bus(godot::StringName const& bus);
godot::Ref<godot::AudioStream> get_audio_stream() const;
void set_audio_stream(godot::Ref<godot::AudioStream> const& stream);
void set_audio_volume(float volume);
void set_audio_disabled(bool disable);

virtual godot::Rect2 _get_draw_rect(godot::Rect2 const& rect) const override;
virtual void _draw(godot::RID const& canvas_item, godot::Rect2 const& rect) const override;
Expand Down
Loading

0 comments on commit 91ae86f

Please sign in to comment.