forked from 2009Scape/Server
60 lines
1.8 KiB
Java
60 lines
1.8 KiB
Java
package org.runite.client;
|
|
|
|
// TODO MapSceneDefinition or something
|
|
public final class MapSceneDefinition {
|
|
|
|
public int color;
|
|
public int sprite;
|
|
public boolean aBoolean69 = false;
|
|
|
|
public final void decode(DataBuffer buffer) {
|
|
while (true) {
|
|
int opcode = buffer.readUnsignedByte();
|
|
if (opcode == 0) {
|
|
return;
|
|
}
|
|
|
|
this.decode(buffer, opcode);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param rotations The amount of rotations the sprite should be turned clockwise. Each rotation rotates the sprite
|
|
* by 90 degrees clockwise.
|
|
*/
|
|
public final LDIndexedSprite getSprite(int rotations) {
|
|
LDIndexedSprite sprite = (LDIndexedSprite) TextureOperation2.aReferenceCache_3369.get((long) rotations << 16 | this.sprite);
|
|
if (sprite != null) {
|
|
return sprite;
|
|
}
|
|
|
|
KeyboardListener.aClass153_1916.retrieveSpriteFile(this.sprite);
|
|
sprite = Unsorted.method1539(this.sprite, KeyboardListener.aClass153_1916);
|
|
if (sprite != null) {
|
|
sprite.method1668(Class102.anInt2136, Class46.anInt740, Class158.anInt2015);
|
|
sprite.anInt1469 = sprite.width;
|
|
sprite.anInt1467 = sprite.height;
|
|
|
|
for (int var5 = 0; var5 < rotations; ++var5) {
|
|
sprite.rotateClockwise();
|
|
}
|
|
|
|
TextureOperation2.aReferenceCache_3369.put(sprite, (long) rotations << 16 | this.sprite);
|
|
}
|
|
|
|
return sprite;
|
|
}
|
|
|
|
private void decode(DataBuffer buffer, int opcode) {
|
|
if (opcode == 1) {
|
|
this.sprite = buffer.readUnsignedShort();
|
|
} else if (opcode == 2) {
|
|
this.color = buffer.readMedium();
|
|
} else if (opcode == 3) {
|
|
this.aBoolean69 = true;
|
|
} else if (opcode == 4) {
|
|
this.sprite = -1;
|
|
}
|
|
}
|
|
|
|
}
|