I have a feeling that we might start to misunderstand each other in parts, so I make an overview to ensure we're talking about the same things
Problem:
GDash and earlier BD engines have different interpretations of the magic wall milling time if it's set to zero:
- BD1, BD2, PLCK: 0 means infinite
- CLCK 3.0: 0 means until the next second starts
- GDash: 0 means exactly one frame
- Other engines (1stB, earlier CLCK versions): not sure yet, and it's also secondary for the moment because relatively few fancaves use these englines
The vast majority of fancaves in the CAVES folder is made either with BD1 or PLCK engine. Whenever any of these caves uses milling time 0 (meaning infinity), then GDash misinterprets it for "one frame", making these caves unsolvable because the magic wall doesn't work.
There are also (much fewer) fancaves made with CLCK where milling time 0 should mean "until the next second starts", and that's also misinterpreted by GDash for "one frame only". Also these caves might become unsolvable (as the aforementioned CWS BD2 cave).
Solution idea 1: Without any programming issues
This would mean that we would have to fix all the buggy fancaves per hand. In the many fancaves where 0 should mean infinity, we would have to set the milling time to 999, and in the few fancaves where 0 should mean "until the next second starts", we could set the milling time to 1. This would mean a lot of unpleasant work, however. And whenever we add new fancaves, the same problem would still be there.
Solution idea 2: With a minimum of programming, my suggestion
Dustin wrote:Add the option "milling time 0 is infinite", default setting "on".
"On" means 0 is treated as 999
"Off" means 0 is treated as before (magic wall works for one frame)
This would not require to add any new GDash features.
My idea is that because the default setting is "on", now all fancaves with milling time 0 are interpreted as infinity.
This would automatically fix all the many BD1/PLCK fancaves with milling time 0.
The relatively few caves where milling time 0 is really 0 (either "until the second ends" or "one frame") would then have to be changed by hand:
a) If 0 should mean "until the next second starts": Set the new option "off", change milling time from 0 to 1 (not a perfect solution but close).
b) If 0 should mean "one frame", then set the new option "off" and leave milling time 0. (Perfect solution)
Solution idea 2, your version:
CWS wrote:An additional option in the magic wall settings like „Milling time 0 is infinite“.
*) if option „Milling time 0 is infinite“ is activated, value 0 should be handled the same as 999.
*) if option „Milling time 0 is infinite“ is deactivated, value 0 should be the period until the next second starts.
Very similar to my suggestion, but mine has two advantages as far as I see:
(1) In the current GDash version, the magic wall milling time is
unconnected with the cave timer. This would have to be changed if 0 can mean "until the next second starts". In my suggestion, there's still no connection between milling timer and cave timer, so as far as I can see, my suggestion is easier to program.
(2) In my suggestion, 0 can still mean "one frame", which means that GDash-original fancaves with milling time 0 can work as before.
Independant of this, I'm going to PM Logic DeLuxe now because of the 1stB and early CLCK engines
