Stephan-S / FS22_AutoDrive

FS22 version of the AutoDrive mod
614 stars 109 forks source link

[Suggestion] external Task Manager System #580

Open Erabior opened 2 years ago

Erabior commented 2 years ago

Disclaimer: I do have a few years of scripting experience, mostly for design engineering purposes in c++, python, and some LUA. I understand what I am suggesting may be quite large, and I am ignorant as to the level of difficulty mod-to-mod interaction is in FS22, but I believe it would drastically increase the power and usability of Autodrive.

I'm suggesting a feature that allows you to add commands via a ui to be executed in a specific order. To be clear, I am not suggesting there be an in-game code editor for routes. Instead, using a drag and drop system similar to how folders function, one could drag and drop commands from a 'word bank' like list of commands into their route. those commands would then show the relevant arguments that must be selected via a dropdown menu.

I believe there need only be a few commands:

-Drive To { 'Waypoint' } : Will drive the vehicle to the specified 'waypoint'

-Load { 'Waypoint' | 'product' } : Will drive to the specified 'Waypoint', attempt to load the product if specified, and move on if it is unable to (silo/storage empty or trailer full)

-Load & Wait { 'Waypoint' | 'product' | 'Time' or 'Percentage' } : Will drive to the specified 'Waypoint', attempt to load the product if specified, and wait a specified time or wait until loaded to a specific percent capacity

-Unload { 'Waypoint' } : Will drive to the specified 'Waypoint', attempt to unload, and move on if it is unable to (silo/storage full or trailer empty)

-Unload & Wait { 'Waypoint' | 'Time' or 'Percentage' } : Will drive to the specified 'Waypoint', attempt to unload, and wait a specified time or wait until the trailer is emptied to a specific percent capacity

-Unload Combine { 'Wait point' } : functions identically to the current unload combine command except it only takes the wait point. The vehicle will do everything the current unload combine command does and once full will return to the wait point.

-Loop { 'Command Number' | 1-10, or indefinitely } : Returns to the specified step the specified number of times.

-Wait { 'number of seconds' } : Waits the specified number of seconds.

Two example routes that are currently not possibe could look like:

Route 1:

1) Load { Grain Silo 1 | Wheat } 2) Load { Grain Silo 2 | Wheat } 3) Unload { Grain Mill 1 } 4) Unload { Grain Mill 2 } 5) Load { chopped Sugar Beets | Chopped Sugar Beet } 5) Unload { Bioplant 1 } 6) Loop { 1 | 3 }

Route 2:

1) Unload Combine { Field 21 Chasser } 2) Unload { Grain Mill 1 } 3) Unload { Grain Mill 2 } 4) Unload { Grain Silo 1 }

Sub suggestion: 3rd party mod integration

Potentially add the following commands if their respective mods are installed

(" Pallet Autoload Specialization") Toggle Autoload : will toggle autoload on or off

("Courseplay") Start Job { 'saved course name / job name' } : starts the specified course at first waypoint

Examples:

Route 1:

1) Drive To | Mill 1 Flour Pickup 2) Enable Autoload 3) Wait | [30] seconds 4) Disable Autoload 5) Drive To | Mill 2 Flour Pickup 6) Enable Autoload 7) Wait | [30] seconds 8) Disable Autoload 9) Drive To | Bakery Flour Dropoff

Route 2:

1) Drive To { 'Field 23' } 2) Start job { CP:Bale Collect /Warp} 3) Unload { Bale Storage }

ssk67 commented 2 years ago

That is a good idea! I am a programmer, so I always wanted tasks to be programmable, of course ,it is a big project.