OSDN Git Service

bf8412efc618cc3fea0031feb497805311bcb447
[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.WorldGenAtomsOre;
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 ListHash<String, String> atomOresLangListHash = new ListHash<String, String>();
43
44
45         /**
46          * 鉱石リスト
47          */
48         private ArrayList<WorldGenAtomsOre> atomOresList = new ArrayList<WorldGenAtomsOre>();
49
50
51         /**
52          * 鉱石名リスト
53          */
54         private ListHash<String, String> atomOresNameListHash = new ListHash<String, String>();
55
56
57
58         /**
59          * 鉱石を追加します。
60          * @param par1Name 鉱石名(Oreは自動で語尾につけられます)
61          * @param par2Formula 化学式
62          * @param par3Id 鉱石のID
63          * @param par4Size 鉱石の塊の大きさ
64          * @param par5Frequency 生成率(frequency/Chunk)
65          * @param par6PosY 鉱石が生成される高度(nowY < PosY == Generate)
66          */
67         public void addAtomOres(String par1Name, Formula par2Formula, int par3Id, int par4Size, int par5Frequency, int par6PosY){
68                 atomOresList.add(
69                                 new WorldGenAtomsOre(
70                                                 par3Id,
71                                                 getAtomOresMetaOfLastIndex(),
72                                                 par4Size,
73                                                 par5Frequency,
74                                                 par6PosY));
75
76                 atomOresFormulasHash.put(par1Name, par2Formula);
77
78                 String var7 = par1Name;
79                 if (!var7.contains(" Ore")) {
80                         var7 = var7.concat(" Ore");
81                 }
82
83                 addAtomOresLanguage(par1Name, var7, "en_US");
84         }
85
86
87
88         /**
89          * 鉱石を追加します。
90          * @param par1Name 鉱石名(Oreは自動で語尾につけられます)
91          * @param par2Formula 化学式
92          * @param par3Id 鉱石のID
93          * @param par4Enum 鉱石生成の情報が入ったEnum
94          */
95         public void addAtomOres(String par1Name, Formula par2Formula, int par3Id, EnumOreSpawnFrequency par4Enum){
96                 addAtomOres(
97                                 par1Name,
98                                 par2Formula,
99                                 par3Id,
100                                 par4Enum.getSize(),
101                                 par4Enum.getFrequency(),
102                                 par4Enum.getPosY()
103                                 );
104         }
105
106
107
108         /**
109          * 既に登録した鉱石の新しい名前・言語を追加します
110          * @param par1Name 英語名
111          * @param par2NewName 新しい名前
112          * @param par3Language 言語
113          */
114         public void addAtomOresLanguage(String par1Name, String par2NewName, String par3Language){
115                 atomOresNameListHash.add(par1Name,
116                                 par2NewName);
117                 atomOresLangListHash.add(par1Name,
118                                 par3Language);
119         }
120
121
122
123         //以下システム関連//////////////////////////////////////////////////////
124
125         public ArrayList<WorldGenAtomsOre> getAtomOres(){
126                 return atomOresList;
127         }
128
129         public HashMap<String, Formula> getAtomOresFormulas(){
130                 return atomOresFormulasHash;
131         }
132
133
134
135         public ListHash<String, String> getAtomOresLanguage(){
136                 return atomOresLangListHash;
137         }
138
139
140
141         public int getAtomOresLastIndex(){
142                 return atomOresNameListHash.sizeKeysList() / 16;
143         }
144
145
146
147         public int getAtomOresMetaOfLastIndex(){
148                 return atomOresNameListHash.sizeKeysList() - getAtomOresLastIndex() * 16;
149         }
150
151
152
153         public ListHash<String, String> getAtomOresName(){
154                 return atomOresNameListHash;
155         }
156
157 }