$OBJECT=ShipClass
$OBJECT=BubbleClass
$OBJECT=AmmoClass

Option Explicit

'----------------------------------------------------------------------------
' Game1.txt
'----------------------------------------------------------------------------
' Use path to this file as parameter to Sprite.exe.  E.g.:
'    Sprite C:\Tmp\Game2.txt
' See "Game.Pix" for list of images available, numbered 0-n.
'----------------------------------------------------------------------------

Dim sShip               'Player's ship


'----------------------------------------------------------------------------
' GAME events
'
Sub Game_NewGame()
'   ------------
    'Bullets and ammo can collide (note: bit 1 is reserved)
    BubbleClass.Collide = 2
    AmmoClass.Collide   = 2

    ShipClass.Image   = 32	'Ship
    BubbleClass.Image = 60	'Small bubble
    AmmoClass.Image   = 34	'Bullet

    'Create player's ship centered on screen:
    Set sShip = ShipClass.CreateSprite(Game.Width / 2, Game.Height / 2, 0)

    'Create a bubble for player to fire at
    BubbleClass.CreateSprite 0, 0, 0
End Sub


Sub Game_KeyPress(ByVal ch)
'   ------------
    Dim sT

    'Fire if Space hit
    If ch = 32 Then
        Set sT = AmmoClass.CreateSprite(sShip.Left, sShip.Top, 0)
        sT.Vx = 0 : sT.Vy = -5
        Set sT = AmmoClass.CreateSprite(sShip.Left, sShip.Top, 0)
        sT.Vx = 0 : sT.Vy = 5
        Set sT = AmmoClass.CreateSprite(sShip.Left, sShip.Top, 0)
        sT.Vx = -5 : sT.Vy = 0
        Set sT = AmmoClass.CreateSprite(sShip.Left, sShip.Top, 0)
        sT.Vx = 5 : sT.Vy = 0
    End If
End Sub


Sub Game_Collide(ByVal sLowId, ByVal sHighId, ByVal coll)
'   ------------
    Dim bubble
    Dim ammo

    If coll = 2 Then
        Set bubble = sLowId
        Set ammo   = sHighId
        ammo.Remove
        If bubble.Image <= 57 Then
            Game.AddScore 50
            bubble.Remove
            BubbleClass.CreateSprite bubble.Left, bubble.Top, 0
        Else
            bubble.Image = bubble.Image - 1
            Game.AddScore 5
        End If
    End If
End Sub


'----------------------------------------------------------------------------
' BubbleClass events
'
Sub BubbleClass_Init(ByVal s, ByVal u)
    Game.StdInitEdge s, u
    s.Vx = 6 : s.Vy = 6
End Sub

Sub BubbleClass_Border(ByVal s, ByVal brd)
    Game.StdBorderBounce s, brd             'Bubbles bounce on edge of screen
End Sub


'----------------------------------------------------------------------------
' AmmoClass events
'
Sub AmmoClass_Border(ByVal s, ByVal brd)
    s.Remove                                'Ammo destroys itself on edge of screen
End Sub

'--- EOF ---
