Skip to content

Implement Multi-Machine Priority with Per-Recipe Override Capability #271

@amgtree

Description

@amgtree

Description:
Enhance the building selection system with both global priority fallback ordering and the ability to override machine selection for individual recipes directly in the calculation view.

Current Limitations:

  • Settings only allow one preferred machine.
  • Changing machine preference for one recipe requires global setting changes
  • No fallback system when preferred machines aren't suitable for specific recipes

Proposed Implementation:

Global Priority System:

  • Replace single machine selection with ranked priority lists
  • Drag-and-drop interface for ordering machine preferences
  • Smart fallback based on recipe requirements and module compatibility
  • Enable/disable specific machines within each category

Per-Recipe Override System:

  • Clickable machine icons in the calculation results table
  • Dropdown menu showing available machines for that specific output product
  • Visual indicators for overridden machines (different icon style/color)
  • Per-session persistence that doesn't affect global settings

User Interface:

  • Settings: Priority-ordered lists with drag-and-drop functionality
  • Results table: Click building icon → contextual menu with alternatives
  • Clear visual distinction between default and overridden selections
  • "Make this default" option in override menu for permanent changes

Use Cases:

  • Mixed Production Lines: Global preference for Assembly Machine 3, but use foundries for specific smelting calculations
  • Module Optimization: Prefer machines with more module slots, fallback to speed-focused machines for non-productivity recipes
  • Resource Constraints: Model scenarios with limited advanced machine availability
  • Comparison Testing: Quickly test different machines for the same recipe without losing global preferences
  • Specialized Factory Sections: Override specific recipes to model dedicated production areas

Technical Considerations:

  • Global priorities stored in settings, overrides stored per-session
  • Integration with existing module compatibility system
  • Clear precedence: per-recipe override > global priority > system default
  • Recipe-specific overrides reset when changing global priorities
  • This could integrate well with the profiles suggestion I made earlier

Alternative Approaches:

  • Conditional logic system (if recipe allows productivity modules, use AM3)
  • Simply just using little up and down buttons on machines with a priority number to let you ++ or -- priority
  • Right-click context menus instead of click-to-open
  • Advanced mode toggle for per-recipe controls
  • Maybe expand the priority to other places like recipes (idk if there items that have multiple recipes on the same machine) and fuel sources.

Benefits:

  • Reduces need to constantly adjust global settings
  • Supports both more complex recipe chains using different machines and specific recipe configurations.
  • Provides granular control without interface complexity

TL;DR: Replace single machine selection with priority-ordered fallback system plus clickable per-recipe overrides, enabling both global settings you never have to touch and an easy way of swapping machines within a recipe without having to leave the page.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions