# HG changeset patch # User sheepluva # Date 1479320376 -3600 # Node ID cb36d6df38141cf2d0c7660af45bfe6bf228967e # Parent 19cb0de79287e59342aa4ca0d75677f4ffe42529 reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f diff -r 19cb0de79287 -r cb36d6df3814 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Wed Nov 16 12:26:26 2016 -0500 +++ b/hedgewars/uGears.pas Wed Nov 16 19:19:36 2016 +0100 @@ -815,15 +815,31 @@ var i, t, p, j: LongInt; ar: array[0..Pred(cMaxHHs)] of PHedgehog; Count: Longword; - divide: boolean; + divide, sectionDivide: boolean; begin if (GameFlags and gfPlaceHog) <> 0 then PlacingHogs:= true; divide:= ((GameFlags and gfDivideTeams) <> 0); -// in section-divide mode, divide the map into equal-width sections and put each clan in one of them -if divide then +(* sectionDivide will determine the mode of hog distribution + * + * On generated maps or maps not designed with divided mode in mind, + * using spawning sections can be problematic, because some sections may + * contain too little land surface for sensible spawning. + * + * if sectionDivide is true, the map will be sliced into equal-width sections + * and one team spawned in each + * if false, the hogs will be spawned normally and sorted by teams after + * + *) + +// TODO: there might be a smarter way to decide if dividing clans into equal-width map sections makes sense +// e.g. by checking if there is enough spawn area in each section +sectionDivide:= divide and ((cMapGen = mgForts) or (ClansCount = 2)); + +// divide the map into equal-width sections and put each clan in one of them +if sectionDivide then begin t:= leftX; for p:= 0 to (ClansCount - 1) do @@ -908,7 +924,7 @@ // divided teams: sort the hedgehogs from left to right by clan and shuffle clan members -if divide then +if divide and (not sectionDivide) then SortHHsByClan(); end;