Extend the hint system to explain GUI elements

This commit is contained in:
blinry 2021-01-19 12:48:16 +01:00
parent d258f812ce
commit e87e29a3ed
9 changed files with 83 additions and 28 deletions

View file

@ -54,6 +54,9 @@ func draw(ids):
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():
var t = Timer.new()
t.wait_time = 0.05

View file

@ -81,6 +81,9 @@ func update():
item.connect("clicked", self, "item_clicked")
grid.add_child(item)
if files.size() > 0:
game.notify("Click on these files to edit them!", self, "file-browser")
if false:
match mode:
FileBrowserMode.WORKING_DIRECTORY:

View file

@ -28,7 +28,7 @@ func copy_script_to_game_env(name):
global_shell.run("chmod u+x '%s'" % (tmp_prefix + name))
func _initial_state():
return {"history": [], "solved_levels": []}
return {"history": [], "solved_levels": [], "received_hints": []}
func save_state():
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.
global_shell.run("cat > '%s' <<'HEREHEREHERE'\n%s\nHEREHEREHERE" % [filename, content])
func notify(text):
print(text)
func notify(text, target=null, hint_slug=null):
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()
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()

View file

@ -113,7 +113,7 @@ func load_level(level_id):
# chapter_select.select(game.current_chapter)
# level_select.select(game.current_level)
#game.notify("These are your cards!", cards)
func reload_level():
cards.load_card_store()

View file

@ -80,6 +80,7 @@ func type_set(new_type):
$Sprite.texture = preload("res://nodes/tree.svg")
"commit":
$Sprite.texture = preload("res://nodes/commit.svg")
game.notify("You can drag these around with your mouse!", self, "drag-nodes")
"tag":
$Sprite.texture = preload("res://nodes/blob.svg")
"ref":

View file

@ -1,14 +1,20 @@
extends PopupPanel
extends Node2D
var text setget _set_text
var button_texts = ["Got it!", "Interesting!", "Very useful!", "Cool!", "Nice!", "Thanks!", "Whatever...", "Okay!", "Yay!", "Awesome!"]
func _ready():
popup()
button_texts.shuffle()
$Panel/CenterContainer/OK.text = button_texts[0]
func _gui_input(event):
if event is InputEventMouseButton:
queue_free()
#func _gui_input(event):
# if event is InputEventMouseButton:
# queue_free()
func _set_text(new_text):
text = new_text
$Label.text = new_text
$Panel/Label.text = new_text
func confirm():
queue_free()

View file

@ -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://styles/theme.tres" type="Theme" id=2]
[ext_resource path="res://scenes/notification.gd" type="Script" id=3]
[node name="Notification" type="PopupPanel"]
visible = true
margin_left = 16.0
margin_top = 16.0
margin_right = 369.0
margin_bottom = 212.0
theme = ExtResource( 2 )
[sub_resource type="StyleBoxFlat" id=1]
bg_color = Color( 0.0431373, 0.368627, 0.141176, 0.843137 )
corner_radius_top_left = 8
corner_radius_top_right = 8
corner_radius_bottom_right = 8
corner_radius_bottom_left = 8
[node name="Notification" type="Node2D"]
z_index = 4096
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__ = {
"_edit_use_anchors_": false
}
[node name="Label" type="Label" parent="."]
anchor_left = 0.045
anchor_top = 0.082
anchor_right = 0.955
anchor_bottom = 0.918
margin_left = 0.115
margin_top = -0.0720005
margin_right = -0.115021
margin_bottom = 0.071991
[node name="Label" type="Label" parent="Panel"]
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = 16.0
margin_top = 13.0
margin_right = -15.0
margin_bottom = -15.0
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!"
autowrap = true
__meta__ = {
"_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"]

View file

@ -88,6 +88,8 @@ func set_label(new_label):
new_label = ""
$Rows/RepoVis/SeparatorLine/DropArea.queue_free()
$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
func random_position():

View file

@ -96,6 +96,7 @@ func command_done(cmd):
if cmd.output.length() <= 1000:
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:
$Pager/Text.text = cmd.output
$Pager.popup()