Index: ps/trunk/binaries/data/mods/public/simulation/ai/common-api/utils.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/ai/common-api/utils.js (revision 20350) +++ ps/trunk/binaries/data/mods/public/simulation/ai/common-api/utils.js (revision 20351) @@ -1,83 +1,83 @@ var API3 = function(m) { m.warn = function(output) { if (typeof output === "string") warn("PlayerID " + PlayerID + " | " + output); else warn("PlayerID " + PlayerID + " | " + uneval(output)); }; /** * Useful for simulating consecutive AI matches. */ m.exit = function() { Engine.Exit(); }; m.VectorDistance = function(a, b) { - return Math.euclidDistance2D(...a, ...b); + return Math.euclidDistance2D(a[0], a[1], b[0], b[1]); }; m.SquareVectorDistance = function(a, b) { - return Math.euclidDistance2DSquared(...a, ...b); + return Math.euclidDistance2DSquared(a[0], a[1], b[0], b[1]); }; /** Utility functions for conversions of maps of different sizes */ /** * Returns the index of map2 with max content from indices contained inside the cell i of map1 * map1.cellSize must be a multiple of map2.cellSize */ m.getMaxMapIndex = function(i, map1, map2) { let ratio = map1.cellSize / map2.cellSize; let ix = (i % map1.width) * ratio; let iy = Math.floor(i / map1.width) * ratio; let index; for (let kx = 0; kx < ratio; ++kx) for (let ky = 0; ky < ratio; ++ky) if (!index || map2.map[ix+kx+(iy+ky)*map2.width] > map2.map[index]) index = ix+kx+(iy+ky)*map2.width; return index; }; /** * Returns the list of indices of map2 contained inside the cell i of map1 * map1.cellSize must be a multiple of map2.cellSize */ m.getMapIndices = function(i, map1, map2) { let ratio = map1.cellSize / map2.cellSize; // TODO check that this is integer >= 1 ? let ix = (i % map1.width) * ratio; let iy = Math.floor(i / map1.width) * ratio; let ret = []; for (let kx = 0; kx < ratio; ++kx) for (let ky = 0; ky < ratio; ++ky) ret.push(ix+kx+(iy+ky)*map2.width); return ret; }; /** * Returns the list of points of map2 contained inside the cell i of map1 * map1.cellSize must be a multiple of map2.cellSize */ m.getMapPoints = function(i, map1, map2) { let ratio = map1.cellSize / map2.cellSize; // TODO check that this is integer >= 1 ? let ix = (i % map1.width) * ratio; let iy = Math.floor(i / map1.width) * ratio; let ret = []; for (let kx = 0; kx < ratio; ++kx) for (let ky = 0; ky < ratio; ++ky) ret.push([ix+kx, iy+ky]); return ret; }; return m; }(API3);