After login there are two sets of offer updates, I suspect the first is
from the server and the second is from the ge server - this also flags
ge server trade updates as on login. To do this we assume it always
happens in the first few ticks after the login burst.
This fixes an issue where if the action at the configured shift click action
index was null, which can happen due to item variations, the option.equals()
check would npe, and prevent configuring shift click on the item.
This allows overlays to request draw after any interface or layer. This
allows removal of the ABOVE_MAP layer which can now just be replaced
with requesting draw after the map interface. This also fixes item
overlays from drawing over top of the map by now drawing the item
overlay immediately after the interface and/or layer the item is on is
drawn.
For backwards compatability, ABOVE_WIDGETS is kept as a layer, but
internally just requests draw after the 3 TLIs.
Due to overlays defaulting to the UNDER_WIDGETS layer, a new layer
MANUAL has been added, which is intended for use when requesting draw
after specific interfaces or layers, so that the overlay is otherwise
not drawn a second time due to being UNDER_WIDGETS.
The rendered x/y position of the viewport layer is the same as the viewport offsets. This also no longer assumes the x/y offets are the same, even though in practice they always are.
The returned widget isn't actually the viewport widget, but is a layer within the viewport, and only needs to be used within the overlay renderer to position the snapcorners
This removes the hack of double setting the widget position in
WidgetOverlay, which was required to override the overlay renderers
clamping code in both overlay drag and in overlay rendering.
Requiring the mouse to be moved first causes dead clicks when the mouse is
pressed immediately after entering overlay management mode. Also since
resetOverlayManagementMode() clears the managed overlay, after dragging
an overlay it again requires the mouse to be moved to pick up a click on it
if dragging again or trying to reset the overlay.
If the client is closed prior to the socket being created, or if socket creation fails, this will repeatedly throw out of close() in connect() and is never able to reestablish a connection
The reward text color is meant to show what is the optimal reward percent
for money, assuming that blood runes are best, and death runes are
second best. The percentage thresholds however were incorrect.
This logic was from prior to cox having a pb message, and so it had to compare
the known pb with the current raid duration. Now that all raids have a pb
message, it is no longer necessary to do this. This fixes pb times syncing up
in the main game correctly that were overwritten by leagues.
At some point this changed to no longer animate once the sire changed to
the stunned type. This changes the timer to just use the npc changed
event, which should work more reliably.
This moves all of the timer tracking logic outside of the check for if
the timer is on, and now also allows toggling the timer on and off when
in the caves.
fromLocalInstance() was returning a world point using the clients plane,
however the object may not be on that, causing the plane check in
checkObjectPoints() to fail.
The west window has the same id as the east window, causing both to be marked by the agility plugin. This adds a matches() method to AgilityShortcut to allow the plugin to test specifically which window matches the shortcut.
The bank plugin is being changed to manually initiate bank searches,
by invoking the script, and the bank tabs plugin needs to be able to
detect this search too.
In some cases, it is not possible to get a combat level solely from leveling
any one stat. If this happened previously the overlay would show an empty
tooltip due to the levels required all being >99. This just shows the levels
required even if it surpasses 99.
Having all 3 sampling branches feed into one colorblind() call was
breaking some versions of Intel's drivers whenever the xbr sampling code
was merely present. Changing each branch to individually call
colorblind() seems to fix it.
This catches common bugs, dead code, etc., and also performs some more advanced
code style checks compared to checkstyle.
Co-authored-by: pilino1234 <pilino@posteo.de>
The options dialog never accepts space, so remapping a key to it doesn't make sense, and it is possible the original key was one of the keys actually being listened for
Prior to 8c00f6da88 the interpolation of fragment
shader inputs appears to not have been accounting for perspective. This broke
texturing due to the texture ids being interpolated for perspective which was
fixed in 47e0ac8032. The hsl values similarly
require not accounting for perspective, so the noperspective interpolation
qualifier has been added. It is unclear to me why the geometry shader removal
would affect the interpolation like this since it was emitting vertices with
the correct z values.
Originally this was fixed in d02ddfc1b2 but then
broken in d676542dc2. Preferred positions don't
make sense for either overlay type and for tooltips breaks them due to having
them offset from the mouse position.
Inline the body of pushFace() into uploadModel() and perform the loop hoisting
of the locals that this enables. This cuts off 10-20ms of scene load time on my machine.
Co-authored-by: Jonathon Reesor <jonathon.reesor@gmail.com>
Prevent unnecessary allocations by updating the ensureCapacity() methods to not
create intermediate buffers, just create a single new buffer with the final
size.
Co-authored-by: Jonathon Reesor <jonathon.reesor@gmail.com>
Instead we can just check the model scene id is correct and not have to be
concerned about reused Models from previous scenes having positive buffer
offsets
Co-authored-by: Jonathon Reesor <jonathon.reesor@gmail.com>
Due to JDK-4737788, maximizing an undecorated frame incorrectly covers the
taskbar. Substance attempts to correct this by computing its own maximized
bounds, but it does not account for DPI scaling. Since Substance automatically
calls setMaximizedBounds when the frame is resized to do this we simply
override it and replace the bounds with our own which includes the scaling of
the display.
This also fixes the frame maximizing to the incorrect display on 11.0.8 due to
JDK-8231564, which changes the coordinates setMaximizedBounds() expects to be
relative to the primary display instead of the current display. Previously,
Substance was always setting the bounds x/y to 0 due to this.
Co-authored-by: Runemoro <runemoro1@gmail.com>
Not sure where these original arguments come from, but it was
incorrectly noting the items and then attempting to adjust zoom to
account for that, which makes most item outlines slightly off
Mining dense essense doesn't have a chat message so this starts the mining session based on animation instead.
Co-authored-by: chasertw123 <henderson.chase@gmail.com>