|
1027 | 1027 | value = -2 |
1028 | 1028 | medical_record_text = "Patient has trouble with spatial awareness." |
1029 | 1029 |
|
| 1030 | +#define BLINDSPOT_NORTH "blindspotN" |
| 1031 | +#define BLINDSPOT_SOUTH "blindspotS" |
| 1032 | +#define BLINDSPOT_EAST "blindspotE" |
| 1033 | +#define BLINDSPOT_WEST "blindspotW" |
| 1034 | + |
1030 | 1035 | /datum/quirk/blindspot/add() |
1031 | | - quirk_holder.overlay_fullscreen("blindspot", /atom/movable/screen/fullscreen/blindspot) |
1032 | | - quirk_holder.blindspot_overlay = WEAKREF(quirk_holder.screens["blindspot"]) |
| 1036 | + quirk_holder.blindspot_overlay = new/list(10) |
| 1037 | + quirk_holder.overlay_fullscreen(BLINDSPOT_NORTH, /atom/movable/screen/fullscreen/blindspot) |
| 1038 | + quirk_holder.overlay_fullscreen(BLINDSPOT_SOUTH, /atom/movable/screen/fullscreen/blindspot) |
| 1039 | + quirk_holder.overlay_fullscreen(BLINDSPOT_EAST, /atom/movable/screen/fullscreen/blindspot) |
| 1040 | + quirk_holder.overlay_fullscreen(BLINDSPOT_WEST, /atom/movable/screen/fullscreen/blindspot) |
| 1041 | + quirk_holder.blindspot_overlay[NORTH] = WEAKREF(quirk_holder.screens[BLINDSPOT_NORTH]) |
| 1042 | + quirk_holder.blindspot_overlay[SOUTH] = WEAKREF(quirk_holder.screens[BLINDSPOT_SOUTH]) |
| 1043 | + quirk_holder.blindspot_overlay[EAST] = WEAKREF(quirk_holder.screens[BLINDSPOT_EAST]) |
| 1044 | + quirk_holder.blindspot_overlay[WEST] = WEAKREF(quirk_holder.screens[BLINDSPOT_WEST]) |
| 1045 | + quirk_holder.screens[BLINDSPOT_NORTH].dir = NORTH |
| 1046 | + quirk_holder.screens[BLINDSPOT_SOUTH].dir = SOUTH |
| 1047 | + quirk_holder.screens[BLINDSPOT_EAST].dir = EAST |
| 1048 | + quirk_holder.screens[BLINDSPOT_WEST].dir = WEST |
| 1049 | + quirk_holder.screens[BLINDSPOT_NORTH].alpha = (quirk_holder.dir == NORTH) * 255 |
| 1050 | + quirk_holder.screens[BLINDSPOT_SOUTH].alpha = (quirk_holder.dir == SOUTH) * 255 |
| 1051 | + quirk_holder.screens[BLINDSPOT_EAST].alpha = (quirk_holder.dir == EAST) * 255 |
| 1052 | + quirk_holder.screens[BLINDSPOT_WEST].alpha = (quirk_holder.dir == WEST) * 255 |
1033 | 1053 | RegisterSignal(quirk_holder, COMSIG_ATOM_DIR_CHANGE, PROC_REF(change_dir)) |
1034 | 1054 |
|
1035 | 1055 | /datum/quirk/blindspot/remove() |
1036 | | - quirk_holder.clear_fullscreen("blindspot") |
| 1056 | + quirk_holder.clear_fullscreen(BLINDSPOT_NORTH) |
| 1057 | + quirk_holder.clear_fullscreen(BLINDSPOT_SOUTH) |
| 1058 | + quirk_holder.clear_fullscreen(BLINDSPOT_EAST) |
| 1059 | + quirk_holder.clear_fullscreen(BLINDSPOT_WEST) |
1037 | 1060 | quirk_holder.blindspot_overlay = null |
1038 | 1061 | UnregisterSignal(quirk_holder, COMSIG_ATOM_DIR_CHANGE) |
1039 | 1062 |
|
1040 | 1063 | /datum/quirk/blindspot/proc/change_dir(atom/movable/source, olddir, newdir) |
1041 | 1064 | SIGNAL_HANDLER |
1042 | | - var/atom/movable/screen/fullscreen/blindspot/fs_ov = quirk_holder.blindspot_overlay?.resolve() |
1043 | | - if(istype(fs_ov)) |
1044 | | - fs_ov.dir = newdir |
| 1065 | + if(olddir == 0 || newdir == 0) |
| 1066 | + return |
| 1067 | + if(olddir == newdir) |
| 1068 | + return |
| 1069 | + if(!quirk_holder.blindspot_overlay) |
| 1070 | + return |
| 1071 | + var/atom/movable/screen/fullscreen/blindspot/old_spot = quirk_holder.blindspot_overlay[olddir]?.resolve() |
| 1072 | + var/atom/movable/screen/fullscreen/blindspot/new_spot = quirk_holder.blindspot_overlay[newdir]?.resolve() |
| 1073 | + if(!istype(old_spot) || !istype(new_spot)) |
| 1074 | + return |
| 1075 | + animate(old_spot, 0.5 SECONDS, easing = CIRCULAR_EASING|EASE_OUT, alpha = 0) |
| 1076 | + animate(new_spot, 0.5 SECONDS, easing = CIRCULAR_EASING|EASE_OUT, alpha = 255) |
| 1077 | + |
| 1078 | +#undef BLINDSPOT_NORTH |
| 1079 | +#undef BLINDSPOT_SOUTH |
| 1080 | +#undef BLINDSPOT_EAST |
| 1081 | +#undef BLINDSPOT_WEST |
0 commit comments