Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. // PI
  3. const PI = Math.PI;
  4.  
  5. const SEA_LEVEL = 20.0;
  6.  
  7. const TERRAIN_SEPARATOR = "|";
  8.  
  9. /////////////////////////////////////////////////////////////////////////////////////////////
  10. //  Utility functions
  11. /////////////////////////////////////////////////////////////////////////////////////////////
  12.  
  13. function fractionToTiles(f) {
  14.     return getMapSize() * f;
  15. }
  16.  
  17. function tilesToFraction(t) {
  18.     return t / getMapSize();
  19. }
  20.  
  21. function fractionToSize(f) {
  22.     return getMapSize() * getMapSize() * f;
  23. }
  24.  
  25. function sizeToFraction(s) {
  26.     return s / getMapSize() / getMapSize();
  27. }
  28.  
  29. function cos(x) {
  30.     return Math.cos(x);
  31. }
  32.  
  33. function sin(x) {
  34.     return Math.sin(x);
  35. }
  36.  
  37. function tan(x) {
  38.     return Math.tan(x);
  39. }
  40.  
  41. function abs(x) {
  42.     return Math.abs(x);
  43. }
  44.  
  45. function round(x) {
  46.     return Math.round(x);
  47. }
  48.  
  49. function lerp(a, b, t) {
  50.     return a + (b-a) * t;
  51. }
  52.  
  53. function sqrt(x) {
  54.     return Math.sqrt(x);
  55. }
  56.  
  57. function ceil(x) {
  58.     return Math.ceil(x);
  59. }
  60.  
  61. function floor(x) {
  62.     return Math.floor(x);
  63. }
  64.  
  65. function max(x, y) {
  66.     return x > y ? x : y;
  67. }
  68.  
  69. function min(x, y) {
  70.     return x < y ? x : y;
  71. }
  72.  
  73. function println(x) {
  74.     print(x);
  75.     print("\n");
  76. }
  77.  
  78. function argsToArray(x) {
  79.     if (x.length!=1) {
  80.         var ret = new Array();
  81.         for (var i=0; i<x.length; i++) {
  82.             ret[i] = x[i];
  83.         }
  84.         return ret;
  85.     }
  86.     else {
  87.         return x[0];
  88.     }
  89. }
  90.  
  91. function chooseRand() {
  92.     if (arguments.length==0) {
  93.         error("chooseRand: requires at least 1 argument");
  94.     }
  95.     var ar = argsToArray(arguments);
  96.     return ar[randInt(ar.length)];
  97. }
  98.  
  99. function createAreas(centeredPlacer, painter, constraint, num, retryFactor)
  100. {
  101.     if (retryFactor === undefined)
  102.         retryFactor = 10;
  103.    
  104.     var maxFail = num * retryFactor;
  105.     var good = 0;
  106.     var bad = 0;
  107.     var ret = [];
  108.     while(good < num && bad <= maxFail)
  109.     {
  110.         centeredPlacer.x = randInt(getMapSize());
  111.         centeredPlacer.y = randInt(getMapSize());
  112.         var r = g_Map.createArea(centeredPlacer, painter, constraint);
  113.         if (r !== undefined)
  114.         {
  115.             good++;
  116.             ret.push(r);
  117.         }
  118.         else
  119.         {
  120.             bad++;
  121.         }
  122.     }
  123.    
  124.     return ret;
  125. }
  126.  
  127. function createObjectGroups(placer, player, constraint, num, retryFactor)
  128. {
  129.     if (retryFactor === undefined)
  130.         retryFactor = 10;
  131.    
  132.     var maxFail = num * retryFactor;
  133.     var good = 0;
  134.     var bad = 0;
  135.     while(good < num && bad <= maxFail)
  136.     {
  137.         placer.x = randInt(getMapSize());
  138.         placer.y = randInt(getMapSize());
  139.         var r = createObjectGroup(placer, player, constraint);
  140.        
  141.         if (r !== undefined)
  142.         {
  143.             good++;
  144.         }
  145.         else
  146.         {
  147.             bad++;
  148.         }
  149.     }
  150.     return good;
  151. }
  152.  
  153. function createTerrain(terrain)
  154. {
  155.     if (terrain instanceof Array)
  156.     {
  157.         var terrainList = [];
  158.        
  159.         for (var i = 0; i < terrain.length; ++i)
  160.             terrainList.push(createTerrain(terrain[i]));
  161.        
  162.         return new RandomTerrain(terrainList);
  163.     }
  164.     else
  165.     {
  166.         return createSimpleTerrain(terrain);
  167.     }
  168. }
  169.  
  170. function createSimpleTerrain(terrain)
  171. {
  172.     // Split string by pipe | character, this allows specifying terrain + tree type in single string
  173.     var params = terrain.split(TERRAIN_SEPARATOR, 2);
  174.    
  175.     if (params.length != 2)
  176.     {
  177.         return new SimpleTerrain(terrain);
  178.     }
  179.     else
  180.     {
  181.         return new SimpleTerrain(params[0], params[1]);
  182.     }
  183. }
  184.  
  185. function placeObject(type, player, x, y, angle)
  186. {
  187.     g_Map.addObjects(new Entity(type, player, x, y, angle));
  188. }
  189.  
  190. function placeTerrain(x, y, terrain)
  191. {
  192.     // convert terrain param into terrain object
  193.     g_Map.placeTerrain(x, y, createTerrain(terrain));
  194.    
  195. }
  196.  
  197. /////////////////////////////////////////////////////////////////////////////////////////////
  198. //  Access global map variable
  199. /////////////////////////////////////////////////////////////////////////////////////////////
  200.  
  201. function createTileClass()
  202. {
  203.     return g_Map.createTileClass();
  204. }
  205.  
  206. function getTileClass(id)
  207. {
  208.     // Check for valid class id
  209.     if (id < 1 || id > g_Map.tileClasses.length)
  210.     {
  211.         //error("Invalid tile class id: "+id);
  212.         return null;
  213.     }
  214.    
  215.     return g_Map.tileClasses[id - 1];
  216. }
  217.  
  218. function createArea(placer, painter, constraint)
  219. {
  220.     return g_Map.createArea(placer, painter, constraint);
  221. }
  222.  
  223. function createObjectGroup(placer, player, constraint)
  224. {
  225.     return g_Map.createObjectGroup(placer, player, constraint);
  226. }
  227.  
  228. function getMapSize()
  229. {
  230.     return g_Map.size;
  231. }
  232.  
  233. function getNumPlayers()
  234. {
  235.     return g_MapSettings.PlayerData.length;
  236. }
  237.  
  238. function getCivCode(player)
  239. {
  240.     return g_MapSettings.PlayerData[player].Civ;
  241. }
  242.  
  243. function getHeight(x, y)
  244. {
  245.     g_Map.getHeight(x, y);
  246. }
  247.  
  248. function setHeight(x, y, height)
  249. {
  250.     g_Map.setHeight(x, y, height);
  251. }
  252.  
  253. /////////////////////////////////////////////////////////////////////////////////////////////
  254. //  Utility functions for classes
  255. /////////////////////////////////////////////////////////////////////////////////////////////
  256.  
  257.  
  258. // Add point to given class by id
  259. function addToClass(x, y, id)
  260. {
  261.     var tileClass = getTileClass(id);
  262.    
  263.     if (tileClass !== null)
  264.         tileClass.add(x, y);
  265. }
  266.  
  267. // Create a painter for the given class
  268. function paintClass(id)
  269. {
  270.     return new TileClassPainter(getTileClass(id));
  271. }
  272.  
  273. // Create an avoid constraint for the given classes by the given distances
  274. function avoidClasses(/*class1, dist1, class2, dist2, etc*/)
  275. {
  276.     var ar = new Array(arguments.length/2);
  277.     for (var i=0; i < arguments.length/2; i++)
  278.     {
  279.         ar[i] = new AvoidTileClassConstraint(arguments[2*i], arguments[2*i+1]);
  280.     }
  281.     // Return single constraint
  282.     return new AndConstraint(ar);
  283. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement