summaryrefslogtreecommitdiff
path: root/src/main/java/jp/plusplus/fbs/gui/spirit/GuiSpiritLearn.java
blob: abbb7093466300f5f64b816308f8e3c2efab9bb0 (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
133
134
135
136
137
138
139
package jp.plusplus.fbs.gui.spirit;

import jp.plusplus.fbs.FBS;
import jp.plusplus.fbs.container.spirit.ContainerSpiritLearn;
import jp.plusplus.fbs.container.spirit.ContainerSpiritMain;
import jp.plusplus.fbs.gui.button.GuiButtonSpiritArrow;
import jp.plusplus.fbs.gui.button.GuiButtonSpiritCheckBox;
import jp.plusplus.fbs.gui.button.GuiButtonSpiritLearn;
import jp.plusplus.fbs.gui.button.GuiButtonSpiritMain;
import jp.plusplus.fbs.packet.MessageGuiButton;
import jp.plusplus.fbs.packet.MessageGuiButtonWithString;
import jp.plusplus.fbs.packet.PacketHandler;
import jp.plusplus.fbs.spirit.ISpiritTool;
import jp.plusplus.fbs.spirit.SkillManager;
import jp.plusplus.fbs.spirit.SpiritStatus;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import org.lwjgl.opengl.GL11;

import java.util.ArrayList;

/**
 * Created by plusplus_F on 2015/11/14.
 */
public class GuiSpiritLearn extends GuiContainer{
    public static final ResourceLocation rl = new ResourceLocation(FBS.MODID+":textures/gui/spiritConfig.png");
    public static final int PAGE_ITEM_MAX=5;

    public ItemStack tool;
    public SpiritStatus status;
    public ISpiritTool spiritTool;

    private GuiButtonSpiritMain ok;
    private GuiButtonSpiritArrow prev;
    private GuiButtonSpiritArrow next;
    private GuiButtonSpiritLearn[] buttons;

    private ArrayList<SkillManager.SkillEntry> skillEntries;
    private int page;

    public GuiSpiritLearn(EntityPlayer player) {
        super(new ContainerSpiritLearn(player));
        tool=player.getCurrentEquippedItem();
        status=SpiritStatus.readFromNBT(tool.getTagCompound());
        spiritTool=(ISpiritTool)tool.getItem();

        skillEntries=SkillManager.getSkillEntiries();
    }

    @Override
    public void initGui() {
        super.initGui();
        int i = (this.width - this.xSize) / 2;
        int j = (this.height - this.ySize) / 2;
        this.allowUserInput = true;

        prev=new GuiButtonSpiritArrow(0, i+144, j+6);
        buttonList.add(prev);
        next=new GuiButtonSpiritArrow(1, i+154, j+6);
        buttonList.add(next);

        ok =new GuiButtonSpiritMain(2, i+116, j+122, "ok");
        buttonList.add(ok);

        buttons =new GuiButtonSpiritLearn[PAGE_ITEM_MAX];
        for(int k=0;k<buttons.length;k++){
            buttons[k]=new GuiButtonSpiritLearn(3+k, i+130, j+25+19*k, "learn2");
            buttonList.add(buttons[k]);
        }
        page=0;
        changePage(0);
    }

    @Override
    public void updateScreen() {
        super.updateScreen();
    }

    @Override
    protected void actionPerformed(GuiButton p_146284_1_) {
        if(p_146284_1_==ok){
            PacketHandler.INSTANCE.sendToServer(new MessageGuiButton(p_146284_1_.id));
        }
        else if(p_146284_1_==prev){
            changePage(-1);
        }
        else if(p_146284_1_==next){
            changePage(1);
        }
        else if(p_146284_1_ instanceof GuiButtonSpiritLearn) {
            GuiButtonSpiritLearn b = ((GuiButtonSpiritLearn) p_146284_1_);
            PacketHandler.INSTANCE.sendToServer(new MessageGuiButtonWithString(p_146284_1_.id, b.skillName));
            ((ContainerSpiritLearn)this.inventorySlots).learn(b.skillName);
            status=SpiritStatus.readFromNBT(tool.getTagCompound());
            changePage(0);
        }
    }

    @Override
    protected void drawGuiContainerBackgroundLayer(float v, int i, int i1) {
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

        this.mc.getTextureManager().bindTexture(rl);

        int k = (this.width - this.xSize) / 2;
        int l = (this.height - this.ySize) / 2;
        this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize);
    }

    @Override
    protected void drawGuiContainerForegroundLayer(int par1, int par2){
        String s= StatCollector.translateToLocal("spirit.gui.fbs.sp")+":"+status.getSkillPoint();
        this.fontRendererObj.drawString(s, this.xSize / 2 - this.fontRendererObj.getStringWidth(s) / 2, 6, 0x404040);
    }

    protected void changePage(int add){
        page+=add;
        for(int i=0;i<PAGE_ITEM_MAX;i++){
            buttons[i].enabled=false;
            buttons[i].visible=false;
        }

        int size=skillEntries.size();
        for(int i=0;i<PAGE_ITEM_MAX && page*PAGE_ITEM_MAX+i<size;i++){
            SkillManager.SkillEntry e=skillEntries.get(i+page * PAGE_ITEM_MAX);
            int lv=status.getSkillLevel(e.getSkillId());
            buttons[i].setSkill(e, lv+1);
            buttons[i].visible=true;
            buttons[i].enabled=e.canLearn(status);
        }
        prev.enabled=(page>0);
        next.enabled=((page+1)*PAGE_ITEM_MAX<size);
    }
}