Adds support for non-1:1 screen ratios (Doesn't add widescreen) (#32950)

* adds support for non-1:1 screen ratios for fullscreen overlays

* prevents future copypasta, adds widescreen support to clickcatchers

* oops, makes it actually compile

* HOPEFULLY makes it actually compile, makes projectiles and mouse_angle_from_client support widescreen

* i need shittier shitcode

* !!!HOPEFULLY!!! fixes the screen fuckery

* Fixes compiling errors. Tested locally, it seems like it works

* fixes runtime in mouse_angle_from_client

* Fixes non-1:1 TGUI runtimes for borgs and ghosts

* adds actual defines for fullscreen overlay resolution

* makes varediting view call change_view to make clickcatcher regenerate proper

* testmerge toggle widescreen verb and fixes vving view

* FUCK - fixes test verb to properly use change_view, so clickcatchers regenerate and such

* fixes parallax runtimes - how'd i miss this

* removes debug verb
This commit is contained in:
deathride58
2017-12-05 19:46:20 -06:00
committed by CitadelStationBot
parent bbfd36aace
commit c56003f6ff
11 changed files with 52 additions and 23 deletions
+6 -4
View File
@@ -192,15 +192,17 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4,
/proc/mouse_angle_from_client(client/client)
var/list/mouse_control = params2list(client.mouseParams)
if(mouse_control["screen-loc"])
if(mouse_control["screen-loc"] && client)
var/list/screen_loc_params = splittext(mouse_control["screen-loc"], ",")
var/list/screen_loc_X = splittext(screen_loc_params[1],":")
var/list/screen_loc_Y = splittext(screen_loc_params[2],":")
var/x = (text2num(screen_loc_X[1]) * 32 + text2num(screen_loc_X[2]) - 32)
var/y = (text2num(screen_loc_Y[1]) * 32 + text2num(screen_loc_Y[2]) - 32)
var/screenview = (client.view * 2 + 1) * world.icon_size //Refer to http://www.byond.com/docs/ref/info.html#/client/var/view for mad maths
var/ox = round(screenview/2) - client.pixel_x //"origin" x
var/oy = round(screenview/2) - client.pixel_y //"origin" y
var/list/screenview = getviewsize(client)
var/screenviewX = screenview[1] * world.icon_size
var/screenviewY = screenview[2] * world.icon_size
var/ox = round(screenviewX/2) - client.pixel_x //"origin" x
var/oy = round(screenviewY/2) - client.pixel_y //"origin" y
var/angle = NORM_ROT(Atan2(y - oy, x - ox))
return angle
+12
View File
@@ -0,0 +1,12 @@
/proc/getviewsize(view)
var/viewX
var/viewY
if(isnum(view))
var/totalviewrange = 1 + 2 * view
viewX = totalviewrange
viewY = totalviewrange
else
var/list/viewrangelist = splittext(view,"x")
viewX = text2num(viewrangelist[1])
viewY = text2num(viewrangelist[2])
return list(viewX, viewY)