Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Widget {
- public ImageRGB disabledSprite;
- public int animationDuration;
- public ImageRGB[] sprites;
- public static Widget[] interfaces;
- public int interfaceUnusedOne;
- public int[] interfaceConditionValues;
- public int interfaceContentType;
- public int[] spritesX;
- public int disabledHoveredColor;
- public int interfaceActionType;
- public String spellName;
- public int enabledColor;
- public int interfaceWidth;
- public String tooltip;
- public String selectedActionName;
- public boolean fontCentered;
- public int interfaceScrollPosition;
- public String[] actions;
- public int[][] interfaceFormulaes;
- public boolean filled;
- public String enabledText;
- public int interfaceHoveredPopup;
- public int inventorySpritePadsX;
- public int disabledColor;
- public int mediaType;
- public int mediaId;
- public boolean inventoryDeletesDraged;
- public int interfaceParentId;
- public int spellUsableOn;
- private static Cache spriteCache;
- public int enabledHoveredColor;
- public int[] interfaceChildren;
- public int[] interfaceChildrenX;
- public boolean inventoryUsable;
- public TypeFace fonts;
- public int inventorySpritePadsY;
- public int[] interfaceConditionTypes;
- public int animationFrame;
- public int[] spritesY;
- public String disabledText;
- public boolean inventoryInterface;
- public int interfaceId;
- public boolean interfaceUnusedTwo;
- public int[] inventoryAmount;
- public int[] inventory;
- public byte interfaceAlpha;
- public int enabledMediaType;
- public int enabledMediaId;
- public int disabledAnimation;
- public int enabledAnimation;
- public boolean inventorySwapable;
- public ImageRGB enabledSprite;
- public int interfaceScrollLimit;
- public int interfaceType;
- public int interfacePositionX;
- static Cache modelCache = new Cache(30);
- public int interfacePositionY;
- public boolean hiddenUntilHovered;
- public int interfaceHeight;
- public boolean fontShadowed;
- public int zoom;
- public int rotationX;
- public int rotationY;
- public int[] interfaceChildrenY;
- public void swapInventoryItems(int originalSlot, int newSlot) {
- int originalItem = inventory[originalSlot];
- inventory[originalSlot] = inventory[newSlot];
- inventory[newSlot] = originalItem;
- originalItem = inventoryAmount[originalSlot];
- inventoryAmount[originalSlot] = inventoryAmount[newSlot];
- inventoryAmount[newSlot] = originalItem;
- }
- public static void load(Archive interfaceArchive, TypeFace[] typeFaces, Archive mediaArchive) {
- Widget.spriteCache = new Cache(50000);
- Buffer buffer = new Buffer(interfaceArchive.getFile("data"));
- int parentId = -1;
- int interfaceCount = buffer.getUnsignedLEShort();
- Widget.interfaces = new Widget[interfaceCount];
- while (buffer.offset < buffer.payload.length) {
- int interfaceId = buffer.getUnsignedLEShort();
- if (interfaceId == 65535) {
- parentId = buffer.getUnsignedLEShort();
- interfaceId = buffer.getUnsignedLEShort();
- }
- Widget widget = Widget.interfaces[interfaceId] = new Widget();
- widget.interfaceId = interfaceId;
- widget.interfaceParentId = parentId;
- widget.interfaceType = buffer.getUnsignedByte();
- widget.interfaceActionType = buffer.getUnsignedByte();
- widget.interfaceContentType = buffer.getUnsignedLEShort();
- widget.interfaceWidth = buffer.getUnsignedLEShort();
- widget.interfaceHeight = buffer.getUnsignedLEShort();
- widget.interfaceAlpha = (byte) buffer.getUnsignedByte();
- widget.interfaceHoveredPopup = buffer.getUnsignedByte();
- if (widget.interfaceHoveredPopup != 0) {
- widget.interfaceHoveredPopup = (widget.interfaceHoveredPopup - 1 << 8) + buffer.getUnsignedByte();
- } else {
- widget.interfaceHoveredPopup = -1;
- }
- int conditionCount = buffer.getUnsignedByte();
- if (conditionCount > 0) {
- widget.interfaceConditionTypes = new int[conditionCount];
- widget.interfaceConditionValues = new int[conditionCount];
- for (int interfaceCondition = 0; interfaceCondition < conditionCount; interfaceCondition++) {
- widget.interfaceConditionTypes[interfaceCondition] = buffer.getUnsignedByte();
- widget.interfaceConditionValues[interfaceCondition] = buffer.getUnsignedLEShort();
- }
- }
- int formulaCount = buffer.getUnsignedByte();
- if (formulaCount > 0) {
- widget.interfaceFormulaes = new int[formulaCount][];
- for (int interfaceFormula = 0; interfaceFormula < formulaCount; interfaceFormula++) {
- int interfaceSubFormulaCount = buffer.getUnsignedLEShort();
- widget.interfaceFormulaes[interfaceFormula] = new int[interfaceSubFormulaCount];
- for (int interfaceSubFormula = 0; interfaceSubFormula < interfaceSubFormulaCount; interfaceSubFormula++) {
- widget.interfaceFormulaes[interfaceFormula][interfaceSubFormula] = buffer.getUnsignedLEShort();
- }
- }
- }
- if (widget.interfaceType == 0) {
- widget.interfaceScrollLimit = buffer.getUnsignedLEShort();
- widget.hiddenUntilHovered = buffer.getUnsignedByte() == 1;
- int childrenCount = buffer.getUnsignedLEShort();
- widget.interfaceChildren = new int[childrenCount];
- widget.interfaceChildrenX = new int[childrenCount];
- widget.interfaceChildrenY = new int[childrenCount];
- for (int interfaceChild = 0; interfaceChild < childrenCount; interfaceChild++) {
- widget.interfaceChildren[interfaceChild] = buffer.getUnsignedLEShort();
- widget.interfaceChildrenX[interfaceChild] = buffer.getShort();
- widget.interfaceChildrenY[interfaceChild] = buffer.getShort();
- }
- }
- if (widget.interfaceType == 1) {
- widget.interfaceUnusedOne = buffer.getUnsignedLEShort();
- widget.interfaceUnusedTwo = buffer.getUnsignedByte() == 1;
- }
- if (widget.interfaceType == 2) {
- widget.inventory = new int[widget.interfaceWidth * widget.interfaceHeight];
- widget.inventoryAmount = new int[widget.interfaceWidth * widget.interfaceHeight];
- widget.inventorySwapable = buffer.getUnsignedByte() == 1;
- widget.inventoryInterface = buffer.getUnsignedByte() == 1;
- widget.inventoryUsable = buffer.getUnsignedByte() == 1;
- widget.inventoryDeletesDraged = buffer.getUnsignedByte() == 1;
- widget.inventorySpritePadsX = buffer.getUnsignedByte();
- widget.inventorySpritePadsY = buffer.getUnsignedByte();
- widget.spritesX = new int[20];
- widget.spritesY = new int[20];
- widget.sprites = new ImageRGB[20];
- for (int sprite = 0; sprite < 20; sprite++) {
- int hasSprite = buffer.getUnsignedByte();
- if (hasSprite == 1) {
- widget.spritesX[sprite] = buffer.getShort();
- widget.spritesY[sprite] = buffer.getShort();
- String spriteName = buffer.getString();
- if (mediaArchive != null && spriteName.length() > 0) {
- int spriteId = spriteName.lastIndexOf(",");
- widget.sprites[sprite] = Widget.getSprite(
- Integer.parseInt(spriteName.substring(spriteId + 1)), mediaArchive,
- spriteName.substring(0, spriteId));
- }
- }
- }
- widget.actions = new String[5];
- for (int action = 0; action < 5; action++) {
- widget.actions[action] = buffer.getString();
- if (widget.actions[action].length() == 0) {
- widget.actions[action] = null;
- }
- }
- }
- if (widget.interfaceType == 3) {
- widget.filled = buffer.getUnsignedByte() == 1;
- }
- if (widget.interfaceType == 4 || widget.interfaceType == 1) {
- widget.fontCentered = buffer.getUnsignedByte() == 1;
- int font = buffer.getUnsignedByte();
- if (typeFaces != null) {
- widget.fonts = typeFaces[font];
- }
- widget.fontShadowed = buffer.getUnsignedByte() == 1;
- }
- if (widget.interfaceType == 4) {
- widget.disabledText = buffer.getString();
- widget.enabledText = buffer.getString();
- }
- if (widget.interfaceType == 1 || widget.interfaceType == 3 || widget.interfaceType == 4) {
- widget.disabledColor = buffer.getInt();
- }
- if (widget.interfaceType == 3 || widget.interfaceType == 4) {
- widget.enabledColor = buffer.getInt();
- widget.disabledHoveredColor = buffer.getInt();
- widget.enabledHoveredColor = buffer.getInt();
- }
- if (widget.interfaceType == 5) {
- String spriteName = buffer.getString();
- if (mediaArchive != null && spriteName.length() > 0) {
- int spriteId = spriteName.lastIndexOf(",");
- widget.disabledSprite = Widget.getSprite(Integer.parseInt(spriteName.substring(spriteId + 1)),
- mediaArchive, spriteName.substring(0, spriteId));
- }
- spriteName = buffer.getString();
- if (mediaArchive != null && spriteName.length() > 0) {
- int spriteId = spriteName.lastIndexOf(",");
- widget.enabledSprite = Widget.getSprite(Integer.parseInt(spriteName.substring(spriteId + 1)),
- mediaArchive, spriteName.substring(0, spriteId));
- }
- }
- if (widget.interfaceType == 6) {
- interfaceId = buffer.getUnsignedByte();
- if (interfaceId != 0) {
- widget.mediaType = 1;
- widget.mediaId = (interfaceId - 1 << 8) + buffer.getUnsignedByte();
- }
- interfaceId = buffer.getUnsignedByte();
- if (interfaceId != 0) {
- widget.enabledMediaType = 1;
- widget.enabledMediaId = (interfaceId - 1 << 8) + buffer.getUnsignedByte();
- }
- interfaceId = buffer.getUnsignedByte();
- if (interfaceId != 0) {
- widget.disabledAnimation = (interfaceId - 1 << 8) + buffer.getUnsignedByte();
- } else {
- widget.disabledAnimation = -1;
- }
- interfaceId = buffer.getUnsignedByte();
- if (interfaceId != 0) {
- widget.enabledAnimation = (interfaceId - 1 << 8) + buffer.getUnsignedByte();
- } else {
- widget.enabledAnimation = -1;
- }
- widget.zoom = buffer.getUnsignedLEShort();
- widget.rotationX = buffer.getUnsignedLEShort();
- widget.rotationY = buffer.getUnsignedLEShort();
- }
- if (widget.interfaceType == 7) {
- widget.inventory = new int[widget.interfaceWidth * widget.interfaceHeight];
- widget.inventoryAmount = new int[widget.interfaceWidth * widget.interfaceHeight];
- widget.fontCentered = buffer.getUnsignedByte() == 1;
- int fontCount = buffer.getUnsignedByte();
- if (typeFaces != null) {
- widget.fonts = typeFaces[fontCount];
- }
- widget.fontShadowed = buffer.getUnsignedByte() == 1;
- widget.disabledColor = buffer.getInt();
- widget.inventorySpritePadsX = buffer.getShort();
- widget.inventorySpritePadsY = buffer.getShort();
- widget.inventoryInterface = buffer.getUnsignedByte() == 1;
- widget.actions = new String[5];
- for (int action = 0; action < 5; action++) {
- widget.actions[action] = buffer.getString();
- if (widget.actions[action].length() == 0) {
- widget.actions[action] = null;
- }
- }
- }
- if (widget.interfaceActionType == 2 || widget.interfaceType == 2) {
- widget.selectedActionName = buffer.getString();
- widget.spellName = buffer.getString();
- widget.spellUsableOn = buffer.getUnsignedLEShort();
- }
- if (widget.interfaceType == 8) {
- widget.disabledText = buffer.getString();
- }
- if (widget.interfaceActionType == 1 || widget.interfaceActionType == 4 || widget.interfaceActionType == 5
- || widget.interfaceActionType == 6) {
- widget.tooltip = buffer.getString();
- if (widget.tooltip.length() == 0) {
- if (widget.interfaceActionType == 1) {
- widget.tooltip = "Ok";
- }
- if (widget.interfaceActionType == 4) {
- widget.tooltip = "Select";
- }
- if (widget.interfaceActionType == 5) {
- widget.tooltip = "Select";
- }
- if (widget.interfaceActionType == 6) {
- widget.tooltip = "Continue";
- }
- }
- }
- }
- Widget.spriteCache = null;
- }
- private Model getModel(int modelType, int modelId) {
- Model model = (Model) Widget.modelCache.get((modelType << 16) + modelId);
- if (model != null) {
- return model;
- }
- if (modelType == 1) {
- model = Model.getModel(modelId);
- }
- if (modelType == 2) {
- model = NpcDefinition.getDefinition(modelId).getModel(true);
- }
- if (modelType == 3) {
- model = Client.clientsPlayer.getModel();
- }
- if (modelType == 4) {
- model = ItemDefinition.getDefinition(modelId).getModel(50, true);
- }
- if (modelType == 5) {
- model = null;
- }
- if (model != null) {
- Widget.modelCache.put(model, (modelType << 16) + modelId);
- }
- return model;
- }
- private static ImageRGB getSprite(int spriteId, Archive mediaArchive, String spriteName) {
- long spriteHash = (TextUtils.spriteToHash(spriteName) << 8) + spriteId;
- ImageRGB sprite = (ImageRGB) Widget.spriteCache.get(spriteHash);
- if (sprite != null) {
- return sprite;
- }
- try {
- sprite = new ImageRGB(mediaArchive, spriteName, spriteId);
- Widget.spriteCache.put(sprite, spriteHash);
- } catch (Exception exception) {
- return null;
- }
- return sprite;
- }
- public static void setModel(int modelId, int modelType, Model model) {
- Widget.modelCache.removeAll();
- Widget.modelCache.put(model, (modelType << 16) + modelId);
- }
- public Model getAnimatedModel(int frame1Id, int fram2Id, boolean mediaEnabled) {
- Model model;
- if (mediaEnabled) {
- model = getModel(enabledMediaType, enabledMediaId);
- } else {
- model = getModel(mediaType, mediaId);
- }
- if (model == null) {
- return null;
- }
- if (fram2Id == -1 && frame1Id == -1 && model.triangleColorValues == null) {
- return model;
- }
- Model animatedModel = new Model(9, true, Animation.exists(fram2Id) & Animation.exists(frame1Id), false, model);
- if (fram2Id != -1 || frame1Id != -1) {
- animatedModel.createBones((byte) -71);
- }
- if (fram2Id != -1) {
- animatedModel.applyTransform(fram2Id, 40542);
- }
- if (frame1Id != -1) {
- animatedModel.applyTransform(frame1Id, 40542);
- }
- animatedModel.applyLighting(64, 768, -50, -10, -50, true);
- return animatedModel;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement