From 0855690d5c8128eafe8f49f535c4ab124e92360d Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Sun, 31 Jan 2021 17:43:10 +0000 Subject: [PATCH] Major re-arrange --- !TheEscape/!RunImage,ffb | Bin 5660 -> 6217 bytes !TheEscape/!RunImage,ffb.bas | 129 ++++++++++++++++++++++------------- 2 files changed, 81 insertions(+), 48 deletions(-) diff --git a/!TheEscape/!RunImage,ffb b/!TheEscape/!RunImage,ffb index ac3162206674d5afd7b0ce99f504a53632058189..e55ca67a10e0f6760e854f9c9ffdf4791e030a65 100644 GIT binary patch delta 2084 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 Dd!e2a diff --git a/!TheEscape/!RunImage,ffb.bas b/!TheEscape/!RunImage,ffb.bas index 71fe5d4..7220699 100644 --- a/!TheEscape/!RunImage,ffb.bas +++ b/!TheEscape/!RunImage,ffb.bas @@ -68,59 +68,22 @@ DEF PROC_main CLS - REM Space dust / stars - FOR Spec%=0 TO 49 - GCOL 0,0 - LINE SpecLocations%(0,Spec%),SpecLocations%(1,Spec%),SpecLocations%(0,Spec%),SpecLocations%(1,Spec%) - SpecLocations%(1,Spec%) = SpecLocations%(1,Spec%) - ((Cents% - LastCents%) * PlayerVelocity%/10) - IF SpecLocations%(1,Spec%) < 0 THEN - SpecLocations%(1,Spec%) = SCREENGFXHEIGHT% - SpecLocations%(0,Spec%) = RND(SCREENGFXWIDTH%) - ENDIF - NEXT Spec% - - REM Draw LCARS in top left - PROCdraw_sprite("lcars",4,SCREENGFXHEIGHT%-180) - - REM If using l/r sprites we debounce to stop it looking twitchy - IF Cents% > ResetShipSprite% THEN - ShipSprite$ = "player_ship" - ENDIF - - REM Handle Key inputs + REM Controls PROCinputs - REM Attribute names - GCOL 0,0 - MOVE 75,1150 - PRINT "Sheilds" - MOVE 75,1120 - PRINT "Integrity" - MOVE 75,1090 - PRINT "Velocity" + REM Environment + PROCspacedust_draw - REM Attribute values - GCOL 0,7 - MOVE 130,1150 - PRINT PlayerShields% - MOVE 130,1120 - PRINT PlayerStructuralIntegrity% - MOVE 130,1090 - PRINT PlayerVelocity% + REM NPCs + PROCenemy_ship_move + PROCenemy_ship_collide + PROCenemy_ship_draw - REM Draw player ship - PROCdraw_sprite(ShipSprite$,PlayerLocation%(0),PlayerLocation%(1)) + REM Player + PROCplayer_ship_draw - - REM TODO: Only uses player velocity currently (/2 so they don't match stars) - FOR Enemy%=0 TO MaxEnemies% - 1 - EnemyLocations%(Enemy%,1) = EnemyLocations%(Enemy%,1) - ((Cents% - LastCents%) * PlayerVelocity%/20) - IF EnemyLocations%(Enemy%,1) < 0 THEN - EnemyLocations%(Enemy%,1) = SCREENGFXHEIGHT% + RND(SCREENGFXHEIGHT%) - EnemyLocations%(Enemy%,0) = RND(SCREENGFXWIDTH%) - ENDIF - PROCdraw_sprite(EnemySprites$(Enemy%),EnemyLocations%(Enemy%,0),EnemyLocations%(Enemy%,1)) - NEXT Enemy% + REM UI + PROChud_draw IF DebugOut% = 1 THEN PROCdebugoutput @@ -139,6 +102,76 @@ DEF PROC_main ENDPROC +DEF PROCspacedust_draw + REM Space dust / stars + FOR Spec%=0 TO 49 + GCOL 0,0 + LINE SpecLocations%(0,Spec%),SpecLocations%(1,Spec%),SpecLocations%(0,Spec%),SpecLocations%(1,Spec%) + SpecLocations%(1,Spec%) = SpecLocations%(1,Spec%) - ((Cents% - LastCents%) * PlayerVelocity%/10) + IF SpecLocations%(1,Spec%) < 0 THEN + SpecLocations%(1,Spec%) = SCREENGFXHEIGHT% + SpecLocations%(0,Spec%) = RND(SCREENGFXWIDTH%) + ENDIF + NEXT Spec% +ENDPROC + +REM Move enemy ship (display and physical) +DEF PROCenemy_ship_move + REM TODO: Only uses player velocity currently (/2 so they don't match stars) + FOR Enemy%=0 TO MaxEnemies% - 1 + EnemyLocations%(Enemy%,1) = EnemyLocations%(Enemy%,1) - ((Cents% - LastCents%) * PlayerVelocity%/20) + IF EnemyLocations%(Enemy%,1) < 0 THEN + EnemyLocations%(Enemy%,1) = SCREENGFXHEIGHT% + RND(SCREENGFXHEIGHT%) + EnemyLocations%(Enemy%,0) = RND(SCREENGFXWIDTH%) + ENDIF + NEXT Enemy% +ENDPROC + +REM Hud drawing (sprites and real-time) +DEF PROChud_draw + REM Draw LCARS in top left + PROCdraw_sprite("lcars",4,SCREENGFXHEIGHT%-180) + + REM Attribute names + GCOL 0,0 + MOVE 75,1150 + PRINT "Sheilds" + MOVE 75,1120 + PRINT "Integrity" + MOVE 75,1090 + PRINT "Velocity" + + REM Attribute values + GCOL 0,7 + MOVE 130,1150 + PRINT PlayerShields% + MOVE 130,1120 + PRINT PlayerStructuralIntegrity% + MOVE 130,1090 + PRINT PlayerVelocity% +ENDPROC + +REM Handle enemy collisions with anything +DEF PROCenemy_ship_collide +ENDPROC + +REM Draw enemy ships +DEFPROCenemy_ship_draw + REM TODO: Only uses player velocity currently (/2 so they don't match stars) + FOR Enemy%=0 TO MaxEnemies% - 1 + PROCdraw_sprite(EnemySprites$(Enemy%),EnemyLocations%(Enemy%,0),EnemyLocations%(Enemy%,1)) + NEXT Enemy% +ENDPROC + +REM Draw player ship +DEF PROCplayer_ship_draw + REM If using l/r sprites we debounce to stop it looking twitchy + IF Cents% > ResetShipSprite% THEN + ShipSprite$ = "player_ship" + ENDIF + PROCdraw_sprite(ShipSprite$,PlayerLocation%(0),PlayerLocation%(1)) +ENDPROC + REM Input handling DEF PROCinputs *FX 4