mirror of
https://github.com/git-learning-game/oh-my-git.git
synced 2024-11-03 19:04:40 +01:00
Extend the hint system to explain GUI elements
This commit is contained in:
parent
d258f812ce
commit
e87e29a3ed
9 changed files with 83 additions and 28 deletions
|
@ -54,6 +54,9 @@ func draw(ids):
|
||||||
|
|
||||||
arrange_cards()
|
arrange_cards()
|
||||||
|
|
||||||
|
if ids.size() > 0:
|
||||||
|
game.notify("These are your cards! Drag them to highlighted areas to play them!", self, "cards")
|
||||||
|
|
||||||
func arrange_cards():
|
func arrange_cards():
|
||||||
var t = Timer.new()
|
var t = Timer.new()
|
||||||
t.wait_time = 0.05
|
t.wait_time = 0.05
|
||||||
|
|
|
@ -80,6 +80,9 @@ func update():
|
||||||
item.repository = repository
|
item.repository = repository
|
||||||
item.connect("clicked", self, "item_clicked")
|
item.connect("clicked", self, "item_clicked")
|
||||||
grid.add_child(item)
|
grid.add_child(item)
|
||||||
|
|
||||||
|
if files.size() > 0:
|
||||||
|
game.notify("Click on these files to edit them!", self, "file-browser")
|
||||||
|
|
||||||
if false:
|
if false:
|
||||||
match mode:
|
match mode:
|
||||||
|
|
|
@ -28,7 +28,7 @@ func copy_script_to_game_env(name):
|
||||||
global_shell.run("chmod u+x '%s'" % (tmp_prefix + name))
|
global_shell.run("chmod u+x '%s'" % (tmp_prefix + name))
|
||||||
|
|
||||||
func _initial_state():
|
func _initial_state():
|
||||||
return {"history": [], "solved_levels": []}
|
return {"history": [], "solved_levels": [], "received_hints": []}
|
||||||
|
|
||||||
func save_state():
|
func save_state():
|
||||||
var savegame = File.new()
|
var savegame = File.new()
|
||||||
|
@ -56,8 +56,19 @@ func create_file_in_game_env(filename, content):
|
||||||
# Quoted HERE doc doesn't do any substitutions inside.
|
# Quoted HERE doc doesn't do any substitutions inside.
|
||||||
global_shell.run("cat > '%s' <<'HEREHEREHERE'\n%s\nHEREHEREHERE" % [filename, content])
|
global_shell.run("cat > '%s' <<'HEREHEREHERE'\n%s\nHEREHEREHERE" % [filename, content])
|
||||||
|
|
||||||
func notify(text):
|
func notify(text, target=null, hint_slug=null):
|
||||||
print(text)
|
if hint_slug:
|
||||||
|
if not state.has("received_hints"):
|
||||||
|
state["received_hints"] = []
|
||||||
|
if hint_slug in state["received_hints"]:
|
||||||
|
return
|
||||||
|
|
||||||
var notification = preload("res://scenes/notification.tscn").instance()
|
var notification = preload("res://scenes/notification.tscn").instance()
|
||||||
notification.text = text
|
notification.text = text
|
||||||
get_tree().root.call_deferred("add_child", notification)
|
if not target:
|
||||||
|
target = get_tree().root
|
||||||
|
target.call_deferred("add_child", notification)
|
||||||
|
|
||||||
|
if hint_slug:
|
||||||
|
state["received_hints"].push_back(hint_slug)
|
||||||
|
save_state()
|
||||||
|
|
|
@ -113,7 +113,7 @@ func load_level(level_id):
|
||||||
|
|
||||||
# chapter_select.select(game.current_chapter)
|
# chapter_select.select(game.current_chapter)
|
||||||
# level_select.select(game.current_level)
|
# level_select.select(game.current_level)
|
||||||
|
#game.notify("These are your cards!", cards)
|
||||||
|
|
||||||
func reload_level():
|
func reload_level():
|
||||||
cards.load_card_store()
|
cards.load_card_store()
|
||||||
|
|
|
@ -80,6 +80,7 @@ func type_set(new_type):
|
||||||
$Sprite.texture = preload("res://nodes/tree.svg")
|
$Sprite.texture = preload("res://nodes/tree.svg")
|
||||||
"commit":
|
"commit":
|
||||||
$Sprite.texture = preload("res://nodes/commit.svg")
|
$Sprite.texture = preload("res://nodes/commit.svg")
|
||||||
|
game.notify("You can drag these around with your mouse!", self, "drag-nodes")
|
||||||
"tag":
|
"tag":
|
||||||
$Sprite.texture = preload("res://nodes/blob.svg")
|
$Sprite.texture = preload("res://nodes/blob.svg")
|
||||||
"ref":
|
"ref":
|
||||||
|
|
|
@ -1,14 +1,20 @@
|
||||||
extends PopupPanel
|
extends Node2D
|
||||||
|
|
||||||
var text setget _set_text
|
var text setget _set_text
|
||||||
|
var button_texts = ["Got it!", "Interesting!", "Very useful!", "Cool!", "Nice!", "Thanks!", "Whatever...", "Okay!", "Yay!", "Awesome!"]
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
popup()
|
button_texts.shuffle()
|
||||||
|
$Panel/CenterContainer/OK.text = button_texts[0]
|
||||||
|
|
||||||
func _gui_input(event):
|
#func _gui_input(event):
|
||||||
if event is InputEventMouseButton:
|
# if event is InputEventMouseButton:
|
||||||
queue_free()
|
# queue_free()
|
||||||
|
|
||||||
func _set_text(new_text):
|
func _set_text(new_text):
|
||||||
text = new_text
|
text = new_text
|
||||||
$Label.text = new_text
|
$Panel/Label.text = new_text
|
||||||
|
|
||||||
|
|
||||||
|
func confirm():
|
||||||
|
queue_free()
|
||||||
|
|
|
@ -1,33 +1,61 @@
|
||||||
[gd_scene load_steps=4 format=2]
|
[gd_scene load_steps=5 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://fonts/default.tres" type="DynamicFont" id=1]
|
[ext_resource path="res://fonts/default.tres" type="DynamicFont" id=1]
|
||||||
[ext_resource path="res://styles/theme.tres" type="Theme" id=2]
|
[ext_resource path="res://styles/theme.tres" type="Theme" id=2]
|
||||||
[ext_resource path="res://scenes/notification.gd" type="Script" id=3]
|
[ext_resource path="res://scenes/notification.gd" type="Script" id=3]
|
||||||
|
|
||||||
[node name="Notification" type="PopupPanel"]
|
[sub_resource type="StyleBoxFlat" id=1]
|
||||||
visible = true
|
bg_color = Color( 0.0431373, 0.368627, 0.141176, 0.843137 )
|
||||||
margin_left = 16.0
|
corner_radius_top_left = 8
|
||||||
margin_top = 16.0
|
corner_radius_top_right = 8
|
||||||
margin_right = 369.0
|
corner_radius_bottom_right = 8
|
||||||
margin_bottom = 212.0
|
corner_radius_bottom_left = 8
|
||||||
theme = ExtResource( 2 )
|
|
||||||
|
[node name="Notification" type="Node2D"]
|
||||||
|
z_index = 4096
|
||||||
script = ExtResource( 3 )
|
script = ExtResource( 3 )
|
||||||
|
|
||||||
|
[node name="Panel" type="Panel" parent="."]
|
||||||
|
margin_left = 8.0
|
||||||
|
margin_top = 8.0
|
||||||
|
margin_right = 492.0
|
||||||
|
margin_bottom = 170.0
|
||||||
|
theme = ExtResource( 2 )
|
||||||
|
custom_styles/panel = SubResource( 1 )
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="."]
|
[node name="Label" type="Label" parent="Panel"]
|
||||||
anchor_left = 0.045
|
anchor_right = 1.0
|
||||||
anchor_top = 0.082
|
anchor_bottom = 1.0
|
||||||
anchor_right = 0.955
|
margin_left = 16.0
|
||||||
anchor_bottom = 0.918
|
margin_top = 13.0
|
||||||
margin_left = 0.115
|
margin_right = -15.0
|
||||||
margin_top = -0.0720005
|
margin_bottom = -15.0
|
||||||
margin_right = -0.115021
|
|
||||||
margin_bottom = 0.071991
|
|
||||||
custom_fonts/font = ExtResource( 1 )
|
custom_fonts/font = ExtResource( 1 )
|
||||||
text = "This is a hint! This is a hint! This is a hint! This is a hint! This is a hint! This is a hint! This is a hint! This is a hint! This is a hint!"
|
text = "This is a hint! This is a hint! This is a hint! This is a hint! This is a hint! This is a hint! This is a hint! This is a hint! This is a hint!"
|
||||||
autowrap = true
|
autowrap = true
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[node name="CenterContainer" type="CenterContainer" parent="Panel"]
|
||||||
|
anchor_top = 1.0
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
margin_top = -58.0
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="OK" type="Button" parent="Panel/CenterContainer"]
|
||||||
|
margin_left = 202.0
|
||||||
|
margin_top = 9.0
|
||||||
|
margin_right = 282.0
|
||||||
|
margin_bottom = 48.0
|
||||||
|
text = "Got it!"
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
[connection signal="pressed" from="Panel/CenterContainer/OK" to="." method="confirm"]
|
||||||
|
|
|
@ -88,6 +88,8 @@ func set_label(new_label):
|
||||||
new_label = ""
|
new_label = ""
|
||||||
$Rows/RepoVis/SeparatorLine/DropArea.queue_free()
|
$Rows/RepoVis/SeparatorLine/DropArea.queue_free()
|
||||||
$Rows/RepoVis/SeparatorLine.hide()
|
$Rows/RepoVis/SeparatorLine.hide()
|
||||||
|
else:
|
||||||
|
game.notify("This is the time machine of another person! To interact with it, you need special commands!", self, "remote")
|
||||||
label_node.text = new_label
|
label_node.text = new_label
|
||||||
|
|
||||||
func random_position():
|
func random_position():
|
||||||
|
|
|
@ -96,6 +96,7 @@ func command_done(cmd):
|
||||||
|
|
||||||
if cmd.output.length() <= 1000:
|
if cmd.output.length() <= 1000:
|
||||||
output.text = output.text + "$ " + cmd.command + "\n" + cmd.output
|
output.text = output.text + "$ " + cmd.command + "\n" + cmd.output
|
||||||
|
game.notify("This is your terminal! All commands are executed here, and you can see their output. You can also type your own commands here!", self, "terminal")
|
||||||
else:
|
else:
|
||||||
$Pager/Text.text = cmd.output
|
$Pager/Text.text = cmd.output
|
||||||
$Pager.popup()
|
$Pager.popup()
|
||||||
|
|
Loading…
Reference in a new issue