Posted March 29, 20169 yr Hello, So I've been working on a gui that is like the achievement gui and have been quite successful in my venture. I managed to setup boundaries and whatnot. I have one question through, I didn't base it off of the achievement gui class, rather I pawned it up myself and the only real discrepancy that I can notice is that the achievement panel seems to drag smoother. The only thing that I can think of is that the achievement pane is updated at the speed of the fps, yet mine is updated at tick speed. I just curious if this is true or not, and weather or not I can fix this. //Reasource locations for the resources being used in this gui. (guidebook_frame.png, guidebook_background.png) private static final ResourceLocation background = new ResourceLocation(Reference.MODID, ResourceHelper.GUIDEBOOK_BACKGROUND); private static final ResourceLocation frame = new ResourceLocation(Reference.MODID, ResourceHelper.GUIDEBOOK_FRAME); //Width and Height of the background image itself. private float backgroundWidth = 521; private float backgroundHeight = 389; //Size of border of the image on the respective sides. private int borderTopSize = 45; private int borderBottomSize = 41; //Scaled width and height of the frame containing the book gui. private int frameWidth; private int frameHeight; //Variables used to store the x and y of the mouse upon clicking. private int mouseStartX; private int mouseStartY; //Variables used to store the displacement vectors of the mouse x and y, while the mouse is held. private int mouseDisplacementX; private int mouseDisplacementY; //Current u and v coordinates of the background image. private float scrollXDisplacement; private float scrollYDisplacement; //Non-formatted version of the current image location. private int backgroundX; private int backgroundY; //Coordinates of which to start drawing at. private int startX; private int startY; //Modified versions of the startX and startY variables to compensate for the border in the frame texture. private int backgroundStartX; private int backgroundStartY; //Offset vector in pixels of both the frame and background. private int verticalOffset; private int horizontalOffset; public GuiGuideBook() { } @Override public void initGui() { frameWidth = (int)(width * 0.; frameHeight = (int)(height * 1.00); startX = Math.round(((float)width / 2) - ((float) frameWidth / 2)); startY = Math.round(((float)height / 2) - ((float) frameHeight / 2)); verticalOffset = 0; horizontalOffset = -(int)(height * 0.065); backgroundStartX = startX; backgroundStartY = startY + (int)(frameHeight * ((float)(borderTopSize) / (float)backgroundHeight)); } @Override public void updateScreen() { } @Override protected void mouseClicked(int mouseX, int mouseY, int mouseButton) { if (mouseButton == 0) { mouseStartX = mouseX; mouseStartY = mouseY; } } @Override protected void mouseReleased(int mouseX, int mouseY, int mouseButton) { if (mouseButton == 0) { backgroundX += mouseDisplacementX; backgroundY += mouseDisplacementY; mouseDisplacementX = 0; mouseDisplacementY = 0; } } @Override protected void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { if (clickedMouseButton == 0) { mouseDisplacementX = mouseX - mouseStartX; mouseDisplacementY = mouseY - mouseStartY; scrollXDisplacement = (float) (backgroundX + mouseDisplacementX); scrollYDisplacement = (float) (backgroundY + mouseDisplacementY); if (scrollXDisplacement > 0) { scrollXDisplacement = 0; backgroundX = 0; } if (scrollYDisplacement > 0) { scrollYDisplacement = 0; backgroundY = 0; } if (scrollXDisplacement <= -backgroundWidth) { scrollXDisplacement = -backgroundWidth; backgroundX = -(int) backgroundWidth; } if (scrollYDisplacement <= -backgroundHeight) { scrollYDisplacement = -backgroundHeight; backgroundY = -(int) backgroundHeight; } } } @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { drawSchoolPane(mouseX, mouseY, partialTicks); drawFrame(); } @Override public void onGuiClosed() { } @Override public boolean doesGuiPauseGame() { return false; } public void drawSchoolPane(int mouseX, int mouseY, float partialTicks) { if (Mouse.isButtonDown(0)) { } GlStateManager.disableFog(); GlStateManager.disableLighting(); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); mc.getTextureManager().bindTexture(background); drawModalRectWithCustomSizedTexture(backgroundStartX + verticalOffset, backgroundStartY + horizontalOffset, -scrollXDisplacement, -scrollYDisplacement, frameWidth, (frameHeight - (int) (frameHeight * ((float) (borderTopSize + borderBottomSize) / backgroundHeight))) - 5, backgroundWidth * 2, backgroundHeight * 2); } public void drawFrame() { GlStateManager.disableFog(); GlStateManager.disableLighting(); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); mc.getTextureManager().bindTexture(frame); drawScaledCustomSizeModalRect(startX + verticalOffset, startY + horizontalOffset, 0, 0, 768, 768, frameWidth, frameHeight, 768, 768); } } Thanks in advanced, WaffleMan0310
March 29, 20169 yr Since 1 sec = 20 tick and drawScreen() is not called on tick, but on frame (fps), you don't want to use it (ticks). You need to utilize partialTicks passed in drawScreen() method. They give you power of fps. Lookup (almost) any vanilla stuff. 1.7.10 is no longer supported by forge, you are on your own.
March 29, 20169 yr Author Thanks, I thought that might be it but I wasn't sure so I figured I'd confirm.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.