|
| 1 | +GLOBAL_DATUM_INIT(event_role_manager, /datum/event_role_manager, new) |
| 2 | + |
| 3 | +/client/proc/event_role_manager() |
| 4 | + set name = "Event Role Manager" |
| 5 | + set category = "Event" |
| 6 | + GLOB.event_role_manager.ui_interact(mob) |
| 7 | + |
| 8 | +/datum/event_role_manager |
| 9 | + var/role_assignments = list() |
| 10 | + |
| 11 | +/datum/event_role_manager/ui_interact(mob/user, datum/tgui/ui) |
| 12 | + ui = SStgui.try_update_ui(user, src, ui) |
| 13 | + if(!ui) |
| 14 | + ui = new(user, src, "EventRoleManager") |
| 15 | + ui.open() |
| 16 | + |
| 17 | +/datum/event_role_manager/ui_state(mob/user) |
| 18 | + return GLOB.fun_state |
| 19 | + |
| 20 | +/datum/event_role_manager/ui_data(mob/user) |
| 21 | + . = ..() |
| 22 | + |
| 23 | + var/list/assignments = list() |
| 24 | + for(var/ckey in role_assignments) |
| 25 | + var/ckey_data = list() |
| 26 | + var/datum/event_role_assignment/assignment = role_assignments[ckey] |
| 27 | + ckey_data["ckey"] = ckey |
| 28 | + ckey_data["title"] = assignment.title |
| 29 | + ckey_data["role_alt_title"] = assignment.role_alt_title |
| 30 | + assignments.Add(list(ckey_data)) |
| 31 | + .["assignments"] = assignments |
| 32 | + |
| 33 | + var/jobs = list() |
| 34 | + for(var/job in SSjob.name_occupations_all) |
| 35 | + jobs += job |
| 36 | + .["jobs"] = jobs |
| 37 | + |
| 38 | +/datum/event_role_manager/ui_act(action, params) |
| 39 | + if(..()) |
| 40 | + return |
| 41 | + var/ckey = ckey(params["ckey"]) |
| 42 | + switch(action) |
| 43 | + if("addCkey") |
| 44 | + LAZYSET(role_assignments, ckey, new /datum/event_role_assignment) |
| 45 | + return TRUE |
| 46 | + if("setTitle") |
| 47 | + var/datum/event_role_assignment/assignment = LAZYACCESS(role_assignments, ckey) |
| 48 | + if(assignment) |
| 49 | + assignment.title = params["title"] |
| 50 | + return TRUE |
| 51 | + if("setAltTitle") |
| 52 | + var/datum/event_role_assignment/assignment = LAZYACCESS(role_assignments, ckey) |
| 53 | + if(assignment) |
| 54 | + assignment.role_alt_title = params["alt_title"] |
| 55 | + return TRUE |
| 56 | + if("removeCkey") |
| 57 | + LAZYREMOVE(role_assignments, ckey) |
| 58 | + return TRUE |
| 59 | + |
| 60 | +/datum/event_role_manager/proc/admin_status_panel(var/list/items) |
| 61 | + if(!LAZYLEN(role_assignments)) |
| 62 | + return |
| 63 | + |
| 64 | + items += "Assigned player status:" |
| 65 | + |
| 66 | + for(var/ckey in role_assignments) |
| 67 | + var/client/client = GLOB.directory[ckey] |
| 68 | + if(!client) |
| 69 | + items += "<font color='red'>[ckey] is not connected</font>" |
| 70 | + continue |
| 71 | + var/mob/player = client.mob |
| 72 | + if(!istype(player, /mob/dead/new_player)) |
| 73 | + items += "<font color='red'>[ckey] is type [player.type]</font>" |
| 74 | + else |
| 75 | + var/mob/dead/new_player/new_player = player |
| 76 | + if(new_player.ready == PLAYER_READY_TO_PLAY) |
| 77 | + items += "<font color='green'>[ckey] - Ready</font>" |
| 78 | + else |
| 79 | + items += "<font color='red'>[ckey] - Not Ready</font>" |
| 80 | + |
| 81 | +/datum/event_role_manager/proc/setup_event_positions() |
| 82 | + for(var/ckey in role_assignments) |
| 83 | + var/client/client = GLOB.directory[ckey] |
| 84 | + if(!client) |
| 85 | + message_admins("[ckey] is not connected") |
| 86 | + continue |
| 87 | + var/mob/player = client.mob |
| 88 | + var/datum/event_role_assignment/assignment = role_assignments[ckey] |
| 89 | + if(!istype(player, /mob/dead/new_player)) |
| 90 | + message_admins("[ckey] is not in the lobby!") |
| 91 | + continue |
| 92 | + if(assignment.title) |
| 93 | + player.mind.assigned_role = assignment.title |
| 94 | + if(assignment.role_alt_title) |
| 95 | + player.mind.role_alt_title = assignment.role_alt_title |
| 96 | + SSjob.unassigned -= player |
| 97 | + |
| 98 | + var/mob/dead/new_player/new_player = player |
| 99 | + if(new_player.ready != PLAYER_READY_TO_PLAY) |
| 100 | + message_admins("[ckey] is not ready, forcing ready") |
| 101 | + new_player.ready = PLAYER_READY_TO_PLAY |
| 102 | + |
| 103 | +/datum/event_role_assignment |
| 104 | + var/title |
| 105 | + var/role_alt_title |
0 commit comments