Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2021
1,403
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.93 KB | None | 0 0
  1.  
  2. var tt = 0;
  3. if(process.argv.length>2){
  4. tt = Number(process.argv[2]);
  5. };
  6.  
  7. var width = [240,3*240];
  8. var height = [240,3*240];
  9.  
  10. var pixels = [];
  11.  
  12. pixels[0] = blankpixelmap(0,width[0],height[0]);
  13. var fs = require('fs');
  14. b1 = fs.readFileSync('colours0.bmp', 'hex');
  15.  
  16. for(dc=0;dc<width[0]*height[0];dc++){
  17. pixels[0][dc%width[0]][Math.floor(dc/width[0])] = [(hextodec(b1[112+6*dc])*16+hextodec(b1[113+6*dc])),
  18. (hextodec(b1[110+6*dc])*16+hextodec(b1[111+6*dc])),
  19. (hextodec(b1[108+6*dc])*16+hextodec(b1[109+6*dc]))];
  20. };
  21.  
  22. pixels[1] = blankpixelmap([0,0,0,0],width[0],height[0]);
  23. for(acc=0;acc<width[0];acc++){
  24. for(acd=0;acd<height[0];acd++){
  25. nwhite = 0
  26. nred = 0
  27. ngreen = 0
  28. nblue = 0
  29. for(n=0;n<9;n++){
  30. white = Math.min(pixels[0][acc][acd][0],pixels[0][acc][acd][1],pixels[0][acc][acd][2])/(1+nwhite)
  31. red = pixels[0][acc][acd][0]/(1+nwhite+nred)
  32. green = pixels[0][acc][acd][1]/(1+nwhite+ngreen)
  33. blue = pixels[0][acc][acd][2]/(1+nwhite+nblue)
  34. if( white>=red && white>=green && white>=blue ){
  35. nwhite++
  36. }else if(red>=green && red>=blue){
  37. nred++
  38. }else if(green>=blue){
  39. ngreen++
  40. }else{
  41. nblue++
  42. }
  43. }
  44. pixels[1][acc][acd] = [nwhite,nred,ngreen,nblue]
  45. };
  46. };
  47.  
  48. rx = [0,1,2,0,1,2,0,1,2]
  49. ry = [0,1,2,1,2,0,2,0,1]
  50. pixels[2] = blankpixelmap(0,width[1],height[1]);
  51. for(acc=0;acc<width[0];acc++){
  52. for(acd=0;acd<height[0];acd++){
  53. white = pixels[1][acc][acd][0]
  54. red = pixels[1][acc][acd][1]
  55. green = pixels[1][acc][acd][2]
  56. //blue = pixels[1][acc][acd][3]
  57. //for(k=0;k<white;k++){
  58. // pixels[2][3*acc+rx[k]][3*acd+ry[k]] = 0
  59. //}
  60. for(k=white;k<white+red;k++){
  61. pixels[2][3*acc+rx[k]][3*acd+ry[k]] = 1
  62. }
  63. for(k=white+red;k<white+red+green;k++){
  64. pixels[2][3*acc+rx[k]][3*acd+ry[k]] = 2
  65. }
  66. for(k=white+red+green;k<9;k++){
  67. pixels[2][3*acc+rx[k]][3*acd+ry[k]] = 3
  68. }
  69. }
  70. }
  71.  
  72. mytext = ""
  73. time = 54000
  74. time2 = 0
  75. centerx = width[1]/2
  76. centery = height[1]/2
  77. for(i=1;i<width[1]/2;i++){
  78. myfunction(centerx-i,centery+i)
  79. myfunction(centerx-i,centery-i)
  80. myfunction(centerx+i,centery+i)
  81. for(j=1-i;j<i;j++){
  82. myfunction(centerx+j,centery+i)
  83. myfunction(centerx+j,centery-i)
  84. myfunction(centerx-i,centery+j)
  85. myfunction(centerx+i,centery+j)
  86. }
  87. myfunction(centerx+i,centery-i)
  88. }
  89.  
  90. b2 = fs.readFileSync('replay2.dat', 'hex');
  91. b2+= ""+mytext
  92.  
  93. time+=60*60*60*24//24hours
  94. b2+= "0c" + hex(time,5);//clear cursor //padding so replay doesnt end immediately after all the action
  95.  
  96. //var fs = require('fs');
  97. var buf = new Buffer.from(b2, 'hex');
  98. fs.writeFile('replay.dat', buf, (err) => { if (err) throw err; });
  99.  
  100. //console.log(pixels[1])
  101. //draw("factorio",1,pixels[2])
  102.  
  103.  
  104.  
  105. //-----------here be functions---------//
  106.  
  107.  
  108.  
  109. function myfunction(qx,qy){
  110. if(pixels[2][qx][qy]==3){
  111. mytext+= "4B"+ hex(time,5) + "28"+"00"+"04"+"000000"//craft 4 discharge remotes
  112. }
  113. mytext+= "53" + hex(time,5) + hex(3+pixels[2][qx][qy],1) + "00" + hex(1,1) + "000000"//cancel craft
  114. time2++
  115. if(time2%1000==0){
  116. time++
  117. }
  118. }
  119.  
  120. function hex(x,b){
  121. var hext = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];
  122. var out = "";
  123. for(m=0;m<b;m++){
  124. out+= hext[Math.floor( (x/Math.pow(16,2*m+1))%16 )] + hext[Math.floor( (x/Math.pow(16,2*m))%16 )];
  125. };
  126. return(out);
  127. };
  128.  
  129. function dectohex(yourNumber){
  130. return(yourNumber.toString(16));
  131. };
  132.  
  133. function hextodec(hexString){
  134. return(parseInt(hexString, 16));
  135. };
  136.  
  137. function blankpixelmap(bd,width,height){//bd is value for every pixel
  138. var ba = [];
  139. for(bb=0;bb<width;bb++){
  140. ba[bb] = [];
  141. for(bc=0;bc<height;bc++){
  142. ba[bb][bc] = bd;
  143. };
  144. };
  145. return(ba);
  146. };
  147.  
  148. function rgb2hex(rgb){//rgb in array
  149. var pad = ["","0","00","000","0000","00000","000000"];
  150. var aa = dectohex( rgb[0]+256*rgb[1]+256*256*rgb[2] );
  151. aa = pad[6-aa.length]+aa;
  152. return(aa);
  153. };
  154.  
  155. function draw(name,frame,hexmap){
  156. /*1920x804 header*/// var mytext = "424D36AA46000000000036000000280000008007000024030000010018000000000000AA460000000000000000000000000000000000";
  157. /*656,480 header*/// var mytext = "424D366A0E0000000000360000002800000090020000E00100000100180000000000006A0E0000000000000000000000000000000000";
  158. /*800x600 header*/// var mytext = "424D36F915000000000036000000280000002003000058020000010018000000000000F91500130B0000130B00000000000000000000";
  159. /*1920x1080 header*/ var mytext = "424D36EC5E000000000036000000280000008007000038040000010018000000000000EC5E0000000000000000000000000000000000";
  160. /*3840x2160 header*/// var mytext = "424D36B07B01000000003600000028000000000F000070080000010018000000000000B07B0100000000000000000000000000000000";
  161. for(ay=0;ay<hexmap[0].length;ay++){
  162. for(ax=0;ax<hexmap.length;ax++){
  163. mytext+=hexmap[ax][ay];
  164. };
  165. };
  166. var fs = require('fs');
  167. var buf = new Buffer.from(mytext, 'hex');
  168. var pad = ["000","00","0",""];
  169. //fs.writeFile(name+pad[(""+frame).length-1]+frame+'.bmp', buf, (err) => { if (err) throw err; });
  170.  
  171. fs.writeFile(name+frame+'.bmp', buf, (err) => { if (err) throw err; });
  172.  
  173. };
  174.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement