OSDN Git Service

ファイルパス色々変更。
[chemicraft/chemicraft.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         private ArrayList<String> atomOresEnglishList = 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                 atomOresList.add(
73                                 new WorldGenAtomsOre(
74                                                 par3Id,
75                                                 getAtomOresMetaOfLastIndex(),
76                                                 par4Size,
77                                                 par5Frequency,
78                                                 par6PosY));
79
80                 atomOresFormulasHash.put(par1Name, par2Formula);
81
82                 String var7 = par1Name;
83                 if (!var7.contains(" Ore")) {
84                         var7 = var7.concat(" Ore");
85                 }
86
87                 this.atomOresEnglishList.add(par1Name + " Ore");
88                 addAtomOresLanguage(par1Name, var7, "en_US");
89         }
90
91
92
93         /**
94          * 鉱石を追加します。
95          * @param par1Name 鉱石名(Oreは自動で語尾につけられます)
96          * @param par2Formula 化学式
97          * @param par3Id 鉱石のID
98          * @param par4Enum 鉱石生成の情報が入ったEnum
99          */
100         public void addAtomOres(String par1Name, Formula par2Formula, int par3Id, EnumOreSpawnFrequency par4Enum){
101                 addAtomOres(
102                                 par1Name,
103                                 par2Formula,
104                                 par3Id,
105                                 par4Enum.getSize(),
106                                 par4Enum.getFrequency(),
107                                 par4Enum.getPosY()
108                                 );
109         }
110
111
112
113         /**
114          * 既に登録した鉱石の新しい名前・言語を追加します
115          * @param par1Name 英語名
116          * @param par2NewName 新しい名前
117          * @param par3Language 言語
118          */
119         public void addAtomOresLanguage(String par1Name, String par2NewName, String par3Language){
120                 atomOresNameListHash.add(par1Name,
121                                 par2NewName);
122                 atomOresLangListHash.add(par1Name,
123                                 par3Language);
124         }
125
126
127
128         //以下システム関連//////////////////////////////////////////////////////
129
130         public ArrayList<WorldGenAtomsOre> getAtomOres(){
131                 return atomOresList;
132         }
133
134         public HashMap<String, Formula> getAtomOresFormulas(){
135                 return atomOresFormulasHash;
136         }
137
138
139
140         public ListHash<String, String> getAtomOresLanguage(){
141                 return atomOresLangListHash;
142         }
143
144
145
146         public int getAtomOresLastIndex(){
147                 return atomOresNameListHash.sizeKeysList() / 16;
148         }
149
150
151
152         public int getAtomOresMetaOfLastIndex(){
153                 return atomOresNameListHash.sizeKeysList() - getAtomOresLastIndex() * 16;
154         }
155
156
157
158         public ListHash<String, String> getAtomOresName(){
159                 return atomOresNameListHash;
160         }
161
162
163
164         public String getAtomOreEnglishName(int index) {
165                 return this.atomOresEnglishList.get(index);
166         }
167
168 }