Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var tt = 0;
- if(process.argv.length>2){
- tt = Number(process.argv[2]);
- };
- var width = [240,3*240];
- var height = [240,3*240];
- var pixels = [];
- pixels[0] = blankpixelmap(0,width[0],height[0]);
- var fs = require('fs');
- b1 = fs.readFileSync('colours0.bmp', 'hex');
- for(dc=0;dc<width[0]*height[0];dc++){
- pixels[0][dc%width[0]][Math.floor(dc/width[0])] = [(hextodec(b1[112+6*dc])*16+hextodec(b1[113+6*dc])),
- (hextodec(b1[110+6*dc])*16+hextodec(b1[111+6*dc])),
- (hextodec(b1[108+6*dc])*16+hextodec(b1[109+6*dc]))];
- };
- pixels[1] = blankpixelmap([0,0,0,0],width[0],height[0]);
- for(acc=0;acc<width[0];acc++){
- for(acd=0;acd<height[0];acd++){
- nwhite = 0
- nred = 0
- ngreen = 0
- nblue = 0
- for(n=0;n<9;n++){
- white = Math.min(pixels[0][acc][acd][0],pixels[0][acc][acd][1],pixels[0][acc][acd][2])/(1+nwhite)
- red = pixels[0][acc][acd][0]/(1+nwhite+nred)
- green = pixels[0][acc][acd][1]/(1+nwhite+ngreen)
- blue = pixels[0][acc][acd][2]/(1+nwhite+nblue)
- if( white>=red && white>=green && white>=blue ){
- nwhite++
- }else if(red>=green && red>=blue){
- nred++
- }else if(green>=blue){
- ngreen++
- }else{
- nblue++
- }
- }
- pixels[1][acc][acd] = [nwhite,nred,ngreen,nblue]
- };
- };
- rx = [0,1,2,0,1,2,0,1,2]
- ry = [0,1,2,1,2,0,2,0,1]
- pixels[2] = blankpixelmap(0,width[1],height[1]);
- for(acc=0;acc<width[0];acc++){
- for(acd=0;acd<height[0];acd++){
- white = pixels[1][acc][acd][0]
- red = pixels[1][acc][acd][1]
- green = pixels[1][acc][acd][2]
- //blue = pixels[1][acc][acd][3]
- //for(k=0;k<white;k++){
- // pixels[2][3*acc+rx[k]][3*acd+ry[k]] = 0
- //}
- for(k=white;k<white+red;k++){
- pixels[2][3*acc+rx[k]][3*acd+ry[k]] = 1
- }
- for(k=white+red;k<white+red+green;k++){
- pixels[2][3*acc+rx[k]][3*acd+ry[k]] = 2
- }
- for(k=white+red+green;k<9;k++){
- pixels[2][3*acc+rx[k]][3*acd+ry[k]] = 3
- }
- }
- }
- mytext = ""
- time = 54000
- time2 = 0
- centerx = width[1]/2
- centery = height[1]/2
- for(i=1;i<width[1]/2;i++){
- myfunction(centerx-i,centery+i)
- myfunction(centerx-i,centery-i)
- myfunction(centerx+i,centery+i)
- for(j=1-i;j<i;j++){
- myfunction(centerx+j,centery+i)
- myfunction(centerx+j,centery-i)
- myfunction(centerx-i,centery+j)
- myfunction(centerx+i,centery+j)
- }
- myfunction(centerx+i,centery-i)
- }
- b2 = fs.readFileSync('replay2.dat', 'hex');
- b2+= ""+mytext
- time+=60*60*60*24//24hours
- b2+= "0c" + hex(time,5);//clear cursor //padding so replay doesnt end immediately after all the action
- //var fs = require('fs');
- var buf = new Buffer.from(b2, 'hex');
- fs.writeFile('replay.dat', buf, (err) => { if (err) throw err; });
- //console.log(pixels[1])
- //draw("factorio",1,pixels[2])
- //-----------here be functions---------//
- function myfunction(qx,qy){
- if(pixels[2][qx][qy]==3){
- mytext+= "4B"+ hex(time,5) + "28"+"00"+"04"+"000000"//craft 4 discharge remotes
- }
- mytext+= "53" + hex(time,5) + hex(3+pixels[2][qx][qy],1) + "00" + hex(1,1) + "000000"//cancel craft
- time2++
- if(time2%1000==0){
- time++
- }
- }
- function hex(x,b){
- var hext = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];
- var out = "";
- for(m=0;m<b;m++){
- out+= hext[Math.floor( (x/Math.pow(16,2*m+1))%16 )] + hext[Math.floor( (x/Math.pow(16,2*m))%16 )];
- };
- return(out);
- };
- function dectohex(yourNumber){
- return(yourNumber.toString(16));
- };
- function hextodec(hexString){
- return(parseInt(hexString, 16));
- };
- function blankpixelmap(bd,width,height){//bd is value for every pixel
- var ba = [];
- for(bb=0;bb<width;bb++){
- ba[bb] = [];
- for(bc=0;bc<height;bc++){
- ba[bb][bc] = bd;
- };
- };
- return(ba);
- };
- function rgb2hex(rgb){//rgb in array
- var pad = ["","0","00","000","0000","00000","000000"];
- var aa = dectohex( rgb[0]+256*rgb[1]+256*256*rgb[2] );
- aa = pad[6-aa.length]+aa;
- return(aa);
- };
- function draw(name,frame,hexmap){
- /*1920x804 header*/// var mytext = "424D36AA46000000000036000000280000008007000024030000010018000000000000AA460000000000000000000000000000000000";
- /*656,480 header*/// var mytext = "424D366A0E0000000000360000002800000090020000E00100000100180000000000006A0E0000000000000000000000000000000000";
- /*800x600 header*/// var mytext = "424D36F915000000000036000000280000002003000058020000010018000000000000F91500130B0000130B00000000000000000000";
- /*1920x1080 header*/ var mytext = "424D36EC5E000000000036000000280000008007000038040000010018000000000000EC5E0000000000000000000000000000000000";
- /*3840x2160 header*/// var mytext = "424D36B07B01000000003600000028000000000F000070080000010018000000000000B07B0100000000000000000000000000000000";
- for(ay=0;ay<hexmap[0].length;ay++){
- for(ax=0;ax<hexmap.length;ax++){
- mytext+=hexmap[ax][ay];
- };
- };
- var fs = require('fs');
- var buf = new Buffer.from(mytext, 'hex');
- var pad = ["000","00","0",""];
- //fs.writeFile(name+pad[(""+frame).length-1]+frame+'.bmp', buf, (err) => { if (err) throw err; });
- fs.writeFile(name+frame+'.bmp', buf, (err) => { if (err) throw err; });
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement