OSDN Git Service

修正・変更
[chemicraft/ChemiCraftNext.git] / common / pcc / chemicraft / base / ChemiCraftBaseAPI.java
1 package pcc.chemicraft.base;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5
6 import pcc.chemicraft.base.gen.EnumOreSpawnFrequency;
7 import pcc.chemicraft.base.gen.WorldGenAtomOres;
8 import pcc.chemicraft.util.AtomInfo;
9 import pcc.chemicraft.util.Formula;
10 import pcc.chemicraft.util.ListHash;
11
12 /**
13  * ChemiCraftBaseのAPIを提供するクラスです。<br>
14  * ChemiCraftBaseを使用したAPIを作成する場合、このクラスを使用します。
15  * @author mozipi,ponkotate
16  */
17 public class ChemiCraftBaseAPI {
18
19         /**
20          * APIのインスタンス
21          */
22         private static ChemiCraftBaseAPI instance = new ChemiCraftBaseAPI();
23
24
25         /**
26          * APIのインスタンスを返します。
27          * @return APIのインスタンス
28          */
29         public static ChemiCraftBaseAPI instance(){
30                 return instance;
31         }
32
33         /**
34          * 鉱石別元素数リスト
35          */
36         private HashMap<String, Formula> atomOresFormulasHash = new HashMap<String, Formula>();
37
38
39         /**
40          * 鉱石リスト
41          */
42         private ArrayList<WorldGenAtomOres> atomOresList = new ArrayList<WorldGenAtomOres>();
43
44
45         /**
46          * 鉱石名リスト
47          */
48         private ListHash<String, String> atomOresNameListHash = new ListHash<String, String>();
49
50
51         /**
52          * インゴット名リスト
53          */
54         private ListHash<String, String> atomIngotsNameListHash = new ListHash<String, String>();
55
56
57         /**
58          * 鉱石の英語名リスト
59          */
60         private ArrayList<String> atomOresAtomList = new ArrayList<String>();
61
62         /**
63          * 鉱石を追加します。
64          * @param par1Name 鉱石名(Oreは自動で語尾につけられます)
65          * @param par2Formula 化学式
66          * @param par3Id 鉱石のID
67          * @param par4Size 鉱石の塊の大きさ
68          * @param par5Frequency 生成率(frequency/Chunk)
69          * @param par6PosY 鉱石が生成される高度(nowY < PosY == Generate)
70          */
71         public void addAtomOres(String par1Name, Formula par2Formula, int par3Id, int par4Size, int par5Frequency, int par6PosY){
72                 atomOresFormulasHash.put(par1Name, par2Formula);
73
74                 if (!AtomInfo.isExisting(par1Name)) {
75                         atomOresList.add(
76                                         new WorldGenAtomOres(
77                                                         par3Id,
78                                                         getAtomOresMetaOfLastIndex(),
79                                                         par4Size,
80                                                         par5Frequency,
81                                                         par6PosY));
82
83                         atomOresAtomList.add(par1Name);
84
85                         String var7 = par1Name;
86                         if (!par1Name.contains(" Ore")) {
87                                 var7 = par1Name + " Ore";
88                         }
89
90                         addAtomOresLanguage(par1Name, var7, "en_US");
91
92                         if (!par1Name.contains(" Ingot")) {
93                                 var7 = par1Name + " Ingot";
94                         }
95
96                         addAtomIngotsLanguage(par1Name, var7, "en_US");
97                 }
98         }
99
100
101
102         /**
103          * 鉱石を追加します。
104          * @param par1Name 鉱石名(Oreは自動で語尾につけられます)
105          * @param par2Formula 化学式
106          * @param par3Id 鉱石のID
107          * @param par4Enum 鉱石生成の情報が入ったEnum
108          */
109         public void addAtomOres(String par1Name, Formula par2Formula, int par3Id, EnumOreSpawnFrequency par4Enum){
110                 addAtomOres(
111                                 par1Name,
112                                 par2Formula,
113                                 par3Id,
114                                 par4Enum.getSize(),
115                                 par4Enum.getFrequency(),
116                                 par4Enum.getPosY()
117                                 );
118         }
119
120
121
122         /**
123          * 既に登録した鉱石の新しい名前・言語を追加します
124          * @param par1KeyName 鉱石追加の際に用いたpar1Nameに当たる文字列
125          * @param par2NewName 新しい名前
126          * @param par3NewLanguage 新しい言語
127          */
128         public void addAtomOresLanguage(String par1KeyName, String par2NewName, String par3NewLanguage){
129                 if (this.atomOresAtomList.contains(par1KeyName)){
130                         atomOresNameListHash.add(
131                                         par3NewLanguage,
132                                         par2NewName
133                                         );
134                 }
135         }
136
137
138
139         /**
140          * 既に登録したインゴットの新しい名前・言語を追加します
141          * @param par1KeyName 鉱石追加の際に用いたpar1Nameに当たる文字列
142          * @param par2NewName 新しい名前
143          * @param par3NewLanguage 新しい言語
144          */
145         public void addAtomIngotsLanguage(String par1KeyName, String par2NewName, String par3NewLanguage){
146                 if (this.atomOresAtomList.contains(par1KeyName)){
147                         atomIngotsNameListHash.add(
148                                         par3NewLanguage,
149                                         par2NewName
150                                         );
151                 }
152         }
153
154
155
156         //以下システム関連//////////////////////////////////////////////////////
157
158         public ArrayList<WorldGenAtomOres> getAtomOres(){
159                 return atomOresList;
160         }
161
162         public HashMap<String, Formula> getAtomOresFormulas(){
163                 return atomOresFormulasHash;
164         }
165
166
167
168         public int getAtomOresLastIndex(){
169                 return atomOresAtomList.size() / 16;
170         }
171
172
173
174         public int getAtomOresMetaOfLastIndex(){
175                 return atomOresAtomList.size() - getAtomOresLastIndex() * 16;
176         }
177
178
179
180         public ListHash<String, String> getAtomOresName(){
181                 return atomOresNameListHash;
182         }
183
184
185
186         public ListHash<String, String> getAtomIngotsName(){
187                 return atomIngotsNameListHash;
188         }
189
190
191
192         public ArrayList<String> getAtomOresAtomName() {
193                 return this.atomOresAtomList;
194         }
195
196 }