A SpaceTraders Agent

fix CombinedEnum

altagos.dev dc160bd7 0234dd57

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