2022-07-09 22:25:20 -04:00
var style = document . createElement ( 'style' ) ;
style . type = 'text/css' ;
style . id = 'findStatusStylesheet' ;
style . innerHTML = '.findStatus { color: #E11; text-decoration: none; }' ;
document . getElementsByTagName ( 'head' ) [ 0 ] . appendChild ( style ) ;
find = false ;
findElement = "sand" ;
findColorPulseTimer = 0 ;
2022-12-19 16:21:14 -05:00
findColorPulseTimerSubTimer = 0 ;
2022-07-09 22:25:20 -04:00
function marasi ( number ) {
return Math . min ( 255 , Math . round ( Math . abs ( Math . sin ( number ) * 255 ) ) ) ;
} ;
function updateFindDescription ( ) {
2022-12-19 16:21:14 -05:00
var elems = findElement ;
if ( elems instanceof Array ) {
elems = elems . join ( ", " ) ;
} ;
elements . find _toggle . desc = `
< em > I ' m running out of keybinds < / e m >
< span class = "findStatus" > If this text is green or underlined , find mode is on . < / s p a n > C u r r e n t l y f i n d i n g : $ { e l e m s } < s m a l l s t y l e = " f o n t - s i z e : 8 0 % ; " > ( t h i s d i s p l a y d o e s n o t u p d a t e a u t o m a t i c a l l y ) < / s m a l l > .
< span onclick = toggleFind ( ) style = "color: #ff00ff;" ; > Click here < /span> to toggle find mode. This highlights the currently selected element.<br/ >
< span style = 'color:#FF00FF' onClick = findFilterPrompt ( ) > Click here to configure the find filter . < / s p a n > ` ;
2022-07-09 22:25:20 -04:00
} ;
function toggleFind ( ) {
if ( find != true ) {
find = true ;
document . getElementById ( "findStatusStylesheet" ) . innerHTML = '.findStatus { color: #1E1; text-decoration: underline; }' ; //Displayed info doen't update until it's pulled up again, so I'm using CSS to dynamically change the color of an element.
} else {
find = false ;
document . getElementById ( "findStatusStylesheet" ) . innerHTML = '.findStatus { color: #E11; text-decoration: none; }' ;
} ;
updateFindDescription ( ) ;
} ;
2022-12-19 16:21:14 -05:00
findHighlighting = function ( ) {
2023-03-05 13:57:17 -05:00
//console.log(3);
2022-12-19 16:21:14 -05:00
if ( ! find ) {
return false ;
}
2022-07-09 22:25:20 -04:00
var newCurrentPixels = currentPixels ;
var pixelsFirst = [ ] ;
var pixelsLast = [ ] ;
var canvas = document . getElementById ( "game" ) ;
var ctx = canvas . getContext ( "2d" ) ;
for ( var i = 0 ; i < newCurrentPixels . length ; i ++ ) {
pixel = newCurrentPixels [ i ] ;
//if (pixelMap[pixel.x][pixel.y] == undefined || currentPixels.indexOf(pixel) == -1) {continue}
if ( pixel . del ) { continue } ;
if ( elements [ pixel . element ] . isGas ) {
pixelsLast . push ( pixel ) ;
} else {
pixelsFirst . push ( pixel ) ;
} ;
} ;
var pixelDrawList = pixelsFirst . concat ( pixelsLast ) ;
for ( var i = 0 ; i < pixelDrawList . length ; i ++ ) {
pixel = pixelDrawList [ i ] ;
if ( pixelMap [ pixel . x ] [ pixel . y ] == undefined ) { continue } ;
2022-12-19 16:21:14 -05:00
if ( findElement instanceof Array ? findElement . includes ( pixel . element ) : pixel . element === findElement ) {
ctx . fillStyle = "rgb(255," + marasi ( findColorPulseTimer / 10 ) + ",0)" ;
ctx . fillRect ( pixel . x * pixelSize , pixel . y * pixelSize , pixelSize , pixelSize ) ;
2022-07-09 22:25:20 -04:00
} ;
} ;
2022-12-19 16:21:14 -05:00
findColorPulseTimerSubTimer ++ ;
if ( findColorPulseTimerSubTimer >= 2 ) {
findColorPulseTimer ++ ;
findColorPulseTimerSubTimer = 0 ;
} ;
return true ;
2022-07-09 22:25:20 -04:00
} ;
elements . find _toggle = {
color : [ "#000000" , "#000000" , "#000000" , "#000000" , "#ff0000" , "#ff0000" , "#ff0000" , "#ff0000" ] ,
name : "find toggle (look at info)" ,
behavior : behaviors . SELFDELETE ,
category : "tools" ,
excludeRandom : true ,
2022-12-19 16:21:14 -05:00
desc : `
< em > I ' m running out of keybinds < / e m >
< span class = "findStatus" > If this text is green or underlined , find mode is on . < / s p a n > C u r r e n t l y f i n d i n g : s a n d < s m a l l s t y l e = " f o n t - s i z e : 8 0 % ; " > ( t h i s d i s p l a y d o e s n o t u p d a t e a u t o m a t i c a l l y ) < / s m a l l > .
< span onclick = toggleFind ( ) style = "color: #ff00ff;" ; > Click here < /span> to toggle find mode. This highlights the currently selected element.<br/ >
< span style = 'color:#FF00FF' onClick = findFilterPrompt ( ) > Click here to configure the find filter . < / s p a n > ` ,
} ;
function findFilterPrompt ( ) {
var preElement = prompt ( "Enter the elements you want to highlight\nSeparate multiple elements with commas" ) ;
if ( preElement === null || preElement === "" ) {
return false ;
} ;
if ( preElement . includes ( "," ) ) {
preElement = preElement . split ( "," ) ;
findElement = preElement ;
updateFindDescription ( ) ;
return findElement ;
} ;
findElement = preElement ;
updateFindDescription ( ) ;
return findElement ;
} ;
2023-03-05 13:57:17 -05:00
runAfterLoad ( function ( ) {
oldDrawPixels = drawPixels ;
2023-03-08 17:04:20 -05:00
drawPixels = function ( forceTick = false ) {
oldDrawPixels ( forceTick ) ;
2023-03-05 13:57:17 -05:00
//console.log(find);
if ( find ) { findHighlighting ( ) } ;
} ;
} ) ;