mirror of
https://gitlab.com/2009scape/rt4-client.git
synced 2025-12-10 10:20:44 -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);
|
||||
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];
|
||||
Static73.anIntArray183[local353] = arg0[local353].anInt5404;
|
||||
local979 = local858.anIntArray473[local367];
|
||||
|
|
@ -364,7 +364,7 @@ public final class Class59 {
|
|||
local827 |= local1042.method901(local353);
|
||||
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];
|
||||
local451 = local360 >>> 16;
|
||||
local360 &= 0xFFFF;
|
||||
|
|
@ -395,7 +395,7 @@ public final class Class59 {
|
|||
local827 |= local1154.method901(local979);
|
||||
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];
|
||||
local451 = arg2.anIntArray473[arg5];
|
||||
local481 = local451 >>> 16;
|
||||
|
|
|
|||
|
|
@ -84,6 +84,8 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene
|
|||
@OriginalMember(owner = "client!ba", name = "B", descriptor = "I")
|
||||
public static int timePerFrame = 20;
|
||||
|
||||
public static int FIXED_UPDATE_RATE = 20;
|
||||
|
||||
@OriginalMember(owner = "client!cm", name = "b", descriptor = "Ljava/lang/Thread;")
|
||||
public static Thread thread;
|
||||
|
||||
|
|
@ -150,6 +152,7 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene
|
|||
if (signLink.eventQueue == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (@Pc(19) int i = 0; i < 50 && signLink.eventQueue.peekEvent() != null; i++) {
|
||||
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();
|
||||
GraphicsDevice myScreen = config.getDevice();
|
||||
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
|
||||
|
|
@ -467,13 +470,24 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene
|
|||
Static260.frameBuffer = Static131.create(canvasHeight, canvasWidth, canvas);
|
||||
this.mainInit();
|
||||
timer = Static70.create();
|
||||
while (killTime == 0L || killTime > MonotonicClock.currentTimeMillis()) {
|
||||
logicCycles = timer.sleep(minimumDelay, timePerFrame);
|
||||
for (i = 0; i < logicCycles; i++) {
|
||||
this.mainLoopWrapper();
|
||||
|
||||
long lastUpdateTime = 0;
|
||||
long lastDrawTime = 0;
|
||||
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();
|
||||
lastDrawTime = currentTime;
|
||||
}
|
||||
this.mainRedrawWrapper();
|
||||
flush(signLink, canvas);
|
||||
}
|
||||
} catch (@Pc(198) Exception ex) {
|
||||
Static89.report(null, ex);
|
||||
|
|
|
|||
|
|
@ -40,4 +40,6 @@ public class GlobalConfig {
|
|||
//endregion
|
||||
|
||||
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(201) int local201 = (local157 + 1 >> 1) + this.anInt1300;
|
||||
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) {
|
||||
return null;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -358,7 +358,7 @@ public final class NpcType {
|
|||
local721 |= Static6.aClass3_Sub2_Sub7Array1[local235].method901(local214);
|
||||
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];
|
||||
Static214.anIntArray492[local235] = arg0[local235].anInt5404;
|
||||
local228 = local753.anIntArray473[local207];
|
||||
|
|
@ -401,7 +401,7 @@ public final class NpcType {
|
|||
local721 |= local962.method901(local235);
|
||||
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];
|
||||
local221 = arg8.anIntArray473[arg3];
|
||||
local1040 = local221 >>> 16;
|
||||
|
|
@ -432,7 +432,7 @@ public final class NpcType {
|
|||
local721 |= local1088.method901(local228);
|
||||
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];
|
||||
local1040 = arg6.anIntArray473[arg1];
|
||||
local318 = local1040 >>> 16;
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ public final class SeqType {
|
|||
}
|
||||
@Pc(39) int local39 = arg3 & 0x3;
|
||||
@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];
|
||||
local41 = Static72.method1566(local69 >> 16);
|
||||
arg1 = local69 & 0xFFFF;
|
||||
|
|
@ -137,7 +137,7 @@ public final class SeqType {
|
|||
return arg0.method4572(true, true, true);
|
||||
}
|
||||
@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];
|
||||
local34 = Static72.method1566(local59 >> 16);
|
||||
arg1 = local59 & 0xFFFF;
|
||||
|
|
@ -154,7 +154,7 @@ public final class SeqType {
|
|||
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];
|
||||
if (local85 != 65535) {
|
||||
local81 = Static72.method1566(local85 >> 16);
|
||||
|
|
@ -195,7 +195,7 @@ public final class SeqType {
|
|||
}
|
||||
@Pc(40) int local40 = arg3 & 0x3;
|
||||
@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];
|
||||
local42 = Static72.method1566(local66 >> 16);
|
||||
arg0 = local66 & 0xFFFF;
|
||||
|
|
@ -269,7 +269,7 @@ public final class SeqType {
|
|||
return arg3.method4560(true, true, true);
|
||||
}
|
||||
@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];
|
||||
local42 = Static72.method1566(local65 >> 16);
|
||||
arg0 = local65 & 0xFFFF;
|
||||
|
|
|
|||
|
|
@ -343,11 +343,11 @@ public final class Static127 {
|
|||
Static121.aBoolean154 = true;
|
||||
}
|
||||
if (arg0.method3111(Static124.aClass100_596)) {
|
||||
if (Static204.aBoolean234) {
|
||||
Static204.aBoolean234 = false;
|
||||
if (Static204.applyTweening) {
|
||||
Static204.applyTweening = false;
|
||||
Static103.method2231(null, 0, Static274.aClass100_943);
|
||||
} else {
|
||||
Static204.aBoolean234 = true;
|
||||
Static204.applyTweening = true;
|
||||
Static103.method2231(null, 0, Static50.aClass100_362);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ public final class Static204 {
|
|||
public static LinkedList aClass69_113 = new LinkedList();
|
||||
|
||||
@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")
|
||||
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