Zoom plugin: Relax inner zoom constraint

This commit is contained in:
Max Weber
2018-02-09 22:41:52 -07:00
parent db834506d6
commit 07b9e6c12a
6 changed files with 105 additions and 31 deletions

View File

@@ -37,10 +37,20 @@ public interface ZoomConfig extends Config
{
@ConfigItem(
keyName = "enabled",
name = "Enabled",
description = "Configures whether or not the zoom limit is reduced"
name = "Expand outer zoom limit",
description = "Configures whether or not the outer zoom limit is reduced"
)
default boolean enabled()
default boolean outerLimit()
{
return false;
}
@ConfigItem(
keyName = "inner",
name = "Expand inner zoom limit",
description = "Configures whether or not the inner zoom limit is reduced"
)
default boolean innerLimit()
{
return false;
}

View File

@@ -41,9 +41,6 @@ import net.runelite.client.plugins.PluginDescriptor;
@Slf4j
public class ZoomPlugin extends Plugin
{
private static final int INCREASED_RESIZABLE_ZOOM_LIMIT = 70;
private static final int INCREASED_FIXED_ZOOM_LIMIT = 95;
@Inject
private Client client;
@@ -58,27 +55,56 @@ public class ZoomPlugin extends Plugin
@Subscribe
public void onScriptEvent(ScriptEvent event)
{
if (!zoomConfig.enabled())
{
return;
}
switch (event.getEventName())
{
case "fixedOuterZoomLimit":
popAndReplace(INCREASED_FIXED_ZOOM_LIMIT);
break;
case "resizableOuterZoomLimit":
popAndReplace(INCREASED_RESIZABLE_ZOOM_LIMIT);
break;
}
}
private void popAndReplace(int newValue)
{
int[] intStack = client.getIntStack();
int intStackSize = client.getIntStackSize();
intStack[intStackSize - 1] = newValue;
if (zoomConfig.outerLimit())
{
switch (event.getEventName())
{
case "fixedOuterZoomLimit":
intStack[intStackSize - 1] = 95;
break;
case "resizableOuterZoomLimit":
intStack[intStackSize - 1] = 70;
break;
}
}
if (zoomConfig.innerLimit())
{
switch (event.getEventName())
{
case "fixedInnerZoomLimit":
intStack[intStackSize - 1] = 2100;
break;
case "resizableInnerZoomLimit":
intStack[intStackSize - 1] = 2200;
break;
}
}
if (zoomConfig.outerLimit() || zoomConfig.innerLimit())
{
// This lets the options panel's slider have an exponential rate
final double exponent = 3.d;
switch (event.getEventName())
{
case "zoomLinToExp":
{
double range = intStack[intStackSize - 1];
double value = intStack[intStackSize - 2];
value = Math.pow(value / range, exponent) * range;
intStack[intStackSize - 2] = (int) value;
break;
}
case "zoomExpToLin":
{
double range = intStack[intStackSize - 1];
double value = intStack[intStackSize - 2];
value = Math.pow(value / range, 1.d / exponent) * range;
intStack[intStackSize - 2] = (int) value;
break;
}
}
}
}
}

View File

@@ -237,6 +237,8 @@ LABEL198:
LABEL210:
get_varc 73
load_int 700
load_string "fixedInnerZoomLimit"
runelite_callback
if_icmple LABEL214
jump LABEL226
LABEL214:
@@ -249,6 +251,8 @@ LABEL214:
LABEL218:
get_varc 74
load_int 715
load_string "resizableInnerZoomLimit"
runelite_callback
if_icmple LABEL222
jump LABEL226
LABEL222:

View File

@@ -3,6 +3,8 @@
.string_stack_count 0
.int_var_count 8
.string_var_count 0
; locals
; 2 bar size
get_varbit 4606
load_int 0
if_icmpne LABEL4
@@ -33,22 +35,30 @@ LABEL5:
invoke 1046
istore 2
load_int 715
load_string "resizableInnerZoomLimit"
runelite_callback
load_int 175
load_string "resizableOuterZoomLimit"
runelite_callback
isub
istore 6
istore 6 ; resizable delta
load_int 700
load_string "fixedInnerZoomLimit"
runelite_callback
load_int 195
load_string "fixedOuterZoomLimit"
runelite_callback
isub
istore 7
istore 7 ; fixed delta
iload 2
iload 6
imul
iload 5
idiv
idiv
iload 6
load_string "zoomLinToExp"
runelite_callback
pop_int
load_int 175
load_string "resizableOuterZoomLimit"
runelite_callback
@@ -58,7 +68,11 @@ LABEL5:
iload 7
imul
iload 5
idiv
idiv
iload 7
load_string "zoomLinToExp"
runelite_callback
pop_int
load_int 195
load_string "fixedOuterZoomLimit"
runelite_callback

View File

@@ -3,13 +3,21 @@
.string_stack_count 0
.int_var_count 6
.string_var_count 0
; locals
; 0 resizableZoomRange
; 1 fixedZoomRange
; 2 bar size
load_int 715
load_string "resizableInnerZoomLimit"
runelite_callback
load_int 175
load_string "resizableOuterZoomLimit"
runelite_callback
isub
istore 0
load_int 700
load_string "fixedInnerZoomLimit"
runelite_callback
load_int 195
load_string "fixedOuterZoomLimit"
runelite_callback
@@ -39,7 +47,11 @@ LABEL27:
load_int 175
load_string "resizableOuterZoomLimit"
runelite_callback
isub
isub
iload 0
load_string "zoomExpToLin"
runelite_callback
pop_int
iload 2
imul
iload 0
@@ -51,7 +63,11 @@ LABEL36:
load_int 195
load_string "fixedOuterZoomLimit"
runelite_callback
isub
isub
iload 1
load_string "zoomExpToLin"
runelite_callback
pop_int
iload 2
imul
iload 1

View File

@@ -11,6 +11,8 @@ LABEL4:
return
LABEL5:
load_int 700
load_string "fixedInnerZoomLimit"
runelite_callback
iload 0
invoke 1046
istore 0
@@ -21,6 +23,8 @@ LABEL5:
invoke 1045
istore 0
load_int 715
load_string "resizableInnerZoomLimit"
runelite_callback
iload 1
invoke 1046
istore 1