Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
501
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.80 KB | None | 0 0
  1. /*
  2. * Copyright (c) 2013, DarkStorm (darkstorm@evilminecraft.net)
  3. * All rights reserved.
  4. *
  5. * Redistribution and use in source and binary forms, with or without
  6. * modification, are permitted provided that the following conditions are met:
  7. *
  8. * 1. Redistributions of source code must retain the above copyright notice, this
  9. * list of conditions and the following disclaimer.
  10. * 2. Redistributions in binary form must reproduce the above copyright notice,
  11. * this list of conditions and the following disclaimer in the documentation
  12. * and/or other materials provided with the distribution.
  13. *
  14. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  15. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  16. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  17. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
  18. * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  19. * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  20. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  21. * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  22. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  23. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  24. */
  25. package me.zertix.zorx.managers;
  26.  
  27. import java.awt.Dimension;
  28. import java.awt.Rectangle;
  29. import java.util.HashMap;
  30. import java.util.Map;
  31. import java.util.concurrent.atomic.AtomicBoolean;
  32.  
  33. import org.darkstorm.minecraft.gui.AbstractGuiManager;
  34. import org.darkstorm.minecraft.gui.component.Button;
  35. import org.darkstorm.minecraft.gui.component.ComboBox;
  36. import org.darkstorm.minecraft.gui.component.Component;
  37. import org.darkstorm.minecraft.gui.component.Frame;
  38. import org.darkstorm.minecraft.gui.component.Slider;
  39. import org.darkstorm.minecraft.gui.component.basic.BasicButton;
  40. import org.darkstorm.minecraft.gui.component.basic.BasicComboBox;
  41. import org.darkstorm.minecraft.gui.component.basic.BasicFrame;
  42. import org.darkstorm.minecraft.gui.component.basic.BasicSlider;
  43. import org.darkstorm.minecraft.gui.layout.GridLayoutManager;
  44. import org.darkstorm.minecraft.gui.layout.GridLayoutManager.HorizontalGridConstraint;
  45. import org.darkstorm.minecraft.gui.listener.ButtonListener;
  46. import org.darkstorm.minecraft.gui.listener.ComboBoxListener;
  47. import org.darkstorm.minecraft.gui.listener.SliderListener;
  48. import org.darkstorm.minecraft.gui.theme.Theme;
  49. import org.darkstorm.minecraft.gui.theme.simple.SimpleTheme;
  50. import org.newdawn.slick.particles.ConfigurableEmitter.Value;
  51.  
  52. import me.zertix.zorx.Category;
  53. import me.zertix.zorx.Module;
  54. import me.zertix.zorx.ModuleManager;
  55. import net.minecraft.client.Minecraft;
  56.  
  57. /**
  58. * Minecraft GUI API
  59. *
  60. * This class is not actually intended for use; rather, you should use this as a
  61. * template for your actual GuiManager, as the creation of frames is highly
  62. * implementation-specific.
  63. *
  64. * @author DarkStorm (darkstorm@evilminecraft.net)
  65. */
  66. public final class GuiManager extends AbstractGuiManager {
  67.  
  68. public static String EspList;
  69. private class ModuleFrame extends BasicFrame {
  70. private ModuleFrame() {
  71. }
  72.  
  73. private ModuleFrame(String title) {
  74. super(title);
  75. }
  76. }
  77.  
  78. private final AtomicBoolean setup;
  79.  
  80. public GuiManager() {
  81. setup = new AtomicBoolean();
  82. EspList = "Player";
  83. }
  84.  
  85. @Override
  86. public void setup() {
  87. if (!setup.compareAndSet(false, true))
  88. return;
  89.  
  90. createTestFrame();
  91.  
  92. final Map<Category, ModuleFrame> categoryFrames = new HashMap<Category, ModuleFrame>();
  93. for (Module module : ModuleManager.getModules()) {
  94. if (module.isCategory(Category.GUI))
  95. continue;
  96. ModuleFrame frame = categoryFrames.get(module.getCategory());
  97. if (frame == null) {
  98. String name = module.getCategory().name().toLowerCase();
  99. name = Character.toUpperCase(name.charAt(0)) + name.substring(1);
  100. frame = new ModuleFrame(name);
  101. frame.setTheme(getTheme());
  102. frame.setLayoutManager(new GridLayoutManager(1, 0));
  103. frame.setVisible(true);
  104. frame.setClosable(false);
  105. frame.setMinimized(true);
  106. Dimension defaultDimension = theme.getUIForComponent(frame).getDefaultSize(frame);
  107. frame.setWidth(defaultDimension.width);
  108. frame.setHeight(defaultDimension.height);
  109. frame.layoutChildren();
  110. addFrame(frame);
  111. categoryFrames.put(module.getCategory(), frame);
  112. }
  113. final Module updateModule = module;
  114. Button button = new BasicButton(module.getName()){
  115. public void update(){
  116. setText(updateModule.getName());
  117. setEnabled(updateModule.getState());
  118. }
  119. };
  120. button.addButtonListener(new ButtonListener() {
  121.  
  122. @Override
  123. public void onButtonPress(Button button) {
  124. updateModule.toggleModule();
  125. button.setText(updateModule.getName());
  126. button.setEnabled(updateModule.getState());
  127. }
  128. });
  129. frame.add(button, HorizontalGridConstraint.FILL);
  130. }
  131.  
  132. // Optional equal sizing and auto-positioning
  133. resizeComponents();
  134. Minecraft minecraft = Minecraft.getMinecraft();
  135. Dimension maxSize = recalculateSizes();
  136. int offsetX = 5, offsetY = 5;
  137. int scale = minecraft.gameSettings.guiScale;
  138. if (scale == 0)
  139. scale = 1000;
  140. int scaleFactor = 0;
  141. while (scaleFactor < scale && minecraft.displayWidth / (scaleFactor + 1) >= 320 && minecraft.displayHeight / (scaleFactor + 1) >= 240)
  142. scaleFactor++;
  143. for (Frame frame : getFrames()) {
  144. frame.setX(offsetX);
  145. frame.setY(offsetY);
  146. offsetX += maxSize.width + 5;
  147. if (offsetX + maxSize.width + 5 > minecraft.displayWidth / scaleFactor) {
  148. offsetX = 5;
  149. offsetY += maxSize.height + 5;
  150. }
  151. }
  152. }
  153.  
  154.  
  155.  
  156. private void createValuesFrame(){
  157. Theme theme = getTheme();
  158. final Frame valuesFrame = new BasicFrame("Value Manager");
  159. valuesFrame.setTheme(theme);
  160. valuesFrame.setX(50);
  161. valuesFrame.setY(50);
  162. Dimension defaultDimension = theme.getUIForComponent(valuesFrame).getDefaultSize(valuesFrame);
  163. valuesFrame.setWidth(defaultDimension.width);
  164. valuesFrame.setHeight(defaultDimension.height);
  165. valuesFrame.layoutChildren();
  166. valuesFrame.setVisible(true);
  167. valuesFrame.setClosable(false);
  168. valuesFrame.setMinimized(true);
  169.  
  170.  
  171. }
  172.  
  173. private void createTestFrame() {
  174. Theme theme = getTheme();
  175. Frame testFrame = new BasicFrame("Theme Manager");
  176. testFrame.setTheme(theme);
  177. ComboBox comboBox = new BasicComboBox("Simple Theme", "ZorX Theme");
  178. comboBox.addComboBoxListener(new ComboBoxListener() {
  179.  
  180. @Override
  181. public void onComboBoxSelectionChanged(ComboBox comboBox) {
  182. Theme theme = null;
  183. switch(comboBox.getSelectedIndex()) {
  184. case 0:
  185. theme = new SimpleTheme();
  186. break;
  187. case 1:
  188. //theme = new CrytonTheme();
  189. break;
  190.  
  191. default:
  192. return;
  193. }
  194. setTheme(theme);
  195. }
  196. });
  197. testFrame.add(comboBox);
  198. testFrame.setX(50);
  199. testFrame.setY(50);
  200. Dimension defaultDimension = theme.getUIForComponent(testFrame).getDefaultSize(testFrame);
  201. testFrame.setWidth(defaultDimension.width);
  202. testFrame.setHeight(defaultDimension.height);
  203. testFrame.setVisible(true);
  204. testFrame.setClosable(false);
  205. testFrame.setMinimized(true);
  206. addFrame(testFrame);
  207. }
  208.  
  209.  
  210.  
  211.  
  212. @Override
  213. protected void resizeComponents() {
  214. Theme theme = getTheme();
  215. Frame[] frames = getFrames();
  216. Button enable = new BasicButton("Enable");
  217. Button disable = new BasicButton("Disable");
  218. Dimension enableSize = theme.getUIForComponent(enable).getDefaultSize(enable);
  219. Dimension disableSize = theme.getUIForComponent(disable).getDefaultSize(disable);
  220. int buttonWidth = Math.max(enableSize.width, disableSize.width);
  221. int buttonHeight = Math.max(enableSize.height, disableSize.height);
  222. for (Frame frame : frames) {
  223. if (frame instanceof ModuleFrame) {
  224. for (Component component : frame.getChildren()) {
  225. if (component instanceof Button) {
  226. component.setWidth(buttonWidth);
  227. component.setHeight(buttonHeight);
  228. }
  229. }
  230. }
  231. }
  232. recalculateSizes();
  233. }
  234.  
  235. private Dimension recalculateSizes() {
  236. Frame[] frames = getFrames();
  237. int maxWidth = 0, maxHeight = 0;
  238. for (Frame frame : frames) {
  239. Dimension defaultDimension = frame.getTheme().getUIForComponent(frame).getDefaultSize(frame);
  240. maxWidth = Math.max(maxWidth, defaultDimension.width);
  241. frame.setHeight(defaultDimension.height);
  242. if (frame.isMinimized()) {
  243. for (Rectangle area : frame.getTheme().getUIForComponent(frame).getInteractableRegions(frame))
  244. maxHeight = Math.max(maxHeight, area.height);
  245. } else
  246. maxHeight = Math.max(maxHeight, defaultDimension.height);
  247. }
  248. for (Frame frame : frames) {
  249. frame.setWidth(maxWidth);
  250. frame.layoutChildren();
  251. }
  252. return new Dimension(maxWidth, maxHeight);
  253. }
  254. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement