tangled
alpha
login
or
join now
altagos.dev
/
space
0
fork
atom
A SpaceTraders Agent
0
fork
atom
overview
issues
pulls
pipelines
fix CombinedEnum
altagos.dev
4 months ago
dc160bd7
0234dd57
verified
This commit was signed with the committer's
known signature
.
altagos.dev
SSH Key Fingerprint:
SHA256:UbTjEcCZlc6GzQWLCuDK3D//HESWD2xFPkzue9XMras=
1/1
build.yml
success
25s
+177
-174
3 changed files
expand all
collapse all
unified
split
src
meta
root.zig
st
models
inventory.zig
ships.zig
+9
-5
src/meta/root.zig
···
9
9
var num_fields = 0;
10
10
11
11
for (parent_info.decls) |partial| {
12
12
-
switch (@typeInfo(@FieldType(parent, partial.name))) {
13
13
-
.@"enum" => |_| num_fields += 1,
12
12
+
switch (@typeInfo(@field(parent, partial.name))) {
13
13
+
.@"enum" => |e| {
14
14
+
num_fields += e.fields.len;
15
15
+
},
14
16
else => {},
15
17
}
16
18
}
···
19
21
20
22
var i = 0;
21
23
for (parent_info.decls) |partial| {
22
22
-
switch (@typeInfo(@FieldType(parent, partial.name))) {
24
24
+
switch (@typeInfo(@field(parent, partial.name))) {
23
25
.@"enum" => |e| {
24
26
for (e.fields) |field| {
25
27
combined[i] = field;
···
30
32
}
31
33
}
32
34
33
33
-
return @Type(.{ .@"enum" = .{
35
35
+
return @Type(std.builtin.Type{ .@"enum" = .{
34
36
.decls = &.{},
35
35
-
.fields = &combined,
37
37
+
.fields = combined[0..i],
38
38
+
.tag_type = u8,
39
39
+
.is_exhaustive = false,
36
40
} });
37
41
}
38
42
+162
-163
src/st/models/inventory.zig
···
6
6
inventory: []Item,
7
7
};
8
8
9
9
-
pub const ItemSymbol = struct {
10
10
-
pub const All = CombinedEnum(ItemSymbol);
9
9
+
pub const Item = struct {
10
10
+
symbol: AllItems,
11
11
+
name: []const u8,
12
12
+
description: []const u8,
13
13
+
units: u64,
14
14
+
};
15
15
+
16
16
+
pub const AllItems = CombinedEnum(ItemSymbols);
11
17
12
12
-
pub const Other = enum {
18
18
+
pub const ItemSymbols = struct {
19
19
+
pub const Other = enum(u8) {
13
20
// PRECIOUS_STONES,
14
21
// QUARTZ_SAND,
15
22
// SILICON_CRYSTALS,
16
23
// AMMONIA_ICE,
17
17
-
LIQUID_HYDROGEN,
18
18
-
LIQUID_NITROGEN,
24
24
+
LIQUID_HYDROGEN = 5,
25
25
+
LIQUID_NITROGEN = 6,
19
26
// ICE_WATER,
20
20
-
EXOTIC_MATTER,
21
21
-
ADVANCED_CIRCUITRY,
22
22
-
GRAVITON_EMITTERS,
23
23
-
IRON,
27
27
+
EXOTIC_MATTER = 8,
28
28
+
ADVANCED_CIRCUITRY = 9,
29
29
+
GRAVITON_EMITTERS = 10,
30
30
+
IRON = 11,
24
31
// IRON_ORE,
25
25
-
COPPER,
32
32
+
COPPER = 13,
26
33
// COPPER_ORE,
27
27
-
ALUMINUM,
34
34
+
ALUMINUM = 15,
28
35
// ALUMINUM_ORE,
29
29
-
SILVER,
36
36
+
SILVER = 17,
30
37
// SILVER_ORE,
31
31
-
GOLD,
38
38
+
GOLD = 19,
32
39
// GOLD_ORE,
33
33
-
PLATINUM,
40
40
+
PLATINUM = 21,
34
41
// PLATINUM_ORE,
35
35
-
DIAMONDS,
36
36
-
URANITE,
42
42
+
DIAMONDS = 23,
43
43
+
URANITE = 24,
37
44
// URANITE_ORE,
38
38
-
MERITIUM,
45
45
+
MERITIUM = 26,
39
46
// MERITIUM_ORE,
40
40
-
HYDROCARBON,
41
41
-
ANTIMATTER,
42
42
-
FAB_MATS,
43
43
-
FERTILIZERS,
44
44
-
FABRICS,
45
45
-
FOOD,
46
46
-
JEWELRY,
47
47
-
MACHINERY,
48
48
-
FIREARMS,
49
49
-
ASSAULT_RIFLES,
50
50
-
MILITARY_EQUIPMENT,
51
51
-
EXPLOSIVES,
52
52
-
LAB_INSTRUMENTS,
53
53
-
AMMUNITION,
54
54
-
ELECTRONICS,
55
55
-
SHIP_PLATING,
56
56
-
SHIP_PARTS,
57
57
-
EQUIPMENT,
58
58
-
FUEL,
59
59
-
MEDICINE,
60
60
-
DRUGS,
61
61
-
CLOTHING,
62
62
-
MICROPROCESSORS,
63
63
-
PLASTICS,
64
64
-
POLYNUCLEOTIDES,
65
65
-
BIOCOMPOSITES,
66
66
-
QUANTUM_STABILIZERS,
67
67
-
NANOBOTS,
68
68
-
AI_MAINFRAMES,
69
69
-
QUANTUM_DRIVES,
70
70
-
ROBOTIC_DRONES,
71
71
-
CYBER_IMPLANTS,
72
72
-
GENE_THERAPEUTICS,
73
73
-
NEURAL_CHIPS,
74
74
-
MOOD_REGULATORS,
75
75
-
VIRAL_AGENTS,
76
76
-
MICRO_FUSION_GENERATORS,
77
77
-
SUPERGRAINS,
78
78
-
LASER_RIFLES,
79
79
-
HOLOGRAPHICS,
80
80
-
SHIP_SALVAGE,
81
81
-
RELIC_TECH,
82
82
-
NOVEL_LIFEFORMS,
83
83
-
BOTANICAL_SPECIMENS,
84
84
-
CULTURAL_ARTIFACTS,
47
47
+
HYDROCARBON = 28,
48
48
+
ANTIMATTER = 29,
49
49
+
FAB_MATS = 30,
50
50
+
FERTILIZERS = 31,
51
51
+
FABRICS = 32,
52
52
+
FOOD = 33,
53
53
+
JEWELRY = 34,
54
54
+
MACHINERY = 35,
55
55
+
FIREARMS = 36,
56
56
+
ASSAULT_RIFLES = 37,
57
57
+
MILITARY_EQUIPMENT = 38,
58
58
+
EXPLOSIVES = 39,
59
59
+
LAB_INSTRUMENTS = 40,
60
60
+
AMMUNITION = 41,
61
61
+
ELECTRONICS = 42,
62
62
+
SHIP_PLATING = 43,
63
63
+
SHIP_PARTS = 44,
64
64
+
EQUIPMENT = 45,
65
65
+
FUEL = 46,
66
66
+
MEDICINE = 47,
67
67
+
DRUGS = 48,
68
68
+
CLOTHING = 49,
69
69
+
MICROPROCESSORS = 50,
70
70
+
PLASTICS = 51,
71
71
+
POLYNUCLEOTIDES = 52,
72
72
+
BIOCOMPOSITES = 53,
73
73
+
QUANTUM_STABILIZERS = 54,
74
74
+
NANOBOTS = 55,
75
75
+
AI_MAINFRAMES = 57,
76
76
+
QUANTUM_DRIVES = 58,
77
77
+
ROBOTIC_DRONES = 59,
78
78
+
CYBER_IMPLANTS = 60,
79
79
+
GENE_THERAPEUTICS = 61,
80
80
+
NEURAL_CHIPS = 62,
81
81
+
MOOD_REGULATORS = 63,
82
82
+
VIRAL_AGENTS = 64,
83
83
+
MICRO_FUSION_GENERATORS = 65,
84
84
+
SUPERGRAINS = 66,
85
85
+
LASER_RIFLES = 67,
86
86
+
HOLOGRAPHICS = 68,
87
87
+
SHIP_SALVAGE = 69,
88
88
+
RELIC_TECH = 70,
89
89
+
NOVEL_LIFEFORMS = 71,
90
90
+
BOTANICAL_SPECIMENS = 72,
91
91
+
CULTURAL_ARTIFACTS = 73,
85
92
};
86
93
87
87
-
pub const Deposit = enum {
88
88
-
QUARTZ_SAND,
89
89
-
SILICON_CRYSTALS,
90
90
-
PRECIOUS_STONES,
91
91
-
ICE_WATER,
92
92
-
AMMONIA_ICE,
93
93
-
IRON_ORE,
94
94
-
COPPER_ORE,
95
95
-
SILVER_ORE,
96
96
-
ALUMINUM_ORE,
97
97
-
GOLD_ORE,
98
98
-
PLATINUM_ORE,
99
99
-
DIAMONDS,
100
100
-
URANITE_ORE,
101
101
-
MERITIUM_ORE,
94
94
+
pub const Deposit = enum(u8) {
95
95
+
PRECIOUS_STONES = 0,
96
96
+
QUARTZ_SAND = 1,
97
97
+
SILICON_CRYSTALS = 2,
98
98
+
AMMONIA_ICE = 3,
99
99
+
ICE_WATER = 7,
100
100
+
IRON_ORE = 12,
101
101
+
COPPER_ORE = 14,
102
102
+
ALUMINUM_ORE = 16,
103
103
+
SILVER_ORE = 18,
104
104
+
GOLD_ORE = 20,
105
105
+
PLATINUM_ORE = 22,
106
106
+
URANITE_ORE = 25,
107
107
+
MERITIUM_ORE = 27,
102
108
};
103
109
104
104
-
pub const Engine = enum {
105
105
-
ENGINE_IMPULSE_DRIVE_I,
106
106
-
ENGINE_ION_DRIVE_I,
107
107
-
ENGINE_ION_DRIVE_II,
108
108
-
ENGINE_HYPER_DRIVE_I,
110
110
+
pub const Engine = enum(u8) {
111
111
+
ENGINE_IMPULSE_DRIVE_I = 74,
112
112
+
ENGINE_ION_DRIVE_I = 75,
113
113
+
ENGINE_ION_DRIVE_II = 76,
114
114
+
ENGINE_HYPER_DRIVE_I = 77,
109
115
};
110
116
111
111
-
pub const Frame = enum {
112
112
-
FRAME_PROBE,
113
113
-
FRAME_DRONE,
114
114
-
FRAME_INTERCEPTOR,
115
115
-
FRAME_RACER,
116
116
-
FRAME_FIGHTER,
117
117
-
FRAME_FRIGATE,
118
118
-
FRAME_SHUTTLE,
119
119
-
FRAME_EXPLORER,
120
120
-
FRAME_MINER,
121
121
-
FRAME_LIGHT_FREIGHTER,
122
122
-
FRAME_HEAVY_FREIGHTER,
123
123
-
FRAME_TRANSPORT,
124
124
-
FRAME_DESTROYER,
125
125
-
FRAME_CRUISER,
126
126
-
FRAME_CARRIER,
127
127
-
FRAME_BULK_FREIGHTER,
117
117
+
pub const Frame = enum(u8) {
118
118
+
FRAME_PROBE = 78,
119
119
+
FRAME_DRONE = 79,
120
120
+
FRAME_INTERCEPTOR = 80,
121
121
+
FRAME_RACER = 81,
122
122
+
FRAME_FIGHTER = 82,
123
123
+
FRAME_FRIGATE = 83,
124
124
+
FRAME_SHUTTLE = 84,
125
125
+
FRAME_EXPLORER = 85,
126
126
+
FRAME_MINER = 86,
127
127
+
FRAME_LIGHT_FREIGHTER = 87,
128
128
+
FRAME_HEAVY_FREIGHTER = 88,
129
129
+
FRAME_TRANSPORT = 89,
130
130
+
FRAME_DESTROYER = 90,
131
131
+
FRAME_CRUISER = 91,
132
132
+
FRAME_CARRIER = 92,
133
133
+
FRAME_BULK_FREIGHTER = 93,
128
134
};
129
135
130
130
-
pub const Module = enum {
131
131
-
MODULE_MINERAL_PROCESSOR_I,
132
132
-
MODULE_GAS_PROCESSOR_I,
133
133
-
MODULE_CARGO_HOLD_I,
134
134
-
MODULE_CARGO_HOLD_II,
135
135
-
MODULE_CARGO_HOLD_III,
136
136
-
MODULE_CREW_QUARTERS_I,
137
137
-
MODULE_ENVOY_QUARTERS_I,
138
138
-
MODULE_PASSENGER_CABIN_I,
139
139
-
MODULE_MICRO_REFINERY_I,
140
140
-
MODULE_ORE_REFINERY_I,
141
141
-
MODULE_FUEL_REFINERY_I,
142
142
-
MODULE_SCIENCE_LAB_I,
143
143
-
MODULE_JUMP_DRIVE_I,
144
144
-
MODULE_JUMP_DRIVE_II,
145
145
-
MODULE_JUMP_DRIVE_III,
146
146
-
MODULE_WARP_DRIVE_I,
147
147
-
MODULE_WARP_DRIVE_II,
148
148
-
MODULE_WARP_DRIVE_III,
149
149
-
MODULE_SHIELD_GENERATOR_I,
150
150
-
MODULE_SHIELD_GENERATOR_II,
136
136
+
pub const Module = enum(u8) {
137
137
+
MODULE_MINERAL_PROCESSOR_I = 94,
138
138
+
MODULE_GAS_PROCESSOR_I = 95,
139
139
+
MODULE_CARGO_HOLD_I = 96,
140
140
+
MODULE_CARGO_HOLD_II = 97,
141
141
+
MODULE_CARGO_HOLD_III = 98,
142
142
+
MODULE_CREW_QUARTERS_I = 99,
143
143
+
MODULE_ENVOY_QUARTERS_I = 100,
144
144
+
MODULE_PASSENGER_CABIN_I = 101,
145
145
+
MODULE_MICRO_REFINERY_I = 102,
146
146
+
MODULE_ORE_REFINERY_I = 103,
147
147
+
MODULE_FUEL_REFINERY_I = 104,
148
148
+
MODULE_SCIENCE_LAB_I = 105,
149
149
+
MODULE_JUMP_DRIVE_I = 106,
150
150
+
MODULE_JUMP_DRIVE_II = 107,
151
151
+
MODULE_JUMP_DRIVE_III = 108,
152
152
+
MODULE_WARP_DRIVE_I = 109,
153
153
+
MODULE_WARP_DRIVE_II = 110,
154
154
+
MODULE_WARP_DRIVE_III = 111,
155
155
+
MODULE_SHIELD_GENERATOR_I = 112,
156
156
+
MODULE_SHIELD_GENERATOR_II = 113,
151
157
};
152
158
153
153
-
pub const Mount = enum {
154
154
-
MOUNT_GAS_SIPHON_I,
155
155
-
MOUNT_GAS_SIPHON_II,
156
156
-
MOUNT_GAS_SIPHON_III,
157
157
-
MOUNT_SURVEYOR_I,
158
158
-
MOUNT_SURVEYOR_II,
159
159
-
MOUNT_SURVEYOR_III,
160
160
-
MOUNT_SENSOR_ARRAY_I,
161
161
-
MOUNT_SENSOR_ARRAY_II,
162
162
-
MOUNT_SENSOR_ARRAY_III,
163
163
-
MOUNT_MINING_LASER_I,
164
164
-
MOUNT_MINING_LASER_II,
165
165
-
MOUNT_MINING_LASER_III,
166
166
-
MOUNT_LASER_CANNON_I,
167
167
-
MOUNT_MISSILE_LAUNCHER_I,
168
168
-
MOUNT_TURRET_I,
159
159
+
pub const Mount = enum(u8) {
160
160
+
MOUNT_GAS_SIPHON_I = 114,
161
161
+
MOUNT_GAS_SIPHON_II = 115,
162
162
+
MOUNT_GAS_SIPHON_III = 116,
163
163
+
MOUNT_SURVEYOR_I = 117,
164
164
+
MOUNT_SURVEYOR_II = 118,
165
165
+
MOUNT_SURVEYOR_III = 119,
166
166
+
MOUNT_SENSOR_ARRAY_I = 120,
167
167
+
MOUNT_SENSOR_ARRAY_II = 121,
168
168
+
MOUNT_SENSOR_ARRAY_III = 122,
169
169
+
MOUNT_MINING_LASER_I = 123,
170
170
+
MOUNT_MINING_LASER_II = 124,
171
171
+
MOUNT_MINING_LASER_III = 125,
172
172
+
MOUNT_LASER_CANNON_I = 126,
173
173
+
MOUNT_MISSILE_LAUNCHER_I = 127,
174
174
+
MOUNT_TURRET_I = 128,
169
175
};
170
176
171
171
-
pub const Reactor = enum {
172
172
-
REACTOR_SOLAR_I,
173
173
-
REACTOR_FUSION_I,
174
174
-
REACTOR_FISSION_I,
175
175
-
REACTOR_CHEMICAL_I,
176
176
-
REACTOR_ANTIMATTER_I,
177
177
+
pub const Reactor = enum(u8) {
178
178
+
REACTOR_SOLAR_I = 129,
179
179
+
REACTOR_FUSION_I = 130,
180
180
+
REACTOR_FISSION_I = 131,
181
181
+
REACTOR_CHEMICAL_I = 132,
182
182
+
REACTOR_ANTIMATTER_I = 133,
177
183
};
178
184
179
179
-
pub const Ship = enum {
180
180
-
SHIP_PROBE,
181
181
-
SHIP_MINING_DRONE,
182
182
-
SHIP_SIPHON_DRONE,
183
183
-
SHIP_INTERCEPTOR,
184
184
-
SHIP_LIGHT_HAULER,
185
185
-
SHIP_COMMAND_FRIGATE,
186
186
-
SHIP_EXPLORER,
187
187
-
SHIP_HEAVY_FREIGHTER,
188
188
-
SHIP_LIGHT_SHUTTLE,
189
189
-
SHIP_ORE_HOUND,
190
190
-
SHIP_REFINING_FREIGHTER,
191
191
-
SHIP_SURVEYOR,
192
192
-
SHIP_BULK_FREIGHTER,
185
185
+
pub const Ship = enum(u8) {
186
186
+
SHIP_PROBE = 134,
187
187
+
SHIP_MINING_DRONE = 135,
188
188
+
SHIP_SIPHON_DRONE = 136,
189
189
+
SHIP_INTERCEPTOR = 137,
190
190
+
SHIP_LIGHT_HAULER = 138,
191
191
+
SHIP_COMMAND_FRIGATE = 139,
192
192
+
SHIP_EXPLORER = 140,
193
193
+
SHIP_HEAVY_FREIGHTER = 141,
194
194
+
SHIP_LIGHT_SHUTTLE = 142,
195
195
+
SHIP_ORE_HOUND = 143,
196
196
+
SHIP_REFINING_FREIGHTER = 144,
197
197
+
SHIP_SURVEYOR = 145,
198
198
+
SHIP_BULK_FREIGHTER = 146,
193
199
};
194
200
};
195
195
-
196
196
-
pub const Item = struct {
197
197
-
symbol: ItemSymbol,
198
198
-
name: []const u8,
199
199
-
description: []const u8,
200
200
-
units: u64,
201
201
-
};
+6
-6
src/st/models/ships.zig
···
104
104
};
105
105
106
106
pub const Frame = struct {
107
107
-
symbol: m.inventory.ItemSymbol.Frame,
107
107
+
symbol: m.inventory.ItemSymbols.Frame,
108
108
name: []const u8,
109
109
description: []const u8,
110
110
···
118
118
};
119
119
120
120
pub const Reactor = struct {
121
121
-
symbol: m.inventory.ItemSymbol.Reactor,
121
121
+
symbol: m.inventory.ItemSymbols.Reactor,
122
122
name: []const u8,
123
123
description: []const u8,
124
124
···
130
130
};
131
131
132
132
pub const Engine = struct {
133
133
-
symbol: m.inventory.ItemSymbol.Engine,
133
133
+
symbol: m.inventory.ItemSymbols.Engine,
134
134
name: []const u8,
135
135
description: []const u8,
136
136
···
142
142
};
143
143
144
144
pub const Module = struct {
145
145
-
symbol: m.inventory.ItemSymbol.Module,
145
145
+
symbol: m.inventory.ItemSymbols.Module,
146
146
name: []const u8,
147
147
description: []const u8,
148
148
···
152
152
};
153
153
154
154
pub const Mount = struct {
155
155
-
symbol: m.inventory.ItemSymbol.Mount,
155
155
+
symbol: m.inventory.ItemSymbols.Mount,
156
156
name: []const u8,
157
157
description: []const u8,
158
158
159
159
strength: u64 = 0,
160
160
-
deposits: []m.inventory.ItemSymbol.Deposit = &.{},
160
160
+
deposits: []m.inventory.ItemSymbols.Deposit = &.{},
161
161
requirements: Requirements,
162
162
};
163
163