diff --git a/scenes/cards.gd b/scenes/cards.gd index f960431..4448d6c 100644 --- a/scenes/cards.gd +++ b/scenes/cards.gd @@ -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 diff --git a/scenes/file_browser.gd b/scenes/file_browser.gd index 95faa06..100486b 100644 --- a/scenes/file_browser.gd +++ b/scenes/file_browser.gd @@ -80,6 +80,9 @@ func update(): item.repository = repository 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: diff --git a/scenes/game.gd b/scenes/game.gd index 9728efc..4261d20 100644 --- a/scenes/game.gd +++ b/scenes/game.gd @@ -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() diff --git a/scenes/main.gd b/scenes/main.gd index bd66a09..8ce76e2 100644 --- a/scenes/main.gd +++ b/scenes/main.gd @@ -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() diff --git a/scenes/node.gd b/scenes/node.gd index b056da9..6d0801c 100644 --- a/scenes/node.gd +++ b/scenes/node.gd @@ -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": diff --git a/scenes/notification.gd b/scenes/notification.gd index c1d8111..8825be2 100644 --- a/scenes/notification.gd +++ b/scenes/notification.gd @@ -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() diff --git a/scenes/notification.tscn b/scenes/notification.tscn index cccabd9..918d3bc 100644 --- a/scenes/notification.tscn +++ b/scenes/notification.tscn @@ -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"] diff --git a/scenes/repository.gd b/scenes/repository.gd index 34e5cbb..d36a513 100644 --- a/scenes/repository.gd +++ b/scenes/repository.gd @@ -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(): diff --git a/scenes/terminal.gd b/scenes/terminal.gd index 76aa7a3..27c288b 100644 --- a/scenes/terminal.gd +++ b/scenes/terminal.gd @@ -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()