mirror of
https://github.com/git-learning-game/oh-my-git.git
synced 2024-11-22 16:20:19 +01:00
drag and drop files between invetory and world
caution: breaks card drag and drop
This commit is contained in:
parent
c1fd2e0f45
commit
abbfc4f1d6
7 changed files with 59 additions and 9 deletions
|
@ -30,13 +30,19 @@ func _mouse_exited(_area):
|
||||||
func _input(event):
|
func _input(event):
|
||||||
if event is InputEventMouseButton:
|
if event is InputEventMouseButton:
|
||||||
if event.button_index == BUTTON_LEFT and !event.pressed:
|
if event.button_index == BUTTON_LEFT and !event.pressed:
|
||||||
if hovered:
|
if dragged:
|
||||||
if highlighted and game.dragged_object:
|
for area in get_tree().get_nodes_in_group("drop_areas"):
|
||||||
game.dragged_object.dropped_on(get_parent_with_type())
|
if area.hovered:
|
||||||
|
if area.highlighted and game.dragged_object:
|
||||||
|
game.dragged_object.dropped_on(area.get_parent_with_type())
|
||||||
|
_turn_off_highlights()
|
||||||
dragged = false
|
dragged = false
|
||||||
|
|
||||||
if event.button_index == BUTTON_LEFT and event.pressed and hovered:
|
if event.button_index == BUTTON_LEFT and event.pressed and hovered:
|
||||||
if get_parent().type == "file" and get_parent().item_type == "wd":
|
if get_parent().type == "file" and get_parent().item_type == "wd":
|
||||||
dragged = true
|
dragged = true
|
||||||
|
game.dragged_object = get_parent_with_type()
|
||||||
|
_turn_on_highlights()
|
||||||
|
|
||||||
func _set_highlighted(new_highlighted):
|
func _set_highlighted(new_highlighted):
|
||||||
highlighted = new_highlighted
|
highlighted = new_highlighted
|
||||||
|
@ -51,3 +57,16 @@ func get_parent_with_type():
|
||||||
func highlight(type):
|
func highlight(type):
|
||||||
if get_parent_with_type().type == type:
|
if get_parent_with_type().type == type:
|
||||||
_set_highlighted(true)
|
_set_highlighted(true)
|
||||||
|
|
||||||
|
func _turn_on_highlights():
|
||||||
|
var parent_type = get_parent_with_type().file_browser.type
|
||||||
|
var highlight_type = "inventory"
|
||||||
|
if parent_type == "inventory":
|
||||||
|
highlight_type = "world"
|
||||||
|
|
||||||
|
for area in get_tree().get_nodes_in_group("drop_areas"):
|
||||||
|
area.highlight(highlight_type)
|
||||||
|
|
||||||
|
func _turn_off_highlights():
|
||||||
|
for area in get_tree().get_nodes_in_group("drop_areas"):
|
||||||
|
area.highlighted = false
|
||||||
|
|
|
@ -8,6 +8,7 @@ enum FileBrowserMode {
|
||||||
|
|
||||||
export(String) var title setget _set_title
|
export(String) var title setget _set_title
|
||||||
export(FileBrowserMode) var mode = FileBrowserMode.WORKING_DIRECTORY setget _set_mode
|
export(FileBrowserMode) var mode = FileBrowserMode.WORKING_DIRECTORY setget _set_mode
|
||||||
|
export(String) var type = "world"
|
||||||
|
|
||||||
var shell
|
var shell
|
||||||
var commit setget _set_commit
|
var commit setget _set_commit
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
[gd_scene load_steps=4 format=2]
|
[gd_scene load_steps=5 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://scenes/file_browser.gd" type="Script" id=1]
|
[ext_resource path="res://scenes/file_browser.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://fonts/default.tres" type="DynamicFont" id=2]
|
[ext_resource path="res://fonts/default.tres" type="DynamicFont" id=2]
|
||||||
[ext_resource path="res://styles/theme.tres" type="Theme" id=3]
|
[ext_resource path="res://styles/theme.tres" type="Theme" id=3]
|
||||||
|
[ext_resource path="res://scenes/drop_area.tscn" type="PackedScene" id=4]
|
||||||
|
|
||||||
[node name="FileBrowser" type="Control" groups=[
|
[node name="FileBrowser" type="Control" groups=[
|
||||||
"editors",
|
"editors",
|
||||||
|
@ -124,5 +125,8 @@ __meta__ = {
|
||||||
[node name="PopupMenu" type="PopupMenu" parent="."]
|
[node name="PopupMenu" type="PopupMenu" parent="."]
|
||||||
margin_right = 20.0
|
margin_right = 20.0
|
||||||
margin_bottom = 20.0
|
margin_bottom = 20.0
|
||||||
|
|
||||||
|
[node name="DropArea" parent="." instance=ExtResource( 4 )]
|
||||||
|
position = Vector2( 121.101, 116.61 )
|
||||||
[connection signal="pressed" from="Panel/TextEdit/SaveButton" to="." method="save"]
|
[connection signal="pressed" from="Panel/TextEdit/SaveButton" to="." method="save"]
|
||||||
[connection signal="pressed" from="Panel/TextEdit/CloseButton" to="." method="close"]
|
[connection signal="pressed" from="Panel/TextEdit/CloseButton" to="." method="close"]
|
||||||
|
|
|
@ -111,3 +111,13 @@ func move(diff):
|
||||||
write_to_file()
|
write_to_file()
|
||||||
if held:
|
if held:
|
||||||
held.move(diff)
|
held.move(diff)
|
||||||
|
|
||||||
|
func dropped_on(other):
|
||||||
|
#if other is
|
||||||
|
print("other type:", other.type)
|
||||||
|
if other.type == "inventory":
|
||||||
|
file_browser.shell.run("take '%s'" % label)
|
||||||
|
else:
|
||||||
|
other.shell.run("drop '%s'" % label)
|
||||||
|
file_browser.update()
|
||||||
|
other.update()
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
[ext_resource path="res://scenes/drop_area.tscn" type="PackedScene" id=4]
|
[ext_resource path="res://scenes/drop_area.tscn" type="PackedScene" id=4]
|
||||||
|
|
||||||
[node name="Item" type="Node2D"]
|
[node name="Item" type="Node2D"]
|
||||||
|
z_index = 10
|
||||||
script = ExtResource( 3 )
|
script = ExtResource( 3 )
|
||||||
|
|
||||||
[node name="Sprite" type="Sprite" parent="."]
|
[node name="Sprite" type="Sprite" parent="."]
|
||||||
|
|
|
@ -18,6 +18,7 @@ onready var level_description = $Rows/Columns/RightSide/LevelInfo/LevelPanel/Tex
|
||||||
onready var level_congrats = $Rows/Columns/RightSide/LevelInfo/LevelPanel/Text/LevelCongrats
|
onready var level_congrats = $Rows/Columns/RightSide/LevelInfo/LevelPanel/Text/LevelCongrats
|
||||||
onready var cards = $Rows/Controls/Cards
|
onready var cards = $Rows/Controls/Cards
|
||||||
onready var file_browser = $Rows/Columns/RightSide/FileBrowser
|
onready var file_browser = $Rows/Columns/RightSide/FileBrowser
|
||||||
|
onready var inventory = $Rows/Columns/RightSide/Inventory
|
||||||
#onready var index = $Rows/Columns/RightSide/Index
|
#onready var index = $Rows/Columns/RightSide/Index
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
|
@ -46,6 +47,10 @@ func _ready():
|
||||||
load_chapter(current_chapter)
|
load_chapter(current_chapter)
|
||||||
file_browser.grab_focus()
|
file_browser.grab_focus()
|
||||||
|
|
||||||
|
inventory.shell = Shell.new()
|
||||||
|
inventory.shell.cd(game.tmp_prefix + "inventory")
|
||||||
|
|
||||||
|
|
||||||
func _input(event):
|
func _input(event):
|
||||||
if event.is_action_pressed("tab"):
|
if event.is_action_pressed("tab"):
|
||||||
print("ha")
|
print("ha")
|
||||||
|
|
|
@ -84,7 +84,7 @@ custom_constants/separation = 8
|
||||||
|
|
||||||
[node name="LevelInfo" type="VBoxContainer" parent="Rows/Columns/RightSide"]
|
[node name="LevelInfo" type="VBoxContainer" parent="Rows/Columns/RightSide"]
|
||||||
margin_right = 633.0
|
margin_right = 633.0
|
||||||
margin_bottom = 387.0
|
margin_bottom = 255.0
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
custom_constants/separation = 8
|
custom_constants/separation = 8
|
||||||
|
@ -149,7 +149,7 @@ __meta__ = {
|
||||||
[node name="LevelPanel" type="VBoxContainer" parent="Rows/Columns/RightSide/LevelInfo"]
|
[node name="LevelPanel" type="VBoxContainer" parent="Rows/Columns/RightSide/LevelInfo"]
|
||||||
margin_top = 47.0
|
margin_top = 47.0
|
||||||
margin_right = 633.0
|
margin_right = 633.0
|
||||||
margin_bottom = 387.0
|
margin_bottom = 255.0
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
[node name="LevelName" type="RichTextLabel" parent="Rows/Columns/RightSide/LevelInfo/LevelPanel"]
|
[node name="LevelName" type="RichTextLabel" parent="Rows/Columns/RightSide/LevelInfo/LevelPanel"]
|
||||||
|
@ -165,7 +165,7 @@ __meta__ = {
|
||||||
|
|
||||||
[node name="Text" type="Control" parent="Rows/Columns/RightSide/LevelInfo/LevelPanel"]
|
[node name="Text" type="Control" parent="Rows/Columns/RightSide/LevelInfo/LevelPanel"]
|
||||||
margin_right = 633.0
|
margin_right = 633.0
|
||||||
margin_bottom = 340.0
|
margin_bottom = 208.0
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
[node name="LevelDescription" type="RichTextLabel" parent="Rows/Columns/RightSide/LevelInfo/LevelPanel/Text"]
|
[node name="LevelDescription" type="RichTextLabel" parent="Rows/Columns/RightSide/LevelInfo/LevelPanel/Text"]
|
||||||
|
@ -194,11 +194,21 @@ __meta__ = {
|
||||||
[node name="FileBrowser" parent="Rows/Columns/RightSide" instance=ExtResource( 5 )]
|
[node name="FileBrowser" parent="Rows/Columns/RightSide" instance=ExtResource( 5 )]
|
||||||
anchor_right = 0.0
|
anchor_right = 0.0
|
||||||
anchor_bottom = 0.0
|
anchor_bottom = 0.0
|
||||||
margin_top = 395.0
|
margin_top = 263.0
|
||||||
|
margin_right = 633.0
|
||||||
|
margin_bottom = 518.0
|
||||||
|
size_flags_vertical = 3
|
||||||
|
title = "Current environment"
|
||||||
|
|
||||||
|
[node name="Inventory" parent="Rows/Columns/RightSide" instance=ExtResource( 5 )]
|
||||||
|
anchor_right = 0.0
|
||||||
|
anchor_bottom = 0.0
|
||||||
|
margin_top = 526.0
|
||||||
margin_right = 633.0
|
margin_right = 633.0
|
||||||
margin_bottom = 782.0
|
margin_bottom = 782.0
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
title = "Current environment"
|
title = "Current environment"
|
||||||
|
type = "inventory"
|
||||||
|
|
||||||
[node name="Controls" type="HBoxContainer" parent="Rows"]
|
[node name="Controls" type="HBoxContainer" parent="Rows"]
|
||||||
margin_top = 790.0
|
margin_top = 790.0
|
||||||
|
|
Loading…
Reference in a new issue