Reads Mouse and keyboard input.
Change 'InputHit' to 'InputHit 1' to no wait for keystroke.
Dependencies:
Return values:
Example:
%Mouse% Cls Echo;Mouse Pos. is: !X!.!Y! Echo;Mouse button is: !Btn! Echo;Keyboard code and char.: !Kbd! - "!Char!" Echo;Is focused window?: !WStatus! Echo;Wheel Position: !Wheel!
Code:
<Macro=Mouse|1> If Not Defined __FData ( Set __FData=Mouse_!Random!.tmp For /L %# in (1,1,3) Do If Exist !__FData! Set __FData=Mouse_!Random!.tmp ) !Fn! Inputhit 1 >!__FData! For /F "Tokens=1-5" %A in (!__FData!) Do ( Set "Char=" If %A Equ -2 ( Set WStatus=Not Present ) Else Set WStatus=Focused If %A Geq 0 Set Y=%A If %B Geq 0 Set X=%B If %C Geq 0 If %C Leq 5 Set Btn=%C If %C Geq 10000 Set/a Wheel+=1 If %C Leq -10000 Set/a Wheel-=1 If "%E" Neq "" Set "Char=%E" Set Kbd=%D ) </Macro=Mouse>
Compare two objects and returns 'true (1)' if these are touching, else will return 'false (0)' as errorlevel
Dependencies:
Return values:
!Errorlevel! = (1) for 'are touching' and (0) for 'nothing'
Example:
Set Goomba.x=10 Set Goomba.y=10 Set Goomba.h=16 Set Goomba.w=16 Set Player.x=0 Set Player.y=0 Set Player.w=10 Set Player.h=15 %Physics% Player Goomba If !Errorlevel! Equ 1 Echo; Player touchs a goomba If !Errorlevel! Equ 0 Echo; Player still alive
Code:
<Macro=Physics|2> Set /a^ "__W_p=%1.W + %1.X,"^ "__H_p=%1.H + %1.Y,"^ "__X_p=%1.X,"^ "__Y_p=%1.Y" For /F "Tokens=1-2" %X in ("!%2!") Do ( Set /a^ "__W_e=%2.W + %Y,"^ "__H_e=%2.H + %X,"^ "__X_e=%Y,"^ "__Y_e=%X,"^ "__C1=0,"^ "__C2=0" Rem X If !__W_p! Gtr !__X_e! ( If !__W_p! Lss !__W_e! ( Set __C1=1 ) Else ( If !__X_p! Lss !__W_e! Set __C1=1 ) ) Rem Y If !__H_p! Gtr !__Y_e! ( If !__H_p! Lss !__H_e! ( Set __C2=1 ) Else ( If !__Y_p! Lss !__H_e! Set __C2=1 ) ) If "!__C1!!__C2!" == "11" (Call) Else (Call ) ) </Macro=Physics>
Fixed-floating point calculator.
Change prec var for decimal precision
Co-developer: einstein1969
Dependencies:
Return values:
Example:
%FCalc% 12.5 + 12.5 Echo;!Int!.!Float! %FCalc% 12 * 2.56 Echo;!Int!.!Float! %FCalc% 12 / 2.56 Echo;!Int!.!Float! %FCalc% 12 - 2.56 Echo;!Int!.!Float!
Code:
<Macro=FCalc|2> set Sum1=%1 set Mode=%2 set Sum2=%3 set prec=2 For %P in (!prec!) do ( For %T in (1;2) Do ( for /f tokens^=1-4^ delims^=+^"^ %f in ("!Sum%T!") do set Sum%T=0000000000%~f%~g%~h%~i set i%T=!Sum%T:*.=!0!Sum%T:~0,%P! For %I in ("!Sum%T:*.=!") do if not "%~I" == "!Sum%T!" set i%T=!Sum%T:.%~I=!!i%T:~0,1!!i%T:~1,%P! for /f "tokens=* delims=0" %z in ("!i%T!") do set /a "i%T=(%z+5)/10" ) set Div.acc=1!Sum1:~0,%P! if "!Mode!" equ "/" ( set /a Total=!i1!*!Div.acc!/!i2! ) else ( if "!Mode!" equ "*" ( set /a Total=!i1!*!i2!/!Div.acc! ) else set /a Total=!i1!!Mode!!i2! ) If !total! geq 0 ( set /a "Int=Total/Div.acc, Float=Total % Div.acc" ) else set /a "Int=Total/Div.acc, Float=-(Total % Div.acc)" set Float=!Sum1:~0,%P!!Float! set Float=!Float:~-%P! ) </Macro=FCalc>