Introduce enums for items, machines, and recipes, and integrate recipe selection logic. Add .gitignore and improve Flask app for query-based input handling.
This commit is contained in:
477
plus.py
Normal file
477
plus.py
Normal file
@@ -0,0 +1,477 @@
|
||||
from enum import Enum
|
||||
from typing import Dict
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class Item(BaseModel):
|
||||
name: str
|
||||
|
||||
class Machine(BaseModel):
|
||||
name: str
|
||||
|
||||
class Machines(Enum):
|
||||
Miner = Machine(name="Miner")
|
||||
Smelter = Machine(name="Smelter")
|
||||
Constructor = Machine(name="Constructor")
|
||||
Assembler = Machine(name="Assembler")
|
||||
Sorter = Machine(name="Sorter")
|
||||
Crusher = Machine(name="Crusher")
|
||||
Foundry = Machine(name="Foundry")
|
||||
|
||||
class Items(Enum):
|
||||
IronIngot = Item(name="Iron Ingot")
|
||||
CopperIngot = Item(name="Copper Ingot")
|
||||
Limestone = Item(name="Limestone")
|
||||
IronOre = Item(name="Iron Ore")
|
||||
CopperOre = Item(name="Copper Ore")
|
||||
IronPlate = Item(name="Iron Plate")
|
||||
IronRod = Item(name="Iron Rod")
|
||||
Wire = Item(name="Wire")
|
||||
Cable = Item(name="Cable")
|
||||
Concrete = Item(name="Concrete")
|
||||
ReinforcedIronPlate = Item(name="Reinforced Iron Plate")
|
||||
ModularFrame = Item(name="Modular Frame")
|
||||
BronzeBeam = Item(name="Bronze Beam")
|
||||
TinPlate = Item(name="Tin Plate")
|
||||
TinIngot = Item(name="Tin Ingot")
|
||||
CrushedTin = Item(name="Crushed Tin")
|
||||
CrushedIron = Item(name="Crushed Iron")
|
||||
CrushedGangue = Item(name="Crushed Gangue")
|
||||
CrushedSiterite = Item(name="Crushed Siterite")
|
||||
SiteriteOre = Item(name="Siterite Ore")
|
||||
Screws = Item(name="Screws")
|
||||
BronzeIngot = Item(name="Bronze Ingot")
|
||||
CrushedCopper = Item(name="Crushed Copper")
|
||||
CrushedMagnesium = Item(name="Crushed Magnesium")
|
||||
CrushedCallanite = Item(name="Crushed Callanite")
|
||||
CallaniteOre = Item(name="Callanite Ore")
|
||||
CrushedLarrussite = Item(name="Crushed Larrussite")
|
||||
CrushedAurovite = Item(name="Crushed Aurovite")
|
||||
AuroviteOre = Item(name="Aurovite Ore")
|
||||
Sand = Item(name="Sand")
|
||||
MagnesiumGranules = Item(name="Magnesium Granules")
|
||||
CrushedZinc = Item(name="Crushed Zinc")
|
||||
LarrussiteOre = Item(name="Larrussite Ore")
|
||||
ZincIngot = Item(name="Zinc Ingot")
|
||||
Glass = Item(name="Glass")
|
||||
IronSheet = Item(name="Iron Sheet")
|
||||
CopperRod = Item(name="Copper Rod")
|
||||
CopperSheet = Item(name="Copper Sheet")
|
||||
BronzePlates = Item(name="Bronze Plates")
|
||||
CateriumRod = Item(name="Caterium Rod")
|
||||
CateriumIngot = Item(name="Caterium Ingot")
|
||||
CateriumPlate = Item(name="Caterium Plate")
|
||||
TinRod = Item(name="Tin Rod")
|
||||
ZincPlates = Item(name="Zinc Plates")
|
||||
IronWire = Item(name="Iron Wire")
|
||||
CopperBusbars = Item(name="Copper Busbars")
|
||||
Quickwire = Item(name="Quickwire")
|
||||
TinnedWire = Item(name="Tinned Wire")
|
||||
SolarCell = Item(name="Solar Cell")
|
||||
Silica = Item(name="Silica")
|
||||
BronzePipes = Item(name="Bronze Pipes")
|
||||
SmoothBeltDrive = Item(name="Smooth Belt Drive")
|
||||
TinnedSheet = Item(name="Tinned Sheet")
|
||||
Rotor = Item(name="Rotor")
|
||||
BronzeFrame = Item(name="Bronze Frame")
|
||||
AILimiter = Item(name="AI Limiter")
|
||||
|
||||
class Recipe(BaseModel):
|
||||
name: str # Human-friendly name
|
||||
building: Machines # e.g., "Smelter", "Constructor"
|
||||
outputs: Dict[Items, float] # Produced item name
|
||||
inputs: Dict[Items, float] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class Recipes(Enum):
|
||||
# Crusher
|
||||
# - Crushing Ores
|
||||
CrushedSiterite = Recipe(
|
||||
name="Crushed Siterite",
|
||||
building=Machines.Crusher,
|
||||
outputs={
|
||||
Items.CrushedSiterite: 60.0,
|
||||
Items.CrushedGangue: 25.0,
|
||||
},
|
||||
inputs={Items.SiteriteOre: 60.0},
|
||||
)
|
||||
CrushedLarrussite = Recipe(
|
||||
name="Crushed Larrussite",
|
||||
building=Machines.Crusher,
|
||||
outputs={
|
||||
Items.CrushedLarrussite: 40.0,
|
||||
Items.CrushedGangue: 20.0,
|
||||
},
|
||||
inputs={Items.LarrussiteOre: 60.0},
|
||||
)
|
||||
CrushedCallanite = Recipe(
|
||||
name="Crushed Callanite",
|
||||
building=Machines.Crusher,
|
||||
outputs={
|
||||
Items.CrushedCallanite: 60.0,
|
||||
Items.CrushedGangue: 25.0,
|
||||
},
|
||||
inputs={Items.CallaniteOre: 60.0},
|
||||
)
|
||||
CrushedAurovite = Recipe(
|
||||
name="Crushed Aurovite",
|
||||
building=Machines.Crusher,
|
||||
outputs={
|
||||
Items.CrushedAurovite: 60.0,
|
||||
Items.CrushedGangue: 22.5,
|
||||
},
|
||||
inputs={Items.AuroviteOre: 60.0},
|
||||
)
|
||||
# - Crushing Powders
|
||||
CoarseSand = Recipe(
|
||||
name="Coarse Sand",
|
||||
building=Machines.Crusher,
|
||||
outputs={
|
||||
Items.Sand: 30.0
|
||||
},
|
||||
inputs={Items.CrushedGangue: 60.0},
|
||||
)
|
||||
MagnesiumGranules = Recipe(
|
||||
name="Magnesium Granules",
|
||||
building=Machines.Crusher,
|
||||
outputs={
|
||||
Items.MagnesiumGranules: 72.0
|
||||
},
|
||||
inputs={Items.CrushedMagnesium: 80.0},
|
||||
)
|
||||
|
||||
# Sorter
|
||||
# - Simple Sorting
|
||||
CrushedIron = Recipe(
|
||||
name="Crushed Iron",
|
||||
building=Machines.Sorter,
|
||||
outputs={
|
||||
Items.CrushedIron: 90.0,
|
||||
Items.CrushedTin: 60.0,
|
||||
Items.CrushedGangue: 40.0,
|
||||
},
|
||||
inputs={Items.CrushedSiterite: 120.0},
|
||||
)
|
||||
CrushedCopper = Recipe(
|
||||
name="Crushed Copper",
|
||||
building=Machines.Sorter,
|
||||
outputs={
|
||||
Items.CrushedCopper: 96.0,
|
||||
Items.CrushedMagnesium: 80.0,
|
||||
Items.CrushedGangue: 40.0,
|
||||
},
|
||||
inputs={Items.CrushedCallanite: 120.0},
|
||||
)
|
||||
CrushedZinc = Recipe(
|
||||
name="Crushed Zinc",
|
||||
building=Machines.Sorter,
|
||||
outputs={
|
||||
Items.CrushedZinc: 96.0,
|
||||
Items.CrushedMagnesium: 48.0,
|
||||
Items.CrushedGangue: 60.0,
|
||||
},
|
||||
inputs={Items.CrushedLarrussite: 120.0},
|
||||
)
|
||||
# Smelter
|
||||
# - smelting
|
||||
IronIngot = Recipe(
|
||||
name="Iron Ingot",
|
||||
building=Machines.Smelter,
|
||||
outputs={Items.IronIngot: 30.0},
|
||||
inputs={Items.CrushedIron: 30.0},
|
||||
)
|
||||
CopperIngot = Recipe(
|
||||
name="Copper Ingot",
|
||||
building=Machines.Smelter,
|
||||
outputs={Items.CopperIngot: 48.0},
|
||||
inputs={Items.CrushedCopper: 48.0},
|
||||
)
|
||||
TinIngot = Recipe(
|
||||
name="Tin Ingot",
|
||||
building=Machines.Smelter,
|
||||
outputs={Items.TinIngot: 15.0},
|
||||
inputs={Items.CrushedTin: 15.0},
|
||||
)
|
||||
# - Ingots
|
||||
ImpureIronIngot = Recipe(
|
||||
name="Impure Iron Ingot",
|
||||
building=Machines.Smelter,
|
||||
outputs={Items.IronIngot: 30.0},
|
||||
inputs={Items.CrushedSiterite: 30.0},
|
||||
)
|
||||
ImpureCopperIngot = Recipe(
|
||||
name="Impure Copper Ingot",
|
||||
building=Machines.Smelter,
|
||||
inputs={Items.CrushedCallanite: 24.0},
|
||||
outputs={Items.CopperIngot: 24.0},
|
||||
)
|
||||
ImpureTinIngot = Recipe(
|
||||
name="Impure Tin Ingot",
|
||||
building=Machines.Smelter,
|
||||
inputs={Items.CrushedSiterite: 30.0},
|
||||
outputs={Items.TinIngot: 15.0},
|
||||
)
|
||||
ImpureCateriumIngot = Recipe(
|
||||
name="Impure Caterium Ingot",
|
||||
building=Machines.Smelter,
|
||||
inputs={Items.CrushedAurovite: 40.0},
|
||||
outputs={Items.CopperIngot: 24.0},
|
||||
)
|
||||
ZincIngot = Recipe(
|
||||
name="Zinc Ingot",
|
||||
building=Machines.Smelter,
|
||||
outputs={Items.ZincIngot: 15.0},
|
||||
inputs={Items.CrushedZinc: 24.0},
|
||||
)
|
||||
# - Standard Parts
|
||||
SloppyGlass = Recipe(
|
||||
name="Sloppy Glass",
|
||||
building=Machines.Smelter,
|
||||
outputs={Items.Glass: 20.0},
|
||||
inputs={Items.Sand: 30.0},
|
||||
)
|
||||
# Constructor
|
||||
# - Standard Parts
|
||||
IronPlate = Recipe(
|
||||
name="Iron Plate",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.IronPlate: 20.0},
|
||||
inputs={Items.IronIngot: 30.0},
|
||||
)
|
||||
Screws = Recipe(
|
||||
name="Screws",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.Screws: 50.0},
|
||||
inputs={Items.IronRod: 20.0},
|
||||
)
|
||||
IronRod = Recipe(
|
||||
name="Iron Rod",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.IronRod: 15.0},
|
||||
inputs={Items.IronIngot: 15.0},
|
||||
)
|
||||
IronSheet = Recipe(
|
||||
name="Iron Sheet",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.IronSheet: 50.0},
|
||||
inputs={Items.IronPlate: 40.0},
|
||||
)
|
||||
CopperRod = Recipe(
|
||||
name="Copper Rod",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.CopperRod: 18.0},
|
||||
inputs={Items.CopperIngot: 12.0},
|
||||
)
|
||||
CopperSheet = Recipe(
|
||||
name="Copper Sheet",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.CopperSheet: 30.0},
|
||||
inputs={Items.CopperIngot: 24.0},
|
||||
)
|
||||
BronzeBeam = Recipe(
|
||||
name="Bronze Beam",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.BronzeBeam: 7.5},
|
||||
inputs={Items.BronzeIngot: 22.5},
|
||||
)
|
||||
BronzePlates = Recipe(
|
||||
name="Bronze Plates",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.BronzePlates: 24.0},
|
||||
inputs={Items.BronzeIngot: 30.0},
|
||||
)
|
||||
CateriumRod = Recipe(
|
||||
name="Caterium Rod",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.CateriumRod: 32.0},
|
||||
inputs={Items.CateriumIngot: 16.0},
|
||||
)
|
||||
CateriumPlate = Recipe(
|
||||
name="Caterium Plate",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.CateriumPlate: 36.0},
|
||||
inputs={Items.CateriumIngot: 60.0},
|
||||
)
|
||||
TinRod = Recipe(
|
||||
name="Tin Rod",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.TinRod: 15.0},
|
||||
inputs={Items.TinIngot: 30.0},
|
||||
)
|
||||
ZincPlates = Recipe(
|
||||
name="Zinc Plates",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.ZincPlates: 15.0},
|
||||
inputs={Items.ZincIngot: 12.5},
|
||||
)
|
||||
# - Electronics
|
||||
IronWire = Recipe(
|
||||
name="Iron Wire",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.IronWire: 30.0},
|
||||
inputs={Items.IronRod: 20.0},
|
||||
)
|
||||
Wire = Recipe(
|
||||
name="Wire",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.Wire: 30.0},
|
||||
inputs={Items.CopperRod: 18.0},
|
||||
)
|
||||
CopperBusbars = Recipe(
|
||||
name="Copper Busbars",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.CopperBusbars: 15.0},
|
||||
inputs={Items.CopperRod: 24.0},
|
||||
)
|
||||
Cable = Recipe(
|
||||
name="Cable",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.Cable: 30.0},
|
||||
inputs={Items.Wire: 60.0},
|
||||
)
|
||||
Quickwire = Recipe(
|
||||
name="Quickwire",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.Quickwire: 80.0},
|
||||
inputs={Items.CateriumRod: 24.0},
|
||||
)
|
||||
PureTinWire = Recipe(
|
||||
name="Pure Tin Wire",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.TinnedWire: 11.25},
|
||||
inputs={Items.TinRod: 15.0},
|
||||
)
|
||||
# - Compounds
|
||||
Concrete = Recipe(
|
||||
name="Concrete",
|
||||
building=Machines.Constructor,
|
||||
outputs={Items.Concrete: 15.0},
|
||||
inputs={Items.CrushedGangue: 45.0},
|
||||
)
|
||||
|
||||
# Foundry
|
||||
# - Building Parts
|
||||
SolarCell = Recipe(
|
||||
name="Solar Cell",
|
||||
building=Machines.Foundry,
|
||||
outputs={Items.SolarCell: 11.25},
|
||||
inputs={
|
||||
Items.ZincPlates: 22.5,
|
||||
Items.Silica: 67.5,
|
||||
},
|
||||
)
|
||||
# - Alloys
|
||||
BronzePipes = Recipe(
|
||||
name="Bronze Pipes",
|
||||
building=Machines.Foundry,
|
||||
outputs={Items.BronzePipes: 36.0},
|
||||
inputs={
|
||||
Items.CopperIngot: 24.0,
|
||||
Items.TinIngot: 15.0,
|
||||
},
|
||||
)
|
||||
# - ingots
|
||||
BronzeIngot = Recipe(
|
||||
name="Bronze Ingot",
|
||||
building=Machines.Foundry,
|
||||
outputs={Items.BronzeIngot: 45.0},
|
||||
inputs={
|
||||
Items.CopperIngot: 36.0,
|
||||
Items.TinIngot: 15.0,
|
||||
},
|
||||
)
|
||||
# - Other
|
||||
ThermalSilica = Recipe(
|
||||
name="Thermal Silica",
|
||||
building=Machines.Foundry,
|
||||
outputs={Items.Silica: 45.0},
|
||||
inputs={
|
||||
Items.Sand: 30.0,
|
||||
Items.MagnesiumGranules: 27.0,
|
||||
},
|
||||
)
|
||||
# Assembler
|
||||
# - Building Parts
|
||||
SmoothBeltDrive = Recipe(
|
||||
name="Smooth Belt Drive",
|
||||
building=Machines.Assembler,
|
||||
outputs={Items.SmoothBeltDrive: 18.75},
|
||||
inputs={
|
||||
Items.TinnedSheet: 15.0,
|
||||
Items.Rotor: 3.75,
|
||||
},
|
||||
)
|
||||
# - Standard Parts
|
||||
TinPlate = Recipe(
|
||||
name="Tin Plate",
|
||||
building=Machines.Assembler,
|
||||
outputs={Items.TinPlate: 40.0},
|
||||
inputs={
|
||||
Items.TinIngot: 30.0,
|
||||
Items.IronPlate: 20.0,
|
||||
},
|
||||
)
|
||||
TinnedWire = Recipe(
|
||||
name="Tinned Wire",
|
||||
building=Machines.Assembler,
|
||||
outputs={Items.TinnedWire: 90},
|
||||
inputs={
|
||||
Items.Wire: 60.0,
|
||||
Items.TinRod: 45.0,
|
||||
},
|
||||
)
|
||||
TinnedSheet = Recipe(
|
||||
name="Tinned Sheet",
|
||||
building=Machines.Assembler,
|
||||
outputs={Items.TinnedSheet: 40.0},
|
||||
inputs={
|
||||
Items.TinIngot: 20.0,
|
||||
Items.CopperSheet: 20.0,
|
||||
},
|
||||
)
|
||||
Rotor = Recipe(
|
||||
name="Rotor",
|
||||
building=Machines.Assembler,
|
||||
outputs={Items.Rotor: 7.5},
|
||||
inputs={
|
||||
Items.CopperBusbars: 22.5,
|
||||
Items.IronWire: 60.0,
|
||||
},
|
||||
)
|
||||
ReinforcedIronPlate = Recipe(
|
||||
name="Reinforced Iron Plate",
|
||||
building=Machines.Assembler,
|
||||
outputs={Items.ReinforcedIronPlate: 5.0},
|
||||
inputs={
|
||||
Items.TinPlate: 20.0,
|
||||
Items.Screws: 37.5,
|
||||
},
|
||||
)
|
||||
BronzeFrame = Recipe(
|
||||
name="Bronze Frame",
|
||||
building=Machines.Assembler,
|
||||
outputs={Items.BronzeFrame: 5.0},
|
||||
inputs={
|
||||
Items.BronzeBeam: 10.0,
|
||||
Items.BronzePipes: 24.0,
|
||||
},
|
||||
)
|
||||
ModularFrame = Recipe(
|
||||
name="Modular Frame",
|
||||
building=Machines.Assembler,
|
||||
outputs={Items.ModularFrame: 6.0},
|
||||
inputs={
|
||||
Items.ReinforcedIronPlate: 7.5,
|
||||
Items.BronzeBeam: 7.5,
|
||||
},
|
||||
)
|
||||
AILimiter = Recipe(
|
||||
name="AI Limiter",
|
||||
building=Machines.Assembler,
|
||||
outputs={Items.AILimiter: 6.0},
|
||||
inputs={
|
||||
Items.CateriumPlate: 24.0,
|
||||
Items.TinnedWire: 18.0,
|
||||
},
|
||||
)
|
||||
Reference in New Issue
Block a user