286 lines
10 KiB
GDScript
286 lines
10 KiB
GDScript
extends Node3D
|
|
|
|
# These next few functions are supposed to help with MAP stuff.
|
|
var MapNumber: int = 0
|
|
@onready var MapGUI = get_node("GUI/Map")
|
|
@export var AliveEnemies: Array
|
|
|
|
# These are... other
|
|
@export var Current: Texture
|
|
@export var UnCurrent: Texture
|
|
|
|
var Activities: Array
|
|
@export var DoActivities: bool
|
|
|
|
func _process(_delta):
|
|
get_node("GUI/PlayerStats/Attack").text = str(Player.Attack)
|
|
get_node("GUI/PlayerStats/Defence").text = str(Player.Heal)
|
|
get_node("GUI/PlayerStats/Level").text = str(Player.Level)
|
|
get_node("GUI/PlayerStats/Health").size.x = 300 * (Player.HP / Player.MaxHP)
|
|
|
|
get_node("GUI/EnemyStats/Attack").text = str(Enemy.Attack)
|
|
get_node("GUI/EnemyStats/Defence").text = str(Enemy.Heal)
|
|
get_node("GUI/EnemyStats/Level").text = str(Enemy.Level)
|
|
get_node("GUI/EnemyStats/Health").size.x = 300 * (Enemy.HP / Enemy.MaxHP)
|
|
|
|
get_node("Add Points/Points Left").text = str(Player.PointsLeft)
|
|
|
|
# Do the activities as soon as you leave :D
|
|
if DoActivities == true && get_node("GUI/Map").visible == false:
|
|
if Activities.size() == 0:
|
|
DoActivities = false
|
|
return
|
|
if !get_node("Animator").is_playing() && Activities[0] == "Attack":
|
|
get_node("Animator").play("Attack")
|
|
Activities.remove_at(0)
|
|
if !get_node("Animator").is_playing() && Activities[0] == "Heal":
|
|
get_node("Animator").play("Heal")
|
|
Player.HP = Player.HP + (Player.Heal * randf_range(1, 8))
|
|
if Player.HP >= Player.MaxHP:
|
|
Player.HP = Player.MaxHP
|
|
Activities.remove_at(0)
|
|
if !get_node("Animator").is_playing() && Activities[0] == "Enemy":
|
|
Enemy.EnemyTakeTurn()
|
|
Activities.remove_at(0)
|
|
|
|
func _ready():
|
|
randomize()
|
|
# Load the tasks
|
|
var List = GlobalVars.LoadList("user://Tasks")
|
|
while List.size() != 0:
|
|
var text = List[0]
|
|
List.remove_at(0)
|
|
var difficulty = List[0]
|
|
List.remove_at(0)
|
|
SummonLabel(1, text, int(difficulty), "Task GUI/ScrollContainer/Task List")
|
|
# Load the dailies
|
|
List = GlobalVars.LoadList("user://Daily")
|
|
var List2 = GlobalVars.LoadList("user://DoneDaily")
|
|
GlobalVars.Date = GlobalVars.LoadSingle("user://Date")
|
|
if GlobalVars.Date != Time.get_date_dict_from_system().day:
|
|
GlobalVars.SaveSingle(Time.get_date_dict_from_system().day, "user://Date")
|
|
Activities.append("Enemy")
|
|
List.append_array(List2)
|
|
List2 = []
|
|
while List.size() != 0:
|
|
var text = List[0]
|
|
List.remove_at(0)
|
|
var difficulty = List[0]
|
|
List.remove_at(0)
|
|
SummonLabel(2, text, int(difficulty), "Task GUI/ScrollContainer2/Daily List")
|
|
while List2.size() != 0:
|
|
var text = List2[0]
|
|
List2.remove_at(0)
|
|
var difficulty = List2[0]
|
|
List2.remove_at(0)
|
|
var node = SLabel.instantiate()
|
|
node.set("Type", 2)
|
|
node.set("Difficulty", difficulty)
|
|
get_node("Task GUI/ScrollContainer2/Daily List").add_child(node)
|
|
node.get_node("Number").text = str(difficulty)
|
|
node.text = text
|
|
node.get_node("Check").text = "[X]"
|
|
# Stat stuff next
|
|
var Things: Array = GlobalVars.LoadList("user://Stats")
|
|
# this stops a wierd bug from happening
|
|
if Things.size() == 0:
|
|
Enemy.SpawnEnemy()
|
|
GlobalVars.SaveStats(AliveEnemies, Player.HP, Player.MaxHP, Player.Attack, Player.Heal, Player.Level, Enemy.HP, Enemy.MaxHP, Enemy.Attack, Enemy.Heal, Enemy.Level, Player.Experience, Player.PointsLeft)
|
|
Things = GlobalVars.LoadList("user://Stats")
|
|
AliveEnemies[0] = int(Things[0])
|
|
AliveEnemies[1] = int(Things[1])
|
|
AliveEnemies[2] = int(Things[2])
|
|
AliveEnemies[3] = int(Things[3])
|
|
AliveEnemies[4] = int(Things[4])
|
|
AliveEnemies[5] = int(Things[5])
|
|
Player.HP = float(Things[6])
|
|
Player.MaxHP = float(Things[7])
|
|
Player.Attack = float(Things[8])
|
|
Player.Heal = float(Things[9])
|
|
Player.Level = int(Things[10])
|
|
Enemy.HP = float(Things[11])
|
|
Enemy.MaxHP = float(Things[12])
|
|
Enemy.Attack = float(Things[13])
|
|
Enemy.Heal = float(Things[14])
|
|
Enemy.Level = int(Things[15])
|
|
Player.Experience = int(Things[16])
|
|
Player.PointsLeft = int(Things[17])
|
|
if Player.PointsLeft != 0:
|
|
get_node("GUI/Points").visible = true
|
|
ChangeMap(0)
|
|
DoActivities = true
|
|
|
|
func SummonLabel(Type: int, Text: String, Difficulty: int, ChildNode: NodePath):
|
|
var node = SLabel.instantiate()
|
|
node.set("Type", Type)
|
|
node.set("Difficulty", Difficulty)
|
|
get_node(ChildNode).add_child(node)
|
|
node.text = Text
|
|
node.get_node("Number").text = str(Difficulty)
|
|
|
|
func ChangeMap(MapThing: int):
|
|
# we need to make sure that these
|
|
if MapThing == MapNumber + 1 || MapThing == MapNumber - 1:
|
|
get_node("GUI/Map/Map0" + str(MapThing)).texture_normal = Current
|
|
get_node("GUI/Map/Map0" + str(MapNumber)).texture_normal = UnCurrent
|
|
MapNumber = MapThing
|
|
if AliveEnemies[MapNumber] == 1:
|
|
get_node("Enemy").visible = true
|
|
MapGUI.visible = false
|
|
# Spawning enemies
|
|
if Enemy.HP <= 0:
|
|
Enemy.SpawnEnemy()
|
|
GlobalVars.SaveStats(AliveEnemies, Player.HP, Player.MaxHP, Player.Attack, Player.Heal, Player.Level, Enemy.HP, Enemy.MaxHP, Enemy.Attack, Enemy.Heal, Enemy.Level, Player.Experience, Player.PointsLeft)
|
|
else:
|
|
get_node("Enemy").visible = false
|
|
MapGUI.visible = true
|
|
|
|
# This is an animation function, made at the end of the round to calculate damage.
|
|
func FinalizeRound():
|
|
GlobalVars.SaveStats(AliveEnemies, Player.HP, Player.MaxHP, Player.Attack, Player.Heal, Player.Level, Enemy.HP, Enemy.MaxHP, Enemy.Attack, Enemy.Heal, Enemy.Level, Player.Experience, Player.PointsLeft)
|
|
if Enemy.HP <= 0:
|
|
get_node("Enemy").visible = false
|
|
MapGUI.visible = true
|
|
AliveEnemies[MapNumber] = 0
|
|
Player.Experience = Player.Experience + (10 * Enemy.Level)
|
|
print("player experience")
|
|
# Give points
|
|
while Player.Experience >= 10:
|
|
Player.Experience = Player.Experience - 10
|
|
Player.PointsLeft = Player.PointsLeft + 100
|
|
get_node("GUI/Points").visible = true
|
|
GlobalVars.SaveStats(AliveEnemies, Player.HP, Player.MaxHP, Player.Attack, Player.Heal, Player.Level, Enemy.HP, Enemy.MaxHP, Enemy.Attack, Enemy.Heal, Enemy.Level, Player.Experience, Player.PointsLeft)
|
|
# Once we are done, be done with it!
|
|
if MapNumber == 5:
|
|
AliveEnemies[0] = 1
|
|
AliveEnemies[1] = 1
|
|
AliveEnemies[2] = 1
|
|
AliveEnemies[3] = 1
|
|
AliveEnemies[4] = 1
|
|
AliveEnemies[5] = 1
|
|
# Temporary stuff so that way it works.
|
|
Player.HP = Player.MaxHP
|
|
Enemy.HP = Enemy.MaxHP
|
|
GlobalVars.SaveStats(AliveEnemies, Player.HP, Player.MaxHP, Player.Attack, Player.Heal, Player.Level, Enemy.HP, Enemy.MaxHP, Enemy.Attack, Enemy.Heal, Enemy.Level, Player.Experience, Player.PointsLeft)
|
|
get_tree().change_scene_to_file("res://Menu Stuffs/Main Menu.tscn")
|
|
# Death of player
|
|
if Player.HP <= 0:
|
|
AliveEnemies[0] = 1
|
|
AliveEnemies[1] = 1
|
|
AliveEnemies[2] = 1
|
|
AliveEnemies[3] = 1
|
|
AliveEnemies[4] = 1
|
|
AliveEnemies[5] = 1
|
|
# Temporary stuff so that way it works.
|
|
Player.HP = Player.MaxHP
|
|
Enemy.HP = Enemy.MaxHP
|
|
GlobalVars.SaveStats(AliveEnemies, Player.HP, Player.MaxHP, Player.Attack, Player.Heal, Player.Level, Enemy.HP, Enemy.MaxHP, Enemy.Attack, Enemy.Heal, Enemy.Level, Player.Experience, Player.PointsLeft)
|
|
get_tree().change_scene_to_file("res://Menu Stuffs/Main Menu.tscn")
|
|
|
|
# These next functions are related to the tasks.
|
|
# It is usually a lot of button pushing.
|
|
var SLabel = preload("res://Tasks Stuffs/Task/s_label.tscn")
|
|
|
|
func _on_task_opener_pressed():
|
|
if !get_node("Animator").is_playing():
|
|
get_node("Animator").play("Task Show")
|
|
|
|
func _on_task_closer_pressed():
|
|
if !get_node("Animator").is_playing():
|
|
get_node("Animator").play("Task Hide")
|
|
# Save everything in the task area
|
|
var children = get_node("Task GUI/ScrollContainer/Task List").get_children()
|
|
var stringies: PackedStringArray = []
|
|
for i in children:
|
|
stringies.append(i.text)
|
|
stringies.append(str(i.get("Difficulty")))
|
|
GlobalVars.SaveList(stringies, "user://Tasks")
|
|
# Save everything in the dailies area
|
|
children = get_node("Task GUI/ScrollContainer2/Daily List").get_children()
|
|
stringies = []
|
|
var stringies2: PackedStringArray = []
|
|
for i in children:
|
|
if i.get_node("Check").text == "[X]":
|
|
stringies2.append(i.text)
|
|
stringies2.append(str(i.get("Difficulty")))
|
|
else:
|
|
stringies.append(i.text)
|
|
stringies.append(str(i.get("Difficulty")))
|
|
GlobalVars.SaveList(stringies, "user://Daily", stringies2, "user://DoneDaily")
|
|
_on_task_close_requested()
|
|
_on_daily_window_close_requested()
|
|
|
|
func _on_add_task_pressed():
|
|
get_node("Task GUI/Task Window").popup()
|
|
|
|
func _on_del_task_pressed():
|
|
var children = get_node("Task GUI/ScrollContainer/Task List").get_children()
|
|
if get_node("Task GUI/Add Task/Del Task").button_pressed == true:
|
|
for i in children:
|
|
i.get_node("Delete").visible = true
|
|
else:
|
|
for i in children:
|
|
i.get_node("Delete").visible = false
|
|
|
|
func _on_add_daily_pressed():
|
|
get_node("Task GUI/Daily Window").popup()
|
|
|
|
func _on_del_daily_pressed():
|
|
var children = get_node("Task GUI/ScrollContainer2/Daily List").get_children()
|
|
if get_node("Task GUI/Add Daily/Del Daily").button_pressed == true:
|
|
for i in children:
|
|
i.get_node("Delete").visible = true
|
|
else:
|
|
for i in children:
|
|
i.get_node("Delete").visible = false
|
|
|
|
func _on_back_pressed():
|
|
get_tree().change_scene_to_file("res://Menu Stuffs/Scene/Main Menu.tscn")
|
|
|
|
# Stuff about the windows.
|
|
func _on_task_close_requested():
|
|
get_node("Task GUI/Task Window").visible = false
|
|
get_node("Task GUI/Task Window/TaskEdit").text = ""
|
|
get_node("Task GUI/Task Window/HSlider").value = 0
|
|
|
|
func Confirm1():
|
|
var text = get_node("Task GUI/Task Window/TaskEdit").text
|
|
var difficulty = get_node("Task GUI/Task Window/HSlider").value
|
|
if text != "":
|
|
SummonLabel(1, text, int(difficulty), "Task GUI/ScrollContainer/Task List")
|
|
_on_task_close_requested()
|
|
|
|
func _on_daily_window_close_requested():
|
|
get_node("Task GUI/Daily Window").visible = false
|
|
get_node("Task GUI/Daily Window/DailyEdit").text = ""
|
|
get_node("Task GUI/Daily Window/HSlider").value = 0
|
|
|
|
func Confirm2():
|
|
var text = get_node("Task GUI/Daily Window/DailyEdit").text
|
|
var difficulty = get_node("Task GUI/Daily Window/HSlider").value
|
|
if text != "":
|
|
SummonLabel(2, text, int(difficulty), "Task GUI/ScrollContainer2/Daily List")
|
|
_on_daily_window_close_requested()
|
|
|
|
# Add points screen
|
|
func _on_points_pressed():
|
|
get_node("Add Points").visible = true
|
|
|
|
func _on_strength_pressed():
|
|
Player.Attack = Player.Attack + 1
|
|
PointsOut()
|
|
|
|
func _on_heal_pressed():
|
|
Player.Heal = Player.Heal + 1
|
|
PointsOut()
|
|
|
|
func _on_health_pressed():
|
|
Player.MaxHP = Player.MaxHP + 10
|
|
PointsOut()
|
|
|
|
func PointsOut():
|
|
Player.PointsLeft = Player.PointsLeft - 1
|
|
if Player.PointsLeft == 0:
|
|
get_node("Add Points").visible = false
|
|
get_node("GUI/Points").visible = false
|
|
GlobalVars.SaveStats(AliveEnemies, Player.HP, Player.MaxHP, Player.Attack, Player.Heal, Player.Level, Enemy.HP, Enemy.MaxHP, Enemy.Attack, Enemy.Heal, Enemy.Level, Player.Experience, Player.PointsLeft)
|