Cow_Life_Sim_RPG/Achievements/AchievementManager.gd

165 lines
5.8 KiB
GDScript

extends Node
signal achievement_complete(achievement:Achievement)
const categoryScripts = [preload("res://Achievements/Categories/LevelsCategory.gd"),
preload("res://Achievements/Categories/LevelsIICategory.gd"),
preload("res://Achievements/Categories/CollectionCategory.gd"),
preload("res://Achievements/Categories/FeatsCategory.gd")]
var categories = []
func _ready():
load_achievements()
func load_achievements():
for script in categoryScripts:
categories.append(script.new())
func get_categories():
return categories
func complete_achievement(achievementName):
var achievement = get_achievement_by_name(achievementName)
achievement.complete()
achievement_complete.emit(achievement)
Steam.setAchievement(achievementName)
Steam.storeStats()
print("Achievement Complete!")
print(achievementName)
func get_achievement_by_name(achievementName):
for category in categories:
var achievements = category.get_achievements()
for achievement in achievements:
if achievement.get_name() == achievementName:
return achievement
func update_achievement_states():
for category in categories:
var achievements = category.get_achievements()
for achievement in achievements:
achievement.update_completion()
start_up_level_achievement_checks()
func start_up_level_achievement_checks():
var skills = LevelManager.get_all_skills()
for skill in skills:
skill_level_achievement_checks(skill)
func skill_level_achievement_checks(skill):
var skillAchievementInfo = [
["Arson", [["Time to Burn", 20], ["A Burning Fire", 40], ["Burning Brighter", 60]]],
["Basket Weaving", [["Basket Bachelor", 20], ["Basket Master", 40], ["Weaver of All", 60]]],
["Building", [["Piler", 20], ["Stacker", 40], ["Arranger", 60]]],
["Experiencing", [["Experienced", 20], ["Experienceder", 40], ["Experiencedest", 60]]],
["Fast Walking", [["I am Speed", 20], ["KACHOW!", 40], ["Faster than Fast", 60]]],
["Gaming", [["Gamer", 20], ["Pro Gamer", 40], ["Gramer", 60]]],
["Gardening", [["Green Hoof", 20], ["Verdant Hoof", 40], ["Blooming Hoof", 60]]],
["Juice Drinking", [["Juice Fan", 20], ["Juice Connoisseur", 40], ["Juice Enjoyer", 60]]],
["Scavenging", [["Searching for Goodies", 20], ["Finding Treasures", 40], ["Super Scrounger", 60]]],
["Swimming", [["Fish Mode", 20], ["Wahoo Mode", 40], ["Indo-Pacific Sailfish", 60]]],
["Trampolining", [["Bouncin'", 20], ["Soarin'", 40], ["Launchin'", 60]]],
["Walking", [["It's Walking Time", 20], ["Walking On", 40], ["Slow Enjoyer", 60]]]
]
for info in skillAchievementInfo:
if info[0] == skill.skillName:
var achievementsInfo = info[1]
for nameLevelPair in achievementsInfo:
if skill.currentLevel >= nameLevelPair[1]:
complete_achievement(nameLevelPair[0])
break
func total_level_achievement_checks():
var minLevel = 100
var skills = LevelManager.get_all_skills()
for skill in skills:
if skill.currentLevel < minLevel:
minLevel = skill.currentLevel
if minLevel >= 40:
var achievement:Achievement = get_achievement_by_name("Cow Power")
if !achievement.completed:
complete_achievement("Cow Power")
if minLevel >= 60:
var achievement:Achievement = get_achievement_by_name("You are Cow")
if !achievement.completed:
complete_achievement("You are Cow")
MessageManager.maxlevel_popup()
MessageManager.addMessage("You've reached the max level in every skill! Wow!",
null, "System", Color.PURPLE, true, false)
func behold_achievement_checks(item):
var itemNames = ["Ash Ash", "Caramelized Caramel",
"Caramelized Wolfs Milk Slime Mould Basket", "Raisin"]
var achievementNames = ["Again", "Essence of Chew", "Wolfs...", "Where did I get this?"]
var modified = [false, true, true, false]
for i in range(itemNames.size()):
var itemName = itemNames[i]
if itemName == item.get_name(modified[i]):
complete_achievement(achievementNames[i])
func burn_achievement_checks(item):
var itemNames = ["Faire Ticket", "Gasoline"]
var achievementNames = ["Joker Moment", "Girlbossing"]
var modified = [false, false]
for i in range(itemNames.size()):
var itemName = itemNames[i]
if itemName == item.get_name(modified[i]):
complete_achievement(achievementNames[i])
func play_achievement_checks(item):
var itemNames = ["Trumpet", "Sugary Worm on a String",
"Knotted Sticky Hand"]
var achievementNames = ["!doot", "Sparkly :)", "I broke it..."]
var modified = [false, true, true]
for i in range(itemNames.size()):
var itemName = itemNames[i]
if itemName == item.get_name(modified[i]):
complete_achievement(achievementNames[i])
func eat_achievement_checks(item):
var itemNames = ["BBQ Sauce", "Knotted Cloud",
"Sugary Sugar Stick", "Candy Candy"]
var achievementNames = ["Condiment of Flame", "Heavenly Spaghetti", "OwO",
"Sugared Concentrate"]
var modified = [false, true, true, false]
for i in range(itemNames.size()):
var itemName = itemNames[i]
if itemName == item.get_name(modified[i]):
complete_achievement(achievementNames[i])
func drink_achievement_checks(item):
var itemNames = ["Maple Tea", "Green Soda Juice",
"Juice Juice", "Iron Ingot Juice", "Birch Beer", "Diluted Water",
"Ultimate Juice"]
var achievementNames = ["Mmmm leafs", "Mmmm green", "Tastes like Juice",
"Wolferine", "Barked Beer", "Hydrated", "Ultimate Quencher"]
var modified = [false, false, false, true, false, true, false]
for i in range(itemNames.size()):
var itemName = itemNames[i]
if itemName == item.get_name(modified[i]):
complete_achievement(achievementNames[i])
func hang_up_achievement_checks(item):
var itemNames = ["Basket on a String", "Ketchup Basket",
"Basket Basket"]
var achievementNames = ["Containment Friend", "Ketchupton Decor", "Basket 2"]
var modified = [false, false, false]
if item != null:
for i in range(itemNames.size()):
var itemName = itemNames[i]
if itemName == item.get_name(modified[i]):
complete_achievement(achievementNames[i])