Refactored some code related to inv/sprite

This commit is contained in:
Pazaz 2022-05-11 04:24:19 -04:00
parent 77bfb744bc
commit b57d5a0031
51 changed files with 686 additions and 625 deletions

View file

@ -27,7 +27,7 @@ public final class Inv extends Node {
}
@Pc(17) Inv local17 = (Inv) objectContainerCache.get((long) arg0);
if (local17 == null) {
return InvTypeList.list(arg0).size;
return InvTypeList.get(arg0).size;
}
@Pc(31) int freeSpaces = 0;
for (@Pc(33) int id = 0; id < local17.objectIds.length; id++) {
@ -35,7 +35,7 @@ public final class Inv extends Node {
freeSpaces++;
}
}
return freeSpaces + InvTypeList.list(arg0).size - local17.objectIds.length;
return freeSpaces + InvTypeList.get(arg0).size - local17.objectIds.length;
}
@OriginalMember(owner = "client!od", name = "a", descriptor = "(IZII)I")
@ -117,4 +117,149 @@ public final class Inv extends Node {
public static void method2073() {
objectContainerCache = new HashTable(32);
}
@OriginalMember(owner = "client!wl", name = "a", descriptor = "(IIIIB)V")
public static void updateContainer(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3) {
@Pc(12) Inv local12 = (Inv) objectContainerCache.get((long) arg3);
if (local12 == null) {
local12 = new Inv();
objectContainerCache.put(local12, (long) arg3);
}
if (arg1 >= local12.objectIds.length) {
@Pc(39) int[] local39 = new int[arg1 + 1];
@Pc(44) int[] local44 = new int[arg1 + 1];
@Pc(46) int local46;
for (local46 = 0; local46 < local12.objectIds.length; local46++) {
local39[local46] = local12.objectIds[local46];
local44[local46] = local12.anIntArray422[local46];
}
for (local46 = local12.objectIds.length; local46 < arg1; local46++) {
local39[local46] = -1;
local44[local46] = 0;
}
local12.objectIds = local39;
local12.anIntArray422 = local44;
}
local12.objectIds[arg1] = arg0;
local12.anIntArray422[arg1] = arg2;
}
@OriginalMember(owner = "client!pf", name = "a", descriptor = "(IIZIII)Lclient!qf;")
public static Sprite getObjectSprite(@OriginalArg(0) int selected, @OriginalArg(1) int id, @OriginalArg(2) boolean drawText, @OriginalArg(3) int count, @OriginalArg(4) int shadow) {
@Pc(27) int key = (drawText ? 65536 : 0) + id + (selected << 17) + (shadow << 19);
@Pc(37) long uid = (long) key * 3849834839L + (long) count * 3147483667L;
@Pc(43) Sprite sprite = (Sprite) ObjTypeList.objectSpriteCache.get(uid);
if (sprite != null) {
return sprite;
}
Rasteriser.textureHasTransparency = false;
sprite = renderObjectSprite(shadow, false, id, drawText, selected, count, false);
if (sprite != null && !Rasteriser.textureHasTransparency) {
ObjTypeList.objectSpriteCache.put(sprite, uid);
}
return sprite;
}
@OriginalMember(owner = "client!na", name = "a", descriptor = "(IBZIZIIZ)Lclient!qf;")
public static Sprite renderObjectSprite(@OriginalArg(0) int shadow, @OriginalArg(2) boolean linked, @OriginalArg(3) int id, @OriginalArg(4) boolean drawText, @OriginalArg(5) int state, @OriginalArg(6) int stack, @OriginalArg(7) boolean cert) {
@Pc(5) ObjType objType = ObjTypeList.get(id);
if (stack > 1 && objType.countObj != null) {
@Pc(15) int stackId = -1;
for (@Pc(17) int i = 0; i < 10; i++) {
if (stack >= objType.countCount[i] && objType.countCount[i] != 0) {
stackId = objType.countObj[i];
}
}
if (stackId != -1) {
objType = ObjTypeList.get(stackId);
}
}
@Pc(60) SoftwareModel model = objType.getInvModel();
if (model == null) {
return null;
}
@Pc(71) SoftwareSprite linkedSprite = null;
if (objType.certificateTemplate != -1) {
linkedSprite = (SoftwareSprite) renderObjectSprite(0, true, objType.certificateLink, false, 1, 10, true);
if (linkedSprite == null) {
return null;
}
} else if (objType.lentTemplate != -1) {
linkedSprite = (SoftwareSprite) renderObjectSprite(shadow, true, objType.lentLink, false, state, stack, false);
if (linkedSprite == null) {
return null;
}
}
@Pc(118) int[] pixels = SoftwareRaster.pixels;
@Pc(120) int width = SoftwareRaster.width;
@Pc(122) int height = SoftwareRaster.height;
@Pc(125) int[] clip = new int[4];
SoftwareRaster.saveClip(clip);
final int canvasWidth = 36;
final int canvasHeight = 32;
@Pc(133) SoftwareSprite canvas = new SoftwareSprite(canvasWidth, canvasHeight);
SoftwareRaster.setSize(canvas.pixels, canvasWidth, canvasHeight);
Rasteriser.prepare();
Rasteriser.setBounds(canvasWidth / 2, canvasHeight / 2);
Rasteriser.jagged = false;
@Pc(145) int zoom = objType.zoom2d; // / 4;
if (cert) {
zoom = (int) ((double) zoom * 1.5D);
} else if (state == 2) {
zoom = (int) ((double) zoom * 1.04D);
}
@Pc(176) int pitchcos = MathUtils.cos[objType.xAngle2d] * zoom >> 16;
@Pc(185) int pitchsin = MathUtils.sin[objType.xAngle2d] * zoom >> 16;
model.setCamera(objType.yAngle2d, objType.zAngle2d, objType.xAngle2d, objType.xOffset2d, pitchsin + objType.yOffset2d - model.getMaxY() / 2, objType.yOffset2d + pitchcos, -1L);
if (state >= 1) {
canvas.drawOutline(1);
if (state >= 2) {
canvas.drawOutline(16777215);
}
SoftwareRaster.setSize(canvas.pixels, canvasWidth, canvasHeight);
}
if (shadow != 0) {
canvas.drawShadow(shadow);
}
if (objType.certificateTemplate != -1) {
linkedSprite.render(0, 0);
} else if (objType.lentTemplate != -1) {
SoftwareRaster.setSize(linkedSprite.pixels, canvasWidth, canvasHeight);
canvas.render(0, 0);
canvas = linkedSprite;
}
if (drawText && (objType.stackable == 1 || stack != 1) && stack != -1) {
ObjTypeList.font.renderLeft(formatObjAmount(stack), 0, 9, 16776960, 1);
}
SoftwareRaster.setSize(pixels, width, height);
SoftwareRaster.restoreClip(clip);
Rasteriser.prepare();
Rasteriser.jagged = true;
return GlRenderer.enabled && !linked ? new GlSprite(canvas) : canvas;
}
@OriginalMember(owner = "client!eb", name = "b", descriptor = "(II)Lclient!na;")
public static JagString formatObjAmount(@OriginalArg(1) int arg0) {
if (arg0 < 100000) {
return JagString.concatenate(new JagString[] { Static52.aClass100_559, JagString.parseInt(arg0), Static52.aClass100_594 });
} else if (arg0 >= 10000000) {
return JagString.concatenate(new JagString[] { Static52.aClass100_819, JagString.parseInt(arg0 / 1000000), LocalizedText.MILLION, Static52.aClass100_594 });
} else {
return JagString.concatenate(new JagString[] { Static52.aClass100_637, JagString.parseInt(arg0 / 1000), LocalizedText.THOUSAND, Static52.aClass100_594 });
}
}
}