1 //Copyright Paul Reiche, Fred Ford. 1992-2002
2 
3 /*
4  *  This program is free software; you can redistribute it and/or modify
5  *  it under the terms of the GNU General Public License as published by
6  *  the Free Software Foundation; either version 2 of the License, or
7  *  (at your option) any later version.
8  *
9  *  This program is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  *  GNU General Public License for more details.
13  *
14  *  You should have received a copy of the GNU General Public License
15  *  along with this program; if not, write to the Free Software
16  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17  */
18 
19 #ifndef UQM_PLANETS_ELEMDATA_H_
20 #define UQM_PLANETS_ELEMDATA_H_
21 
22 #include "libs/compiler.h"
23 
24 #if defined(__cplusplus)
25 extern "C" {
26 #endif
27 
28 /*------------------------------ Type Defines ----------------------------- */
29 enum
30 {
31 	COMMON = 0,
32 	CORROSIVE,
33 	BASE_METAL,
34 	NOBLE,
35 	RARE_EARTH,
36 	PRECIOUS,
37 	RADIOACTIVE,
38 	EXOTIC,
39 
40 	NUM_ELEMENT_CATEGORIES
41 };
42 
43 #define ElementCategory(et) (Elements[et] & 0x7)
44 
45 /*------------------------------ Global Data ------------------------------ */
46 
47 enum
48 {
49 	HYDROGEN,
50 	HELIUM,
51 	LITHIUM,
52 	BERYLLIUM,
53 	BORON,
54 	CARBON,
55 	NITROGEN,
56 	OXYGEN,
57 	FLUORINE,
58 	NEON,
59 	SODIUM,
60 	MAGNESIUM,
61 	ALUMINUM,
62 	SILICON,
63 	PHOSPHORUS,
64 	SULFUR,
65 	CHLORINE,
66 	ARGON,
67 	POTASSIUM,
68 	CALCIUM,
69 	SCANDIUM,
70 	TITANIUM,
71 	VANADIUM,
72 	CHROMIUM,
73 	MANGANESE,
74 	IRON,
75 	COBALT,
76 	NICKEL,
77 	COPPER,
78 	ZINC,
79 	GALLIUM,
80 	GERMANIUM,
81 	ARSENIC,
82 	SELENIUM,
83 	BROMINE,
84 	KRYPTON,
85 	RUBIDIUM,
86 	STRONTIUM,
87 	YTTRIUM,
88 	ZIRCONIUM,
89 	NIOBIUM,
90 	MOLYBDENUM,
91 	TECHNETIUM,
92 	RUTHENIUM,
93 	RHODIUM,
94 	PALLADIUM,
95 	SILVER,
96 	CADMIUM,
97 	INDIUM,
98 	TIN,
99 	ANTIMONY,
100 	TELLURIUM,
101 	IODINE,
102 	XENON,
103 	CESIUM,
104 	BARIUM,
105 	LANTHANUM,
106 	CERIUM,
107 	PRASEODYMIUM,
108 	NEODYMIUM,
109 	PROMETHIUM,
110 	SAMARIUM,
111 	EUROPIUM,
112 	GADOLINIUM,
113 	TERBIUM,
114 	DYPROSIUM,
115 	HOLMIUM,
116 	ERBIUM,
117 	THULIUM,
118 	YTTERBIUM,
119 	LUTETIUM,
120 	HAFNIUM,
121 	TANTALUM,
122 	TUNGSTEN,
123 	RHENIUM,
124 	OSMIUM,
125 	IRIDIUM,
126 	PLATINUM,
127 	GOLD,
128 	MERCURY,
129 	THALLIUM,
130 	LEAD,
131 	BISMUTH,
132 	POLONIUM,
133 	ASTATINE,
134 	RADON,
135 	FRANCIUM,
136 	RADIUM,
137 	ACTINIUM,
138 	THORIUM,
139 	PROTACTINIUM,
140 	URANIUM,
141 	NEPTUNIUM,
142 	PLUTONIUM,
143 	NUMBER_OF_NORMAL,
144 
145 	OZONE = NUMBER_OF_NORMAL,
146 	FREE_RADICALS,
147 	CARBON_DIOXIDE,
148 	CARBON_MONOXIDE,
149 	AMMONIA,
150 	METHANE,
151 	SULFURIC_ACID,
152 	HYDROCHLORIC_ACID,
153 	HYDROCYANIC_ACID,
154 	FORMIC_ACID,
155 	PHOSPHORIC_ACID,
156 	FORMALDEHYDE,
157 	CYANOACETYLENE,
158 	METHANOL,
159 	ETHANOL,
160 	SILICON_MONOXIDE,
161 	TITANIUM_OXIDE,
162 	ZIRCONIUM_OXIDE,
163 	WATER,
164 	SILICON_COMPOUNDS,
165 	METAL_OXIDES,
166 	QUANTUM_BH,
167 	NEUTRONIUM,
168 	MAGNETIC_MONOPOLES,
169 	DEGENERATE_MATTER,
170 	RT_SUPER_FLUID,
171 	AGUUTI_NODULES,
172 	IRON_COMPOUNDS,
173 	ALUMINUM_COMPOUNDS,
174 	NITROUS_OXIDE,
175 	RADIOACTIVE_COMPOUNDS,
176 	HYDROCARBONS,
177 	CARBON_COMPOUNDS,
178 	ANTIMATTER,
179 	CHARON_DUST,
180 	REISBURG_HELICES,
181 	TZO_CRYSTALS,
182 	CALCIUM_COMPOUNDS,
183 	NITRIC_ACID,
184 
185 	NUMBER_OF_ELEMENTS
186 };
187 #define NUMBER_OF_SPECIAL (NUMBER_OF_ELEMENTS - NUMBER_OF_NORMAL)
188 
189 #define CHANCE_MASK ((1 << 2) - 1)
190 
191 #define FEW 1
192 #define MODERATE 4
193 #define NUMEROUS 8
194 
195 enum
196 {
197 	LIGHT = 0,
198 	MEDIUM,
199 	HEAVY
200 };
201 #define NOTHING (BYTE)(~0)
202 
203 #define MINERAL_DEPOSIT(qn,ql) MAKE_BYTE (qn, ql)
204 #define DEPOSIT_QUANTITY(md) LONIBBLE (md)
205 #define DEPOSIT_QUALITY(md) HINIBBLE (md)
206 
207 #define MAX_ELEMENT_UNITS 0xF
208 
209 extern const BYTE *Elements;
210 
211 #if defined(__cplusplus)
212 }
213 #endif
214 
215 #endif /* UQM_PLANETS_ELEMDATA_H_ */
216