mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-09 15:05:38 +01:00
Dynamic glidespeed
ported from yogstation
This commit is contained in:
@@ -28,10 +28,13 @@
|
||||
RegisterSignal(target, COMSIG_MOVABLE_MOVED, orbited_spy)
|
||||
target = target.loc
|
||||
|
||||
RegisterSignal(parent, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, .proc/orbiter_glide_size_update)
|
||||
|
||||
/datum/component/orbiter/UnregisterFromParent()
|
||||
var/atom/target = parent
|
||||
while(ismovableatom(target))
|
||||
UnregisterSignal(target, COMSIG_MOVABLE_MOVED)
|
||||
UnregisterSignal(target, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE)
|
||||
target = target.loc
|
||||
|
||||
/datum/component/orbiter/Destroy()
|
||||
@@ -81,6 +84,12 @@
|
||||
orbiter.transform = shift
|
||||
|
||||
orbiter.SpinAnimation(rotation_speed, -1, clockwise, rotation_segments, parallel = FALSE)
|
||||
if(ismob(orbiter))
|
||||
var/mob/M = orbiter
|
||||
M.updating_glide_size = FALSE
|
||||
if(ismovableatom(parent))
|
||||
var/atom/movable/AM = parent
|
||||
orbiter.glide_size = AM.glide_size
|
||||
|
||||
//we stack the orbits up client side, so we can assign this back to normal server side without it breaking the orbit
|
||||
orbiter.transform = initial_transform
|
||||
@@ -95,6 +104,10 @@
|
||||
orbiters -= orbiter
|
||||
orbiter.stop_orbit(src)
|
||||
orbiter.orbiting = null
|
||||
if(ismob(orbiter))
|
||||
var/mob/M = orbiter
|
||||
M.updating_glide_size = TRUE
|
||||
M.glide_size = 8
|
||||
if(!refreshing && !length(orbiters) && !QDELING(src))
|
||||
qdel(src)
|
||||
|
||||
@@ -139,6 +152,11 @@
|
||||
return
|
||||
end_orbit(orbiter)
|
||||
|
||||
/datum/component/orbiter/proc/orbiter_glide_size_update(datum/source, target)
|
||||
for(var/orbiter in orbiters)
|
||||
var/atom/movable/AM = orbiter
|
||||
AM.glide_size = target
|
||||
|
||||
/////////////////////
|
||||
|
||||
/atom/movable/proc/orbit(atom/A, radius = 10, clockwise = FALSE, rotation_speed = 20, rotation_segments = 36, pre_rotation = TRUE)
|
||||
|
||||
@@ -30,8 +30,12 @@
|
||||
/datum/component/riding/proc/vehicle_mob_unbuckle(datum/source, mob/living/M, force = FALSE)
|
||||
restore_position(M)
|
||||
unequip_buckle_inhands(M)
|
||||
M.updating_glide_size = TRUE
|
||||
|
||||
/datum/component/riding/proc/vehicle_mob_buckle(datum/source, mob/living/M, force = FALSE)
|
||||
var/atom/movable/AM = parent
|
||||
M.set_glide_size(AM.glide_size)
|
||||
M.updating_glide_size = FALSE
|
||||
handle_vehicle_offsets()
|
||||
|
||||
/datum/component/riding/proc/handle_vehicle_layer()
|
||||
@@ -49,8 +53,10 @@
|
||||
|
||||
/datum/component/riding/proc/vehicle_moved(datum/source)
|
||||
var/atom/movable/AM = parent
|
||||
for(var/i in AM.buckled_mobs)
|
||||
ride_check(i)
|
||||
AM.set_glide_size(DELAY_TO_GLIDE_SIZE(vehicle_move_delay))
|
||||
for(var/mob/M in AM.buckled_mobs)
|
||||
ride_check(M)
|
||||
M.set_glide_size(AM.glide_size)
|
||||
handle_vehicle_offsets()
|
||||
handle_vehicle_layer()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user