rendered paste bodyon *:close:@SF: {
sfStop
}
alias sfPrepare {
window -pdk0 +t @SF -1 -1 320 220
drawrect -rf @SF 0 1 0 0 314 188
sfStop
set %sfDrawId 0
set %sfDelId 1
set %sfFrames 0
set %sfTime 0
set %sfFrame 0
;set %sfLastFrame $ticks
hmake sfDotCoordX 1000
hmake sfDotCoordY 1000
hmake sfDotSize 1000
hmake sfDotSpeed 1000
hmake sfDotColor 1000
sfCreateObj 10
.timerSfUpdateFrame -mo 0 1 sfUpdateFrame
}
alias sfStop {
.timerSfUpdateFrame off
.timersfCreateId off
unset sfDrawId
unset sfDelid
unset %sfFrames
unset %sfTime
unset %sfFrame
unset %sfTotalObj
;unset %sfLastFrame
if ($hget(sfDotCoordX)) { hfree sfDotCoordX }
if ($hget(sfDotCoordY)) { hfree sfDotCoordY }
if ($hget(sfDotSize)) { hfree sfDotSize }
if ($hget(sfDotSpeed)) { hfree sfDotSpeed }
if ($hget(sfDotColor)) { hfree sfDotColor }
drawrect -rf @SF 0 1 0 0 314 188
}
alias sfUpdateFrame {
drawrect -rnf @SF 0 1 0 0 314 188
var %x %sfdelId
while (%sfDrawId >= %x) {
var %cx = $hget(sfDotCoordX,%x)
var %cx = %cx + $hget(sfDotSpeed,%x)
;original 314
if (%cx > 317) {
sfRecreateObj %x
}
else {
drawdot -nr @SF $hget(sfDotColor,%x) $hget(sfDotSize,%x) %cx $hget(sfDotCoordY,%x)
hadd sfDotCoordX %x %cx
}
inc %x
}
drawtext -rn @SF 16777215 2 2 %sfFrame %sfTotalObj
inc %sfFrames
if ($calc($ticks - %sfTime) > 1000) {
set %sfTime $ticks
set %sfFrame %sfFrames
if (%sfFrame > 31) {
.timersfCreateId -mo 5 5 sfCreateObj 1
}
elseif (%sfFrame < 30) {
sfDelObj 1
}
set %sfFrames 0
}
drawdot @SF
}
alias sfRecreateObj {
;hadd sfDotCoordX $1 $calc($rand(1,30) * -1)
hadd sfDotCoordX $1 -1
hadd sfDotCoordY $1 $rand(1,187)
hadd sfDotSize $1 $rand(1,4)
hadd sfDotSpeed $1 $calc($rand(100,600) / 100)
hadd sfDotColor $1 $rand(1,16777215)
}
alias sfCreateObj {
if ($calc($hget(sfDotCoordX,0).item + $1) > 1000) { echo -a OBJECT LIMIT REACHED | return }
var %x = $1
while (%x) {
var %sid $sfId
sfRecreateObj %sid
;hadd sfDotCoordX %sid $rand(1,314)
dec %x
}
set %sfTotalObj $hget(sfDotCoordX,0).item
}
alias sfDelObj {
if ($hget(sfDotCoordX,0).item < $1) { echo -a TOTAL OBJECTS: $v1 | return }
var %x = $1
while (%x) {
hdel sfDotCoordX %sfDelId
hdel sfDotCoordY %sfDelId
hdel sfDotSize %sfDelId
hdel sfDotSpeed %sfDelId
hdel sfDotColor %sfDelId
inc %sfDelId
dec %x
}
set %sfTotalObj $hget(sfDotCoordX,0).item
}
alias sfId {
inc %sfDrawId
return %sfDrawId
}