mirror of
https://gitlab.com/2009scape/rt4-client.git
synced 2026-08-16 16:05:13 -06:00
76 lines
2.9 KiB
Java
76 lines
2.9 KiB
Java
package rt4;
|
|
|
|
import org.openrs2.deob.annotation.OriginalArg;
|
|
import org.openrs2.deob.annotation.OriginalClass;
|
|
import org.openrs2.deob.annotation.OriginalMember;
|
|
import org.openrs2.deob.annotation.Pc;
|
|
|
|
@OriginalClass("client!cl")
|
|
public final class AnimFrameset extends SecondaryNode {
|
|
|
|
@OriginalMember(owner = "client!cl", name = "W", descriptor = "[Lclient!ne;")
|
|
public final AnimFrame[] frames;
|
|
|
|
@OriginalMember(owner = "client!cl", name = "<init>", descriptor = "(Lclient!ve;Lclient!ve;IZ)V")
|
|
public AnimFrameset(@OriginalArg(0) Js5 animsArchive, @OriginalArg(1) Js5 basesArchive, @OriginalArg(2) int id, @OriginalArg(3) boolean arg3) {
|
|
@Pc(5) LinkedList bases = new LinkedList();
|
|
@Pc(10) int capacity = animsArchive.getGroupCapacity(id);
|
|
this.frames = new AnimFrame[capacity];
|
|
@Pc(19) int[] fileIds = animsArchive.getFileIds(id);
|
|
for (@Pc(21) int i = 0; i < fileIds.length; i++) {
|
|
@Pc(37) byte[] bytes = animsArchive.getFile(id, fileIds[i]);
|
|
@Pc(51) int baseId = bytes[1] & 0xFF | (bytes[0] & 0xFF) << 8;
|
|
@Pc(56) AnimBase b = (AnimBase) bases.head();
|
|
@Pc(58) AnimBase base = null;
|
|
while (b != null) {
|
|
if (b.id == baseId) {
|
|
base = b;
|
|
break;
|
|
}
|
|
b = (AnimBase) bases.next();
|
|
}
|
|
if (base == null) {
|
|
@Pc(85) byte[] baseBytes = basesArchive.fetchFileNoDiscard(0, baseId);
|
|
base = new AnimBase(baseId, baseBytes);
|
|
bases.addTail(base);
|
|
}
|
|
this.frames[fileIds[i]] = new AnimFrame(bytes, base);
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!gn", name = "a", descriptor = "(Lclient!ve;ZLclient!ve;BI)Lclient!cl;")
|
|
public static AnimFrameset create(@OriginalArg(0) Js5 animsArchive, @OriginalArg(2) Js5 basesArchive, @OriginalArg(4) int id) {
|
|
@Pc(5) boolean ready = true;
|
|
@Pc(16) int[] fileIds = animsArchive.getFileIds(id);
|
|
for (@Pc(18) int i = 0; i < fileIds.length; i++) {
|
|
@Pc(30) byte[] bytes = animsArchive.fetchFileNoDiscard(fileIds[i], id);
|
|
if (bytes == null) {
|
|
ready = false;
|
|
} else {
|
|
@Pc(49) int baseId = (bytes[0] & 0xFF) << 8 | bytes[1] & 0xFF;
|
|
@Pc(57) byte[] baseBytes = basesArchive.fetchFileNoDiscard(0, baseId);
|
|
if (baseBytes == null) {
|
|
ready = false;
|
|
}
|
|
}
|
|
}
|
|
if (!ready) {
|
|
return null;
|
|
}
|
|
try {
|
|
return new AnimFrameset(animsArchive, basesArchive, id, false);
|
|
} catch (@Pc(84) Exception local84) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!cl", name = "c", descriptor = "(II)Z")
|
|
public final boolean isAlphaTransformed(@OriginalArg(1) int frame) {
|
|
return this.frames[frame].transformsAlpha;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!cl", name = "a", descriptor = "(IB)Z")
|
|
public final boolean isColorTransformed(@OriginalArg(0) int frame) {
|
|
return this.frames[frame].transformsColor;
|
|
}
|
|
}
|