mirror of
https://github.com/git-learning-game/oh-my-git.git
synced 2024-12-03 11:11:45 +03:00
41 lines
1.1 KiB
GDScript
41 lines
1.1 KiB
GDScript
extends Control
|
|
|
|
var thread
|
|
|
|
var history = []
|
|
var history_position = 0
|
|
|
|
onready var input = $Control/Input
|
|
onready var output = $Control/Output
|
|
|
|
func _input(event):
|
|
if history.size() > 0:
|
|
if event.is_action_pressed("ui_up"):
|
|
history_position -= 1
|
|
history_position %= history.size()
|
|
input.text = history[history_position]
|
|
input.caret_position = input.text.length()
|
|
# This prevents the Input taking the arrow as a "skip to beginning" command.
|
|
get_tree().set_input_as_handled()
|
|
if event.is_action_pressed("ui_down"):
|
|
history_position += 1
|
|
history_position %= history.size()
|
|
input.text = history[history_position]
|
|
input.caret_position = input.text.length()
|
|
get_tree().set_input_as_handled()
|
|
|
|
func send_command(command):
|
|
history.push_back(command)
|
|
history_position += 1
|
|
|
|
thread = Thread.new()
|
|
thread.start(self, "run_command_in_a_thread", command)
|
|
|
|
func run_command_in_a_thread(command):
|
|
var o = game.sh(command, "/tmp/active")
|
|
|
|
input.text = ""
|
|
output.text = output.text + "$ " + command + "\n" + o
|
|
output.scroll_vertical = 999999
|
|
$"../Repositories/ActiveRepository".update_everything() # FIXME
|