Files
Bubberstation/code/modules/buildmode/submodes/area_edit.dm
Aylong 7a817300fd Improve and extend fieldset_block and examine_block (#88678)
## About The Pull Request
Maked `fieldset_block` and `examine_block` more stylish and neat, also
`fieldset_block` no longer has a centred title.
Renamed `examine_block` to `boxed_message` and adds
`custom_boxed_message` which can be colored.

- AdminPMs, admin tickets and vote results has been wrapped into
`fieldset_block` for comfort and visibility
- Health Analyzer results painted to blue
- Vote notice and tips of the round wrapped to purple
`custom_boxed_message`
- Tooltip text border color, now uses text color, not just white

## Why It's Good For The Game
Demonstration in both themes

<details><summary>Dark</summary>


![image](https://github.com/user-attachments/assets/7175379b-b053-4fb7-bd25-65c744a21c56)

![image](https://github.com/user-attachments/assets/1728e72b-0110-4b81-9d61-8779f5fdc3a0)

![image](https://github.com/user-attachments/assets/5e6f9604-35b8-4840-b6b4-35a68f49a997)

</details>

<details><summary>Light</summary>


![image](https://github.com/user-attachments/assets/6a3d693b-e0dc-4a4b-b4d7-2ded54ce0d67)

![image](https://github.com/user-attachments/assets/c4f5e089-180f-4d13-806a-fa64f01740a3)

![image](https://github.com/user-attachments/assets/a46d52c4-ad37-4637-8cae-c4b00139efc1)

</details>

## Changelog

🆑
qol: AdminPMs, admin tickets, vote results and started vote notification
are now much more visible in the chat.
qol: Boxed messages in chat (like examine), has been restyled.
/🆑
2024-12-24 11:32:38 -08:00

77 lines
2.6 KiB
Plaintext

/datum/buildmode_mode/area_edit
key = "areaedit"
use_corner_selection = TRUE
var/area/storedarea
var/image/areaimage
/datum/buildmode_mode/area_edit/New()
areaimage = image('icons/area/areas_misc.dmi', null, "yellow")
..()
/datum/buildmode_mode/area_edit/show_help(client/builder)
to_chat(builder, span_purple(boxed_message(
"[span_bold("Select corner")] -> Left Mouse Button on obj/turf/mob\n\
[span_bold("Paint area")] -> Left Mouse Button + Alt on turf/obj/mob\n\
[span_bold("Select area to paint")] -> Right Mouse Button on obj/turf/mob\n\
[span_bold("Create new area")] -> Right Mouse Button on buildmode button"))
)
/datum/buildmode_mode/area_edit/enter_mode(datum/buildmode/BM)
BM.holder.images += areaimage
/datum/buildmode_mode/area_edit/exit_mode(datum/buildmode/BM)
areaimage.loc = null // de-color the area
BM.holder.images -= areaimage
return ..()
/datum/buildmode_mode/area_edit/Destroy()
QDEL_NULL(areaimage)
storedarea = null
return ..()
/datum/buildmode_mode/area_edit/change_settings(client/c)
var/target_path = input(c, "Enter typepath:", "Typepath", "/area")
var/areatype = text2path(target_path)
if(ispath(areatype,/area))
var/areaname = input(c, "Enter area name:", "Area name", "Area")
if(!areaname || !length(areaname))
return
storedarea = new areatype
storedarea.power_equip = 0
storedarea.power_light = 0
storedarea.power_environ = 0
storedarea.always_unpowered = 0
storedarea.name = areaname
areaimage.loc = storedarea // color our area
/datum/buildmode_mode/area_edit/handle_click(client/c, params, object)
var/list/modifiers = params2list(params)
if(LAZYACCESS(modifiers, LEFT_CLICK))
if(!storedarea)
to_chat(c, span_warning("Configure or select the area you want to paint first!"))
return
if(LAZYACCESS(modifiers, ALT_CLICK))
var/turf/T = get_turf(object)
if(get_area(T) != storedarea)
log_admin("Build Mode: [key_name(c)] added [AREACOORD(T)] to [storedarea]")
storedarea.contents.Add(T)
return
return ..()
else if(LAZYACCESS(modifiers, RIGHT_CLICK))
var/turf/T = get_turf(object)
storedarea = get_area(T)
areaimage.loc = storedarea // color our area
/datum/buildmode_mode/area_edit/handle_selected_area(client/c, params)
var/list/modifiers = params2list(params)
if(LAZYACCESS(modifiers, LEFT_CLICK))
var/choice = alert("Are you sure you want to fill area?", "Area Fill Confirmation", "Yes", "No")
if(choice != "Yes")
return
for(var/turf/T in block(get_turf(cornerA),get_turf(cornerB)))
storedarea.contents.Add(T)
log_admin("Build Mode: [key_name(c)] set the area of the region from [AREACOORD(cornerA)] through [AREACOORD(cornerB)] to [storedarea].")