From 62264128256d51521aff366c0a2a764c7ca17f63 Mon Sep 17 00:00:00 2001 From: Martin Ambrus Date: Sat, 28 Oct 2017 11:08:35 +0200 Subject: [PATCH] fix: coordinates were still generated in wrong descension --- var/db/datagen-world-data.sql | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/var/db/datagen-world-data.sql b/var/db/datagen-world-data.sql index 3d80d4f6..c66aca90 100644 --- a/var/db/datagen-world-data.sql +++ b/var/db/datagen-world-data.sql @@ -62,10 +62,10 @@ INSERT INTO %PREFIX%wdata IF (@otype = 0, CONCAT("t", (FLOOR(0 + RAND() * 9)) ), CONCAT("o", @otype) ) as image FROM - -- the following select will generate a number from -%WORLDSIZE% to +%WORLDSIZE% as an Y coordinate + -- the following select will generate a number from -%WORLDSIZE% to +%WORLDSIZE% as an X coordinate -- (courtesy of Unreason, https://stackoverflow.com/a/2652051/467164) -- this first line will keep incrementing @row until we run out of all the data provided by the "t" subselects below - (SELECT @row := @row - 1 as y FROM + (SELECT @row := @row + 1 as x FROM -- t and t2 each contain 10 rows of dummy data, -- cartesian product of these is 10^4, i.e. 10000 rows of dummy data @@ -79,21 +79,22 @@ INSERT INTO %PREFIX%wdata -- here we tell MySQL where to start, so if we have a world 100x100, this will set @row to -101 -- (not -100 because the first select already increments the @row by 1, so we'd start at -99 instead) - (SELECT @row := (%WORLDSIZE% + 1)) as beginning + (SELECT @row := (-%WORLDSIZE% - 1)) as beginning + ) as x, - -- since we maxed out the potential of world generation to number 400, we need to use a WHERE here - -- as to only get the number of rows we need for the current map size - WHERE @row >= -(%WORLDSIZE% - 1)) as y, - - -- this query is the same as previous query for Y coordinate but will generate numbers - -- for the X coordinate - both of these joined together this way will generate data such as: + -- this query is the same as previous query for X coordinate but will generate numbers + -- for the Y coordinate - both of these joined together this way will generate data such as: -- -100, 100; -99, 100; -98, 100 ... - (SELECT @row2 := @row2 + 1 as x FROM + (SELECT @row2 := @row2 - 1 as y FROM (select 0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t, (select 0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2, (select 0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8) t3, - (SELECT @row2 := (-%WORLDSIZE% - 1)) as beginning - WHERE @row2 <= (%WORLDSIZE% - 1)) as x + (SELECT @row2 := (%WORLDSIZE% + 1)) as beginning + ) as y + WHERE + x BETWEEN -%WORLDSIZE% AND %WORLDSIZE% + AND + y BETWEEN -%WORLDSIZE% AND %WORLDSIZE% ) as generator;