This repository has been archived on 2025-04-15. You can view files and clone it, but cannot push or open issues or pull requests.
Gamify-Life/Gamify Life/Tasks Stuffs/Scripts/Task_Manager.gd
2025-04-15 11:55:58 -07:00

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)