mirror of
https://github.com/git-learning-game/oh-my-git.git
synced 2024-11-22 16:20:19 +01:00
Item have a clear serialization interface
This commit is contained in:
parent
3167e5c76a
commit
e635efa796
5 changed files with 35 additions and 26 deletions
|
@ -7,8 +7,9 @@ Testlevel for 2d interactive files.
|
||||||
|
|
||||||
[setup]
|
[setup]
|
||||||
|
|
||||||
echo "x = 10
|
echo "x = 100
|
||||||
y = 5
|
y = 50" > apple
|
||||||
color = red" > apple
|
echo "x = 200
|
||||||
|
y = 50" > pear
|
||||||
git add .
|
git add .
|
||||||
git commit -m "An apple a day"
|
git commit -m "An apple a day"
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
|
2d
|
||||||
time-machine
|
time-machine
|
||||||
low-level
|
low-level
|
||||||
|
|
|
@ -19,13 +19,15 @@ onready var world = $Panel/Margin/Rows/World
|
||||||
onready var text_edit = $Panel/TextEdit
|
onready var text_edit = $Panel/TextEdit
|
||||||
onready var save_button = $Panel/TextEdit/SaveButton
|
onready var save_button = $Panel/TextEdit/SaveButton
|
||||||
onready var title_label = $Panel/Margin/Rows/Title
|
onready var title_label = $Panel/Margin/Rows/Title
|
||||||
onready var player = $Panel/Margin/Rows/World/You
|
#onready var player = $Panel/Margin/Rows/World/You
|
||||||
|
var player
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
update()
|
update()
|
||||||
_set_mode(mode)
|
_set_mode(mode)
|
||||||
_set_title(title)
|
_set_title(title)
|
||||||
$PopupMenu.add_item("New file", 1)
|
$PopupMenu.add_item("New file", 1)
|
||||||
|
#player.file_browser = self
|
||||||
|
|
||||||
func _input(event):
|
func _input(event):
|
||||||
if event.is_action_pressed("save"):
|
if event.is_action_pressed("save"):
|
||||||
|
@ -91,7 +93,6 @@ func update():
|
||||||
seed(item.label.hash())
|
seed(item.label.hash())
|
||||||
item.position = Vector2(rand_range(0, world.rect_size.x), rand_range(0, world.rect_size.y))
|
item.position = Vector2(rand_range(0, world.rect_size.x), rand_range(0, world.rect_size.y))
|
||||||
randomize()
|
randomize()
|
||||||
item.content = shell.run("cat " + file_path)
|
|
||||||
world.add_child(item)
|
world.add_child(item)
|
||||||
#visible = is_visible
|
#visible = is_visible
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
[gd_scene load_steps=5 format=2]
|
[gd_scene load_steps=4 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/item.tscn" type="PackedScene" id=6]
|
|
||||||
|
|
||||||
[node name="FileBrowser" type="Control" groups=[
|
[node name="FileBrowser" type="Control" groups=[
|
||||||
"editors",
|
"editors",
|
||||||
|
@ -77,9 +76,6 @@ margin_bottom = 1064.0
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
[node name="You" parent="Panel/Margin/Rows/World" instance=ExtResource( 6 )]
|
|
||||||
editable = false
|
|
||||||
|
|
||||||
[node name="TextEdit" type="TextEdit" parent="Panel"]
|
[node name="TextEdit" type="TextEdit" parent="Panel"]
|
||||||
visible = false
|
visible = false
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
|
|
|
@ -6,7 +6,9 @@ export(IconStatus) var status setget _set_status
|
||||||
export var label: String setget _set_label
|
export var label: String setget _set_label
|
||||||
var type = "file"
|
var type = "file"
|
||||||
export var editable = true
|
export var editable = true
|
||||||
var content setget _set_content
|
|
||||||
|
var attributes
|
||||||
|
|
||||||
var held
|
var held
|
||||||
var GRID_SIZE = 60
|
var GRID_SIZE = 60
|
||||||
var file_browser
|
var file_browser
|
||||||
|
@ -17,10 +19,27 @@ onready var status_icon = $Status
|
||||||
func _ready():
|
func _ready():
|
||||||
_set_label(label)
|
_set_label(label)
|
||||||
_set_status(status)
|
_set_status(status)
|
||||||
if not editable:
|
|
||||||
type = "nothing"
|
read_from_file()
|
||||||
|
# if not editable:
|
||||||
|
# type = "nothing"
|
||||||
#$PopupMenu.add_item("Delete file", 0)
|
#$PopupMenu.add_item("Delete file", 0)
|
||||||
|
|
||||||
|
func read_from_file():
|
||||||
|
print(file_browser)
|
||||||
|
attributes = helpers.parse(file_browser.shell.run("cat '%s'" % label))
|
||||||
|
position.x = int(attributes["x"])
|
||||||
|
position.y = int(attributes["y"])
|
||||||
|
|
||||||
|
func write_to_file():
|
||||||
|
attributes["x"] = str(position.x)
|
||||||
|
attributes["y"] = str(position.y)
|
||||||
|
|
||||||
|
var content = ""
|
||||||
|
for key in attributes:
|
||||||
|
content += "%s = %s\n" % [key, attributes[key]]
|
||||||
|
file_browser.shell.run("echo \"%s\" > %s" % [content, label])
|
||||||
|
|
||||||
func _set_label(new_label):
|
func _set_label(new_label):
|
||||||
label = new_label
|
label = new_label
|
||||||
if label_node:
|
if label_node:
|
||||||
|
@ -55,18 +74,9 @@ func _set_status(new_status):
|
||||||
status_icon.texture = null
|
status_icon.texture = null
|
||||||
|
|
||||||
status = new_status
|
status = new_status
|
||||||
|
|
||||||
func _set_content(new_content):
|
|
||||||
content = new_content
|
|
||||||
var attributes = helpers.parse(content)
|
|
||||||
if attributes.has("x") and attributes.has("y"):
|
|
||||||
position.x = int(attributes["x"]) * GRID_SIZE
|
|
||||||
position.y = int(attributes["y"]) * GRID_SIZE
|
|
||||||
|
|
||||||
func move(direction):
|
func move(diff):
|
||||||
position += direction * GRID_SIZE
|
position += diff
|
||||||
if label != "":
|
write_to_file()
|
||||||
file_browser.shell.run("echo \"x = "+ String(position.x / GRID_SIZE) +"\ny = "+ String(position.y / GRID_SIZE) +"\" > " + label)
|
|
||||||
if held:
|
if held:
|
||||||
held.move(direction)
|
held.move(diff)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue