Adds cult action bar (#26052)

* cult actions list

* moved blood spear a little to the side

* pixel offset

* Update code/__DEFINES/action_button_defines.dm

Co-authored-by: Spaghetti-bit <yumyumkillkill@gmail.com>
Signed-off-by: HMBGERDO <61080616+HMBGERDO@users.noreply.github.com>

* review

* eh, why not

---------

Signed-off-by: HMBGERDO <61080616+HMBGERDO@users.noreply.github.com>
Co-authored-by: Spaghetti-bit <yumyumkillkill@gmail.com>
This commit is contained in:
HMBGERDO
2024-07-02 01:14:45 +02:00
committed by GitHub
parent f64932f1f3
commit bc303a85bd
8 changed files with 36 additions and 30 deletions
+2
View File
@@ -27,3 +27,5 @@
#define SCRN_OBJ_IN_LIST "list"
/// In the collapseable palette
#define SCRN_OBJ_IN_PALETTE "palette"
/// In cult spell list
#define SCRN_OBJ_CULT_LIST "cult_list"
+11
View File
@@ -508,6 +508,8 @@ GLOBAL_LIST_INIT(palette_removed_matrix, list(1.4,0,0,0, 0.7,0.4,0,0, 0.4,0,0.6,
listed_actions.insert_action(button)
if(SCRN_OBJ_IN_PALETTE)
palette_actions.insert_action(button)
if(SCRN_OBJ_CULT_LIST)
cult_actions.insert_action(button)
else // If we don't have it as a define, this is a screen_loc, and we should be floating
floating_actions += button
button.screen_loc = position
@@ -523,6 +525,8 @@ GLOBAL_LIST_INIT(palette_removed_matrix, list(1.4,0,0,0, 0.7,0.4,0,0, 0.4,0,0.6,
listed_actions.insert_action(button, listed_actions.index_of(relative_to))
if(SCRN_OBJ_IN_PALETTE)
palette_actions.insert_action(button, palette_actions.index_of(relative_to))
if(SCRN_OBJ_CULT_LIST)
cult_actions.insert_action(button, cult_actions.index_of(relative_to))
if(SCRN_OBJ_FLOATING) // If we don't have it as a define, this is a screen_loc, and we should be floating
floating_actions += button
var/client/our_client = mymob.client
@@ -543,6 +547,8 @@ GLOBAL_LIST_INIT(palette_removed_matrix, list(1.4,0,0,0, 0.7,0.4,0,0, 0.4,0,0.6,
floating_actions -= button
if(SCRN_OBJ_IN_LIST)
listed_actions.remove_action(button)
if(SCRN_OBJ_CULT_LIST)
cult_actions.remove_action(button)
if(SCRN_OBJ_IN_PALETTE)
palette_actions.remove_action(button)
button.screen_loc = null
@@ -551,11 +557,13 @@ GLOBAL_LIST_INIT(palette_removed_matrix, list(1.4,0,0,0, 0.7,0.4,0,0, 0.4,0,0.6,
/datum/hud/proc/generate_landings(atom/movable/screen/movable/action_button/button)
listed_actions.generate_landing()
palette_actions.generate_landing()
cult_actions.generate_landing()
/// Clears all currently visible landings
/datum/hud/proc/hide_landings()
listed_actions.clear_landing()
palette_actions.clear_landing()
cult_actions.clear_landing()
// Updates any existing "owned" visuals, ensures they continue to be visible
/datum/hud/proc/update_our_owner()
@@ -563,6 +571,7 @@ GLOBAL_LIST_INIT(palette_removed_matrix, list(1.4,0,0,0, 0.7,0.4,0,0, 0.4,0,0.6,
palette_down.refresh_owner()
palette_up.refresh_owner()
listed_actions.update_landing()
cult_actions.update_landing()
palette_actions.update_landing()
/// Ensures all of our buttons are properly within the bounds of our client's view, moves them if they're not
@@ -570,6 +579,7 @@ GLOBAL_LIST_INIT(palette_removed_matrix, list(1.4,0,0,0, 0.7,0.4,0,0, 0.4,0,0.6,
var/our_view = mymob?.client?.view
if(!our_view)
return
cult_actions.check_against_view()
listed_actions.check_against_view()
palette_actions.check_against_view()
for(var/atom/movable/screen/movable/action_button/floating_button as anything in floating_actions)
@@ -579,6 +589,7 @@ GLOBAL_LIST_INIT(palette_removed_matrix, list(1.4,0,0,0, 0.7,0.4,0,0, 0.4,0,0.6,
/// Generates and fills new action groups with our mob's current actions
/datum/hud/proc/build_action_groups()
cult_actions = new(src)
listed_actions = new(src)
palette_actions = new(src)
floating_actions = list()
+15 -3
View File
@@ -5,6 +5,8 @@
var/list/atom/movable/screen/movable/action_button/actions
/// The initial vertical offset of our action buttons
var/north_offset = 0
/// The initial horizontal offset of our action buttons
var/west_offset = 0
/// The pixel vertical offset of our action buttons
var/pixel_north_offset = 0
/// The pixel horizontal offset of our action buttons
@@ -88,10 +90,10 @@
var/visual_row = row + north_offset
var/coord_row = visual_row ? "-[visual_row]" : "+0"
var/visual_column = number % column_max
var/visual_column = west_offset + number % column_max
var/coord_col = "+[visual_column]"
var/coord_col_offset = 4 + 2 * (visual_column + 1)
var/coord_row_offset = pixel_north_offset + 2 * (1 * visual_row)
var/coord_col_offset = pixel_horiz_offset + 2 * (number % column_max + 1)
var/coord_row_offset = pixel_north_offset + 2 * (1 * row)
return "WEST[coord_col]:[coord_col_offset],NORTH[coord_row]:-[coord_row_offset]"
/datum/action_group/proc/check_against_view()
@@ -214,6 +216,7 @@
/datum/action_group/listed
pixel_horiz_offset = 4
pixel_north_offset = 6
column_max = 10
location = SCRN_OBJ_IN_LIST
@@ -221,3 +224,12 @@
/datum/action_group/listed/refresh_actions()
. = ..()
owner?.palette_actions.refresh_actions() // We effect them, so we gotta refresh em
/datum/action_group/listed/cult
north_offset = 11
pixel_north_offset = 2
west_offset = 6
pixel_horiz_offset = -29
column_max = 4
location = SCRN_OBJ_CULT_LIST
max_rows = 2
+4
View File
@@ -39,6 +39,8 @@
var/atom/movable/screen/palette_scroll/up/palette_up
/// the groups of actions, such as palette (previously normal) actions
var/datum/action_group/palette/palette_actions
/// action group for cult spell actions
var/datum/action_group/listed/cult/cult_actions
/// action group for expanded actions, the normal action set
var/datum/action_group/listed/listed_actions
/// A list of action buttons which aren't owned by any action group, and are just floating somewhere on the hud.
@@ -77,6 +79,7 @@
var/list/all_action_buttons = list()
all_action_buttons += palette_actions.actions
all_action_buttons += listed_actions.actions
all_action_buttons += cult_actions.actions
return all_action_buttons
/datum/hud/New(mob/owner)
@@ -110,6 +113,7 @@
QDEL_NULL(palette_up)
QDEL_NULL(palette_actions)
QDEL_NULL(listed_actions)
QDEL_NULL(cult_actions)
QDEL_LIST_CONTENTS(floating_actions)
QDEL_NULL(module_store_icon)
-3
View File
@@ -96,9 +96,6 @@
Trigger()
return FALSE
/datum/action/proc/override_location() // Override to set coordinates manually
return
/datum/action/proc/IsAvailable()// returns 1 if all checks pass
if(!owner)
return FALSE
+2 -22
View File
@@ -3,32 +3,15 @@
name = "Prepare Blood Magic"
button_overlay_icon_state = "carve"
desc = "Prepare blood magic by carving runes into your flesh. This is easier with an <b>empowering rune</b>."
default_button_position = DEFAULT_BLOODSPELLS
var/list/spells = list()
var/channeling = FALSE
default_button_position = DEFAULT_BLOODSPELLS
/datum/action/innate/cult/blood_magic/Remove()
for(var/X in spells)
qdel(X)
..()
/datum/action/innate/cult/blood_magic/proc/Positioning()
for(var/datum/hud/hud as anything in viewers)
var/our_view = hud.mymob?.client?.view || "15x15"
var/atom/movable/screen/movable/action_button/button = viewers[hud]
var/position = screen_loc_to_offset(button.screen_loc)
var/spells_iterated = 0
for(var/datum/action/innate/cult/blood_spell/blood_spell in spells)
spells_iterated += 1
if(blood_spell.positioned)
continue
var/atom/movable/screen/movable/action_button/moving_button = blood_spell.viewers[hud]
if(!moving_button)
continue
var/our_x = position[1] + spells_iterated * world.icon_size // Offset any new buttons into our list
hud.position_action(moving_button, offset_to_screen_loc(our_x, position[2], our_view))
blood_spell.positioned = TRUE
/datum/action/innate/cult/blood_magic/Activate()
var/rune = FALSE
var/limit = RUNELESS_MAX_BLOODCHARGE
@@ -93,6 +76,7 @@
name = "Blood Magic"
button_overlay_icon_state = "telerune"
desc = "Fear the Old Blood."
default_button_position = SCRN_OBJ_CULT_LIST
var/charges = 1
var/magic_path = null
var/obj/item/melee/blood_magic/hand_magic
@@ -129,10 +113,6 @@
// button.ordered = FALSE
..()
/datum/action/innate/cult/blood_spell/override_location()
// button.locked = TRUE
all_magic.Positioning()
/datum/action/innate/cult/blood_spell/Remove()
if(all_magic)
all_magic.spells -= src
+1 -1
View File
@@ -112,7 +112,7 @@
name = "Draw Blood Rune"
desc = "Use the ritual dagger to create a powerful blood rune"
button_overlay_icon_state = "blood_dagger"
default_button_position = "6:157,4:-2"
default_button_position = "10:29,4:-2"
/datum/action/innate/cult/use_dagger/Grant()
button_overlay_icon_state = GET_CULT_DATA(dagger_icon, "blood_dagger")
+1 -1
View File
@@ -647,9 +647,9 @@
desc = "Call the blood spear back to your hand!"
button_background_icon_state = "bg_cult"
button_overlay_icon_state = "bloodspear"
default_button_position = "11:31,4:-2"
var/obj/item/cult_spear/spear
var/cooldown = 0
default_button_position = "6:157,4:-2"
/datum/action/innate/cult/spear/Grant(mob/user, obj/blood_spear)
. = ..()