mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-20 07:12:55 +00:00
* Fixes shuttle rotation * Apply AA suggestions * Apply suggestions from code review Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
95 lines
2.7 KiB
Plaintext
95 lines
2.7 KiB
Plaintext
/*
|
|
All shuttleRotate procs go here
|
|
If ever any of these procs are useful for non-shuttles, rename it to proc/rotate and move it to be a generic atom proc
|
|
*/
|
|
|
|
/************************************Base proc************************************/
|
|
|
|
/atom/proc/shuttleRotate(rotation, params=ROTATE_DIR|ROTATE_SMOOTH|ROTATE_OFFSET)
|
|
if(params & ROTATE_DIR)
|
|
//rotate our direction
|
|
setDir(angle2dir(rotation+dir2angle(dir)))
|
|
|
|
//resmooth if need be.
|
|
if(smooth && (params & ROTATE_SMOOTH))
|
|
queue_smooth(src)
|
|
|
|
//rotate the pixel offsets too.
|
|
if((pixel_x || pixel_y) && (params & ROTATE_OFFSET))
|
|
if(rotation < 0)
|
|
rotation += 360
|
|
for(var/turntimes=rotation/90;turntimes>0;turntimes--)
|
|
var/oldPX = pixel_x
|
|
var/oldPY = pixel_y
|
|
pixel_x = oldPY
|
|
pixel_y = (oldPX*(-1))
|
|
|
|
/************************************Turf rotate procs************************************/
|
|
|
|
/************************************Mob rotate procs************************************/
|
|
|
|
//override to avoid rotating pixel_xy on mobs
|
|
/mob/shuttleRotate(rotation, params)
|
|
params = NONE
|
|
. = ..()
|
|
if(!buckled)
|
|
setDir(angle2dir(rotation+dir2angle(dir)))
|
|
|
|
/mob/dead/observer/shuttleRotate(rotation, params)
|
|
. = ..()
|
|
update_icons()
|
|
|
|
/************************************Structure rotate procs************************************/
|
|
|
|
/obj/structure/cable/shuttleRotate(rotation, params)
|
|
params &= ~ROTATE_DIR
|
|
. = ..()
|
|
if(d1)
|
|
d1 = angle2dir(rotation+dir2angle(d1))
|
|
if(d2)
|
|
d2 = angle2dir(rotation+dir2angle(d2))
|
|
|
|
//d1 should be less than d2 for cable icons to work
|
|
if(d1 > d2)
|
|
var/temp = d1
|
|
d1 = d2
|
|
d2 = temp
|
|
update_icon()
|
|
|
|
/obj/structure/shuttle/engine/shuttleRotate(rotation, params)
|
|
setDir(angle2dir(rotation+dir2angle(dir)))
|
|
|
|
//Fixes dpdir on shuttle rotation
|
|
/obj/structure/disposalpipe/shuttleRotate(rotation, params)
|
|
. = ..()
|
|
var/new_dpdir = 0
|
|
for(var/D in list(NORTH, SOUTH, EAST, WEST))
|
|
if(dpdir & D)
|
|
new_dpdir = new_dpdir | angle2dir(rotation+dir2angle(D))
|
|
dpdir = new_dpdir
|
|
|
|
/obj/structure/alien/weeds/shuttleRotate(rotation, params)
|
|
params &= ~ROTATE_OFFSET
|
|
return ..()
|
|
|
|
//prevents shuttles attempting to rotate this since it messes up sprites
|
|
/obj/structure/table/shuttleRotate(rotation, params)
|
|
params = NONE
|
|
return ..()
|
|
|
|
/obj/structure/table_frame/shuttleRotate(rotation, params)
|
|
params = NONE
|
|
return ..()
|
|
|
|
/************************************Machine rotate procs************************************/
|
|
|
|
//prevents shuttles attempting to rotate this since it messes up sprites
|
|
/obj/machinery/gateway/shuttleRotate(rotation, params)
|
|
params = NONE
|
|
return ..()
|
|
|
|
//prevents shuttles attempting to rotate this since it messes up sprites
|
|
/obj/machinery/gravity_generator/shuttleRotate(rotation, params)
|
|
params = NONE
|
|
return ..()
|