mirror of
https://github.com/stevenhowes/TheEscape.git
synced 2026-05-27 00:03:25 +01:00
Enemies now re-spawn with new attributes. Clearer debug. Collisions record damage to NPC and player.
This commit is contained in:
Binary file not shown.
@@ -1,11 +1,15 @@
|
|||||||
SCREENMODE%=32
|
SCREENMODE%=32
|
||||||
SCREENGFXWIDTH%=1600
|
SCREENGFXWIDTH%=1600
|
||||||
SCREENGFXHEIGHT%=1200
|
SCREENGFXHEIGHT%=1200
|
||||||
|
MaxEnemies% = 10
|
||||||
|
PlayerYHeightDivide%=8
|
||||||
|
|
||||||
IF INKEY(-42) THEN
|
IF INKEY(-42) THEN
|
||||||
SCREENMODE%=28
|
SCREENMODE%=28
|
||||||
SCREENGFXWIDTH%=1280
|
SCREENGFXWIDTH%=1280
|
||||||
SCREENGFXHEIGHT%=960
|
SCREENGFXHEIGHT%=960
|
||||||
|
MaxEnemies% = 5
|
||||||
|
PlayerYHeightDivide%=6
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
X = 0
|
X = 0
|
||||||
@@ -20,7 +24,7 @@ DEF PROC_main
|
|||||||
|
|
||||||
DIM PlayerLocation%(1)
|
DIM PlayerLocation%(1)
|
||||||
PlayerLocation%(X) = SCREENGFXWIDTH%/2
|
PlayerLocation%(X) = SCREENGFXWIDTH%/2
|
||||||
PlayerLocation%(Y) = SCREENGFXHEIGHT%/30
|
PlayerLocation%(Y) = SCREENGFXHEIGHT%/PlayerYHeightDivide%
|
||||||
PlayerVelocity%=0
|
PlayerVelocity%=0
|
||||||
PlayerShields%=100
|
PlayerShields%=100
|
||||||
PlayerStructuralIntegrity%=100
|
PlayerStructuralIntegrity%=100
|
||||||
@@ -50,26 +54,17 @@ DEF PROC_main
|
|||||||
XMovePerCent%=5
|
XMovePerCent%=5
|
||||||
ResetShipSprite% = 0
|
ResetShipSprite% = 0
|
||||||
|
|
||||||
MaxEnemies% = 10
|
|
||||||
DIM EnemyLocations%(MaxEnemies% - 1,1)
|
DIM EnemyLocations%(MaxEnemies% - 1,1)
|
||||||
DIM EnemySprites$(MaxEnemies% - 1)
|
DIM EnemySprites$(MaxEnemies% - 1)
|
||||||
DIM EnemyHitboxID%(MaxEnemies% - 1)
|
DIM EnemyHitboxID%(MaxEnemies% - 1)
|
||||||
DIM EnemyVelocity%(MaxEnemies% - 1,1)
|
DIM EnemyVelocity%(MaxEnemies% - 1,1)
|
||||||
|
DIM EnemyHealth%(MaxEnemies% - 1)
|
||||||
|
DIM EnemyCollidable%(MaxEnemies% -1)
|
||||||
|
DIM EnemyCollideForce%(MaxEnemies% -1)
|
||||||
|
|
||||||
REM Random it up for now
|
REM Random it up for now
|
||||||
FOR Enemy%=0 TO MaxEnemies% - 1
|
FOR Enemy%=0 TO MaxEnemies% - 1
|
||||||
EnemyLocations%(Enemy%,X) = RND(SCREENGFXWIDTH%)
|
PROCrespawn_enemy(Enemy%)
|
||||||
EnemyLocations%(Enemy%,Y) = SCREENGFXHEIGHT% + (RND(SCREENGFXHEIGHT%/2) * (Enemy% + 1))
|
|
||||||
EnemySprites$(Enemy%) = "durno_ship"
|
|
||||||
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(3) - 2
|
|
||||||
EnemyVelocity%(Enemy%,Y) = RND(10) + 6
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
NEXT Enemy%
|
NEXT Enemy%
|
||||||
|
|
||||||
REM Show/hide debug display
|
REM Show/hide debug display
|
||||||
@@ -103,8 +98,9 @@ DEF PROC_main
|
|||||||
REM NPCs
|
REM NPCs
|
||||||
PROCenemy_ship_move
|
PROCenemy_ship_move
|
||||||
PROCenemy_ship_collide_player
|
PROCenemy_ship_collide_player
|
||||||
PROCenemy_ship_collide_npc
|
REM PROCenemy_ship_collide_npc
|
||||||
PROCplayer_arc_calculatetarget
|
PROCplayer_arc_calculatetarget
|
||||||
|
PROCenemy_ship_handle_damage
|
||||||
|
|
||||||
REM Still not sure about this bollocks, but it does seem to work now
|
REM Still not sure about this bollocks, but it does seem to work now
|
||||||
SYS "OS_Byte",19
|
SYS "OS_Byte",19
|
||||||
@@ -136,6 +132,28 @@ DEF PROC_main
|
|||||||
|
|
||||||
ENDPROC
|
ENDPROC
|
||||||
|
|
||||||
|
DEF PROCenemy_ship_handle_damage
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
DEF PROCrespawn_enemy(Enemy%)
|
||||||
|
EnemyLocations%(Enemy%,X) = RND(SCREENGFXWIDTH%)
|
||||||
|
EnemyLocations%(Enemy%,Y) = SCREENGFXHEIGHT% + (RND(SCREENGFXHEIGHT%/2) * (Enemy% + 1))
|
||||||
|
EnemySprites$(Enemy%) = "durno_ship"
|
||||||
|
EnemyVelocity%(Enemy%,X) = 0
|
||||||
|
EnemyVelocity%(Enemy%,Y) = RND(3) + 2
|
||||||
|
EnemyHitboxID%(Enemy%) = RND(2)-1
|
||||||
|
EnemyHealth%(Enemy%) = 100
|
||||||
|
EnemyCollidable%(Enemy%) = 1
|
||||||
|
EnemyCollideForce%(Enemy%) = 1000
|
||||||
|
IF EnemyHitboxID%(Enemy%) = 1 THEN
|
||||||
|
EnemySprites$(Enemy%) = "durno_ship2"
|
||||||
|
EnemyVelocity%(Enemy%,X) = RND(3) - 2
|
||||||
|
EnemyVelocity%(Enemy%,Y) = RND(10) + 6
|
||||||
|
EnemyHealth%(Enemy%) = 30
|
||||||
|
EnemyCollideForce%(Enemy%) = 30
|
||||||
|
ENDIF
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
DEF PROCspecks_draw
|
DEF PROCspecks_draw
|
||||||
REM Specks / stars
|
REM Specks / stars
|
||||||
FOR Speck%=0 TO 49
|
FOR Speck%=0 TO 49
|
||||||
@@ -157,8 +175,7 @@ DEF PROCenemy_ship_move
|
|||||||
EnemyLocations%(Enemy%,X) = EnemyLocations%(Enemy%,X) - ((Cents% - LastCents%) * EnemyVelocity%(Enemy%,X))
|
EnemyLocations%(Enemy%,X) = EnemyLocations%(Enemy%,X) - ((Cents% - LastCents%) * EnemyVelocity%(Enemy%,X))
|
||||||
|
|
||||||
IF EnemyLocations%(Enemy%,Y) <= 0 THEN
|
IF EnemyLocations%(Enemy%,Y) <= 0 THEN
|
||||||
EnemyLocations%(Enemy%,Y) = SCREENGFXHEIGHT% + RND(SCREENGFXHEIGHT%)
|
PROCrespawn_enemy(Enemy%)
|
||||||
EnemyLocations%(Enemy%,X) = RND(SCREENGFXWIDTH%)
|
|
||||||
ENDIF
|
ENDIF
|
||||||
NEXT Enemy%
|
NEXT Enemy%
|
||||||
ENDPROC
|
ENDPROC
|
||||||
@@ -214,7 +231,7 @@ DEF PROCenemy_ship_collide_npc
|
|||||||
NEXT Enemy%
|
NEXT Enemy%
|
||||||
ENDPROC
|
ENDPROC
|
||||||
|
|
||||||
REM Handle enemy collisions with anything
|
REM Handle enemy collisions with player
|
||||||
DEF PROCenemy_ship_collide_player
|
DEF PROCenemy_ship_collide_player
|
||||||
FOR Enemy%=0 TO MaxEnemies% - 1
|
FOR Enemy%=0 TO MaxEnemies% - 1
|
||||||
|
|
||||||
@@ -231,11 +248,14 @@ DEF PROCenemy_ship_collide_player
|
|||||||
h2 = PlayerHitbox%(3)
|
h2 = PlayerHitbox%(3)
|
||||||
IF FNcollide(x1, y1, w1, h1, x2, y2, w2, h2) = 1 THEN
|
IF FNcollide(x1, y1, w1, h1, x2, y2, w2, h2) = 1 THEN
|
||||||
MOVE x1+w1,y1+h1
|
MOVE x1+w1,y1+h1
|
||||||
PlayerVelocity% = 0
|
IF EnemyCollidable%(Enemy%) = 1 THEN
|
||||||
PRINT "BOOM"
|
PlayerVelocity% = PlayerVelocity% / 2
|
||||||
REM IF DebugOut% = 1 THEN
|
EnemyHealth%(Enemy%) = EnemyHealth%(Enemy%) - 30
|
||||||
REM PRINT " hits player"
|
PlayerStructuralIntegrity% = PlayerStructuralIntegrity% - EnemyCollideForce%(Enemy%)
|
||||||
REM ENDIF
|
EnemyCollidable%(Enemy%) = 0
|
||||||
|
EnemyVelocity%(Enemy%,X) = 0
|
||||||
|
EnemyVelocity%(Enemy%,Y) = 0
|
||||||
|
ENDIF
|
||||||
ENDIF
|
ENDIF
|
||||||
NEXT Enemy%
|
NEXT Enemy%
|
||||||
ENDPROC
|
ENDPROC
|
||||||
@@ -273,7 +293,7 @@ ENDPROC
|
|||||||
|
|
||||||
REM Calculate player ship's phaser arc
|
REM Calculate player ship's phaser arc
|
||||||
DEF PROCplayer_arc_calculatetarget
|
DEF PROCplayer_arc_calculatetarget
|
||||||
NoseX% = PlayerLocation%(x) + PlayerHitbox%(0) + (PlayerHitbox%(2)/2)
|
NoseX% = PlayerLocation%(X) + PlayerHitbox%(0) + (PlayerHitbox%(2)/2)
|
||||||
NoseXLeft% = PlayerLocation%(X) + PlayerHitbox%(0)
|
NoseXLeft% = PlayerLocation%(X) + PlayerHitbox%(0)
|
||||||
NoseXRight% = PlayerLocation%(X) + PlayerHitbox%(0) + PlayerHitbox%(2)
|
NoseXRight% = PlayerLocation%(X) + PlayerHitbox%(0) + PlayerHitbox%(2)
|
||||||
NoseY% = (PlayerLocation%(Y) + PlayerHitbox%(1) + PlayerHitbox%(3))
|
NoseY% = (PlayerLocation%(Y) + PlayerHitbox%(1) + PlayerHitbox%(3))
|
||||||
@@ -358,6 +378,13 @@ DEF PROCplayer_target_draw
|
|||||||
ENDIF
|
ENDIF
|
||||||
ENDPROC
|
ENDPROC
|
||||||
|
|
||||||
|
DEF FNpad(String$,Length%)
|
||||||
|
OutString$=String$
|
||||||
|
WHILE LEN(OutString$) < Length%
|
||||||
|
OutString$ = OutString$ + " "
|
||||||
|
ENDWHILE
|
||||||
|
=OutString$
|
||||||
|
|
||||||
REM Debug prints
|
REM Debug prints
|
||||||
DEF PROCdebugoutput
|
DEF PROCdebugoutput
|
||||||
MOVE 0,500
|
MOVE 0,500
|
||||||
@@ -368,7 +395,7 @@ DEF PROCdebugoutput
|
|||||||
PRINT "Right: " + STR$(RightID%)
|
PRINT "Right: " + STR$(RightID%)
|
||||||
|
|
||||||
FOR Enemy%=0 TO MaxEnemies% - 1
|
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))
|
PRINT "NPC:" STR$(Enemy%) + " " + FNpad(STR$(EnemyLocations%(Enemy%,X)),4) + " " + FNpad(STR$(EnemyLocations%(Enemy%,Y)),4) + " " + FNpad(STR$(EnemyVelocity%(Enemy%,X)),3) + " " + FNpad(STR$(EnemyVelocity%(Enemy%,Y)),3) + " " + FNpad(STR$(EnemyHealth%(Enemy%)),3)
|
||||||
NEXT Enemy%
|
NEXT Enemy%
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user