Add hold and drag building
This commit is contained in:
parent
e1753a1587
commit
c30cc68db8
13 changed files with 268 additions and 45 deletions
|
@ -1,8 +1,9 @@
|
||||||
[gd_scene load_steps=4 format=3 uid="uid://byyyhq3x8t2d8"]
|
[gd_scene load_steps=5 format=3 uid="uid://byyyhq3x8t2d8"]
|
||||||
|
|
||||||
[ext_resource type="Theme" uid="uid://d035h7upxrw3h" path="res://theme.tres" id="1_emusj"]
|
[ext_resource type="Theme" uid="uid://d035h7upxrw3h" path="res://theme.tres" id="1_emusj"]
|
||||||
[ext_resource type="Script" path="res://info_window.gd" id="1_oy31s"]
|
[ext_resource type="Script" path="res://info_window.gd" id="1_oy31s"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bsj3th0rsn7a8" path="res://ResourceAllocation.tscn" id="3_r3oy0"]
|
[ext_resource type="PackedScene" uid="uid://bsj3th0rsn7a8" path="res://ResourceAllocation.tscn" id="3_r3oy0"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://brrrxrf3phkqv" path="res://ui/buildingmeny.png" id="3_wsa04"]
|
||||||
|
|
||||||
[node name="InfoWindow" type="Control"]
|
[node name="InfoWindow" type="Control"]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
|
@ -20,38 +21,75 @@ grow_vertical = 2
|
||||||
theme = ExtResource("1_emusj")
|
theme = ExtResource("1_emusj")
|
||||||
script = ExtResource("1_oy31s")
|
script = ExtResource("1_oy31s")
|
||||||
|
|
||||||
[node name="ColorRect" type="ColorRect" parent="."]
|
[node name="ColorRect" type="TextureRect" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
color = Color(0.0605303, 0.0605303, 0.0605303, 1)
|
texture = ExtResource("3_wsa04")
|
||||||
|
|
||||||
[node name="RichTextLabel" type="RichTextLabel" parent="."]
|
[node name="ColorRect2" type="ColorRect" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = 2.0
|
||||||
|
offset_top = 2.0
|
||||||
|
offset_right = -2.0
|
||||||
|
offset_bottom = -2.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
color = Color(0, 0, 0, 0.662745)
|
||||||
|
|
||||||
|
[node name="Icon" type="TextureRect" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 5
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
offset_left = -16.0
|
||||||
|
offset_top = 14.0
|
||||||
|
offset_right = 16.0
|
||||||
|
offset_bottom = 46.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
|
||||||
|
[node name="Title" type="RichTextLabel" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 5
|
anchors_preset = 5
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
offset_left = -93.5
|
offset_left = -93.5
|
||||||
offset_top = 14.0
|
offset_top = 53.0
|
||||||
offset_right = 103.5
|
offset_right = 103.5
|
||||||
offset_bottom = 44.0
|
offset_bottom = 83.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
theme_override_font_sizes/normal_font_size = 16
|
theme_override_font_sizes/normal_font_size = 16
|
||||||
bbcode_enabled = true
|
bbcode_enabled = true
|
||||||
text = "[center]Test Title"
|
text = "[center]Test Title"
|
||||||
|
|
||||||
[node name="RichTextLabel2" type="RichTextLabel" parent="."]
|
[node name="Subtitle" type="RichTextLabel" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 5
|
anchors_preset = 5
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
offset_left = -83.5
|
offset_left = -83.5
|
||||||
offset_top = 36.0
|
offset_top = 75.0
|
||||||
offset_right = 83.5
|
offset_right = 83.5
|
||||||
offset_bottom = 66.0
|
offset_bottom = 105.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "[center]Test Title"
|
||||||
|
|
||||||
|
[node name="Description" type="RichTextLabel" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 5
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
offset_left = -83.5
|
||||||
|
offset_top = 90.0
|
||||||
|
offset_right = 83.5
|
||||||
|
offset_bottom = 162.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
bbcode_enabled = true
|
bbcode_enabled = true
|
||||||
text = "[center]Test Title"
|
text = "[center]Test Title"
|
||||||
|
|
|
@ -41,8 +41,8 @@ sources/0 = SubResource("TileSetAtlasSource_dxrqb")
|
||||||
sources/1 = SubResource("TileSetAtlasSource_j7eew")
|
sources/1 = SubResource("TileSetAtlasSource_j7eew")
|
||||||
sources/2 = SubResource("TileSetAtlasSource_w6tof")
|
sources/2 = SubResource("TileSetAtlasSource_w6tof")
|
||||||
|
|
||||||
[sub_resource type="CircleShape2D" id="CircleShape2D_s8q4l"]
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_57goo"]
|
||||||
radius = 150.083
|
size = Vector2(324, 314)
|
||||||
|
|
||||||
[node name="Main" type="Node2D"]
|
[node name="Main" type="Node2D"]
|
||||||
|
|
||||||
|
@ -68,7 +68,8 @@ script = ExtResource("5_v47eg")
|
||||||
position = Vector2(319, 177)
|
position = Vector2(319, 177)
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="TileMap/MouseHandler"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="TileMap/MouseHandler"]
|
||||||
shape = SubResource("CircleShape2D_s8q4l")
|
rotation = 0.750492
|
||||||
|
shape = SubResource("RectangleShape2D_57goo")
|
||||||
|
|
||||||
[node name="Camera2D" type="Camera2D" parent="."]
|
[node name="Camera2D" type="Camera2D" parent="."]
|
||||||
position = Vector2(-48, -46)
|
position = Vector2(-48, -46)
|
||||||
|
@ -77,6 +78,8 @@ offset = Vector2(50, 150)
|
||||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||||
|
|
||||||
[node name="InfoWindow" parent="CanvasLayer" instance=ExtResource("7_f4xfy")]
|
[node name="InfoWindow" parent="CanvasLayer" instance=ExtResource("7_f4xfy")]
|
||||||
|
visible = false
|
||||||
|
pivot_offset = Vector2(170, 129)
|
||||||
|
|
||||||
[node name="BuildingMenu" parent="CanvasLayer" instance=ExtResource("7_hnxcf")]
|
[node name="BuildingMenu" parent="CanvasLayer" instance=ExtResource("7_hnxcf")]
|
||||||
|
|
||||||
|
|
|
@ -10,9 +10,9 @@ anchor_left = 0.5
|
||||||
anchor_top = 0.5
|
anchor_top = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
offset_left = -54.5
|
offset_left = -33.0
|
||||||
offset_top = 30.0
|
offset_top = 30.0
|
||||||
offset_right = 54.5
|
offset_right = 33.0
|
||||||
offset_bottom = 70.0
|
offset_bottom = 70.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
@ -20,15 +20,57 @@ theme = ExtResource("1_5kjyf")
|
||||||
script = ExtResource("2_d6ufs")
|
script = ExtResource("2_d6ufs")
|
||||||
|
|
||||||
[node name="ColorRect2" type="ColorRect" parent="."]
|
[node name="ColorRect2" type="ColorRect" parent="."]
|
||||||
|
self_modulate = Color(1, 1, 1, 0.647059)
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 4
|
anchors_preset = 4
|
||||||
anchor_top = 0.5
|
anchor_top = 0.5
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
offset_top = -10.0
|
offset_top = -8.0
|
||||||
offset_right = 20.0
|
offset_right = 16.0
|
||||||
offset_bottom = 10.0
|
offset_bottom = 8.0
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
color = Color(1, 0.419608, 0.447059, 1)
|
color = Color(0, 0, 0, 1)
|
||||||
|
|
||||||
|
[node name="RichTextLabel" type="RichTextLabel" parent="ColorRect2"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = 2.0
|
||||||
|
offset_top = 6.0
|
||||||
|
offset_bottom = 2.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "[center]-"
|
||||||
|
|
||||||
|
[node name="ColorRect3" type="ColorRect" parent="."]
|
||||||
|
self_modulate = Color(1, 1, 1, 0.647059)
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 6
|
||||||
|
anchor_left = 1.0
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_left = -16.0
|
||||||
|
offset_top = -8.0
|
||||||
|
offset_bottom = 8.0
|
||||||
|
grow_horizontal = 0
|
||||||
|
grow_vertical = 2
|
||||||
|
color = Color(0, 0, 0, 1)
|
||||||
|
|
||||||
|
[node name="RichTextLabel" type="RichTextLabel" parent="ColorRect3"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = 2.0
|
||||||
|
offset_top = 6.0
|
||||||
|
offset_bottom = 2.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "[center]+"
|
||||||
|
|
||||||
[node name="RichTextLabel" type="RichTextLabel" parent="."]
|
[node name="RichTextLabel" type="RichTextLabel" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
|
@ -38,24 +80,10 @@ anchor_top = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
offset_left = -36.0
|
offset_left = -36.0
|
||||||
offset_top = -4.0
|
offset_top = -3.0
|
||||||
offset_right = 36.0
|
offset_right = 36.0
|
||||||
offset_bottom = 20.0
|
offset_bottom = 21.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
bbcode_enabled = true
|
bbcode_enabled = true
|
||||||
text = "[center]X/X"
|
text = "[center]X/X"
|
||||||
|
|
||||||
[node name="ColorRect3" type="ColorRect" parent="."]
|
|
||||||
layout_mode = 1
|
|
||||||
anchors_preset = 6
|
|
||||||
anchor_left = 1.0
|
|
||||||
anchor_top = 0.5
|
|
||||||
anchor_right = 1.0
|
|
||||||
anchor_bottom = 0.5
|
|
||||||
offset_left = -20.0
|
|
||||||
offset_top = -10.0
|
|
||||||
offset_bottom = 10.0
|
|
||||||
grow_horizontal = 0
|
|
||||||
grow_vertical = 2
|
|
||||||
color = Color(0.168627, 0.745098, 0.313726, 1)
|
|
||||||
|
|
BIN
button.aseprite
Normal file
BIN
button.aseprite
Normal file
Binary file not shown.
BIN
button.png
Normal file
BIN
button.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 135 B |
34
button.png.import
Normal file
34
button.png.import
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cpawfy44acsxc"
|
||||||
|
path="res://.godot/imported/button.png-234620e182281afdeb4aab4d2ed4f8a7.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://button.png"
|
||||||
|
dest_files=["res://.godot/imported/button.png-234620e182281afdeb4aab4d2ed4f8a7.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
|
@ -21,6 +21,30 @@ func _on_fire(_data):
|
||||||
sprite_2d.scale = Vector2.ONE * 1.25 * 0.156
|
sprite_2d.scale = Vector2.ONE * 1.25 * 0.156
|
||||||
|
|
||||||
|
|
||||||
|
func _on_release():
|
||||||
|
var overlapping_areas = mouse_control.get_overlapping_areas()
|
||||||
|
overlapping_areas.sort_custom(func(a, b):
|
||||||
|
return a.z_index > b.z_index
|
||||||
|
)
|
||||||
|
|
||||||
|
for area in overlapping_areas:
|
||||||
|
if area.has_method("_on_released"):
|
||||||
|
var current_node = area
|
||||||
|
var hidden = false
|
||||||
|
while current_node:
|
||||||
|
if "modulate" in current_node:
|
||||||
|
if current_node.modulate.a < 1:
|
||||||
|
hidden = true
|
||||||
|
break
|
||||||
|
current_node = current_node.get_parent()
|
||||||
|
|
||||||
|
if hidden:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if not area._on_released():
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
func _on_click():
|
func _on_click():
|
||||||
var overlapping_areas = mouse_control.get_overlapping_areas()
|
var overlapping_areas = mouse_control.get_overlapping_areas()
|
||||||
overlapping_areas.sort_custom(func(a, b):
|
overlapping_areas.sort_custom(func(a, b):
|
||||||
|
@ -69,6 +93,8 @@ func _on_rclick():
|
||||||
|
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
|
if Input.is_action_just_released("lclick"):
|
||||||
|
_on_release()
|
||||||
if Input.is_action_just_pressed("lclick"):
|
if Input.is_action_just_pressed("lclick"):
|
||||||
_on_click()
|
_on_click()
|
||||||
if Input.is_action_just_pressed("rclick"):
|
if Input.is_action_just_pressed("rclick"):
|
||||||
|
|
|
@ -5,6 +5,7 @@ signal clicked
|
||||||
signal hovered
|
signal hovered
|
||||||
signal unhovered
|
signal unhovered
|
||||||
signal rclicked
|
signal rclicked
|
||||||
|
signal released
|
||||||
|
|
||||||
@export var passthrough = false
|
@export var passthrough = false
|
||||||
|
|
||||||
|
@ -18,6 +19,10 @@ func _on_clicked():
|
||||||
clicked.emit()
|
clicked.emit()
|
||||||
return passthrough
|
return passthrough
|
||||||
|
|
||||||
|
func _on_released():
|
||||||
|
released.emit()
|
||||||
|
return passthrough
|
||||||
|
|
||||||
func _on_rclicked():
|
func _on_rclicked():
|
||||||
rclicked.emit()
|
rclicked.emit()
|
||||||
return passthrough
|
return passthrough
|
||||||
|
|
|
@ -1,11 +1,28 @@
|
||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
|
var window_tween
|
||||||
|
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
pass # Replace with function body.
|
Triggerer.listen("show_info", _show_info_window)
|
||||||
|
Triggerer.listen("hide_info", _hide_info_window)
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
func _show_info_window(data):
|
||||||
func _process(delta: float) -> void:
|
visible = true
|
||||||
pass
|
|
||||||
|
if window_tween:
|
||||||
|
window_tween.kill()
|
||||||
|
|
||||||
|
window_tween = create_tween()
|
||||||
|
window_tween.set_ease(Tween.EASE_OUT)
|
||||||
|
window_tween.set_trans(Tween.TRANS_BACK)
|
||||||
|
window_tween.tween_property(self, "scale", Vector2.ONE, 1)
|
||||||
|
|
||||||
|
|
||||||
|
func _hide_info_window(_data):
|
||||||
|
if window_tween:
|
||||||
|
window_tween.kill()
|
||||||
|
|
||||||
|
window_tween = create_tween()
|
||||||
|
window_tween.tween_property(self, "scale", Vector2.ZERO, 1)
|
||||||
|
|
42
tile_map.gd
42
tile_map.gd
|
@ -2,7 +2,8 @@ extends TileMap
|
||||||
|
|
||||||
var GridSize = 33
|
var GridSize = 33
|
||||||
var Dic = {}
|
var Dic = {}
|
||||||
var Building_Mode: bool = false
|
var Building_Mode := false
|
||||||
|
var Drag_Mode := false
|
||||||
|
|
||||||
func generate_percentage(percentages: Array):
|
func generate_percentage(percentages: Array):
|
||||||
var array_length = 0
|
var array_length = 0
|
||||||
|
@ -26,6 +27,9 @@ func abs(num: int):
|
||||||
return num
|
return num
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
|
Triggerer.listen("select_building", select_building)
|
||||||
|
Triggerer.listen("drag_building", drag_building)
|
||||||
|
|
||||||
for x in GridSize:
|
for x in GridSize:
|
||||||
for y in GridSize:
|
for y in GridSize:
|
||||||
var layer_number: int
|
var layer_number: int
|
||||||
|
@ -72,6 +76,9 @@ func _ready():
|
||||||
}
|
}
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
|
if Input.is_action_just_released("lclick"):
|
||||||
|
release_mouse()
|
||||||
|
|
||||||
if Building_Mode:
|
if Building_Mode:
|
||||||
var tile = local_to_map(get_global_mouse_position())
|
var tile = local_to_map(get_global_mouse_position())
|
||||||
|
|
||||||
|
@ -85,13 +92,38 @@ func _process(delta):
|
||||||
|
|
||||||
|
|
||||||
func _on_mouse_handler_clicked():
|
func _on_mouse_handler_clicked():
|
||||||
|
print("TEST")
|
||||||
if Building_Mode:
|
if Building_Mode:
|
||||||
var tile = local_to_map(get_global_mouse_position())
|
place_building()
|
||||||
Dic[str(tile)]["Placed"] = true
|
|
||||||
|
|
||||||
|
|
||||||
func _on_mouse_handler_rclicked():
|
func select_building(data):
|
||||||
Building_Mode = !Building_Mode
|
Building_Mode = true
|
||||||
|
for x in GridSize:
|
||||||
|
for y in GridSize:
|
||||||
|
if !Dic[str(Vector2(x,y))].get("Placed"):
|
||||||
|
erase_cell(Dic[str(Vector2(x,y))].get("Layer"), Vector2(x,y))
|
||||||
|
|
||||||
|
|
||||||
|
func drag_building(data):
|
||||||
|
Building_Mode = true
|
||||||
|
Drag_Mode = true
|
||||||
|
|
||||||
|
|
||||||
|
func release_mouse():
|
||||||
|
if Drag_Mode and Building_Mode:
|
||||||
|
place_building()
|
||||||
|
Drag_Mode = false
|
||||||
|
|
||||||
|
|
||||||
|
func place_building():
|
||||||
|
var tile = local_to_map(get_global_mouse_position())
|
||||||
|
Building_Mode = false
|
||||||
|
Dic[str(tile)]["Placed"] = true
|
||||||
|
|
||||||
|
|
||||||
|
func _on_mouse_handler_rclicked():
|
||||||
|
Building_Mode = false
|
||||||
for x in GridSize:
|
for x in GridSize:
|
||||||
for y in GridSize:
|
for y in GridSize:
|
||||||
if !Dic[str(Vector2(x,y))].get("Placed"):
|
if !Dic[str(Vector2(x,y))].get("Placed"):
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
[gd_scene load_steps=3 format=3 uid="uid://b7o2i7tgirg64"]
|
[gd_scene load_steps=5 format=3 uid="uid://b7o2i7tgirg64"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://ui/building_icon.gd" id="1_6qgij"]
|
[ext_resource type="Script" path="res://ui/building_icon.gd" id="1_6qgij"]
|
||||||
[ext_resource type="Texture2D" uid="uid://c3t66sxwk078m" path="res://parts/buildings/images/essencecompressor.png" id="1_62uie"]
|
[ext_resource type="Texture2D" uid="uid://c3t66sxwk078m" path="res://parts/buildings/images/essencecompressor.png" id="1_62uie"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dykc1mgg5uopw" path="res://components/Cursor/MouseHandler.tscn" id="3_tf3sl"]
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_0bdxp"]
|
||||||
|
|
||||||
[node name="BuildingIcon" type="ColorRect"]
|
[node name="BuildingIcon" type="ColorRect"]
|
||||||
custom_minimum_size = Vector2(32, 32)
|
custom_minimum_size = Vector2(32, 32)
|
||||||
|
@ -21,3 +24,14 @@ offset_bottom = 24.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
texture = ExtResource("1_62uie")
|
texture = ExtResource("1_62uie")
|
||||||
|
|
||||||
|
[node name="MouseHandler" parent="." instance=ExtResource("3_tf3sl")]
|
||||||
|
position = Vector2(16, 17)
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="MouseHandler"]
|
||||||
|
shape = SubResource("RectangleShape2D_0bdxp")
|
||||||
|
|
||||||
|
[connection signal="clicked" from="MouseHandler" to="." method="_on_mouse_handler_clicked"]
|
||||||
|
[connection signal="hovered" from="MouseHandler" to="." method="_on_mouse_handler_hovered"]
|
||||||
|
[connection signal="released" from="MouseHandler" to="." method="_on_mouse_handler_released"]
|
||||||
|
[connection signal="unhovered" from="MouseHandler" to="." method="_on_mouse_handler_unhovered"]
|
||||||
|
|
|
@ -1,3 +1,28 @@
|
||||||
extends ColorRect
|
extends ColorRect
|
||||||
|
|
||||||
|
var key
|
||||||
|
var clicked = false
|
||||||
|
|
||||||
|
|
||||||
@onready var texture_rect: TextureRect = $TextureRect
|
@onready var texture_rect: TextureRect = $TextureRect
|
||||||
|
|
||||||
|
|
||||||
|
func _on_mouse_handler_clicked() -> void:
|
||||||
|
clicked = true
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func _on_mouse_handler_hovered() -> void:
|
||||||
|
pass # Replace with function body.
|
||||||
|
|
||||||
|
|
||||||
|
func _on_mouse_handler_unhovered() -> void:
|
||||||
|
if clicked:
|
||||||
|
Triggerer.trigger("drag_building", { "key": key })
|
||||||
|
clicked = false
|
||||||
|
|
||||||
|
|
||||||
|
func _on_mouse_handler_released() -> void:
|
||||||
|
if clicked:
|
||||||
|
Triggerer.trigger("select_building", { "key": key })
|
||||||
|
clicked = false
|
||||||
|
|
|
@ -40,6 +40,7 @@ func swap_to_tab(index):
|
||||||
for i in range(0, icons.size()):
|
for i in range(0, icons.size()):
|
||||||
if i < filtered_buildings.size():
|
if i < filtered_buildings.size():
|
||||||
icons[i].visible = true
|
icons[i].visible = true
|
||||||
|
icons[i].key = filtered_buildings[i]
|
||||||
icons[i].texture_rect.texture = Data.data.images[filtered_buildings[i]]
|
icons[i].texture_rect.texture = Data.data.images[filtered_buildings[i]]
|
||||||
|
|
||||||
if i > 0:
|
if i > 0:
|
||||||
|
|
Loading…
Reference in a new issue