// /*
//  *
//  * TreeWidget
//  *
//  * Handles the skill tree widget
//  *
//  *
// */

// package jesse.keeblarcraft.gui.widgets;

// import jesse.keeblarcraft.Keeblarcraft;
// import jesse.keeblarcraft.Utils.CommonStructures.Position2d;
// import jesse.keeblarcraft.gui.GenericLayerT;
// import net.minecraft.client.gui.DrawContext;
// import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
// import net.minecraft.text.Text;
// import net.minecraft.util.Identifier;

// public class TreeWidget extends GenericLayerT {
//     private static Identifier BACKGROUND_TEXTURE = new Identifier(Keeblarcraft.MOD_ID + ":" + "textures/gui/attribute_tree_background.png");
//     private static int maxHeight = 320;
//     private static int maxLength = 640;
//     private int zoomScale = 1;
//     // private static Identifier FLIGHT_ATTRIBUTE = new Identifier(Keeblarcraft.MOD_ID + ":" + "textures/gui/attribute_flight.png");

//     ///TODO: Make this THE root node in the attribute tree! Rename in future
//     // private static Identifier EXAMPLE_NODE = new Identifier(Keeblarcraft.MOD_ID + ":" + "textures/gui/attribute_tree_example_node.png"); ///TODO: Make a way to make this programmatic (Proabably extend AbstractNode to carry this var)

//     /////////////////////////////////////////////////////////////////////////////
//     /// @fn         TreeWidget
//     ///
//     /// @brief      Class constructor for constructing a tree widget. This will
//     ///             be deprecated in a future version but exists for testing
//     /////////////////////////////////////////////////////////////////////////////
//     public TreeWidget() {
//         this(0, 0, 0, 0, Text.of("Test"));
//         System.out.println("Calling empty tree constructor");
//     }

//     /////////////////////////////////////////////////////////////////////////////
//     /// @fn         TreeWidget
//     ///
//     /// @brief      Class constructor for constructing a tree widget
//     /////////////////////////////////////////////////////////////////////////////
//     public TreeWidget(int x, int y, int width, int height, Text message) {
//         super(x, y, width, height, message);

//         this.startX = x;
//         this.startY = y;
//         this.endX = x + width;
//         this.endY = y + height;
//     }

//     /////////////////////////////////////////////////////////////////////////////
//     /// @fn         renderButton
//     ///
//     /// @param[in]  context is the drawing pane
//     ///
//     /// @param[in]  x is the X position to draw at
//     ///
//     /// @param[in]  y is the Y position to draw at
//     ///
//     /// @param[in]  delta is unused in this version
//     ///
//     /// @brief      Primary call to draw the GUI for this widget
//     /////////////////////////////////////////////////////////////////////////////
//     @Override
//     public void renderButton(DrawContext context, int x, int y, float delta) {
//         context.drawTexture(BACKGROUND_TEXTURE, x, y, 0, 0, maxLength, maxHeight, maxLength, maxHeight);
//     }

//     /////////////////////////////////////////////////////////////////////////////
//     /// @fn         appendClickableNarrations
//     ///
//     /// @param[in]  builder is the narration builder. This is pure virtual in
//     ///             the parent but is unused in this widget currently
//     ///
//     /// @brief      Handles the narrator
//     /////////////////////////////////////////////////////////////////////////////
//     @Override
//     protected void appendClickableNarrations(NarrationMessageBuilder builder) {
//         return;
//     }

//     /////////////////////////////////////////////////////////////////////////////
//     /// @fn         mouseClicked
//     ///
//     /// @param[in]  mouseX is where on the x-axis the mouse was clicked
//     ///
//     /// @param[in]  mouseY is where on the y-axis the mouse was clicked
//     ///
//     /// @param[in]  button is the button clicked with (think of a mouse...)
//     ///
//     /// @brief      Handler for mouse click events
//     /////////////////////////////////////////////////////////////////////////////
//     @Override
//     public boolean mouseClicked(double mouseX, double mouseY, int button) {
//         return true;
//     }

//     /////////////////////////////////////////////////////////////////////////////
//     /// @fn         mouseDragged
//     ///
//     /// @param[in]  mouseX is where on the x-axis the mouse was dragged
//     ///
//     /// @param[in]  mouseY is where on the y-axis the mouse was dragged
//     ///
//     /// @param[in]  button is the button dragged with (think of a mouse...)
//     ///
//     /// @brief      Handler for mouse drag events. delta's unused currently
//     /////////////////////////////////////////////////////////////////////////////
//     @Override
//     public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
//         boolean ret = false;
//         if (this.isValidClickButton(button)) {
//             // Do camera panning magic stuff here
//             ret = true;
//         }
//         return ret;
//     }

//     /////////////////////////////////////////////////////////////////////////////
//     /// @fn         mouseDragged
//     ///
//     /// @param[in]  mouseX is where on the x-axis the mouse was dragged
//     ///
//     /// @param[in]  mouseY is where on the y-axis the mouse was dragged
//     ///
//     /// @param[in]  amount represents scroll direction. If the value is negative
//     ///             we scale out. If positive, we scale in
//     ///
//     /// @brief      Handler for mouse scroll events
//     /////////////////////////////////////////////////////////////////////////////
//     @Override
//     public boolean mouseScrolled(double mouseX, double mouseY, double amount) {
//         // Zooming INWARDS on scroll wheel produces 1.0 (which means zoom in)
//         // Zooming BACKWARDS on scroll wheel produces -1.0 (which means zoom out)
//         // We enforce a max scroll of 10 in either direction here
//         if (amount > 0 && zoomScale <= 10) {
//             // Zoom in
//             zoomScale++;
//         } else if (amount < 0 && zoomScale >= -10) {
//             // Zoom out
//             zoomScale--;
//         }
//         return true;
//     }

//     /////////////////////////////////////////////////////////////////////////////
//     /// @fn         DrawLayer
//     ///
//     /// @param[in]  context is the drawing pane
//     ///
//     /// @param[in]  layer is the layer in which this widget is being drawn in
//     ///
//     /// @brief      This calls renderButton and gives it the valid drawing
//     ///             context to use. This function is called by a ScreenManager<T>
//     /////////////////////////////////////////////////////////////////////////////
//     @Override
//     public void DrawLayer(DrawContext context, int layer) {
//         Position2d pos = GetScreenCenter();
//         this.renderButton(context, pos.x - (maxLength / 2), pos.y - (maxHeight / 2), 0);
//     }
// }
