docs(plan): marksilo-flow — 4 opgaver (planlægger, opsætning, spil-lag, fane)
This commit is contained in:
@@ -29,14 +29,16 @@ med højst x vogne ude ad gangen, og uden at tage vogne fra markarbejde, andre f
|
||||
|
||||
## Flowet
|
||||
|
||||
Ny run-type `fieldSilos` i `ADRuns.KINDS` (ved siden af `supply`/`outbound`). Højst ét marksilo-flow pr. savegame
|
||||
(GUI'et tilbyder ikke at oprette et til, når det findes).
|
||||
Marksilo-flowet er ÉN fast opsætning pr. savegame — ikke en ny run-type. Beslutning (2026-09-27, under
|
||||
planlægning): run-editoren (`SmartPickupFrame`) er bygget til præcis to typer (forsyning/udkørsel) mange steder,
|
||||
og runs har faste vogne, Start/Stop pr. vogn og Wait-puljer, som intet af det passer til lånte vogne. En egen
|
||||
underfane + egen gemmefil giver langt færre indgreb i eksisterende kode.
|
||||
|
||||
Felter (gemmes i `ADSmartPickup_runs.xml` som de øvrige):
|
||||
- `storeBuildings` — gårdlagre (bygnings-id'er → markører via den eksisterende `resolveMarkers`)
|
||||
Opsætning (`ADSmartPickup_fieldsilos.xml` i savegame-mappen, gemmes sammen med runs):
|
||||
- `enabled` — til/fra, standard fra
|
||||
- `storeIds` — gårdlagre (bygnings-id'er fra `ADBuildings`, kun `kind == "silo"`)
|
||||
- `maxVehicles` — x, 1–10, standard 2
|
||||
- `minLiters` — tærskel pr. silo og vare, standard 10000
|
||||
- `running` — til/fra (som de andre flows' Start/Stop)
|
||||
- `minLiters` — tærskel pr. silo og vare: 5000 / 10000 / 25000 / 50000, standard 10000
|
||||
|
||||
## Planlægning (ren logik, nyt modul `adFieldSiloPlanner.lua`, testes med luajit)
|
||||
|
||||
@@ -61,7 +63,8 @@ Output: `{dispatch = {{vehicleId, siloId, siloMarkerId, fillType, storeMarkerId,
|
||||
|
||||
- **Takt:** planlæg hvert 60. s (spiltid via `dt`), kun når flowet kører. Lagertal læses som i dag
|
||||
(`ADSmartPickup.getStationLevelAndCapacity` / silo-lagre).
|
||||
- **Ledige vogne:** `ADFieldWork.getRigs(adEnv)` filtreret til `enabled and not busy and not controlled`, og
|
||||
- **Ledige vogne:** `ADFieldWork.getRigs(adEnv)` filtreret til `role == "unloader"` (traktor + vogn, som Courseplay
|
||||
godkender som tømmevogn — ikke sprøjter/høstere med tank), `enabled and not busy and not controlled`, og
|
||||
vogne der har aflæsbare enheder (`AutoDrive.getAllDischargeableUnits`), der understøtter varen.
|
||||
`getRigs.busy` udvides med `ADFieldSilos.isLoaned(vehicle)`, så markarbejdet ikke tager en lånt vogn
|
||||
(flows tager allerede kun deres egne tilknyttede vogne).
|
||||
@@ -78,7 +81,7 @@ Output: `{dispatch = {{vehicleId, siloId, siloMarkerId, fillType, storeMarkerId,
|
||||
|
||||
## GUI
|
||||
|
||||
Flow-fanen: typen "Marksiloer" kan oprettes (højst én). Indstillinger: gårdlagre (eksisterende vælger),
|
||||
Ny underfane "Marksiloer" efter "Måned". Indstillinger: gårdlagre (eksisterende vælger),
|
||||
"Maks. vogne ude" (1–10), "Mindste mængde" (5.000 / 10.000 / 25.000 / 50.000 l), Start/Stop.
|
||||
Status: `x/y vogne ude · n siloer venter`, og én række pr. marksilo med indhold: silo, vare, liter, på vej,
|
||||
status (`ok` / `mangler markør` / `ingen gård tager <vare>`). Tekster i `l10n_da` + `l10n_en` (`spu_fs_*`).
|
||||
@@ -94,6 +97,6 @@ status (`ok` / `mangler markør` / `ingen gård tager <vare>`). Tekster i `l10n_
|
||||
- `tests/test_adFieldSiloPlanner.lua`: kvalificering (tærskel, markør, gård tager varen), fuldeste først,
|
||||
x-loft inkl. aktive lån, flere vogne til én stor silo, vogn der ikke kan bære varen springes over, nærmeste
|
||||
gårdlager med plads, fallback til mest plads, intet lager → ingen afsendelse.
|
||||
- `tests/test_adRuns.lua`: ny kind gemmes/indlæses med `maxVehicles`/`minLiters`; ukendt kind → supply som før.
|
||||
- `tests/test_adFieldSiloConfig.lua`: standarder, grænser (x 1–10, tærskel kun de fire værdier), til/fra af gårdlager, records frem og tilbage.
|
||||
- In-game: silo ved en mark med 50.000 l hvede, gårdlager = Farma-silo, x = 2 → to vogne kører, afleverer,
|
||||
parkerer; markarbejdet tager ikke de lånte vogne imens.
|
||||
|
||||
Reference in New Issue
Block a user