glitch-in-the-system/scripts/Console.gd

272 lines
8.1 KiB
GDScript3

extends Control
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
# Called when the node enters the scene tree for the first time.
const CHANGE_TIME = 0.0125
const ACTION_TIME = 0.25
var actionTimer
var changeChar
var queuedAction
var charCount = 0
var visableChars = 0
var tempValue = ""
const MAIN_MENU = ['Next Level', 'Upgrades', 'Main Menu']
const ALL_EQUIPMENT = {
#"pistol" : 4,
#"smg" : 8
}
const BASE_UNLOCK = {
#"stealth" : 1000,
"jump" : 1
}
func _ready():
actionTimer = Timer.new()
actionTimer.connect("timeout",Callable(self,"RunQueuedAction"))
add_child(actionTimer)
$Display.text = $Display.text + "\nGood job Unit " + str(SaveManager.get_run()) + "!"
addLine("\nAwaiting input...")
changeChar = CHANGE_TIME
$Display.visible_characters = 18
visableChars = 18
updateCharCount()
GenerateInputs(MAIN_MENU)
pass # Replace with function body.
func GenerateInputs(options):
for child in $Buttons.get_children():
child.queue_free()
for option in options:
var button = Button.new()
button.text = " [" + option + "] "
button.connect("button_down",Callable(self,"ButtonInput").bind(option))
$Buttons.add_child(button)
func ButtonInput(input):
if input == "Main Menu":
addLine("gis exit\nExiting environment...")
if !queuedAction:
queuedAction = input
elif input == "Next Level":
addLine("gis run unit " + str(SaveManager.get_run()))
if !queuedAction:
queuedAction = input
elif input == "Upgrades":
addLine("gis config unit " + str(SaveManager.get_run()))
if !queuedAction:
queuedAction = input
elif input == "Back":
addLine("X")
if !queuedAction:
queuedAction = input
elif input == "Equipment":
addLine("2")
if !queuedAction:
queuedAction = input
elif input == "Abilities":
addLine("1")
if !queuedAction:
queuedAction = input
elif input.to_lower() in SaveManager.get_equipment():
addLine("gis access equipment " + input.to_lower())
if !queuedAction:
queuedAction = input
elif input.to_lower() in SaveManager.get_actions():
addLine("gis access upgrade " + input.to_lower())
if !queuedAction:
queuedAction = input
elif input == "Equip":
addLine("1")
if !queuedAction:
queuedAction = input
elif input == "Upgrade":
addLine("1")
if !queuedAction:
queuedAction = input
elif input == "Unequip":
addLine("1")
if !queuedAction:
queuedAction = input
elif input == "Buy Equipment":
addLine("3")
if !queuedAction:
queuedAction = input
elif input.to_lower() in ALL_EQUIPMENT:
addLine("gis equipment purchase " + input.to_lower())
if !queuedAction:
queuedAction = input
else:
addLine("Error 404! Command `button:" + input + "` not found!")
func capFirst(inputVal):
return inputVal.capitalize()[0] + inputVal.substr(1, len(inputVal))
func RunQueuedAction():
if queuedAction == "Main Menu":
get_tree().change_scene_to_file("res://Nodes/Title.tscn")
elif queuedAction == "Next Level":
get_tree().change_scene_to_file("res://Nodes/Game.tscn")
elif queuedAction == "Upgrades":
clearConsole()
addLine("Upgrade Chips: " + str(SaveManager.get_upgrade_points()) + "\n\n")
addLine("Select upgrade category:")
addLine("1. Abilities")
addLine("2. Equipment")
addLine("3. Buy Equipment")
addLine("\nX. Back")
GenerateInputs(['Abilities', 'Equipment', 'Buy Equipment', 'Back'])
elif queuedAction == "Buy Equipment":
clearConsole()
addLine("Upgrade Chips: " + str(SaveManager.get_upgrade_points()) + "\n\n")
addLine("Equipment:")
var i = 1
var tempInputs = []
for equipment in ALL_EQUIPMENT:
if !(equipment in SaveManager.get_equipment()):
tempInputs.append(capFirst(equipment))
addLine(str(i) + ". " + capFirst(equipment) + " (COST " + str(ALL_EQUIPMENT[equipment]) + ")")
i += 1
GenerateInputs(tempInputs + ['Upgrades'])
elif queuedAction == "Back":
GenerateInputs(MAIN_MENU)
clearConsole()
elif queuedAction == "Equipment":
clearConsole()
addLine("Upgrade Chips: " + str(SaveManager.get_upgrade_points()) + "\n\n")
addLine("Equipment:")
var i = 1
var tempInputs = []
for equip in SaveManager.get_equipment():
var suffix = ""
if equip == SaveManager.get_equiped():
suffix = " (EQUIPED)"
addLine(str(i) + ". " + equip.capitalize()[0] + equip.substr(1, len(equip)) + suffix)
tempInputs.append(equip.capitalize()[0] + equip.substr(1, len(equip)))
i += 1
addLine('\nX. Back')
GenerateInputs(tempInputs + ["Upgrades"])
elif queuedAction == "Abilities":
clearConsole()
addLine("Upgrade Chips: " + str(SaveManager.get_upgrade_points()) + "\n\n")
addLine("Abilities:")
var i = 1
var tempInputs = []
for action in SaveManager.get_actions():
addLine(str(i) + ". " + action.capitalize()[0] + action.substr(1, len(action)))
tempInputs.append(action.capitalize()[0] + action.substr(1, len(action)))
i += 1
addLine('\nX. Back')
GenerateInputs(tempInputs + ["Upgrades"])
elif queuedAction.to_lower() in SaveManager.get_equipment():
clearConsole()
addLine("Equipment: " + queuedAction)
addLine("")
var tempInputs = []
if(queuedAction.to_lower() == SaveManager.get_equiped()):
tempInputs.append("Unequip")
addLine("1. Unequip")
else:
tempInputs.append("Equip")
addLine("1. Equip")
addLine("\nX. Back")
tempValue = queuedAction.to_lower()
GenerateInputs(tempInputs + ["Equipment"])
elif queuedAction.to_lower() in SaveManager.get_actions():
clearConsole()
addLine("Upgrade Chips: " + str(SaveManager.get_upgrade_points()) + "\n\n")
addLine("Ability: " + queuedAction)
addLine("Level: " + str(SaveManager.get_action_value(queuedAction.to_lower())))
addLine("")
var pointsToUpgrade = 1 * int(SaveManager.get_action_value(queuedAction.to_lower()))
if queuedAction.to_lower() in BASE_UNLOCK:
pointsToUpgrade += BASE_UNLOCK[queuedAction.to_lower()]
var tempInputs = []
tempInputs.append("Upgrade")
addLine("1. Upgrade (" + str(pointsToUpgrade) + " Points)")
addLine("\nX. Back")
tempValue = queuedAction.to_lower()
GenerateInputs(tempInputs + ["Abilities"])
elif queuedAction == "Equip":
SaveManager.set_equiped(tempValue)
addLine("\nEquiped: " + tempValue.capitalize()[0] + tempValue.substr(1, len(tempValue)))
queuedAction = "Equipment"
actionTimer.stop()
return
elif queuedAction == "Upgrade":
var UPGRADE_COST = 1 * int(SaveManager.get_action_value(tempValue.to_lower()))
if tempValue.to_lower() in BASE_UNLOCK:
UPGRADE_COST += BASE_UNLOCK[tempValue.to_lower()]
if (SaveManager.get_upgrade_points() >= UPGRADE_COST):
SaveManager.change_upgrade_points(-1 * UPGRADE_COST)
SaveManager.set_action_value(tempValue, SaveManager.get_action_value(tempValue) + 1)
addLine("\nUpgraded: " + tempValue.capitalize()[0] + tempValue.substr(1, len(tempValue)))
else:
addLine("\nNot enough upgrade chips!")
queuedAction = tempValue
actionTimer.stop()
return
elif queuedAction == "Unequip":
SaveManager.set_equiped("none")
addLine("\nUnequiped: " + tempValue.capitalize()[0] + tempValue.substr(1, len(tempValue)))
queuedAction = "Equipment"
actionTimer.stop()
return
elif queuedAction.to_lower() in ALL_EQUIPMENT:
var cost = ALL_EQUIPMENT[queuedAction.to_lower()]
if (SaveManager.get_upgrade_points() >= cost):
SaveManager.change_upgrade_points(-1 * cost)
addLine("Purchased: " + queuedAction)
SaveManager.unlock_equipment(queuedAction.to_lower())
else:
addLine("\nNot enough upgrade chips!")
queuedAction = "Buy Equipment"
return
else:
addLine("Error 404! Command `action:" + queuedAction + "` not found!")
queuedAction = null
addLine("\nAwaiting input...")
actionTimer.stop()
func _process(delta):
if(visableChars < charCount):
if(changeChar <= 0):
visableChars += 4
$Display.visible_characters = visableChars
changeChar = CHANGE_TIME
else:
changeChar -= delta
else:
changeChar = CHANGE_TIME
if queuedAction && actionTimer.is_stopped():
actionTimer.start(ACTION_TIME)
func addLine(line):
$Display.text = $Display.text + "\n" + line
updateCharCount()
func clearConsole():
$Display.visible_characters = 0
$Display.text = ""
visableChars = 0
updateCharCount()
func updateCharCount():
charCount = $Display.get_total_character_count()