From bb1b6dd316dfec096483f2475487fc69447d532b Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Tue, 2 Feb 2021 22:25:11 +0000 Subject: [PATCH] Minor speed tweaks. Weapons targetting (debug only) --- !TheEscape/!RunImage,ffb | Bin 9342 -> 11105 bytes !TheEscape/!RunImage,ffb.bas | 62 ++++++++++++++++++++++++++++++++--- 2 files changed, 58 insertions(+), 4 deletions(-) diff --git a/!TheEscape/!RunImage,ffb b/!TheEscape/!RunImage,ffb index 666badb43e3e9c027b88ad23056bcfe2312161bc..5e768dcd67501f0df9c9bf66072b894d9e858986 100644 GIT binary patch literal 11105 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 R7SQ4{qw*lBW|EKm@L#6+nV|px diff --git a/!TheEscape/!RunImage,ffb.bas b/!TheEscape/!RunImage,ffb.bas index 54c1140..cb8ca6e 100644 --- a/!TheEscape/!RunImage,ffb.bas +++ b/!TheEscape/!RunImage,ffb.bas @@ -20,7 +20,7 @@ DEF PROC_main DIM PlayerLocation%(1) PlayerLocation%(X) = SCREENGFXWIDTH%/2 - PlayerLocation%(Y) = SCREENGFXHEIGHT%/6 + PlayerLocation%(Y) = SCREENGFXHEIGHT%/30 PlayerVelocity%=0 PlayerShields%=100 PlayerStructuralIntegrity%=100 @@ -28,6 +28,9 @@ DEF PROC_main DIM PlayerHitbox%(3) PlayerHitbox%() = 0,0,60,81 + LeftID% = -1 + RightID% = -1 + DIM EnemyHitbox%(1,3) EnemyHitbox%(0,0) = 0 EnemyHitbox%(0,1) = 0 @@ -52,12 +55,12 @@ DEF PROC_main EnemyLocations%(Enemy%,X) = RND(SCREENGFXWIDTH%) EnemyLocations%(Enemy%,Y) = SCREENGFXHEIGHT% + (RND(SCREENGFXHEIGHT%/2) * (Enemy% + 1)) EnemySprites$(Enemy%) = "durno_ship" - EnemyVelocity%(Enemy%,X) = RND(6) - 3 - EnemyVelocity%(Enemy%,Y) = RND(3) + 3 + EnemyVelocity%(Enemy%,X) = 0 + EnemyVelocity%(Enemy%,Y) = RND(3) + 2 EnemyHitboxID%(Enemy%) = RND(2)-1 IF EnemyHitboxID%(Enemy%) = 1 THEN EnemySprites$(Enemy%) = "durno_ship2" - EnemyVelocity%(Enemy%,X) = RND(8) - 4 + EnemyVelocity%(Enemy%,X) = RND(3) - 2 EnemyVelocity%(Enemy%,Y) = RND(10) + 6 ENDIF @@ -111,6 +114,7 @@ DEF PROC_main REM Player PROCplayer_ship_draw + PROCplayer_arc_calculatetarget PROCenemy_ship_draw @@ -260,6 +264,46 @@ DEF PROCplayer_ship_draw PROCdraw_sprite(ShipSprite$,PlayerLocation%(0),PlayerLocation%(1)) ENDPROC + +REM Calculate player ship's phaser arc +DEF PROCplayer_arc_calculatetarget +GCOL 0,0 +NoseX% = PlayerLocation%(X) + PlayerHitbox%(0) + (PlayerHitbox%(2)/2) +NoseY% = (PlayerLocation%(Y) + PlayerHitbox%(1) + PlayerHitbox%(3)) +REM LINE NoseX%, NoseY%, NoseX% + 200,NoseY% + 1000 +REM LINE NoseX%, NoseY%, NoseX%,NoseY% + 1000 +REM LINE NoseX%, NoseY%, NoseX% - 200,NoseY% + 1000 + +LeftDistance% = 1000 +LeftID% = -1 +RightDistance% = 1000 +RightID% = -1 + +FOR Enemy%=0 TO MaxEnemies% - 1 + LeftCornerX% = EnemyLocations%(Enemy%,X) + EnemyHitbox%(EnemyHitboxID%(Enemy%),X) + LeftCornerY% = EnemyLocations%(Enemy%,1) + EnemyHitbox%(EnemyHitboxID%(Enemy%),1) + RightCornerX% = LeftCornerX% + EnemyHitbox%(EnemyHitboxID%(Enemy%),2) + IF LeftCornerY% > NoseY% THEN + DistanceY% = LeftCornerY% - NoseY% + DistanceX% = ABS(NoseX% - ((LeftCornerX% + RightCornerX%) / 2)) + IF (DistanceY%/5) > DistanceX% THEN + IF (NoseX% - ((LeftCornerX% + RightCornerX%) / 2)) > 0 THEN + IF DistanceY% < LeftDistance% THEN + LeftDistance% = DistanceY% + LeftID% = Enemy% + ENDIF + ELSE + IF DistanceY% < RightDistance% THEN + RightDistance% = DistanceY% + RightID% = Enemy% + ENDIF + ENDIF + ENDIF + ENDIF +NEXT Enemy% + +ENDPROC + REM Input handling DEF PROCinputs *FX 4 @@ -296,6 +340,8 @@ DEF PROCdebugoutput PRINT "X: " + STR$(PlayerLocation%(0)) " Y: " STR$(PlayerLocation%(1)) PRINT "CPF: " + STR$(Cents% - LastCents%) PRINT "Scr: " + STR$(Scr%) + PRINT "Left: " + STR$(LeftID%) + PRINT "Right: " + STR$(RightID%) FOR Enemy%=0 TO MaxEnemies% - 1 PRINT "ENEMY:" STR$(Enemy%) + " " + STR$(EnemyLocations%(Enemy%,X)) + "," + STR$(EnemyLocations%(Enemy%,Y)) + " " + STR$(EnemyVelocity%(Enemy%,X)) + " " + STR$(EnemyVelocity%(Enemy%,Y)) @@ -307,6 +353,14 @@ DEF PROCdebugoutput NEXT Enemy% RECT PlayerLocation%(X) + PlayerHitbox%(0), PlayerLocation%(Y) + PlayerHitbox%(1), PlayerHitbox%(2), PlayerHitbox%(3) + + IF LeftID% >= 0 THEN + LINE PlayerLocation%(X), PlayerLocation%(Y), EnemyLocations%(LeftID%,X), EnemyLocations%(LeftID%,Y) + ENDIF + + IF RightID% >= 0 THEN + LINE PlayerLocation%(X), PlayerLocation%(Y), EnemyLocations%(RightID%,X), EnemyLocations%(RightID%,Y) + ENDIF ENDPROC REM Delay routine - thanks Sophie