Refactoring MustFightBattle
-
I've been working on the offensive subs submerge/withdraw step and discovered that my idea of having a unified
valid()check that works for bothgetNamesandexecutewon't work.In the offensive subs submerge/withdraw step,
executeshouldn't run if there is a destroyer present. ButgetNamesis called at the beginning of the round and there might be a destroyer present that will die beforeexecuteis called. IfgetNamesdoesn't return the submerge/withdraw step, then an error will occur.I was actually able to trigger this error from the master branch when
Submersible Subsis false,Sub Retreat Before Battleis false, and a destroyer is present at the beginning of the round but then is destroyed during the round. IfSubmersible Subsis true andSub Retreat Before Battleis false, then this error doesn't occur because it doesn't check for destroyers.I'm going to be removing
valid()as a public method from theBattleStepinterface. Instead,getNamesandexecutewill do their own internal valid check. This check might be the same or different, depending on the step.