OSDN Git Service

GUIのSlot追加
[chemicraft/chemicraft.git] / common / chemicraft / GuiChemicalCraftingTable.java
1 package chemicraft;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.HashMap;\r
5 \r
6 import net.minecraft.src.Block;\r
7 import net.minecraft.src.EntityPlayer;\r
8 import net.minecraft.src.GuiContainer;\r
9 import net.minecraft.src.InventoryBasic;\r
10 import net.minecraft.src.InventoryPlayer;\r
11 import net.minecraft.src.Item;\r
12 import net.minecraft.src.ItemStack;\r
13 import cpw.mods.fml.common.Side;\r
14 import cpw.mods.fml.common.asm.SideOnly;\r
15 import cpw.mods.fml.common.network.PacketDispatcher;\r
16 import cpw.mods.fml.common.network.Player;\r
17 \r
18 @SideOnly(Side.CLIENT)\r
19 public class GuiChemicalCraftingTable extends GuiContainer {\r
20 \r
21         /**\r
22          * TabListのArrayList\r
23          */\r
24         private ArrayList<ChemiCraftTab> tabList = new ArrayList<ChemiCraftTab>();\r
25 \r
26 \r
27         /**\r
28          * Gui画像のHashMap\r
29          * キーの名前は拡張子を除くファイル名にする\r
30          */\r
31         private HashMap<String, Integer> guiImageMap = new HashMap<String, Integer>();\r
32 \r
33 \r
34         /**\r
35          * 画像のHashMap\r
36          * キーの名前は拡張子を除くファイル名にする\r
37          */\r
38         private HashMap<String, Integer> otherImageMap = new HashMap<String, Integer>();\r
39 \r
40 \r
41         /**\r
42          * the TileEntity.\r
43          */\r
44         private TileEntityChemicalCraftingTable tileEntity;\r
45 \r
46 \r
47         /**\r
48          * the InventoryPlayer.\r
49          */\r
50         private InventoryPlayer inventoryPlayer;\r
51 \r
52 \r
53         /**\r
54          * the Container\r
55          */\r
56         private ContainerChemicalCraftingTable container;\r
57 \r
58 \r
59 \r
60         public GuiChemicalCraftingTable(EntityPlayer par1EntityPlayer, TileEntityChemicalCraftingTable par2){\r
61                 super(new ContainerChemicalCraftingTable(par1EntityPlayer, par2));\r
62                 //TileEntityを設定\r
63                 this.inventoryPlayer = par1EntityPlayer.inventory;\r
64                 this.tileEntity = par2;\r
65                 this.container = (ContainerChemicalCraftingTable) this.inventorySlots;\r
66                 //TabListにTabを追加する\r
67                 this.addTabs(0, "Decomposition", new ItemStack(Block.tnt.blockID, 1, 1));\r
68                 this.addTabs(1, "ChemicalCombination", new ItemStack(ChemiCraft.instance.itemAtoms, 1, 0));\r
69                 this.addTabs(2, "ToolAndWeaponCrafting", new ItemStack(Item.pickaxeSteel, 1, 0));\r
70                 this.addTabs(3, "MaterialCrafting", new ItemStack(Item.fireballCharge, 1, 0));\r
71                 //ActiveTabの初期化\r
72                 for(int i = 0;i < tabList.size();i++){\r
73                         String field_00001 = this.tabList.get(i).getTabName();\r
74                         String field_00002 = this.tileEntity.getActiveTab();\r
75                         if(field_00001.equals(field_00002)){\r
76                                 this.tileEntity.setActiveTab(this.tabList.get(i).getTabName());\r
77                         }\r
78                 }\r
79         }\r
80 \r
81 \r
82 \r
83         @Override\r
84         protected void mouseClicked(int par1, int par2, int par3){\r
85                 super.mouseClicked(par1, par2, par3);\r
86 \r
87                 int var1 = par1 - this.guiLeft;\r
88                 int var2 = par2 - this.guiTop;\r
89                 if(var1 < this.tabList.size() * 28 && var1 >= 0 && var2 < 0){\r
90                         String var3 = this.tabList.get(var1 / 28).getTabName();\r
91                         if(!var3.equals(this.tileEntity.getActiveTab())){\r
92                                 this.tileEntity.setActiveTab(var3);\r
93                                 this.inventoryPlayer.player.openGui(ChemiCraft.instance, ChemiCraft.instance.guiChemicalCraftingTableID, this.tileEntity.worldObj, this.tileEntity.xCoord, this.tileEntity.yCoord, this.tileEntity.zCoord);\r
94                                 this.onGuiClosed();\r
95                         }\r
96                 }\r
97         }\r
98 \r
99 \r
100 \r
101         @Override\r
102         protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3){\r
103                 //ActiveTab Reset.\r
104                 this.func_00003();\r
105                 //Texture Load.\r
106                 this.func_00002();\r
107                 //Draw Tabs.\r
108                 this.func_00001(par1, par2, par3);\r
109                 //Draw GUI\r
110                 if(this.tileEntity.getActiveTab().equals("Decomposition")){\r
111                         this.mc.renderEngine.bindTexture(this.guiImageMap.get("Decomposition"));\r
112                         this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize);\r
113                 }\r
114         }\r
115 \r
116 \r
117 \r
118         private void func_00001(float par1, int par2, int par3){\r
119                 int var1 = this.guiLeft;\r
120                 int var2 = this.guiTop - 32;\r
121                 for(int i = 0;i < this.tabList.size();i++){\r
122                         if(!this.tabList.get(i).isActive()){\r
123                                 this.mc.renderEngine.bindTexture(this.otherImageMap.get("tabs"));\r
124                                 this.drawTexturedModalRect(var1 + (28 * i), var2, 0, 0, 28, 32);\r
125                                 this.itemRenderer.renderItemIntoGUI(this.fontRenderer, this.mc.renderEngine, this.tabList.get(i).getRenderItemStack(), var1 + (28 * i) + 6, var2 + 9);\r
126                                 this.itemRenderer.renderItemOverlayIntoGUI(this.fontRenderer, this.mc.renderEngine, this.tabList.get(i).getRenderItemStack(), var1 + (28 * i) + 6, var2 + 9);\r
127                         }else{\r
128                                 this.mc.renderEngine.bindTexture(this.otherImageMap.get("tabs"));\r
129                                 this.drawTexturedModalRect(var1 + (28 * i), var2, 0, 32, 28, 32);\r
130                                 this.itemRenderer.renderItemIntoGUI(this.fontRenderer, this.mc.renderEngine, this.tabList.get(i).getRenderItemStack(), var1 + (28 * i) + 6, var2 + 9);\r
131                                 this.itemRenderer.renderItemOverlayIntoGUI(this.fontRenderer, this.mc.renderEngine, this.tabList.get(i).getRenderItemStack(), var1 + (28 * i) + 6, var2 + 9);\r
132                         }\r
133                 }\r
134         }\r
135 \r
136 \r
137 \r
138         private void func_00002(){\r
139                 //guiImageMapに画像を格納する\r
140                 guiImageMap.put("Decomposition", this.mc.renderEngine.getTexture("/resources/chemicraft/guis/Decomposition.png"));\r
141                 //otherImageMapに画像を格納する\r
142                 otherImageMap.put("tabs", this.mc.renderEngine.getTexture("/resources/chemicraft/guis/tabs.png"));\r
143         }\r
144 \r
145 \r
146 \r
147         private void func_00003(){\r
148                 for(int i = 0;i < this.tabList.size();i++){\r
149                         if(!this.tabList.get(i).getTabName().equals(this.tileEntity.getActiveTab())){\r
150                                 this.tabList.get(i).setActive(false);\r
151                         }else{\r
152                                 this.tabList.get(i).setActive(true);\r
153                         }\r
154                 }\r
155         }\r
156 \r
157 \r
158 \r
159         /**\r
160          * ChemiCraftTabを追加します。\r
161          * @param id TabのID\r
162          * @param texture OverlayするTextureID\r
163          * @param name Tabの名前\r
164          * @throws Exception IDが重複している場合にスローされます\r
165          */\r
166         private void addTabs(int id, String name, ItemStack renderItemStack){\r
167                 for(int i = 0;i < this.tabList.size();i++){\r
168                         if(id == this.tabList.get(i).getID()){\r
169                                 try {\r
170                                         throw new Exception("ChemiCraft内でエラー:ChemiCraftTabのIDが重複しています");\r
171                                 } catch (Exception e) {\r
172                                         e.printStackTrace();\r
173                                 }\r
174                         }\r
175                 }\r
176                 this.tabList.add(new ChemiCraftTab(id, name, renderItemStack));\r
177         }\r
178 \r
179 }\r