272 lines
8.1 KiB
GDScript3
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()
|