Skip to content

Commit

Permalink
Merge pull request #4748 from MistakeNot4892/feature/intents
Browse files Browse the repository at this point in the history
Moves intent selector under hands, reshuffles inventory.
  • Loading branch information
out-of-phaze authored Jan 18, 2025
2 parents 1f32eb1 + e887699 commit 2351ce8
Show file tree
Hide file tree
Showing 11 changed files with 171 additions and 114 deletions.
16 changes: 8 additions & 8 deletions code/_onclick/hud/_defines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,16 @@

//Lower center, persistent menu
#define ui_sstore1 "LEFT+2:10,BOTTOM:5"
#define ui_id "LEFT+3:12,BOTTOM:5"
#define ui_belt "LEFT+4:14,BOTTOM:5"
#define ui_back "CENTER-2:14,BOTTOM:5"
#define ui_back "LEFT+3:22,BOTTOM:5"
#define ui_id "LEFT+4:26,BOTTOM:5"
#define ui_belt "RIGHT-5:16,BOTTOM:5"
#define ui_rhand "CENTER-1:16,BOTTOM:5"
#define ui_lhand "CENTER:16,BOTTOM:5"
#define ui_equip "CENTER-1:16,BOTTOM+1:5"
#define ui_swaphand1 "CENTER-1:16,BOTTOM+1:5"
#define ui_swaphand2 "CENTER:16,BOTTOM+1:5"
#define ui_storage1 "CENTER+1:16,BOTTOM:5"
#define ui_storage2 "CENTER+2:16,BOTTOM:5"
#define ui_storage1 "RIGHT-3:16,BOTTOM:5"
#define ui_storage2 "RIGHT-4:16,BOTTOM:5"

#define ui_alien_head "CENTER-3:12,BOTTOM:5" //aliens
#define ui_alien_oclothing "CENTER-2:14,BOTTOM:5"//aliens
Expand All @@ -52,9 +52,9 @@
#define ui_dropbutton "RIGHT-4:22,BOTTOM:5"
#define ui_drop_throw "RIGHT-1:28,BOTTOM+1:7"
#define ui_pull_resist "RIGHT-2:26,BOTTOM+1:7"
#define ui_acti "RIGHT-2:26,BOTTOM:5"
#define ui_movi "RIGHT-3:24,BOTTOM:5"
#define ui_attack_selector "RIGHT-3:24,BOTTOM+1:6"
#define ui_acti "CENTER,BOTTOM:5"
#define ui_movi "RIGHT-2:24,BOTTOM:5"
#define ui_attack_selector "RIGHT-2:27,BOTTOM+2:9"
#define ui_zonesel "RIGHT-1:28,BOTTOM:5"
#define ui_acti_alt "RIGHT-1:28,BOTTOM:5" //alternative intent switcher for when the interface is hidden
#define ui_stamina "RIGHT-3:24,BOTTOM+1:5"
Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/hud/hud.dm
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@
qdel(inv_box)

// Rebuild offsets for the hand elements.
var/hand_y_offset = 5
var/hand_y_offset = 21
var/list/elements = hand_hud_objects?.Copy()
while(length(elements))
var/copy_index = min(length(elements), 2)+1
Expand Down
3 changes: 3 additions & 0 deletions code/_onclick/hud/screen/_screen.dm
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@
return TRUE

/obj/screen/Click(location, control, params)
var/list/paramlist = params2list(params)
if(paramlist["shift"])
return examine(usr, 0)
if(ismob(usr) && usr.client && usr.canClick() && (!user_incapacitation_flags || !usr.incapacitated(user_incapacitation_flags)))
return handle_click(usr, params)
return FALSE
Expand Down
135 changes: 92 additions & 43 deletions code/_onclick/hud/screen/screen_intent.dm
Original file line number Diff line number Diff line change
@@ -1,68 +1,117 @@
// Sub-element used for clickable intent selection.
/obj/screen/intent_button
layer = FLOAT_LAYER
plane = FLOAT_PLANE
icon = 'icons/screen/intents.dmi'
icon_state = "blank"
requires_ui_style = FALSE
screen_loc = null // Technically a screen element, but we use vis_contents to draw them.
var/obj/screen/intent/parent
var/decl/intent/intent
var/selected

/obj/screen/intent_button/Initialize(mapload, mob/_owner, decl/ui_style/ui_style, ui_color, ui_alpha, ui_cat, intent_owner)
parent = intent_owner
. = ..()

/obj/screen/intent_button/Destroy()
parent = null
intent = null
return ..()

/obj/screen/intent_button/proc/set_selected(decl/intent/_intent)
intent = _intent
selected = TRUE
update_icon()

/obj/screen/intent_button/proc/set_deselected(decl/intent/_intent)
intent = _intent
selected = FALSE
update_icon()

/obj/screen/intent_button/handle_click(mob/user, params)
. = ..()
if(. && intent && parent)
parent.set_intent(intent)

/obj/screen/intent_button/examine(mob/user, distance)
SHOULD_CALL_PARENT(FALSE)
if(desc)
to_chat(user, desc)

/obj/screen/intent_button/on_update_icon()
. = ..()
screen_loc = null
if(intent)
name = intent.name
desc = intent.desc
icon = intent.icon
icon_state = selected ? intent.icon_state : "[intent.icon_state]_off"

/obj/screen/intent
name = "intent"
icon = 'icons/mob/screen/styles/intents.dmi'
icon_state = "intents"
icon = 'icons/screen/intents.dmi'
icon_state = "blank"
screen_loc = ui_acti
requires_ui_style = FALSE
apply_screen_overlay = FALSE
var/intent_width = 16
var/intent_height = 16
var/list/intent_selectors

/obj/screen/intent/Initialize(mapload, mob/_owner, decl/ui_style/ui_style, ui_color, ui_alpha, ui_cat)
. = ..()
update_icon()
// Hide from right-click.
name = ""
verbs.Cut()

/obj/screen/intent/Destroy()
QDEL_NULL(intent_selectors)
vis_contents.Cut()
return ..()

/obj/screen/intent/handle_click(mob/user, params)
/obj/screen/intent/proc/set_intent(decl/intent/intent)
var/mob/owner = owner_ref?.resolve()
if(!istype(owner) || QDELETED(owner) || user != owner || !params)
return
params = params2list(params)
if(owner.set_intent(get_intent_by_position(owner.get_available_intents(), text2num(params["icon-x"]), text2num(params["icon-y"]))))
if(istype(owner) && istype(intent))
owner.set_intent(intent)
update_icon()

/obj/screen/intent/proc/get_intent_by_position(list/intents, icon_x, icon_y)
if(icon_y <= 16)
if(icon_x <= 16)
return intents[1]
return intents[2]
else if(icon_x <= 16)
return intents[3]
return intents[4]

/obj/screen/intent/proc/apply_intent_overlay_offset(image/overlay, index)
switch(index)
if(2)
overlay.pixel_x = 16
if(3)
overlay.pixel_y = 16
if(4)
overlay.pixel_x = 16
overlay.pixel_y = 16
/obj/screen/intent/proc/apply_intent_button_offset(atom/intent_button, index, intent_count)
intent_button.pixel_z = 0
intent_button.pixel_w = 0
intent_button.pixel_y = 0
intent_button.pixel_x = -((intent_count * intent_width)/2) + ((index-1) * intent_width)

/obj/screen/intent/proc/get_intent_button(index)
. = (index >= 1 && index <= length(intent_selectors)) ? intent_selectors[index] : null
if(!.)
. = new /obj/screen/intent_button(null, owner_ref?.resolve(), null, null, null, null, src)
LAZYADD(intent_selectors, .)

/obj/screen/intent/on_update_icon()
..()

var/mob/owner = owner_ref?.resolve()
if(!istype(owner) || QDELETED(owner))
return

var/decl/intent/owner_intent = owner.get_intent()
var/i = 0
var/image/I
for(var/decl/intent/intent as anything in owner.get_available_intents())
var/i = 1
var/list/all_intents = owner.get_available_intents()
for(var/decl/intent/intent as anything in all_intents)
var/obj/screen/intent_button/intent_button = get_intent_button(i)
if(intent == owner_intent)
I = image(intent.icon, intent.icon_state)
intent_button.set_selected(intent)
else
I = image(intent.icon, "[intent.icon_state]_off")
intent_button.set_deselected(intent)
i++
apply_intent_overlay_offset(I, i)
add_overlay(I)
compile_overlays()
apply_intent_button_offset(intent_button, i, length(all_intents))
add_vis_contents(intent_button)

/obj/screen/intent/binary
icon = 'icons/mob/screen/styles/intents_wide.dmi'
if(i < length(intent_selectors))
for(var/index = i+1 to length(intent_selectors))
remove_vis_contents(intent_selectors[index])

/obj/screen/intent/binary/get_intent_by_position(list/intents, icon_x, icon_y)
if(icon_y <= 16)
return intents[1]
return intents[2]

/obj/screen/intent/binary/apply_intent_overlay_offset(image/overlay, index)
if(index == 2)
overlay.pixel_y = 16
/obj/screen/intent/binary
intent_width = 32
2 changes: 1 addition & 1 deletion code/_onclick/hud/screen/screen_maneuver.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
user_living.prepare_maneuver()

/obj/screen/maneuver/examine(mob/user, distance)
. = ..()
SHOULD_CALL_PARENT(FALSE)
if(!isliving(user))
return
var/mob/living/user_living = user
Expand Down
113 changes: 56 additions & 57 deletions code/modules/client/ui_styles/ui_style_subtypes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,56 +7,56 @@
name = "Orange"
uid = "ui_style_orange"
override_icons = list(
UI_ICON_ATTACK = 'icons/mob/screen/styles/orange/attack_selector.dmi',
UI_ICON_FIRE_INTENT = 'icons/mob/screen/styles/orange/fire_intent.dmi',
UI_ICON_HANDS = 'icons/mob/screen/styles/orange/hands.dmi',
UI_ICON_INTERACTION = 'icons/mob/screen/styles/orange/interaction.dmi',
UI_ICON_INVENTORY = 'icons/mob/screen/styles/orange/inventory.dmi',
UI_ICON_MOVEMENT = 'icons/mob/screen/styles/orange/movement.dmi',
UI_ICON_UP_HINT = 'icons/mob/screen/styles/orange/uphint.dmi',
UI_ICON_ZONE_SELECT = 'icons/mob/screen/styles/orange/zone_selector.dmi'
(UI_ICON_ATTACK) = 'icons/mob/screen/styles/orange/attack_selector.dmi',
(UI_ICON_FIRE_INTENT) = 'icons/mob/screen/styles/orange/fire_intent.dmi',
(UI_ICON_HANDS) = 'icons/mob/screen/styles/orange/hands.dmi',
(UI_ICON_INTERACTION) = 'icons/mob/screen/styles/orange/interaction.dmi',
(UI_ICON_INVENTORY) = 'icons/mob/screen/styles/orange/inventory.dmi',
(UI_ICON_MOVEMENT) = 'icons/mob/screen/styles/orange/movement.dmi',
(UI_ICON_UP_HINT) = 'icons/mob/screen/styles/orange/uphint.dmi',
(UI_ICON_ZONE_SELECT) = 'icons/mob/screen/styles/orange/zone_selector.dmi'
)

/decl/ui_style/old
name = "Old"
uid = "ui_style_old"
override_icons = list(
UI_ICON_ATTACK = 'icons/mob/screen/styles/old/attack_selector.dmi',
UI_ICON_FIRE_INTENT = 'icons/mob/screen/styles/old/fire_intent.dmi',
UI_ICON_HANDS = 'icons/mob/screen/styles/old/hands.dmi',
UI_ICON_INTERACTION = 'icons/mob/screen/styles/old/interaction.dmi',
UI_ICON_INVENTORY = 'icons/mob/screen/styles/old/inventory.dmi',
UI_ICON_MOVEMENT = 'icons/mob/screen/styles/old/movement.dmi',
UI_ICON_UP_HINT = 'icons/mob/screen/styles/old/uphint.dmi',
UI_ICON_ZONE_SELECT = 'icons/mob/screen/styles/old/zone_selector.dmi'
(UI_ICON_ATTACK) = 'icons/mob/screen/styles/old/attack_selector.dmi',
(UI_ICON_FIRE_INTENT) = 'icons/mob/screen/styles/old/fire_intent.dmi',
(UI_ICON_HANDS) = 'icons/mob/screen/styles/old/hands.dmi',
(UI_ICON_INTERACTION) = 'icons/mob/screen/styles/old/interaction.dmi',
(UI_ICON_INVENTORY) = 'icons/mob/screen/styles/old/inventory.dmi',
(UI_ICON_MOVEMENT) = 'icons/mob/screen/styles/old/movement.dmi',
(UI_ICON_UP_HINT) = 'icons/mob/screen/styles/old/uphint.dmi',
(UI_ICON_ZONE_SELECT) = 'icons/mob/screen/styles/old/zone_selector.dmi'
)

/decl/ui_style/old_noborder
name = "Old (no border)"
uid = "ui_style_old_noborder"
override_icons = list(
UI_ICON_ATTACK = 'icons/mob/screen/styles/old/attack_selector.dmi',
UI_ICON_FIRE_INTENT = 'icons/mob/screen/styles/old/fire_intent.dmi',
UI_ICON_HANDS = 'icons/mob/screen/styles/old/hands.dmi',
UI_ICON_INTERACTION = 'icons/mob/screen/styles/old/interaction.dmi',
UI_ICON_INVENTORY = 'icons/mob/screen/styles/old_noborder/inventory.dmi',
UI_ICON_MOVEMENT = 'icons/mob/screen/styles/old/movement.dmi',
UI_ICON_UP_HINT = 'icons/mob/screen/styles/old_noborder/uphint.dmi',
UI_ICON_ZONE_SELECT = 'icons/mob/screen/styles/old_noborder/zone_selector.dmi'
(UI_ICON_ATTACK) = 'icons/mob/screen/styles/old/attack_selector.dmi',
(UI_ICON_FIRE_INTENT) = 'icons/mob/screen/styles/old/fire_intent.dmi',
(UI_ICON_HANDS) = 'icons/mob/screen/styles/old/hands.dmi',
(UI_ICON_INTERACTION) = 'icons/mob/screen/styles/old/interaction.dmi',
(UI_ICON_INVENTORY) = 'icons/mob/screen/styles/old_noborder/inventory.dmi',
(UI_ICON_MOVEMENT) = 'icons/mob/screen/styles/old/movement.dmi',
(UI_ICON_UP_HINT) = 'icons/mob/screen/styles/old_noborder/uphint.dmi',
(UI_ICON_ZONE_SELECT) = 'icons/mob/screen/styles/old_noborder/zone_selector.dmi'
)

/decl/ui_style/white
name = "White"
uid = "ui_style_white"
override_icons = list(
UI_ICON_ATTACK = 'icons/mob/screen/styles/white/attack_selector.dmi',
UI_ICON_FIRE_INTENT = 'icons/mob/screen/styles/white/fire_intent.dmi',
UI_ICON_HANDS = 'icons/mob/screen/styles/white/hands.dmi',
UI_ICON_INTERACTION = 'icons/mob/screen/styles/white/interaction.dmi',
UI_ICON_INVENTORY = 'icons/mob/screen/styles/white/inventory.dmi',
UI_ICON_MOVEMENT = 'icons/mob/screen/styles/white/movement.dmi',
UI_ICON_UP_HINT = 'icons/mob/screen/styles/white/uphint.dmi',
UI_ICON_ZONE_SELECT = 'icons/mob/screen/styles/white/zone_selector.dmi'
(UI_ICON_ATTACK) = 'icons/mob/screen/styles/white/attack_selector.dmi',
(UI_ICON_FIRE_INTENT) = 'icons/mob/screen/styles/white/fire_intent.dmi',
(UI_ICON_HANDS) = 'icons/mob/screen/styles/white/hands.dmi',
(UI_ICON_INTERACTION) = 'icons/mob/screen/styles/white/interaction.dmi',
(UI_ICON_INVENTORY) = 'icons/mob/screen/styles/white/inventory.dmi',
(UI_ICON_MOVEMENT) = 'icons/mob/screen/styles/white/movement.dmi',
(UI_ICON_UP_HINT) = 'icons/mob/screen/styles/white/uphint.dmi',
(UI_ICON_ZONE_SELECT) = 'icons/mob/screen/styles/white/zone_selector.dmi'
)
use_overlay_color = TRUE
use_ui_color = TRUE
Expand All @@ -65,14 +65,14 @@
name = "Minimalist"
uid = "ui_style_minimalist"
override_icons = list(
UI_ICON_ATTACK = 'icons/mob/screen/styles/minimalist/attack_selector.dmi',
UI_ICON_FIRE_INTENT = 'icons/mob/screen/styles/minimalist/fire_intent.dmi',
UI_ICON_HANDS = 'icons/mob/screen/styles/minimalist/hands.dmi',
UI_ICON_INTERACTION = 'icons/mob/screen/styles/minimalist/interaction.dmi',
UI_ICON_INVENTORY = 'icons/mob/screen/styles/minimalist/inventory.dmi',
UI_ICON_MOVEMENT = 'icons/mob/screen/styles/minimalist/movement.dmi',
UI_ICON_UP_HINT = 'icons/mob/screen/styles/minimalist/uphint.dmi',
UI_ICON_ZONE_SELECT = 'icons/mob/screen/styles/minimalist/zone_selector.dmi'
(UI_ICON_ATTACK) = 'icons/mob/screen/styles/minimalist/attack_selector.dmi',
(UI_ICON_FIRE_INTENT) = 'icons/mob/screen/styles/minimalist/fire_intent.dmi',
(UI_ICON_HANDS) = 'icons/mob/screen/styles/minimalist/hands.dmi',
(UI_ICON_INTERACTION) = 'icons/mob/screen/styles/minimalist/interaction.dmi',
(UI_ICON_INVENTORY) = 'icons/mob/screen/styles/minimalist/inventory.dmi',
(UI_ICON_MOVEMENT) = 'icons/mob/screen/styles/minimalist/movement.dmi',
(UI_ICON_UP_HINT) = 'icons/mob/screen/styles/minimalist/uphint.dmi',
(UI_ICON_ZONE_SELECT) = 'icons/mob/screen/styles/minimalist/zone_selector.dmi'
)
use_overlay_color = TRUE
use_ui_color = TRUE
Expand All @@ -82,23 +82,22 @@
uid = "ui_style_underworld"
restricted = FALSE
icons = list(
UI_ICON_ATTACK = 'icons/mob/screen/styles/underworld/attack_selector.dmi',
UI_ICON_FIRE_INTENT = 'icons/mob/screen/styles/underworld/fire_intent.dmi',
UI_ICON_HANDS = 'icons/mob/screen/styles/underworld/hands.dmi',
UI_ICON_HEALTH = 'icons/mob/screen/styles/health.dmi',
UI_ICON_CRIT_MARKER = 'icons/mob/screen/styles/crit_markers.dmi',
UI_ICON_HYDRATION = 'icons/mob/screen/styles/hydration.dmi',
UI_ICON_INTENT = 'icons/mob/screen/styles/intents.dmi',
UI_ICON_INTERACTION = 'icons/mob/screen/styles/underworld/interaction.dmi',
UI_ICON_INTERNALS = 'icons/mob/screen/styles/internals.dmi',
UI_ICON_INVENTORY = 'icons/mob/screen/styles/underworld/inventory.dmi',
UI_ICON_MOVEMENT = 'icons/mob/screen/styles/underworld/movement.dmi',
UI_ICON_NUTRITION = 'icons/mob/screen/styles/nutrition.dmi',
UI_ICON_STATUS_FIRE = 'icons/mob/screen/styles/status_fire.dmi',
UI_ICON_STATUS = 'icons/mob/screen/styles/status.dmi',
UI_ICON_UP_HINT = 'icons/mob/screen/styles/underworld/uphint.dmi',
UI_ICON_ZONE_SELECT = 'icons/mob/screen/styles/underworld/zone_selector.dmi',
UI_ICON_CHARGE = 'icons/mob/screen/styles/charge.dmi'
(UI_ICON_ATTACK) = 'icons/mob/screen/styles/underworld/attack_selector.dmi',
(UI_ICON_FIRE_INTENT) = 'icons/mob/screen/styles/underworld/fire_intent.dmi',
(UI_ICON_HANDS) = 'icons/mob/screen/styles/underworld/hands.dmi',
(UI_ICON_HEALTH) = 'icons/mob/screen/styles/health.dmi',
(UI_ICON_CRIT_MARKER) = 'icons/mob/screen/styles/crit_markers.dmi',
(UI_ICON_HYDRATION) = 'icons/mob/screen/styles/hydration.dmi',
(UI_ICON_INTERACTION) = 'icons/mob/screen/styles/underworld/interaction.dmi',
(UI_ICON_INTERNALS) = 'icons/mob/screen/styles/internals.dmi',
(UI_ICON_INVENTORY) = 'icons/mob/screen/styles/underworld/inventory.dmi',
(UI_ICON_MOVEMENT) = 'icons/mob/screen/styles/underworld/movement.dmi',
(UI_ICON_NUTRITION) = 'icons/mob/screen/styles/nutrition.dmi',
(UI_ICON_STATUS_FIRE) = 'icons/mob/screen/styles/status_fire.dmi',
(UI_ICON_STATUS) = 'icons/mob/screen/styles/status.dmi',
(UI_ICON_UP_HINT) = 'icons/mob/screen/styles/underworld/uphint.dmi',
(UI_ICON_ZONE_SELECT) = 'icons/mob/screen/styles/underworld/zone_selector.dmi',
(UI_ICON_CHARGE) = 'icons/mob/screen/styles/charge.dmi'
)
use_overlay_color = TRUE
use_ui_color = TRUE
Loading

0 comments on commit 2351ce8

Please sign in to comment.