Added management of overlapped item in room 9.

This commit is contained in:
Julian Murgia
2021-02-03 22:40:50 +01:00
parent 89d52c32f8
commit 4f2977ea98
9 changed files with 89 additions and 123 deletions

View File

@@ -173,13 +173,13 @@ func manage_input(viewport : Viewport, event : InputEvent, shape_idx : int):
if event.doubleclick:
if event.button_index == BUTTON_LEFT:
emit_signal("mouse_double_left_clicked_item", global_id, event)
emit_signal("mouse_double_left_clicked_item", self, event)
else:
if event.is_pressed():
if event.button_index == BUTTON_LEFT:
emit_signal("mouse_left_clicked_item", global_id, event)
emit_signal("mouse_left_clicked_item", self, event)
elif event.button_index == BUTTON_RIGHT:
emit_signal("mouse_right_clicked_item", global_id, event)
emit_signal("mouse_right_clicked_item", self, event)
func _on_mouse_entered():

View File

@@ -60,7 +60,7 @@ func _on_mouse_entered_item(item : ESCItem) -> void:
printt("Item focused : ", item.global_id)
if !hover_stack.empty():
if item.z_index < hover_stack.back().z_index:
if item.z_index > hover_stack.back().z_index:
hover_stack.insert(hover_stack.size()-1, item)
else:
hover_stack.push_back(item)
@@ -82,17 +82,18 @@ func _on_mouse_exited_item(item : ESCItem) -> void:
escoria.main.current_scene.game.element_focused(hotspot_focused)
func _on_mouse_left_clicked_item(item_global_id : String, event : InputEvent) -> void:
printt("Item left clicked", item_global_id, event)
escoria.main.current_scene.game.left_click_on_item(item_global_id, event)
func _on_mouse_left_clicked_item(item : ESCItem, event : InputEvent) -> void:
if hover_stack.empty() or hover_stack.back() == item:
printt("Item left clicked", item.global_id, event)
escoria.main.current_scene.game.left_click_on_item(item.global_id, event)
func _on_mouse_left_double_clicked_item(item_global_id : String, event : InputEvent) -> void:
printt("Item left double clicked", item_global_id, event)
escoria.main.current_scene.game.left_double_click_on_item(item_global_id, event)
func _on_mouse_right_clicked_item(item_global_id : String, event : InputEvent) -> void:
printt("Item right clicked", item_global_id, event)
escoria.main.current_scene.game.right_click_on_item(item_global_id, event)
func _on_mouse_left_double_clicked_item(item : ESCItem, event : InputEvent) -> void:
printt("Item left double clicked", item.global_id, event)
escoria.main.current_scene.game.left_double_click_on_item(item.global_id, event)
func _on_mouse_right_clicked_item(item : ESCItem, event : InputEvent) -> void:
printt("Item right clicked", item.global_id, event)
escoria.main.current_scene.game.right_click_on_item(item.global_id, event)
##################################################################################

View File

@@ -49,6 +49,10 @@ func add_new_item_by_id(item_id : String) -> void:
escoria.report_errors("inventory_ui.gd:add_new_item_by_id()",
["Item global id '"+ item_id + "' does not exist.",
"Check item's id in ESCORIA_ALL_ITEMS scene."])
if !all_items.get_inventory_item(item_id):
escoria.report_errors("inventory_ui.gd:add_new_item_by_id()",
["Item global id '"+ item_id + "' doesn't have corresponding inventory item.",
"Check item's id in ESCORIA_ALL_ITEMS scene."])
var item_inventory_button = all_items.get_inventory_item(item_id).duplicate()
items_ids_in_inventory[item_id] = item_inventory_button
get_node(items_container).add_item(item_inventory_button)

View File

@@ -1,29 +1,31 @@
[gd_scene load_steps=6 format=2]
[gd_scene load_steps=7 format=2]
[ext_resource path="res://game/items/escitems/empty_sheet_escitem.tscn" type="PackedScene" id=1]
[ext_resource path="res://game/items/escitems/pen_escitem.tscn" type="PackedScene" id=2]
[ext_resource path="res://game/items/escitems/wrench_escitem.tscn" type="PackedScene" id=3]
[ext_resource path="res://game/items/escitems/filled_sheet_escitem.tscn" type="PackedScene" id=4]
[ext_resource path="res://addons/escoria-core/game/core-scripts/items_inventory.gd" type="Script" id=5]
[ext_resource path="res://game/items/escitems/bottle_escitem.tscn" type="PackedScene" id=6]
[node name="ESCORIA_ALL_ITEMS" type="Node2D"]
visible = false
script = ExtResource( 5 )
[node name="empty_sheet" parent="." instance=ExtResource( 1 )]
dialog_color = Color( 1, 1, 1, 1 )
interact_positions = {
"default": Vector2( 0, 0 )
}
[node name="filled_sheet" parent="." instance=ExtResource( 4 )]
position = Vector2( -29.7823, 133.569 )
dialog_color = Color( 1, 1, 1, 1 )
interact_positions = {
"default": Vector2( -29.7823, 133.569 )
}
[node name="pen" parent="." instance=ExtResource( 2 )]
position = Vector2( 136.277, 13.5374 )
dialog_color = Color( 1, 1, 1, 1 )
interact_positions = {
"default": Vector2( 136.277, 13.5374 )
}
@@ -33,3 +35,9 @@ position = Vector2( 293.311, 2.70747 )
interact_positions = {
"default": Vector2( 293.311, 2.70747 )
}
[node name="bottle" parent="." instance=ExtResource( 6 )]
position = Vector2( 59.4604, 167.678 )
interact_positions = {
"default": Vector2( 0, 0 )
}

8
game/items/escitems/bottle.esc Executable file
View File

@@ -0,0 +1,8 @@
:look
say player "It's a bottle."
stop
:pickup
inventory_add r9_bottle true
set_active r9_bottle false

View File

@@ -0,0 +1,28 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://addons/escoria-core/game/core-scripts/escitem.gd" type="Script" id=1]
[ext_resource path="res://game/items/textures/genericItem_color_127.png" type="Texture" id=2]
[ext_resource path="res://game/items/inventory/bottle_escinventoryitem.tscn" type="PackedScene" id=3]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 28.3873, 74.7806 )
[node name="bottle" type="Area2D"]
z_index = 1
script = ExtResource( 1 )
global_id = "r9_bottle"
esc_script = "res://game/items/escitems/bottle.esc"
tooltip_name = "Bottle"
default_action = "pickup"
use_from_inventory_only = true
inventory_item_scene_file = ExtResource( 3 )
dialog_color = Color( 1, 1, 1, 1 )
interact_positions = {
"default": Vector2( 59.3937, 58.8658 )
}
[node name="Sprite" type="Sprite" parent="."]
texture = ExtResource( 2 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource( 1 )

View File

@@ -0,0 +1,14 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://game/items/textures/genericItem_color_127.png" type="Texture" id=1]
[ext_resource path="res://addons/escoria-core/game/core-scripts/inventory_item.gd" type="Script" id=2]
[node name="empty_sheet" type="TextureButton"]
margin_right = 50.0
margin_bottom = 140.0
texture_normal = ExtResource( 1 )
script = ExtResource( 2 )
__meta__ = {
"_edit_use_anchors_": false
}
global_id = "r9_bottle"

View File

@@ -1,9 +1,7 @@
[gd_scene load_steps=7 format=2]
[ext_resource path="res://addons/escoria-core/game/core-scripts/escitem.gd" type="Script" id=1]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 20.13, 26.023 )
[ext_resource path="res://game/items/escitems/bottle_escitem.tscn" type="PackedScene" id=2]
[sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 66.4415, 154.457 )
@@ -47,7 +45,7 @@ tracks/2/keys = {
"values": [ false ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("statue:visible")
tracks/3/path = NodePath("bottle:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
@@ -98,7 +96,7 @@ tracks/2/keys = {
"values": [ false ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("statue:visible")
tracks/3/path = NodePath("bottle:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
@@ -149,7 +147,7 @@ tracks/2/keys = {
"values": [ true ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("statue:visible")
tracks/3/path = NodePath("bottle:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
@@ -221,26 +219,16 @@ default_color = Color( 0.4, 0.501961, 1, 1 )
color = Color( 0.4, 0.501961, 1, 1 )
polygon = PoolVector2Array( 1.07718, 7.2891, -37.6216, 23.335, -37.6216, 328.206, 2.02106, 302.722 )
[node name="statue" type="Area2D" parent="."]
[node name="bottle" parent="." instance=ExtResource( 2 )]
visible = false
position = Vector2( 1.12247, 0 )
z_index = 1
script = ExtResource( 1 )
global_id = "statue"
tooltip_name = "Statue"
dialog_color = Color( 1, 1, 1, 1 )
position = Vector2( 51.1535, 45.7845 )
scale = Vector2( 0.507, 0.507 )
interact_positions = {
"default": Vector2( 59.3937, 58.8658 )
"default": Vector2( 51.1535, 45.7845 )
}
[node name="object" type="Polygon2D" parent="statue"]
position = Vector2( 1.18921, 7.13524 )
color = Color( 0.662745, 0.529412, 0, 1 )
polygon = PoolVector2Array( 52.338, 36.2829, 57.6774, 26.2716, 62.3493, 36.9503, 70.3583, 35.6154, 70.692, 27.2727, 76.3651, 26.6053, 76.3651, 29.9424, 72.9964, 30.7421, 72.9964, 39.2744, 61.4878, 45.624, 69.2264, 73.602, 43.4311, 73.4035, 53.7492, 45.4256, 41.4468, 39.8697, 41.6453, 31.139, 37.8752, 30.3453, 37.6768, 26.5752, 44.4232, 27.7657, 44.4232, 34.1154 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="statue"]
position = Vector2( 58.2712, 58.8658 )
shape = SubResource( 1 )
[node name="Position2D" type="Position2D" parent="bottle"]
position = Vector2( 298.463, 596.926 )
[node name="CollisionPolygon2D" type="CollisionShape2D" parent="."]
position = Vector2( 64.2172, 153.408 )

View File

@@ -1,85 +0,0 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://addons/escoria-core/game/core-scripts/escitem.gd" type="Script" id=1]
[sub_resource type="Animation" id=1]
resource_name = "state_round"
tracks/0/type = "value"
tracks/0/path = NodePath("square:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("round:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ true ]
}
[sub_resource type="Animation" id=2]
resource_name = "state_square"
tracks/0/type = "value"
tracks/0/path = NodePath("square:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ true ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("round:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
}
[node name="item_wall" type="Area2D"]
script = ExtResource( 1 )
dialog_color = Color( 1, 1, 1, 1 )
interact_positions = {
"default": Vector2( 0, 0 )
}
[node name="square" type="Line2D" parent="."]
points = PoolVector2Array( 531, 527.828, 532, 483.828, 532.586, 445.745, 533.262, 401.771, 534, 353.828, 575.992, 355.093, 617.954, 356.357, 660.945, 357.652, 700, 358.828, 700.786, 402.832, 701.536, 444.836, 702.286, 486.841, 703, 526.828, 659.007, 526.574, 619.997, 526.348, 574.998, 526.088, 530, 525.828 )
__meta__ = {
"_editor_description_": ""
}
[node name="round" type="Line2D" parent="."]
visible = false
points = PoolVector2Array( 559.845, 508.706, 537.622, 482.513, 532.586, 445.745, 537.622, 414.255, 551.908, 384.095, 578.101, 366.633, 617.954, 356.357, 659.058, 363.458, 677.313, 375.364, 692.393, 399.175, 701.918, 441.241, 694.774, 484.101, 677.313, 504.737, 652.708, 518.23, 622.548, 526.167, 586.038, 518.23, 558.258, 506.324 )
__meta__ = {
"_editor_description_": ""
}
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."]
position = Vector2( 0, 265.2 )
polygon = PoolVector2Array( 528, 85, 529, 264, 708, 263, 706, 85 )
[node name="animation" type="AnimationPlayer" parent="."]
anims/state_round = SubResource( 1 )
anims/state_square = SubResource( 2 )