mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-23 03:57:48 +01:00
Paicontroller subsystem port (#19165)
* to subsystem * wip subsystem pain * some big recoding * seperated * oop * fucking lua * working on tgui foundation * compile fixes * nice and clean * type * inviting works * unit testing * agony * test good * typo * that should be the basics * Complete recode of pai saving * restore fluff text * migration * pai notification automation * swap * length * more fixes * pai sprite datums * type 13 uses all four directions * eye handling * use accessors * working on icontests * fix * hologram eye test * oop * wait that doesn't work at all * text * eye colors and holo eyes * lots of fixes * fix those up * organized * belly cap * that too * death sprites * resting eyes * resting flag * bad check here * fixing icon files * proper file * garble * fix some states * pai death * collapse pai files into single file * allow some restricted pai interactions * lamp * block invites button * collapse in remaining vr file * this is actually needed * documenting and organizing * update to TGprefs * remove gun toggle verb on pai * forbid default name joins * pai cable retraction * various pai fixes * icon forge pai * pai eyes * type 13 iconstate * directionless * small fix * pai dir fix * missing icon * no fresh pais * oops * fixed pai join * fixed change chassis * pai UI * . * . * reuse * . * . * . * push that * Horro rmasks * pai invite data change * splitting * use refs * initial * with PAI * soem more * . * . * . * . * ugh * next * pai invite * only preview * that * use from char pref * fixed pai invite not working * small tgui fixes * remove temp code * . * pai comments properly sent * ooc * horror * need to use this for now * . * fix * lol * raw mob spawn fix * pai software * push --------- Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
/datum/asset/spritesheet_batched/pai_icons
|
||||
name = "pai_icons"
|
||||
|
||||
/datum/asset/spritesheet_batched/pai_icons/create_spritesheets()
|
||||
for(var/name, current_sprite in SSpai.get_chassis_list())
|
||||
var/datum/pai_sprite/sprite = current_sprite
|
||||
if(!sprite.name || !sprite.sprite_icon_state)
|
||||
continue
|
||||
|
||||
var/datum/universal_icon/I_N = uni_icon(sprite.sprite_icon, sprite.sprite_icon_state, NORTH)
|
||||
var/datum/universal_icon/I_S = uni_icon(sprite.sprite_icon, sprite.sprite_icon_state, SOUTH)
|
||||
var/datum/universal_icon/I_W = uni_icon(sprite.sprite_icon, sprite.sprite_icon_state, WEST)
|
||||
var/datum/universal_icon/I_E = uni_icon(sprite.sprite_icon, sprite.sprite_icon_state, EAST)
|
||||
|
||||
if(sprite.icon_x > sprite.icon_y)
|
||||
var/buffer = (sprite.icon_x - sprite.icon_y) / 2
|
||||
I_N.crop(0, -buffer, sprite.icon_x, sprite.icon_y + buffer)
|
||||
I_S.crop(0, -buffer, sprite.icon_x, sprite.icon_y + buffer)
|
||||
I_W.crop(0, -buffer, sprite.icon_x, sprite.icon_y + buffer)
|
||||
I_E.crop(0, -buffer, sprite.icon_x, sprite.icon_y + buffer)
|
||||
else if (sprite.icon_x < sprite.icon_y)
|
||||
var/buffer = (sprite.icon_y - sprite.icon_x) / 2
|
||||
I_N.crop(-buffer, 0, sprite.icon_x + buffer, sprite.icon_y)
|
||||
I_S.crop(-buffer, 0, sprite.icon_x + buffer, sprite.icon_y)
|
||||
I_W.crop(-buffer, 0, sprite.icon_x + buffer, sprite.icon_y)
|
||||
I_E.crop(-buffer, 0, sprite.icon_x + buffer, sprite.icon_y)
|
||||
I_N.scale(120, 120)
|
||||
I_S.scale(120, 120)
|
||||
I_W.scale(120, 120)
|
||||
I_E.scale(120, 120)
|
||||
|
||||
var/imgid = sanitize_css_class_name("[sprite.type]")
|
||||
insert_icon(imgid + "N", I_N)
|
||||
insert_icon(imgid + "S", I_S)
|
||||
insert_icon(imgid + "W", I_W)
|
||||
insert_icon(imgid + "E", I_E)
|
||||
|
||||
if(sprite.has_eye_sprites)
|
||||
var/datum/universal_icon/I_NE = uni_icon(sprite.sprite_icon, "[sprite.sprite_icon_state]-eyes", NORTH)
|
||||
var/datum/universal_icon/I_SE = uni_icon(sprite.sprite_icon, "[sprite.sprite_icon_state]-eyes", SOUTH)
|
||||
var/datum/universal_icon/I_WE = uni_icon(sprite.sprite_icon, "[sprite.sprite_icon_state]-eyes", WEST)
|
||||
var/datum/universal_icon/I_EE = uni_icon(sprite.sprite_icon, "[sprite.sprite_icon_state]-eyes", EAST)
|
||||
|
||||
if(sprite.icon_x > sprite.icon_y)
|
||||
var/buffer = (sprite.icon_x - sprite.icon_y) / 2
|
||||
I_NE.crop(0, -buffer, sprite.icon_x, sprite.icon_y + buffer)
|
||||
I_SE.crop(0, -buffer, sprite.icon_x, sprite.icon_y + buffer)
|
||||
I_WE.crop(0, -buffer, sprite.icon_x, sprite.icon_y + buffer)
|
||||
I_EE.crop(0, -buffer, sprite.icon_x, sprite.icon_y + buffer)
|
||||
else if (sprite.icon_x < sprite.icon_y)
|
||||
var/buffer = (sprite.icon_y - sprite.icon_x) / 2
|
||||
I_NE.crop(-buffer, 0, sprite.icon_x + buffer, sprite.icon_y)
|
||||
I_SE.crop(-buffer, 0, sprite.icon_x + buffer, sprite.icon_y)
|
||||
I_WE.crop(-buffer, 0, sprite.icon_x + buffer, sprite.icon_y)
|
||||
I_EE.crop(-buffer, 0, sprite.icon_x + buffer, sprite.icon_y)
|
||||
I_NE.scale(120, 120)
|
||||
I_SE.scale(120, 120)
|
||||
I_WE.scale(120, 120)
|
||||
I_EE.scale(120, 120)
|
||||
|
||||
insert_icon(imgid + "NE", I_NE)
|
||||
insert_icon(imgid + "SE", I_SE)
|
||||
insert_icon(imgid + "WE", I_WE)
|
||||
insert_icon(imgid + "EE", I_EE)
|
||||
@@ -103,20 +103,19 @@ GLOBAL_LIST_EMPTY(robot_sprite_sheets)
|
||||
var/datum/universal_icon/I_NE = uni_icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", NORTH)
|
||||
if(I_NE)
|
||||
I_N.blend_icon(I_NE, ICON_OVERLAY)
|
||||
if(S.has_eye_sprites)
|
||||
|
||||
var/datum/universal_icon/I_SE = uni_icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", SOUTH)
|
||||
if(I_SE)
|
||||
I_S.blend_icon(I_SE, ICON_OVERLAY)
|
||||
if(S.has_eye_sprites)
|
||||
|
||||
var/datum/universal_icon/I_WE = uni_icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", WEST)
|
||||
if(I_WE)
|
||||
I_W.blend_icon(I_WE, ICON_OVERLAY)
|
||||
if(S.has_eye_sprites)
|
||||
|
||||
var/datum/universal_icon/I_EE = uni_icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", EAST)
|
||||
if(I_EE)
|
||||
I_E.blend_icon(I_EE, ICON_OVERLAY)
|
||||
|
||||
var/imgid = sanitize_css_class_name("[S.type]")
|
||||
if(S.icon_x > S.icon_y)
|
||||
var/buffer = (S.icon_x - S.icon_y) / 2
|
||||
I_N.crop(0, -buffer, S.icon_x, S.icon_y + buffer)
|
||||
@@ -134,6 +133,7 @@ GLOBAL_LIST_EMPTY(robot_sprite_sheets)
|
||||
I_W.scale(120, 120)
|
||||
I_E.scale(120, 120)
|
||||
|
||||
var/imgid = sanitize_css_class_name("[S.type]")
|
||||
insert_icon(imgid + "N", I_N)
|
||||
insert_icon(imgid + "S", I_S)
|
||||
insert_icon(imgid + "W", I_W)
|
||||
|
||||
Reference in New Issue
Block a user