Skip to content

Commit 2e0443e

Browse files
committed
fix(Overlay Mode): Overlay Mode Fixes
- Temporary workaround for resource loading of SettingsManager and InputIconManager. - Fixed loading and saving default target gamepad. - Fixed loading the gamepad profile on startup in Overlay Mode, enabling opening overlay window. - Added missing children to overlay_mode_card_ui. - Fix loading GPU settings in PowerTools
1 parent 3e066d2 commit 2e0443e

File tree

12 files changed

+111
-118
lines changed

12 files changed

+111
-118
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ assets/crypto/keys/opengamepadui.pub: assets/crypto/keys/opengamepadui.key
238238

239239
.PHONY: deploy
240240
deploy: dist-archive $(SSH_MOUNT_PATH)/.mounted ## Build, deploy, and tunnel to a remote device
241-
cp dist/opengamepadui.tar.gz $(SSH_MOUNT_PATH)
241+
scp dist/opengamepadui.tar.gz $(SSH_USER)@$(SSH_HOST):$(SSH_DATA_PATH)
242242
cd $(SSH_MOUNT_PATH) #&& tar xvfz opengamepadui.tar.gz
243243
ssh -t $(SSH_USER)@$(SSH_HOST) tar xvfz "$(SSH_DATA_PATH)/opengamepadui.tar.gz"
244244

core/global/launch_manager.gd

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,14 @@ func _init() -> void:
7272

7373
# Listen for signals from the primary Gamescope XWayland
7474
if _xwayland_primary:
75-
# When window focus changes, update the current app and gamepad profile
75+
# Debug print when the focused window changes
7676
var on_focus_changed := func(from: int, to: int):
7777
if from == to:
7878
return
7979
logger.info("Window focus changed from " + str(from) + " to: " + str(to))
8080
_xwayland_primary.focused_window_updated.connect(on_focus_changed)
8181

82-
# Debug print when the focused app changed
82+
# When focused app changes, update the current app and gamepad profile
8383
var on_focused_app_changed := func(from: int, to: int) -> void:
8484
if from == to:
8585
return
@@ -150,7 +150,7 @@ func _init() -> void:
150150

151151
in_game_state.state_entered.connect(on_game_state_entered)
152152
in_game_state.state_exited.connect(on_game_state_exited)
153-
153+
set_gamepad_profile("")
154154

155155
# Loads persistent data like recent games launched, etc.
156156
func _load_persist_data():
@@ -345,26 +345,10 @@ func set_gamepad_profile(path: String, target_gamepad: String = "") -> void:
345345
# If no profile was specified, unset the gamepad profiles
346346
if path == "":
347347
# Try check to see if there is a global gamepad setting
348-
var profile_path := settings_manager.get_value("input", "gamepad_profile", InputPlumber.DEFAULT_GLOBAL_PROFILE) as String
349-
if not profile_path.ends_with(".json") or not FileAccess.file_exists(profile_path):
350-
profile_path = InputPlumber.DEFAULT_GLOBAL_PROFILE
351-
logger.info("Loading global gamepad profile: " + profile_path)
352-
353-
for gamepad in input_plumber.get_composite_devices():
354-
InputPlumber.load_target_modified_profile(gamepad, profile_path, profile_modifier)
355-
356-
# Set the target gamepad if one was specified
357-
if not target_gamepad.is_empty():
358-
var target_devices := PackedStringArray([target_gamepad, "keyboard", "mouse"])
359-
match target_gamepad:
360-
"xb360", "xbox-series", "xbox-elite", "gamepad":
361-
target_devices.append("touchpad")
362-
_:
363-
logger.debug(target_gamepad, "needs no additional target devices.")
364-
logger.info("Setting target devices to: ", target_devices)
365-
gamepad.set_target_devices(target_devices)
366-
367-
return
348+
path = settings_manager.get_value("input", "gamepad_profile", InputPlumber.DEFAULT_GLOBAL_PROFILE) as String
349+
# Verify we loaded a valid profile, or fallback.
350+
if not path.ends_with(".json") or not FileAccess.file_exists(path):
351+
path = InputPlumber.DEFAULT_GLOBAL_PROFILE
368352

369353
logger.info("Loading gamepad profile: " + path)
370354
if not FileAccess.file_exists(path):

core/systems/input/input_icon_manager.gd

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -402,8 +402,6 @@ func _get_matching_event(path: String, input_type: InputType) -> Array[InputEven
402402
## Set the last input type to the given value and emit a signal
403403
func set_last_input_type(_last_input_type: InputType):
404404
last_input_type = _last_input_type
405-
if not self.disabled:
406-
input_type_changed.emit(_last_input_type)
407405

408406

409407
## Signal whenever a gamepad is connected/disconnected

core/systems/input/input_icon_processor.gd

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,12 @@ func _input(event: InputEvent) -> void:
3232
"InputEventJoypadMotion":
3333
if abs(event.axis_value) > DEADZONE:
3434
input_type = InputIconManager.InputType.GAMEPAD
35+
var refresh := false
3536
if input_type != icon_manager.last_input_type:
3637
icon_manager.set_last_input_type(input_type)
38+
refresh = true
3739
if device_name != icon_manager.last_input_device:
3840
icon_manager.last_input_device = device_name
41+
refresh = true
42+
if refresh:
3943
icon_manager.refresh()

core/systems/performance/performance_manager.gd

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ func load_or_create_profile(profile_path: String, library_item: LibraryLaunchIte
151151
if profile:
152152
logger.debug("Found profile at: " + profile_path)
153153
return profile
154-
154+
155155
# If the profile does not exist, create one with the currently applied
156156
# performance settings.
157157
logger.debug("No profile found. Creating one.")
@@ -163,18 +163,8 @@ func apply_profile(profile: PerformanceProfile) -> void:
163163
if not _power_station.is_running():
164164
logger.info("Unable to apply performance profile. PowerStation not detected.")
165165
return
166-
167-
logger.info("Applying performance profile: " + profile.name)
168166

169-
# Apply CPU settings from the given profile
170-
if _power_station.cpu:
171-
logger.debug("Applying CPU performance settings from profile")
172-
if _power_station.cpu.boost_enabled != profile.cpu_boost_enabled:
173-
_power_station.cpu.boost_enabled = profile.cpu_boost_enabled
174-
if _power_station.cpu.smt_enabled != profile.cpu_smt_enabled:
175-
_power_station.cpu.smt_enabled = profile.cpu_smt_enabled
176-
if profile.cpu_core_count_current > 0 and _power_station.cpu.cores_enabled != profile.cpu_core_count_current:
177-
_power_station.cpu.cores_enabled = profile.cpu_core_count_current
167+
logger.info("Applying performance profile: " + profile.name)
178168

179169
# Detect all GPU cards
180170
var cards: Array[GpuCard] = []
@@ -187,6 +177,15 @@ func apply_profile(profile: PerformanceProfile) -> void:
187177
if card.class != "integrated":
188178
continue
189179
logger.debug("Applying GPU performance settings from profile")
180+
if profile.gpu_power_profile >= 0:
181+
var power_profile := "max-performance"
182+
if profile.gpu_power_profile == 0:
183+
power_profile = "max-performance"
184+
if profile.gpu_power_profile == 1:
185+
power_profile = "power-saving"
186+
if card.power_profile != power_profile:
187+
logger.debug("Applying Power Profile: " + power_profile)
188+
card.power_profile = power_profile
190189
if card.manual_clock != profile.gpu_manual_enabled:
191190
card.manual_clock = profile.gpu_manual_enabled
192191
if profile.tdp_current > 0 and card.tdp != profile.tdp_current:
@@ -201,19 +200,20 @@ func apply_profile(profile: PerformanceProfile) -> void:
201200
if profile.gpu_freq_max_current > 0 and card.clock_value_mhz_max != profile.gpu_freq_max_current:
202201
logger.debug("Applying Clock Freq Max: " + str(profile.gpu_freq_max_current))
203202
card.clock_value_mhz_max = profile.gpu_freq_max_current
204-
if profile.gpu_power_profile >= 0:
205-
var power_profile := "max-performance"
206-
if profile.gpu_power_profile == 0:
207-
power_profile = "max-performance"
208-
if profile.gpu_power_profile == 1:
209-
power_profile = "power-saving"
210-
if card.power_profile != power_profile:
211-
logger.debug("Applying Power Profile: " + power_profile)
212-
card.power_profile = power_profile
213203
if profile.gpu_temp_current > 0 and card.thermal_throttle_limit_c != profile.gpu_temp_current:
214204
logger.debug("Applying Thermal Throttle Limit: " + str(profile.gpu_temp_current))
215205
card.thermal_throttle_limit_c = profile.gpu_temp_current
216206

207+
# Apply CPU settings from the given profile
208+
if _power_station.cpu:
209+
logger.debug("Applying CPU performance settings from profile")
210+
if _power_station.cpu.boost_enabled != profile.cpu_boost_enabled:
211+
_power_station.cpu.boost_enabled = profile.cpu_boost_enabled
212+
if _power_station.cpu.smt_enabled != profile.cpu_smt_enabled:
213+
_power_station.cpu.smt_enabled = profile.cpu_smt_enabled
214+
if profile.cpu_core_count_current > 0 and _power_station.cpu.cores_enabled != profile.cpu_core_count_current:
215+
_power_station.cpu.cores_enabled = profile.cpu_core_count_current
216+
217217
logger.info("Applied Performance Profile: " + profile.name)
218218
profile_applied.emit(profile)
219219

core/ui/card_ui/gamepad/gamepad_settings.gd

Lines changed: 38 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -63,18 +63,18 @@ func _ready() -> void:
6363
self.gamepad_type_selected = item_selected
6464
if self.profile:
6565
var gamepad_type := self.get_selected_target_gamepad()
66-
profile_gamepad = InputPlumberProfile.get_target_device_string(gamepad_type)
67-
logger.debug("Setting gamepad to " + profile_gamepad)
66+
self.profile_gamepad = InputPlumberProfile.get_target_device_string(gamepad_type)
67+
logger.debug("Setting gamepad to " + self.profile_gamepad)
6868
else:
6969
logger.debug("No profile, unable to set gamepad type.")
7070
self._update_mapping_elements()
7171
gamepad_type_dropdown.item_selected.connect(on_gamepad_selected)
7272

7373
# Load the default profile
7474
var profile_path = settings_manager.get_value("input", "gamepad_profile", "")
75-
profile_gamepad = settings_manager.get_value("input", "gamepad_profile_target", "")
76-
for gamepad in input_plumber.get_composite_devices():
77-
_set_gamepad_profile(gamepad, profile_path)
75+
self.profile_gamepad = settings_manager.get_value("input", "gamepad_profile_target", "")
76+
for composite_device in input_plumber.get_composite_devices():
77+
_set_gamepad_profile(composite_device, profile_path)
7878

7979
# Grab focus when the mapper exits
8080
var on_state_changed := func(_from: State, to: State):
@@ -103,7 +103,7 @@ func _on_state_entered(_from: State) -> void:
103103
main_container.visible = true
104104

105105
# Read from the state to determine which gamepad is being configured
106-
gamepad = null
106+
self.gamepad = null
107107
if !gamepad_state.has_meta("dbus_path"):
108108
logger.error("No gamepad was set to configure!")
109109
# Make menu empty, unable to find gamepad to configure
@@ -116,56 +116,48 @@ func _on_state_entered(_from: State) -> void:
116116
# Find the composite device to configure
117117
for device: CompositeDevice in input_plumber.get_composite_devices():
118118
if device.dbus_path == dbus_path:
119-
gamepad = device
119+
self.gamepad = device
120120
break
121-
if gamepad == null:
121+
if self.gamepad == null:
122122
logger.error("Unable to find CompositeDevice with path: " + dbus_path)
123123
not_available.visible = true
124124
main_container.visible = false
125125
$ServiceNotAvailableContainer/Label.text = "No gamepad to configure"
126126
return
127127

128-
logger.debug("Configuring gamepad '" + gamepad.name + "': " + dbus_path)
128+
logger.debug("Configuring gamepad '" + self.gamepad.name + "': " + dbus_path)
129129

130130
# Set the gamepad name label
131-
gamepad_label.text = gamepad.name
131+
gamepad_label.text = self.gamepad.name
132132

133133
# Populate the menu with the source inputs for the given gamepad
134-
populate_mappings_for(gamepad)
134+
populate_mappings_for(self.gamepad)
135135

136136
# Set the library item, if one exists
137-
library_item = null
138-
profile = null
137+
self.library_item = null
138+
self.profile = null
139139
if gamepad_state.has_meta("item"):
140-
library_item = gamepad_state.get_meta("item") as LibraryItem
140+
self.library_item = gamepad_state.get_meta("item") as LibraryItem
141141

142142
# If no library item was set, but there's a running app, try to see if
143143
# there is a library item for it instead.
144-
if not library_item:
145-
library_item = launch_manager.get_current_app_library_item()
144+
if not self.library_item:
145+
self.library_item = launch_manager.get_current_app_library_item()
146146

147147
# If no library item was set with the state, then configure the OGUI profile
148-
if not library_item:
149-
profile_label.text = "Global"
150-
@warning_ignore("confusable_local_declaration")
151-
var profile_path := settings_manager.get_value("input", "gamepad_profile", InputPlumber.DEFAULT_GLOBAL_PROFILE) as String
152-
var profile_target_gamepad := settings_manager.get_value("input", "gamepad_profile_target", "") as String
153-
profile = _load_profile(profile_path)
154-
profile_gamepad = profile_target_gamepad
155-
_update_mapping_elements()
156-
return
157-
158-
# Set the profile text to the game name
159-
profile_label.text = library_item.name
160-
161-
162-
# Check to see if the given game has a gamepad profile
163-
var profile_path := settings_manager.get_library_value(library_item, "gamepad_profile", "") as String
164-
var profile_target_gamepad := settings_manager.get_library_value(library_item, "gamepad_profile_target", "") as String
165-
profile = _load_profile(profile_path)
166-
profile_gamepad = profile_target_gamepad
167-
_update_mapping_elements()
148+
var profile_path: String
149+
if not self.library_item:
150+
self.profile_label.text = "Global"
151+
profile_path = settings_manager.get_value("input", "gamepad_profile", InputPlumber.DEFAULT_GLOBAL_PROFILE) as String
152+
else:
153+
self.profile_label.text = self.library_item.name
154+
profile_path = settings_manager.get_library_value(self.library_item, "gamepad_profile", "") as String
168155

156+
self.profile = _load_profile(profile_path)
157+
self.profile_gamepad = settings_manager.get_library_value(self.library_item, "gamepad_profile_target", "") as String
158+
159+
_update_mapping_elements()
160+
169161
# Clear focus
170162
mapping_focus_group.current_focus = null
171163

@@ -402,8 +394,8 @@ func _update_mapping_elements() -> void:
402394
profile_label.text = profile.name
403395

404396
# Update the dropdown based on the profile's target gamepad type
405-
if not profile_gamepad.is_empty():
406-
var target_device := InputPlumberProfile.get_target_device(profile_gamepad)
397+
if not self.profile_gamepad.is_empty():
398+
var target_device := InputPlumberProfile.get_target_device(self.profile_gamepad)
407399
var gamepad_text := self.get_target_gamepad_text(target_device)
408400
var i := 0
409401
var idx := 0
@@ -612,16 +604,16 @@ func _set_gamepad_profile(gamepad: CompositeDevice, profile_path: String = "") -
612604
profile_path = settings_manager.get_library_value(library_item, "gamepad_profile", "")
613605

614606
logger.debug("Setting " + gamepad.name + " to profile: " + profile_path)
615-
InputPlumber.load_target_modified_profile(gamepad, profile_path, profile_gamepad)
607+
InputPlumber.load_target_modified_profile(gamepad, profile_path, self.profile_gamepad)
616608

617609
# Set the target gamepad if one was specified
618-
if not profile_gamepad.is_empty():
619-
var target_devices := PackedStringArray([profile_gamepad, "keyboard", "mouse"])
620-
match profile_gamepad:
610+
if not self.profile_gamepad.is_empty():
611+
var target_devices := PackedStringArray([self.profile_gamepad, "keyboard", "mouse"])
612+
match self.profile_gamepad:
621613
"xb360", "xbox-series", "xbox-elite", "gamepad":
622614
target_devices.append("touchpad")
623615
_:
624-
logger.debug(profile_gamepad, "needs no additional target devices.")
616+
logger.debug(self.profile_gamepad, "needs no additional target devices.")
625617
logger.debug("Setting target devices to: ", target_devices)
626618
gamepad.set_target_devices(target_devices)
627619

@@ -645,8 +637,9 @@ func _save_profile() -> void:
645637
return
646638

647639
# Update the game settings to use this global profile
640+
self.logger.info("Saving gamepad profile at", path, "and gamepad target", self.profile_gamepad)
648641
settings_manager.set_value("input", "gamepad_profile", path)
649-
settings_manager.set_value("input", "gamepad_profile_target", profile_gamepad)
642+
settings_manager.set_value("input", "gamepad_profile_target", self.profile_gamepad)
650643

651644
for gamepad in input_plumber.get_composite_devices():
652645
_set_gamepad_profile(gamepad, path)
@@ -668,7 +661,7 @@ func _save_profile() -> void:
668661
# Update the game settings to use this gamepad profile
669662
var section := "game.{0}".format([library_item.name.to_lower()])
670663
settings_manager.set_value(section, "gamepad_profile", path)
671-
settings_manager.set_value(section, "gamepad_profile_target", profile_gamepad)
664+
settings_manager.set_value(section, "gamepad_profile_target", self.profile_gamepad)
672665
logger.debug("Saved gamepad profile to: " + path)
673666
notify.text = "Gamepad profile saved"
674667
notification_manager.show(notify)

core/ui/card_ui/quick_bar/power_tools_card.tscn

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
[ext_resource type="PackedScene" uid="uid://b5xnora73yd8x" path="res://core/ui/card_ui/quick_bar/qb_card.tscn" id="1_6lv34"]
44
[ext_resource type="PackedScene" uid="uid://dv3dt0j3jketh" path="res://core/ui/common/quick_bar/powertools_menu.tscn" id="2_votl1"]
55

6-
[sub_resource type="Image" id="Image_n6cge"]
6+
[sub_resource type="Image" id="Image_c7ewe"]
77
data = {
88
"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
99
"format": "RGBA8",
@@ -13,7 +13,7 @@ data = {
1313
}
1414

1515
[sub_resource type="ImageTexture" id="ImageTexture_ca0vc"]
16-
image = SubResource("Image_n6cge")
16+
image = SubResource("Image_c7ewe")
1717

1818
[node name="PowerToolsCard" instance=ExtResource("1_6lv34")]
1919
title = "Power Tools"

0 commit comments

Comments
 (0)