Improve small-terrain placement and show startup failure causes; record Workshop 0.0.120
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-10-24 03:03:10 +02:00
parent 253dde90cd
commit 3768ce7ed8
25 changed files with 4058 additions and 51 deletions
+7 -1
View File
@@ -32,7 +32,7 @@ struct ERR_GameMode {
int pickup=0;int PickupStage(){return pickup;}
int startMode=0;int StartMode(){return startMode;}
int phase=ERR_Phase::RADIO_DEFENCE, feedback=ERR_RadioFeedback::WAITING, remaining=180;
bool occupied=false;int Phase(){return phase;}string PreparationError(){return "";}
string error;bool occupied=false;int Phase(){return phase;}string PreparationError(){return error;}
void Locations(std::vector<ERR_LocationComponent*>& locations){locations.clear();}
int RadioFeedback(){return feedback;}int DefenceSecondsRemaining(){return remaining;}
bool DefenceOccupied(){return occupied;}float EscapeRadius(){return 9000;}
@@ -45,6 +45,12 @@ struct Actual {
bool has(string text,string needle){return text.find(needle)!=string::npos;}
int main(){
ERR_GameMode mode;
mode.phase=ERR_Phase::PREPARING;
assert(has(Actual::PhaseDescription(&mode,false),"Preparing mission sites"));
mode.error="Terrain has no safe navigable placement for Prison. Checks: uneven ground=123; water=45";
auto failure=Actual::PhaseDescription(&mode,false);
assert(has(failure,mode.error)&&has(failure,"restart the scenario")&&!has(failure,"/esc"));
mode.error.clear();mode.phase=ERR_Phase::RADIO_DEFENCE;
for(int duration : {30,180,1800}) {
mode.remaining=duration;
auto task=Actual::PhaseDescription(&mode,true);