mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-13 17:14:47 +01:00
Adds Skill Tracker app for tablets (#63013)
Adds a skill tracker app for tablets. I allowed all tablets to install it, but it is currently not pre-installed by default. It is only available to tablets, with the conceptual compromise that it requires no extra hardware components, but uses sensors through your hands or something.
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
/datum/computer_file/program/skill_tracker
|
||||
filename = "skilltracker"
|
||||
filedesc = "ExperTrak Skill Tracker"
|
||||
category = PROGRAM_CATEGORY_MISC
|
||||
program_icon_state = "generic"
|
||||
extended_desc = "Scan and view your current marketable job skills."
|
||||
size = 2
|
||||
tgui_id = "NtosSkillTracker"
|
||||
program_icon = "medal"
|
||||
usage_flags = PROGRAM_TABLET // Must be a handheld device to read read your chakras or whatever
|
||||
|
||||
/datum/computer_file/program/skill_tracker/ui_data(mob/user)
|
||||
var/list/data = get_header_data()
|
||||
|
||||
var/list/skills = list()
|
||||
data["skills"] = skills
|
||||
|
||||
var/datum/mind/targetmind = user.mind
|
||||
if(targetmind)
|
||||
for (var/type in GLOB.skill_types)
|
||||
var/datum/skill/skill = GetSkillRef(type)
|
||||
var/lvl_num = targetmind.get_skill_level(type)
|
||||
var/lvl_name = uppertext(targetmind.get_skill_level_name(type))
|
||||
var/exp = targetmind.get_skill_exp(type)
|
||||
var/xp_prog_to_level = targetmind.exp_needed_to_level_up(type)
|
||||
var/xp_req_to_level = 0
|
||||
if (xp_prog_to_level && lvl_num < length(SKILL_EXP_LIST)) // is it even possible to level up?
|
||||
xp_req_to_level = SKILL_EXP_LIST[lvl_num+1] - SKILL_EXP_LIST[lvl_num]
|
||||
|
||||
var/list/skilldata = list(
|
||||
"name" = skill.name,
|
||||
"desc" = skill.desc,
|
||||
"title" = skill.title,
|
||||
"lvl_name" = lvl_name
|
||||
)
|
||||
if (exp && xp_req_to_level)
|
||||
skilldata["progress_percent"] = (xp_req_to_level-xp_prog_to_level)/xp_req_to_level
|
||||
skilldata["overall_percent"] = exp / SKILL_EXP_LIST[length(SKILL_EXP_LIST)]
|
||||
if (lvl_num >= length(SKILL_EXP_LIST) && !(type in targetmind.skills_rewarded))
|
||||
skilldata["reward"] = TRUE
|
||||
skills[++skills.len] = skilldata
|
||||
|
||||
return data
|
||||
|
||||
/datum/computer_file/program/skill_tracker/proc/find_skilltype(name)
|
||||
for(var/type in GLOB.skill_types)
|
||||
var/datum/skill/skill = GetSkillRef(type)
|
||||
if(skill.name == name)
|
||||
return type
|
||||
|
||||
return null
|
||||
|
||||
/datum/computer_file/program/skill_tracker/ui_act(action, params, datum/tgui/ui)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
switch(action)
|
||||
if("PRG_reward")
|
||||
var/skill_type = find_skilltype(params["skill"])
|
||||
if(skill_type)
|
||||
var/datum/skill/skill = GetSkillRef(skill_type)
|
||||
var/datum/mind/mind = ui.user.mind
|
||||
var/new_level = mind.get_skill_level(skill_type)
|
||||
skill.try_skill_reward(mind, new_level)
|
||||
return TRUE
|
||||
Reference in New Issue
Block a user