Now possible to tweak colors of loadout items.

Used to greatly cut down on the number of hats (hijabs, kippots, and turbans).
This commit is contained in:
PsiOmegaDelta
2016-03-15 12:43:11 +01:00
committed by Yoshax
parent 7af921b24e
commit b277447426
7 changed files with 86 additions and 582 deletions
@@ -1,28 +1,40 @@
/datum/gear_tweak/proc/apply_tweak(var/obj/item/I)
/datum/gear_tweak/proc/get_contents(var/metadata)
return
/datum/gear_tweak/proc/get_metadata(var/user, var/metadata)
return
/datum/gear_tweak/proc/get_default()
return
/datum/gear_tweak/proc/apply_tweak(var/obj/item/I, var/metadata)
return
/*
* Color adjustment
*/
var/datum/gear_tweak/color/gear_tweak_free_color_choice = new()
/datum/gear_tweak/color
var/item_color
var/list/valid_colors
/datum/gear_tweak/color/New(var/item_color)
src.item_color = item_color
/datum/gear_tweak/color/New(var/list/valid_colors)
src.valid_colors = valid_colors
..()
/datum/gear_tweak/color/apply_tweak(var/obj/item/I)
I.color = item_color
/datum/gear_tweak/color/get_contents(var/metadata)
return "(Color<font color='[metadata]'>&#9899;</font>)"
/*
* Icon state adjustment
*/
/datum/gear_tweak/icon_state
var/icon_state
/datum/gear_tweak/color/get_default()
return valid_colors ? valid_colors[1] : COLOR_GRAY
/datum/gear_tweak/icon_state/New(var/icon_state)
src.icon_state = icon_state
..()
/datum/gear_tweak/color/get_metadata(var/user, var/metadata)
if(valid_colors)
return input(user, "Choose an item color.", "Character Preference", metadata) as null|anything in valid_colors
return input(user, "Choose an item color.", "Global Preference", metadata) as color|null
/datum/gear_tweak/icon_state/apply_tweak(var/obj/item/I)
I.icon_state = icon_state
/datum/gear_tweak/color/apply_tweak(var/obj/item/I, var/metadata)
if(valid_colors && !(metadata in valid_colors))
return
I.color = metadata
@@ -92,6 +92,7 @@ var/list/gear_datums = list()
var/fcolor = "#3366CC"
if(total_cost < MAX_GEAR_COST)
fcolor = "#E67300"
. += list()
. += "<table align = 'center' width = 500px>"
. += "<tr><td colspan=3><center><b><font color = '[fcolor]'>[total_cost]/[MAX_GEAR_COST]</font> loadout points spent.</b> \[<a href='?src=\ref[src];clear_loadout=1'>Clear Loadout</a>\]</center></td></tr>"
@@ -123,10 +124,23 @@ var/list/gear_datums = list()
var/datum/gear/G = LC.gear[gear_name]
var/ticked = (G.display_name in pref.gear)
var/obj/item/temp = G.path
. += "<tr><td width=25%><a href='?src=\ref[src];toggle_gear=[G.display_name]'><font color='[ticked ? "#E67300" : "#3366CC"]'>[G.display_name]</font></a></td>"
. += "<tr style='vertical-align:top'><td width=25%><a href='?src=\ref[src];toggle_gear=[G.display_name]'><font color='[ticked ? "#E67300" : "#3366CC"]'>[G.display_name]</font></a>"
if(ticked)
var/metadata = pref.gear[G.display_name]
if(!metadata)
metadata = list()
pref.gear[G.display_name] = metadata
for(var/datum/gear_tweak/tweak in G.gear_tweaks)
var/tweak_input = metadata["[tweak]"]
if(!tweak_input)
tweak_input = tweak.get_default()
metadata["[tweak]"] = tweak_input
. += " <a href='?src=\ref[src];gear=[G.display_name];tweak=\ref[tweak]'>[tweak.get_contents(tweak_input)]</a>"
. += "</td>"
. += "<td width = 10%>[G.cost]</td>"
. += "<td><font size=2><i>[initial(temp.desc)]</i></font></td></tr>"
. += "</table>"
. = jointext(.)
/datum/category_item/player_setup_item/loadout/OnTopic(href, href_list, user)
if(href_list["toggle_gear"])
@@ -141,6 +155,17 @@ var/list/gear_datums = list()
if((total_cost+TG.cost) <= MAX_GEAR_COST)
pref.gear += TG.display_name
return TOPIC_REFRESH
if(href_list["gear"] && href_list["tweak"])
var/datum/gear/gear = gear_datums[href_list["gear"]]
var/datum/gear_tweak/tweak = locate(href_list["tweak"])
if(!tweak || !istype(gear) || !(tweak in gear.gear_tweaks))
return TOPIC_NOACTION
var/metadata = tweak.get_metadata(user)
if(!metadata && !CanUseTopic(user))
return TOPIC_NOACTION
var/gear_metadata = pref.gear[gear.display_name]
gear_metadata["[tweak]"] = metadata
return TOPIC_REFRESH
else if(href_list["select_category"])
current_tab = href_list["select_category"]
return TOPIC_REFRESH
@@ -159,8 +184,8 @@ var/list/gear_datums = list()
var/sort_category = "General"
var/list/gear_tweaks = list() //List of datums which will alter the item after it has been spawned.
/datum/gear/proc/spawn_item(var/location)
/datum/gear/proc/spawn_item(var/location, var/metadata)
var/item = new path(location)
for(var/datum/gear_tweak/gt in gear_tweaks)
gt.apply_tweak(item)
gt.apply_tweak(item, metadata["[gt]"])
return item
@@ -187,253 +187,25 @@
whitelisted = "Tajara"
/datum/gear/head/hijab
display_name = "hijab, black"
display_name = "hijab"
path = /obj/item/clothing/head/hijab
/datum/gear/head/hijab/white
display_name = "hijab, white"
path = /obj/item/clothing/head/hijab/white
/datum/gear/head/hijab/aqua
display_name = "hijab, aqua"
path = /obj/item/clothing/head/hijab/aqua
/datum/gear/head/hijab/blue
display_name = "hijab, blue"
path = /obj/item/clothing/head/hijab/blue
/datum/gear/head/hijab/brown
display_name = "hijab, brown"
path = /obj/item/clothing/head/hijab/brown
/datum/gear/head/hijab/darkblue
display_name = "hijab, dark blue"
path = /obj/item/clothing/head/hijab/darkblue
/datum/gear/head/hijab/darkred
display_name = "hijab, dark red"
path = /obj/item/clothing/head/hijab/darkred
/datum/gear/head/hijab/green
display_name = "hijab, green"
path = /obj/item/clothing/head/hijab/green
/datum/gear/head/hijab/grey
display_name = "hijab, grey"
path = /obj/item/clothing/head/hijab/grey
/datum/gear/head/hijab/lightblue
display_name = "hijab, light blue"
path = /obj/item/clothing/head/hijab/lightblue
/datum/gear/head/hijab/lightbrown
display_name = "hijab, light brown"
path = /obj/item/clothing/head/hijab/lightbrown
/datum/gear/head/hijab/lightgreen
display_name = "hijab, light green"
path = /obj/item/clothing/head/hijab/lightgreen
/datum/gear/head/hijab/lightpurple
display_name = "hijab, light purple"
path = /obj/item/clothing/head/hijab/lightpurple
/datum/gear/head/hijab/lightred
display_name = "hijab, light red"
path = /obj/item/clothing/head/hijab/lightred
/datum/gear/head/hijab/maroon
display_name = "hijab, maroon"
path = /obj/item/clothing/head/hijab/maroon
/datum/gear/head/hijab/orange
display_name = "hijab, orange"
path = /obj/item/clothing/head/hijab/orange
/datum/gear/head/hijab/pink
display_name = "hijab, pink"
path = /obj/item/clothing/head/hijab/pink
/datum/gear/head/hijab/purple
display_name = "hijab, purple"
path = /obj/item/clothing/head/hijab/purple
/datum/gear/head/hijab/red
display_name = "hijab, red"
path = /obj/item/clothing/head/hijab/red
/datum/gear/head/hijab/yellowgreen
display_name = "hijab, yellow green"
path = /obj/item/clothing/head/hijab/yellowgreen
/datum/gear/head/hijab/yellow
display_name = "hijab, yellow"
path = /obj/item/clothing/head/hijab/yellow
/datum/gear/head/hijab/New()
..()
gear_tweaks = list(gear_tweak_free_color_choice)
/datum/gear/head/kippa
display_name = "kippa, black"
display_name = "kippa"
path = /obj/item/clothing/head/kippa
/datum/gear/head/kippa/white
display_name = "kippa, white"
path = /obj/item/clothing/head/kippa/white
/datum/gear/head/kippa/aqua
display_name = "kippa, aqua"
path = /obj/item/clothing/head/kippa/aqua
/datum/gear/head/kippa/blue
display_name = "kippa, blue"
path = /obj/item/clothing/head/kippa/blue
/datum/gear/head/kippa/brown
display_name = "kippa, brown"
path = /obj/item/clothing/head/kippa/brown
/datum/gear/head/kippa/darkblue
display_name = "kippa, dark blue"
path = /obj/item/clothing/head/kippa/darkblue
/datum/gear/head/kippa/darkred
display_name = "kippa, dark red"
path = /obj/item/clothing/head/kippa/darkred
/datum/gear/head/kippa/green
display_name = "kippa, green"
path = /obj/item/clothing/head/kippa/green
/datum/gear/head/kippa/grey
display_name = "kippa, grey"
path = /obj/item/clothing/head/kippa/grey
/datum/gear/head/kippa/lightblue
display_name = "kippa, light blue"
path = /obj/item/clothing/head/kippa/lightblue
/datum/gear/head/kippa/lightbrown
display_name = "kippa, light brown"
path = /obj/item/clothing/head/kippa/lightbrown
/datum/gear/head/kippa/lightgreen
display_name = "kippa, light green"
path = /obj/item/clothing/head/kippa/lightgreen
/datum/gear/head/kippa/lightpurple
display_name = "kippa, light purple"
path = /obj/item/clothing/head/kippa/lightpurple
/datum/gear/head/kippa/lightred
display_name = "kippa, light red"
path = /obj/item/clothing/head/kippa/lightred
/datum/gear/head/kippa/maroon
display_name = "kippa, maroon"
path = /obj/item/clothing/head/kippa/maroon
/datum/gear/head/kippa/orange
display_name = "kippa, orange"
path = /obj/item/clothing/head/kippa/orange
/datum/gear/head/kippa/pink
display_name = "kippa, pink"
path = /obj/item/clothing/head/kippa/pink
/datum/gear/head/kippa/purple
display_name = "kippa, purple"
path = /obj/item/clothing/head/kippa/purple
/datum/gear/head/kippa/red
display_name = "kippa, red"
path = /obj/item/clothing/head/kippa/red
/datum/gear/head/kippa/yellowgreen
display_name = "kippa, yellow green"
path = /obj/item/clothing/head/kippa/yellowgreen
/datum/gear/head/kippa/yellow
display_name = "kippa, yellow"
path = /obj/item/clothing/head/kippa/yellow
/datum/gear/head/kippa/New()
..()
gear_tweaks = list(gear_tweak_free_color_choice)
/datum/gear/head/turban
display_name = "turban, black"
display_name = "turban"
path = /obj/item/clothing/head/turban
/datum/gear/head/turban/white
display_name = "turban, white"
path = /obj/item/clothing/head/turban/white
/datum/gear/head/turban/aqua
display_name = "turban, aqua"
path = /obj/item/clothing/head/turban/aqua
/datum/gear/head/turban/blue
display_name = "turban, blue"
path = /obj/item/clothing/head/turban/blue
/datum/gear/head/turban/brown
display_name = "turban, brown"
path = /obj/item/clothing/head/turban/brown
/datum/gear/head/turban/darkblue
display_name = "turban, dark blue"
path = /obj/item/clothing/head/turban/darkblue
/datum/gear/head/turban/darkred
display_name = "turban, dark red"
path = /obj/item/clothing/head/turban/darkred
/datum/gear/head/turban/green
display_name = "turban, green"
path = /obj/item/clothing/head/turban/green
/datum/gear/head/turban/grey
display_name = "turban, grey"
path = /obj/item/clothing/head/turban/grey
/datum/gear/head/turban/lightblue
display_name = "turban, light blue"
path = /obj/item/clothing/head/turban/lightblue
/datum/gear/head/turban/lightbrown
display_name = "turban, light brown"
path = /obj/item/clothing/head/turban/lightbrown
/datum/gear/head/turban/lightgreen
display_name = "turban, light green"
path = /obj/item/clothing/head/turban/lightgreen
/datum/gear/head/turban/lightpurple
display_name = "turban, light purple"
path = /obj/item/clothing/head/turban/lightpurple
/datum/gear/head/turban/lightred
display_name = "turban, light red"
path = /obj/item/clothing/head/turban/lightred
/datum/gear/head/turban/maroon
display_name = "turban, maroon"
path = /obj/item/clothing/head/turban/maroon
/datum/gear/head/turban/orange
display_name = "turban, orange"
path = /obj/item/clothing/head/turban/orange
/datum/gear/head/turban/pink
display_name = "turban, pink"
path = /obj/item/clothing/head/turban/pink
/datum/gear/head/turban/purple
display_name = "turban, purple"
path = /obj/item/clothing/head/turban/purple
/datum/gear/head/turban/red
display_name = "turban, red"
path = /obj/item/clothing/head/turban/red
/datum/gear/head/turban/yellowgreen
display_name = "turban, yellow green"
path = /obj/item/clothing/head/turban/yellowgreen
/datum/gear/head/turban/yellow
display_name = "turban, yellow"
path = /obj/item/clothing/head/turban/yellow
/datum/gear/head/turban/New()
..()
gear_tweaks = list(gear_tweak_free_color_choice)