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.WorldGenAtomsOre;
8 import pcc.chemicraft.util.Formula;
9 import pcc.chemicraft.util.ListHash;
10
11 /**
12  * ChemiCraftBaseのAPIを提供するクラスです。<br>
13  * ChemiCraftBaseを使用したAPIを作成する場合、このクラスを使用します。
14  * @author mozipi,ponkotate
15  */
16 public class ChemiCraftBaseAPI {
17
18         /**
19          * APIのインスタンス
20          */
21         private static ChemiCraftBaseAPI instance = new ChemiCraftBaseAPI();
22
23
24         /**
25          * APIのインスタンスを返します。
26          * @return APIのインスタンス
27          */
28         public static ChemiCraftBaseAPI instance(){
29                 return instance;
30         }
31
32         /**
33          * 鉱石別元素数リスト
34          */
35         private HashMap<String, Formula> atomOresFormulasHash = new HashMap<String, Formula>();
36
37
38         /**
39          * 鉱石リスト
40          */
41         private ArrayList<WorldGenAtomsOre> atomOresList = new ArrayList<WorldGenAtomsOre>();
42
43
44         /**
45          * 鉱石名リスト
46          */
47         private ListHash<String, String> atomOresNameListHash = new ListHash<String, String>();
48
49
50         /**
51          * 鉱石の英語名リスト
52          */
53         private ArrayList<String> atomOresEnglishList = new ArrayList<String>();
54
55         /**
56          * 鉱石を追加します。
57          * @param par1Name 鉱石名(Oreは自動で語尾につけられます)
58          * @param par2Formula 化学式
59          * @param par3Id 鉱石のID
60          * @param par4Size 鉱石の塊の大きさ
61          * @param par5Frequency 生成率(frequency/Chunk)
62          * @param par6PosY 鉱石が生成される高度(nowY < PosY == Generate)
63          */
64         public void addAtomOres(String par1Name, Formula par2Formula, int par3Id, int par4Size, int par5Frequency, int par6PosY){
65                 atomOresList.add(
66                                 new WorldGenAtomsOre(
67                                                 par3Id,
68                                                 getAtomOresMetaOfLastIndex(),
69                                                 par4Size,
70                                                 par5Frequency,
71                                                 par6PosY));
72
73                 String var7 = par1Name;
74                 if (!var7.contains(" Ore")) {
75                         var7 = var7.concat(" Ore");
76                 }
77                 atomOresFormulasHash.put(var7, par2Formula);
78                 this.atomOresEnglishList.add(var7);
79                 addAtomOresLanguage(var7, "en_US");
80         }
81
82
83
84         /**
85          * 鉱石を追加します。
86          * @param par1Name 鉱石名(Oreは自動で語尾につけられます)
87          * @param par2Formula 化学式
88          * @param par3Id 鉱石のID
89          * @param par4Enum 鉱石生成の情報が入ったEnum
90          */
91         public void addAtomOres(String par1Name, Formula par2Formula, int par3Id, EnumOreSpawnFrequency par4Enum){
92                 addAtomOres(
93                                 par1Name,
94                                 par2Formula,
95                                 par3Id,
96                                 par4Enum.getSize(),
97                                 par4Enum.getFrequency(),
98                                 par4Enum.getPosY()
99                                 );
100         }
101
102
103
104         /**
105          * 既に登録した鉱石の新しい名前・言語を追加します
106          * @param par1Name 英語名
107          * @param par2NewName 新しい名前
108          * @param par3Language 言語
109          */
110         public void addAtomOresLanguage(String par1Name, String par2Language){
111                 atomOresNameListHash.add(
112                                 par2Language,
113                                 par1Name
114                                 );
115         }
116
117
118
119         //以下システム関連//////////////////////////////////////////////////////
120
121         public ArrayList<WorldGenAtomsOre> getAtomOres(){
122                 return atomOresList;
123         }
124
125         public HashMap<String, Formula> getAtomOresFormulas(){
126                 return atomOresFormulasHash;
127         }
128
129
130
131         public int getAtomOresLastIndex(){
132                 return atomOresEnglishList.size() / 16;
133         }
134
135
136
137         public int getAtomOresMetaOfLastIndex(){
138                 return atomOresEnglishList.size() - getAtomOresLastIndex() * 16;
139         }
140
141
142
143         public ListHash<String, String> getAtomOresName(){
144                 return atomOresNameListHash;
145         }
146
147
148
149         public String getAtomOreEnglishName(int index) {
150                 return this.atomOresEnglishList.get(index);
151         }
152
153 }