aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/detrav/gui/DetravGuiProPick.java
blob: 9c95fa13cdd584585f75d2ef44651a3a1caa4cfd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package com.detrav.gui;

import com.detrav.gui.textures.DetravMapTexture;
import cpw.mods.fml.client.GuiScrollingList;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;

/**
 * Created by wital_000 on 21.03.2016.
 */
public class DetravGuiProPick extends GuiScreen {
    public static final int GUI_ID = 20;
    private static DetravMapTexture map = null;
    ListOres ores = null;

    public DetravGuiProPick()
    {

    }

    public static void newMap(DetravMapTexture aMap) {
        if (map != null) {
            map.deleteGlTexture();
            map = null;
        }
        map = aMap;
        map.loadTexture(null);
        //ores = new ListOres(Minecraft.getMinecraft(),)
    }

    int prevW;
    int prevH;


    private static int minHeight = 128;
    private static int minWidth = 128;

    private static final ResourceLocation back = new ResourceLocation("gregtech:textures/gui/propick.png");

    @Override
    public void  drawScreen(int x, int y, float f) {
        this.drawDefaultBackground();
        if(map!=null)
        {
            int currentWidth = Math.max(map.width,minWidth);
            int currentHeight = Math.max(map.height,minHeight);
            int aX = (this.width - currentWidth-100)/2;
            int aY = (this.height - currentHeight)/2;

            if(ores == null)
            {
                ores = new ListOres(this,100,currentHeight,aY,aY+currentHeight,aX+currentWidth,10,map.ores);
                prevW = width;
                prevH = height;
            }
            if(prevW!=width || prevH !=height)
            {
                ores = new ListOres(this,100,currentHeight,aY,aY+currentHeight,aX+currentWidth,10,map.ores);
                prevW = width;
                prevH = height;
            }


            //dradback for ores
            drawRect(aX,aY,aX+currentWidth+100,aY+currentHeight,0xFFC6C6C6);
            map.glBindTexture();
            map.draw(aX,aY);
            ores.drawScreen(x,y,f);
            mc.getTextureManager().bindTexture(back);
            GL11.glColor4f(0xFF, 0xFF, 0xFF, 0xFF);
            //drawcorners
            drawTexturedModalRect(aX-5,aY-5,0,0,5,5);//leftTop
            drawTexturedModalRect(aX+currentWidth+100,aY-5,171,0,5,5);//RightTop
            drawTexturedModalRect(aX-5,aY+currentHeight,0,161,5,5);//leftDown
            drawTexturedModalRect(aX+currentWidth+100,aY+currentHeight,171,161,5,5);//RightDown
            //draw edges
            for(int i = aX;i<aX+currentWidth+100;i+=128) drawTexturedModalRect(i,aY-5,5,0,Math.min(128,aX+currentWidth+100-i),5); //top
            for(int i = aX;i<aX+currentWidth+100;i+=128) drawTexturedModalRect(i,aY+currentHeight,5,161,Math.min(128,aX+currentWidth+100-i),5); //down
            for(int i = aY;i<aY+currentHeight;i+=128) drawTexturedModalRect(aX-5,i,0,5,5,Math.min(128,aY + currentHeight-i)); //left
            for(int i = aY;i<aY+currentHeight;i+=128) drawTexturedModalRect(aX+currentWidth+100,i,171,5,5,Math.min(128,aY+currentHeight-i)); //right
        }
    }

    class ListOres extends GuiScrollingList
    {
        HashMap<String,Integer> ores = null;
        List<String> keys = null;

        public ListOres(GuiScreen parent, int width, int height, int top, int bottom, int left, int entryHeight,HashMap<String,Integer> aOres) {
            super(parent.mc, width, height, top, bottom, left, entryHeight);
            ores = aOres;
            keys = new ArrayList(map.ores.keySet());
            Collections.sort(keys);
        }

        @Override
        protected int getSize() {
            return ores.size();
        }

        @Override
        protected void elementClicked(int index, boolean doubleClick) {

        }

        @Override
        protected boolean isSelected(int index) {
            return false;
        }

        @Override
        protected void drawBackground() {
            //drawRect(this.left,this.top,this.listWidth,this.listHeight,0xFFFFFFFF);
        }

        @Override
        protected void drawSlot(int slotIdx, int entryRight, int slotTop, int slotBuffer, Tessellator tess) {
            //drawString(fontRendererObj,);
            //fontRendererObj.drawString(fontRendererObj.trimStringToWidth())

            fontRendererObj.drawString(fontRendererObj.trimStringToWidth(keys.get(slotIdx), listWidth - 10), this.left + 3 , slotTop + 2, ores.get(keys.get(slotIdx)));

        }
    }
}