mirror of
https://gitlab.com/2009scape/rt4-client.git
synced 2025-12-11 09:00:26 -07:00
Avoid using sleep in main loop, separate update/render times
This commit is contained in:
parent
79fdaf96f8
commit
ed473ddd96
8 changed files with 39 additions and 23 deletions
|
|
@ -326,7 +326,7 @@ public final class Class59 {
|
||||||
local827 |= Static276.aClass3_Sub2_Sub7Array8[local353].method901(local381);
|
local827 |= Static276.aClass3_Sub2_Sub7Array8[local353].method901(local381);
|
||||||
local838 |= local858.aBoolean278;
|
local838 |= local858.aBoolean278;
|
||||||
}
|
}
|
||||||
if ((local858.aBoolean277 || Static204.aBoolean234) && local367 != -1 && local367 < local858.anIntArray473.length) {
|
if ((local858.aBoolean277 || Static204.applyTweening) && local367 != -1 && local367 < local858.anIntArray473.length) {
|
||||||
Static262.anIntArray515[local353] = local858.anIntArray474[local374];
|
Static262.anIntArray515[local353] = local858.anIntArray474[local374];
|
||||||
Static73.anIntArray183[local353] = arg0[local353].anInt5404;
|
Static73.anIntArray183[local353] = arg0[local353].anInt5404;
|
||||||
local979 = local858.anIntArray473[local367];
|
local979 = local858.anIntArray473[local367];
|
||||||
|
|
@ -364,7 +364,7 @@ public final class Class59 {
|
||||||
local827 |= local1042.method901(local353);
|
local827 |= local1042.method901(local353);
|
||||||
local838 |= arg3.aBoolean278;
|
local838 |= arg3.aBoolean278;
|
||||||
}
|
}
|
||||||
if ((arg3.aBoolean277 || Static204.aBoolean234) && arg1 != -1 && arg3.anIntArray473.length > arg1) {
|
if ((arg3.aBoolean277 || Static204.applyTweening) && arg1 != -1 && arg3.anIntArray473.length > arg1) {
|
||||||
local360 = arg3.anIntArray473[arg1];
|
local360 = arg3.anIntArray473[arg1];
|
||||||
local451 = local360 >>> 16;
|
local451 = local360 >>> 16;
|
||||||
local360 &= 0xFFFF;
|
local360 &= 0xFFFF;
|
||||||
|
|
@ -395,7 +395,7 @@ public final class Class59 {
|
||||||
local827 |= local1154.method901(local979);
|
local827 |= local1154.method901(local979);
|
||||||
local838 |= arg2.aBoolean278;
|
local838 |= arg2.aBoolean278;
|
||||||
}
|
}
|
||||||
if ((arg2.aBoolean277 || Static204.aBoolean234) && arg5 != -1 && arg2.anIntArray473.length > arg5) {
|
if ((arg2.aBoolean277 || Static204.applyTweening) && arg5 != -1 && arg2.anIntArray473.length > arg5) {
|
||||||
local457 = arg2.anIntArray474[arg8];
|
local457 = arg2.anIntArray474[arg8];
|
||||||
local451 = arg2.anIntArray473[arg5];
|
local451 = arg2.anIntArray473[arg5];
|
||||||
local481 = local451 >>> 16;
|
local481 = local451 >>> 16;
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,8 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene
|
||||||
@OriginalMember(owner = "client!ba", name = "B", descriptor = "I")
|
@OriginalMember(owner = "client!ba", name = "B", descriptor = "I")
|
||||||
public static int timePerFrame = 20;
|
public static int timePerFrame = 20;
|
||||||
|
|
||||||
|
public static int FIXED_UPDATE_RATE = 20;
|
||||||
|
|
||||||
@OriginalMember(owner = "client!cm", name = "b", descriptor = "Ljava/lang/Thread;")
|
@OriginalMember(owner = "client!cm", name = "b", descriptor = "Ljava/lang/Thread;")
|
||||||
public static Thread thread;
|
public static Thread thread;
|
||||||
|
|
||||||
|
|
@ -150,6 +152,7 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene
|
||||||
if (signLink.eventQueue == null) {
|
if (signLink.eventQueue == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (@Pc(19) int i = 0; i < 50 && signLink.eventQueue.peekEvent() != null; i++) {
|
for (@Pc(19) int i = 0; i < 50 && signLink.eventQueue.peekEvent() != null; i++) {
|
||||||
Static231.sleep(1L);
|
Static231.sleep(1L);
|
||||||
}
|
}
|
||||||
|
|
@ -367,7 +370,7 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public GraphicsDevice getCurrentDevice() {
|
public static GraphicsDevice getCurrentDevice() {
|
||||||
GraphicsConfiguration config = frame.getGraphicsConfiguration();
|
GraphicsConfiguration config = frame.getGraphicsConfiguration();
|
||||||
GraphicsDevice myScreen = config.getDevice();
|
GraphicsDevice myScreen = config.getDevice();
|
||||||
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
|
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
|
||||||
|
|
@ -467,13 +470,24 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene
|
||||||
Static260.frameBuffer = Static131.create(canvasHeight, canvasWidth, canvas);
|
Static260.frameBuffer = Static131.create(canvasHeight, canvasWidth, canvas);
|
||||||
this.mainInit();
|
this.mainInit();
|
||||||
timer = Static70.create();
|
timer = Static70.create();
|
||||||
while (killTime == 0L || killTime > MonotonicClock.currentTimeMillis()) {
|
|
||||||
logicCycles = timer.sleep(minimumDelay, timePerFrame);
|
long lastUpdateTime = 0;
|
||||||
for (i = 0; i < logicCycles; i++) {
|
long lastDrawTime = 0;
|
||||||
this.mainLoopWrapper();
|
while (killTime == 0L) {
|
||||||
|
long currentTime = MonotonicClock.currentTimeMillis();
|
||||||
|
if (GameShell.killTime > currentTime) {
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (currentTime - lastUpdateTime >= FIXED_UPDATE_RATE) {
|
||||||
|
this.mainLoopWrapper();
|
||||||
|
lastUpdateTime = currentTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentTime - lastDrawTime >= timePerFrame) {
|
||||||
this.mainRedrawWrapper();
|
this.mainRedrawWrapper();
|
||||||
flush(signLink, canvas);
|
lastDrawTime = currentTime;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (@Pc(198) Exception ex) {
|
} catch (@Pc(198) Exception ex) {
|
||||||
Static89.report(null, ex);
|
Static89.report(null, ex);
|
||||||
|
|
|
||||||
|
|
@ -40,4 +40,6 @@ public class GlobalConfig {
|
||||||
//endregion
|
//endregion
|
||||||
|
|
||||||
public static boolean ANIMATED_SD_BACKGROUND = true;
|
public static boolean ANIMATED_SD_BACKGROUND = true;
|
||||||
|
|
||||||
|
public static boolean USE_TWEENING = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -269,7 +269,7 @@ public final class Loc extends Entity {
|
||||||
@Pc(192) int local192 = (local157 >> 1) + this.anInt1300;
|
@Pc(192) int local192 = (local157 >> 1) + this.anInt1300;
|
||||||
@Pc(201) int local201 = (local157 + 1 >> 1) + this.anInt1300;
|
@Pc(201) int local201 = (local157 + 1 >> 1) + this.anInt1300;
|
||||||
this.method1047(local192 * 128, local185 * 128);
|
this.method1047(local192 * 128, local185 * 128);
|
||||||
@Pc(256) boolean local256 = !local12 && local19.aBoolean212 && (local19.anInt4426 != this.anInt1321 || (this.anInt1297 != this.anInt1322 || this.aClass144_2 != null && (this.aClass144_2.aBoolean280 || Static204.aBoolean234) && this.anInt1297 != this.anInt1304) && Static139.sceneryShadowsType >= 2);
|
@Pc(256) boolean local256 = !local12 && local19.aBoolean212 && (local19.anInt4426 != this.anInt1321 || (this.anInt1297 != this.anInt1322 || this.aClass144_2 != null && (this.aClass144_2.aBoolean280 || Static204.applyTweening) && this.anInt1297 != this.anInt1304) && Static139.sceneryShadowsType >= 2);
|
||||||
if (arg0 && !local256) {
|
if (arg0 && !local256) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -358,7 +358,7 @@ public final class NpcType {
|
||||||
local721 |= Static6.aClass3_Sub2_Sub7Array1[local235].method901(local214);
|
local721 |= Static6.aClass3_Sub2_Sub7Array1[local235].method901(local214);
|
||||||
local725 |= local753.aBoolean278;
|
local725 |= local753.aBoolean278;
|
||||||
}
|
}
|
||||||
if ((local753.aBoolean277 || Static204.aBoolean234) && local207 != -1 && local753.anIntArray473.length > local207) {
|
if ((local753.aBoolean277 || Static204.applyTweening) && local207 != -1 && local753.anIntArray473.length > local207) {
|
||||||
Static71.anIntArray147[local235] = local753.anIntArray474[local200];
|
Static71.anIntArray147[local235] = local753.anIntArray474[local200];
|
||||||
Static214.anIntArray492[local235] = arg0[local235].anInt5404;
|
Static214.anIntArray492[local235] = arg0[local235].anInt5404;
|
||||||
local228 = local753.anIntArray473[local207];
|
local228 = local753.anIntArray473[local207];
|
||||||
|
|
@ -401,7 +401,7 @@ public final class NpcType {
|
||||||
local721 |= local962.method901(local235);
|
local721 |= local962.method901(local235);
|
||||||
local725 |= arg8.aBoolean278;
|
local725 |= arg8.aBoolean278;
|
||||||
}
|
}
|
||||||
if ((arg8.aBoolean277 || Static204.aBoolean234) && arg3 != -1 && arg8.anIntArray473.length > arg3) {
|
if ((arg8.aBoolean277 || Static204.applyTweening) && arg3 != -1 && arg8.anIntArray473.length > arg3) {
|
||||||
local200 = arg8.anIntArray474[arg5];
|
local200 = arg8.anIntArray474[arg5];
|
||||||
local221 = arg8.anIntArray473[arg3];
|
local221 = arg8.anIntArray473[arg3];
|
||||||
local1040 = local221 >>> 16;
|
local1040 = local221 >>> 16;
|
||||||
|
|
@ -432,7 +432,7 @@ public final class NpcType {
|
||||||
local721 |= local1088.method901(local228);
|
local721 |= local1088.method901(local228);
|
||||||
local725 |= arg6.aBoolean278;
|
local725 |= arg6.aBoolean278;
|
||||||
}
|
}
|
||||||
if ((arg6.aBoolean277 || Static204.aBoolean234) && arg1 != -1 && arg1 < arg6.anIntArray473.length) {
|
if ((arg6.aBoolean277 || Static204.applyTweening) && arg1 != -1 && arg1 < arg6.anIntArray473.length) {
|
||||||
local300 = arg6.anIntArray474[arg2];
|
local300 = arg6.anIntArray474[arg2];
|
||||||
local1040 = arg6.anIntArray473[arg1];
|
local1040 = arg6.anIntArray473[arg1];
|
||||||
local318 = local1040 >>> 16;
|
local318 = local1040 >>> 16;
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ public final class SeqType {
|
||||||
}
|
}
|
||||||
@Pc(39) int local39 = arg3 & 0x3;
|
@Pc(39) int local39 = arg3 & 0x3;
|
||||||
@Pc(41) AnimFrameset local41 = null;
|
@Pc(41) AnimFrameset local41 = null;
|
||||||
if ((this.aBoolean277 || Static204.aBoolean234) && arg1 != -1 && this.anIntArray473.length > arg1) {
|
if ((this.aBoolean277 || Static204.applyTweening) && arg1 != -1 && this.anIntArray473.length > arg1) {
|
||||||
@Pc(69) int local69 = this.anIntArray473[arg1];
|
@Pc(69) int local69 = this.anIntArray473[arg1];
|
||||||
local41 = Static72.method1566(local69 >> 16);
|
local41 = Static72.method1566(local69 >> 16);
|
||||||
arg1 = local69 & 0xFFFF;
|
arg1 = local69 & 0xFFFF;
|
||||||
|
|
@ -137,7 +137,7 @@ public final class SeqType {
|
||||||
return arg0.method4572(true, true, true);
|
return arg0.method4572(true, true, true);
|
||||||
}
|
}
|
||||||
@Pc(34) AnimFrameset local34 = null;
|
@Pc(34) AnimFrameset local34 = null;
|
||||||
if ((this.aBoolean277 || Static204.aBoolean234) && arg1 != -1 && arg1 < this.anIntArray473.length) {
|
if ((this.aBoolean277 || Static204.applyTweening) && arg1 != -1 && arg1 < this.anIntArray473.length) {
|
||||||
@Pc(59) int local59 = this.anIntArray473[arg1];
|
@Pc(59) int local59 = this.anIntArray473[arg1];
|
||||||
local34 = Static72.method1566(local59 >> 16);
|
local34 = Static72.method1566(local59 >> 16);
|
||||||
arg1 = local59 & 0xFFFF;
|
arg1 = local59 & 0xFFFF;
|
||||||
|
|
@ -154,7 +154,7 @@ public final class SeqType {
|
||||||
local83 &= 0xFFFF;
|
local83 &= 0xFFFF;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((this.aBoolean277 || Static204.aBoolean234) && arg1 != -1 && this.anIntArray475.length > arg1) {
|
if ((this.aBoolean277 || Static204.applyTweening) && arg1 != -1 && this.anIntArray475.length > arg1) {
|
||||||
local85 = this.anIntArray475[arg1];
|
local85 = this.anIntArray475[arg1];
|
||||||
if (local85 != 65535) {
|
if (local85 != 65535) {
|
||||||
local81 = Static72.method1566(local85 >> 16);
|
local81 = Static72.method1566(local85 >> 16);
|
||||||
|
|
@ -195,7 +195,7 @@ public final class SeqType {
|
||||||
}
|
}
|
||||||
@Pc(40) int local40 = arg3 & 0x3;
|
@Pc(40) int local40 = arg3 & 0x3;
|
||||||
@Pc(42) AnimFrameset local42 = null;
|
@Pc(42) AnimFrameset local42 = null;
|
||||||
if ((this.aBoolean277 || Static204.aBoolean234) && arg0 != -1 && arg0 < this.anIntArray473.length) {
|
if ((this.aBoolean277 || Static204.applyTweening) && arg0 != -1 && arg0 < this.anIntArray473.length) {
|
||||||
@Pc(66) int local66 = this.anIntArray473[arg0];
|
@Pc(66) int local66 = this.anIntArray473[arg0];
|
||||||
local42 = Static72.method1566(local66 >> 16);
|
local42 = Static72.method1566(local66 >> 16);
|
||||||
arg0 = local66 & 0xFFFF;
|
arg0 = local66 & 0xFFFF;
|
||||||
|
|
@ -269,7 +269,7 @@ public final class SeqType {
|
||||||
return arg3.method4560(true, true, true);
|
return arg3.method4560(true, true, true);
|
||||||
}
|
}
|
||||||
@Pc(42) AnimFrameset local42 = null;
|
@Pc(42) AnimFrameset local42 = null;
|
||||||
if ((this.aBoolean277 || Static204.aBoolean234) && arg0 != -1 && this.anIntArray473.length > arg0) {
|
if ((this.aBoolean277 || Static204.applyTweening) && arg0 != -1 && this.anIntArray473.length > arg0) {
|
||||||
@Pc(65) int local65 = this.anIntArray473[arg0];
|
@Pc(65) int local65 = this.anIntArray473[arg0];
|
||||||
local42 = Static72.method1566(local65 >> 16);
|
local42 = Static72.method1566(local65 >> 16);
|
||||||
arg0 = local65 & 0xFFFF;
|
arg0 = local65 & 0xFFFF;
|
||||||
|
|
|
||||||
|
|
@ -343,11 +343,11 @@ public final class Static127 {
|
||||||
Static121.aBoolean154 = true;
|
Static121.aBoolean154 = true;
|
||||||
}
|
}
|
||||||
if (arg0.method3111(Static124.aClass100_596)) {
|
if (arg0.method3111(Static124.aClass100_596)) {
|
||||||
if (Static204.aBoolean234) {
|
if (Static204.applyTweening) {
|
||||||
Static204.aBoolean234 = false;
|
Static204.applyTweening = false;
|
||||||
Static103.method2231(null, 0, Static274.aClass100_943);
|
Static103.method2231(null, 0, Static274.aClass100_943);
|
||||||
} else {
|
} else {
|
||||||
Static204.aBoolean234 = true;
|
Static204.applyTweening = true;
|
||||||
Static103.method2231(null, 0, Static50.aClass100_362);
|
Static103.method2231(null, 0, Static50.aClass100_362);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ public final class Static204 {
|
||||||
public static LinkedList aClass69_113 = new LinkedList();
|
public static LinkedList aClass69_113 = new LinkedList();
|
||||||
|
|
||||||
@OriginalMember(owner = "client!qi", name = "v", descriptor = "Z")
|
@OriginalMember(owner = "client!qi", name = "v", descriptor = "Z")
|
||||||
public static boolean aBoolean234 = false;
|
public static boolean applyTweening = GlobalConfig.USE_TWEENING;
|
||||||
|
|
||||||
@OriginalMember(owner = "client!qi", name = "x", descriptor = "[I")
|
@OriginalMember(owner = "client!qi", name = "x", descriptor = "[I")
|
||||||
public static final int[] anIntArray425 = new int[] { 0, 1, 2, 3, 4, 5, 6, 14 };
|
public static final int[] anIntArray425 = new int[] { 0, 1, 2, 3, 4, 5, 6, 14 };
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue