Author Topic: DBF Bubbles Complete Source Code.[BB3D]  (Read 696 times)

0 Members and 1 Guest are viewing this topic.

Offline Shockwave

  • good/evil
  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 16784
  • Karma: 439
  • evil/good
    • View Profile
    • My Homepage


Original Post By Shockwave, taken from the old board.

Quote
You'll need the media files from the DBF bubbles Intro, you can get that from the main site.. This uses Blitz 3D;

Code: [Select]

;
; Dark Bit Factory Introid Coded By Shockwave
; Music By R0LY
; GFX By Shockwave
; Meshes By Wham
;
;-------------------------------------------------------------------------------------------------------

        Const        XRES        =        800
        Const        YRES        =        600
        Const        ESCAPE        =        1
       
        Graphics3D XRES,YRES,0,1
        SetBuffer BackBuffer()
       
        Global        CAM        =        CreateCamera()
;        CameraViewport CAM,0,150,XRES,450
        CameraClsMode CAM,0,True
       
       
        Const file$ = "media/font.png"; Highlight Font filename.

        Const FWidth = 16; Width of letters
        Const FHeight = 16; Height Of letters
        Const Fchars = 60; Number of letters in font

        Global graphicfont
        graphic_text_setup(file$,fwidth,fheight,0,fchars)

        Global lggy=LoadImage ("media/lggy.png")
;        MaskImage lggy,4,2,4
        Global AUDIO=PlayMusic("media/DistantCry.xm")
;--------------------------------------------------------------------
; Message Writer Initialisation;
;--------------------------------------------------------------------

;--------------------------------------------------------------------
;   Set width and height of text to type (number of chars) ;;
;--------------------------------------------------------------------


        Global        TW_LINE_W        =        48; How wide?
        Global        TW_LINE_H        =        4;  How Tall?
       
        Global        TW_LETTERS        =        (TW_LINE_W * TW_LINE_H)+1; How many Letters?

        Global        TW_ORIGIN_X; Floating X Origin For New Letters.
        Global        TW_ORIGIN_Y; Floating Y Origin For New Letters.
        Global        TW_ACTIVE        =        0

;--------------------------------------------------------------------
;   Set Spacing For Letters ;;
;--------------------------------------------------------------------

        Global        TW_X_GAP        =        16;        X Spacing.
        Global        TW_Y_GAP        =        18; Y Spacing.

;--------------------------------------------------------------------
;        Set delay before text clearence in seconds ;;
;--------------------------------------------------------------------

        Global        TW_DELAY        ; Time between screens once full.
       
;--------------------------------------------------------------------
;        Target X and Y positions (these are constant once defined) ;;
;--------------------------------------------------------------------

        Dim        TW_GRID_X ( TW_LINE_W , TW_LINE_H ); X target
        Dim        TW_GRID_Y ( TW_LINE_W , TW_LINE_H ); Y target


;--------------------------------------------------------------------
;        Control Arrays For Letters (reset each frame) ;;
;--------------------------------------------------------------------

        Dim TW_X_POS#   ( TW_LINE_W , TW_LINE_H ); X current
        Dim TW_Y_POS#   ( TW_LINE_W , TW_LINE_H ); Y current
        Dim TW_ASCII    ( TW_LINE_W , TW_LINE_H ); Letter Reference
        Dim TW_STATE    ( TW_LINE_W , TW_LINE_H ); (0:off) (1:moving) (2:in position) (3:clearing)
        Dim TW_GRAVITY# ( TW_LINE_W , TW_LINE_H )
        Dim TW_EXPLODE# ( TW_LINE_W , TW_LINE_H )
;--------------------------------------------------------------------
;   Prepare Target Positions ;;
;--------------------------------------------------------------------

        INIT_TW()
       
        Global        TW_GA#=0
        Global        TW$=""
        Global TW_READ$
        Global        TP=1
        Restore typetext
        Repeat
                Read TW_READ$
                If TW_READ$ <> "END-TEXT" TW$=TW$+TW_READ$
        Until TW_READ$="END-TEXT"

;--------------------------------------------------------------------
;   Reset Current Letters ;;
;--------------------------------------------------------------------

        RESET_TW()

       
;-------------------------------------------------------------------------------------------------------
;        Environment Map
;-------------------------------------------------------------------------------------------------------

        Global EMSM        =        LoadTexture("media/TEXT1.JPG",64)
        Global ENVM        =        LoadMesh("media/sabre.3DS")
        FlipMesh ENVM
        PositionEntity ENVM,0,0,0
        EntityAlpha ENVM,.05
        EntityBlend envm,1
        EntityTexture ENVM,EMSM
        EntityShininess ENVM,1
        ScaleEntity ENVM,10,10,10

;-------------------------------------------------------------------------------------------------------
;   Light Variables;
;-------------------------------------------------------------------------------------------------------

        Global AR=0; Ambient red
        Global AG=0; Ambient Green
        Global AB=0; Ambient Blue
       
        Global LR=0; Light Red
        Global LG=0; Light Green
        Global LB=0; Light Blue

        Global        LIGHT1        =        CreateLight(1)
        PositionEntity CAM,0,0,0

        Global        LIGHT2        =        CreateLight(1)
        PositionEntity CAM,0,0,0
               
        Global        GA1#,GA2#,GA3#

;-------------------------------------------------------------------------------------------------------
;        Motion Blurr;
;-------------------------------------------------------------------------------------------------------

        Global BLUR = CreateCube()
        ScaleEntity BLUR,50,50,2
        FlipMesh blur
        EntityAlpha blur,.2
        EntityBlend blur,1

;-------------------------------------------------------------------------------------------------------
;        Bubbles;
;-------------------------------------------------------------------------------------------------------
       
        Global bubs        =        200

        Dim BBE (BUBS)
        Dim BBE2(BUBS)
       
        Dim BBX#(BUBS)
        Dim BBY#(BUBS)
        Dim BBZ#(BUBS)
       
                BBE (1)=LoadSprite ("media/BUB.PNG",4)
                BBE2(1)=LoadSprite ("media/BUB2.PNG",4)
                BBX#(1) = Rnd(-15,15)
                BBY#(1) = Rnd(-20,20)
                BBZ#(1) = Rnd(  1,12)
                EntityAlpha BBE(1),.1
                EntityBlend BBE(1),3
                SpriteViewMode BBE(1),2
                EntityAutoFade BBE(1),5,50

                EntityAlpha         BBE2(1),.2
                EntityBlend         BBE2(1),1
                SpriteViewMode  BBE2(1),2
                EntityAutoFade  BBE2(1),5,50

               
        For a = 2 To bubs
                BBE(A) = CopyEntity (BBE (1))
                BBE2(A)= CopyEntity (BBE2(1))

                BBX#(A) = Rnd(-20,20)
                BBY#(A) = Rnd(-20,20)
                BBZ#(A) = Rnd( 1,12)
               
        Next
       

;-------------------------------------------------------------------------------------------------------
; Main Loop;
;-------------------------------------------------------------------------------------------------------
        PositionEntity cam,0,0,-5
While Not KeyDown(ESCAPE)
        GA1#=GA1#+2.5
        GA2#=GA2#+1.2       
        GA3#=GA3#-1.3               
        LIGHTING()
        ROTATE_ENVM()
        BUBBLES()

       
        UpdateWorld()
        RenderWorld()
       

        HYPER_TYPER()
        TWODEENESS()
                If KeyDown(2) SaveBuffer (BackBuffer(),"bubshot.bmp")
        Flip

Wend
End

Function TWODEENESS()
DrawImage lggy,140+5*Sin(GA1#*7),5*Sin(GA1#*5)
End Function



Function BUBBLES()
        For A=1 To bubs
                PositionEntity BBE (A),BBX#(A),BBY#(A),BBZ#(A)
                PositionEntity BBE2(A),BBX#(A),BBY#(A),BBZ#(A)-.002
                bby#(a)=bby#(a)+.05+(.1*Sin(GA1#+(a Shl 2)))
                bbx#(a)=bbx#(a)+(.07*Sin(GA2#+(a Shl 2)))
                bbz#(a)=bbz#(a)+(.09*Sin(GA3#+(a Shl 10)))
                If bby#(a)>20 bby#(a)=-20
                TurnEntity BBE(a),0,0,(2*Sin(GA2#+(a Shl 2)))
        Next
End Function

Function LIGHTING()
        If AR<10  AR=AR+1
        If AG<20  AG=AG+1
        If AB<50  AB=AB+1

        If LR<10  LR=LR+1
        If LG<20  LG=LG+1
        If LB<30  LB=LB+1
       
        AmbientLight AR,AG,AB
        LightColor LIGHT1,LR/2,LG/2,LB/2
        LightColor LIGHT2,LR/3,LG/2,LB
        TurnEntity light1,1,1,3
        TurnEntity light2,5,1,2

End Function


Function ROTATE_ENVM()
        TurnEntity ENVM,.1,.3*Sin(GA1#),1
        ScaleEntity ENVM,.1+.01*Sin(GA1#),.1+.05*Cos(GA2#),.1+.05*Cos(GA2#)
End Function



;-------------------------------------------------------------------------------------------
; Do The Text Typer ;;
;-------------------------------------------------------------------------------------------

Function        HYPER_TYPER()

        Local        POSFLAG=0
        TW_GA#        =        TW_GA#        +        4.5
        TW_ORIGIN_X        =        (XRES/2)+((XRES/2)*Sin(TW_GA#/1.3))
        TW_ORIGIN_Y        =        (YRES/2)+((YRES/4)*Cos(TW_GA#/1.2))
       
        Local        LOOPX,LOOPY
        Local        DRAWCOUNT        =        0

        For LOOPY        =        1        To        TW_LINE_H
        For LOOPX        =        1        To        TW_LINE_W
                DRAWCOUNT=DRAWCOUNT+1
;-------------------------------------------------------------------------------------------

                If TW_STATE( LOOPX, LOOPY ) < 2 POSFLAG        =        1

;-------------------------------------------------------------------------------------------


If DRAWCOUNT<TW_ACTIVE Then

;-------------------------------------------------------------------------------------------

                        If TW_STATE ( LOOPX , LOOPY ) = 0 Then
;-------------------------------------------------------------------------------------------

                                TW_STATE ( LOOPX , LOOPY ) = 1
                                TW_X_POS# ( LOOPX , LOOPY ) = Float (TW_ORIGIN_X)
                                TW_Y_POS# ( LOOPX , LOOPY ) = Float (TW_ORIGIN_Y)
;-------------------------------------------------------------------------------------------
                        End If


        If TW_STATE (LOOPX , LOOPY ) > 0 And TW_ASCII(LOOPX , LOOPY)>0 Then
        DrawImage GRAPHICFONT,TW_X_POS# (LOOPX , LOOPY ), TW_Y_POS# (LOOPX , LOOPY ) , TW_ASCII (LOOPX , LOOPY)
        End If

;-------------------------------------------------------------------------------------------

        If TW_STATE( LOOPX, LOOPY ) =1 Then

;-------------------------------------------------------------------------------------------
               
                If (Int(TW_X_POS#( LOOPX,LOOPY))) <> TW_GRID_X( LOOPX,LOOPY ) Then
                TW_X_POS#( LOOPX,LOOPY) = TW_X_POS#( LOOPX,LOOPY) - ((TW_X_POS#( LOOPX,LOOPY) - TW_GRID_X (LOOPX,LOOPY))/20 )
                End If

;-------------------------------------------------------------------------------------------

                If (Int(TW_Y_POS#( LOOPX,LOOPY))) <> TW_GRID_Y( LOOPX,LOOPY ) Then
                TW_Y_POS#( LOOPX,LOOPY) = TW_Y_POS#( LOOPX,LOOPY) - ((TW_Y_POS#( LOOPX,LOOPY) - TW_GRID_Y (LOOPX,LOOPY))/20 )
                End If

;-------------------------------------------------------------------------------------------

                If (Int(TW_X_POS(LOOPX,LOOPY))=TW_GRID_X( LOOPX, LOOPY )) And (Int(TW_Y_POS(LOOPX,LOOPY))=TW_GRID_Y( LOOPX, LOOPY )) Then
                TW_STATE( LOOPX, LOOPY ) =2
                End If

;-------------------------------------------------------------------------------------------

        End If

;-------------------------------------------------------------------------------------------

End If

;-------------------------------------------------------------------------------------------

        If ((POSFLAG=0) And (TW_DELAY>0) And (TW_ACTIVE >= TW_LETTERS) )  TW_DELAY=TW_DELAY-1

        If ((TW_DELAY<=0) And (POSFLAG = 0)  ) Then

                If TW_STATE (LOOPX , LOOPY ) = 2 TW_STATE (LOOPX , LOOPY) = 3
               
                TW_Y_POS ( LOOPX , LOOPY )= TW_Y_POS (LOOPX , LOOPY)+ TW_GRAVITY ( LOOPX,LOOPY )
                TW_X_POS ( LOOPX , LOOPY )= TW_X_POS (LOOPX , LOOPY)+ TW_EXPLODE ( LOOPX,LOOPY )
If TW_X_POS( LOOPX , LOOPY )<0 Or TW_X_POS (LOOPX, LOOPY ) >XRES-16 And TW_Y_POS (LOOPX, LOOPY ) <YRES-16 Then
                TW_EXPLODE (LOOPX,LOOPY ) = - TW_EXPLODE (LOOPX, LOOPY)

End If


TW_GRAVITY ( LOOPX,LOOPY ) = TW_GRAVITY ( LOOPX,LOOPY ) + .2
End If
        Next
        Next

        If TW_ACTIVE < TW_LETTERS TW_ACTIVE=TW_ACTIVE+1

        POSFLAG = 0

If TW_DELAY<=0 Then       
        For LOOPY        =        1        To        TW_LINE_H
        For LOOPX        =        1        To        TW_LINE_W
        If TW_Y_POS ( LOOPX , LOOPY ) < YRES POSFLAG=1
        Next
        Next
       
        If posflag=0 Then
                RESET_TW()
        End If
End If

End Function

Function RESET_TW()

        TW_ACTIVE        =        0
        TW_DELAY        =        100000       

        Local        LOOPX,LOOPY

        For LOOPY        =        1        To        TW_LINE_H
        For LOOPX        =        1        To        TW_LINE_W

                TW_STATE  ( LOOPX,LOOPY ) = 0
                TW_ASCII  ( LOOPX,LOOPY ) = (Asc( Mid$ (TW$,TP,1))) - 32
                TW_GRAVITY( LOOPX,LOOPY ) = Rnd ( -8,2 )
                TW_EXPLODE( LOOPX,LOOPY ) = Rnd ( -6,6 )
                TP=TP+1
                If TP>Len(TW$) TP=1
               
        Next
        Next
       
        TW_ACTIVE        =        0
       
End Function


;-------------------------------------------------------------------------------------------
; Calculate Target Positions For Letters ;;
;-------------------------------------------------------------------------------------------
Function        INIT_TW()

;--------------------------------------------------------------------
; Loop Counters ;;
;--------------------------------------------------------------------

        Local        LOOPX,LOOPY

;--------------------------------------------------------------------
; Change below to set starting X+Y (top left) ;;
;--------------------------------------------------------------------

        Local        GX_RESET        =        16 ; Left Start
        Local        GY_RESET        =        290; Top  Start

;--------------------------------------------------------------------
; Grid Spacing Variables ;;
;--------------------------------------------------------------------

        Local        GX_NOW                =        GX_RESET
        Local        GY_NOW                =        GY_RESET

;-------------------------------------------------------------------------------------------

        For LOOPY        =        1        To        TW_LINE_H
        GX_NOW                =        GX_RESET

;-------------------------------------------------------------------------------------------

        For LOOPX        =        1        To        TW_LINE_W

                TW_GRID_X( LOOPX, LOOPY )        =        GX_NOW
                TW_GRID_Y( LOOPX, LOOPY )        =        GY_NOW
                GX_NOW = GX_NOW + TW_X_GAP

        Next

;-------------------------------------------------------------------------------------------

        GY_NOW = GY_NOW + TW_Y_GAP
        Next

;-------------------------------------------------------------------------------------------

End Function


Function graphic_text_setup(font$,gtwidth,gtheight,gtstart,gtlength)
graphicfont=LoadAnimImage (font$,gtwidth,gtheight,gtstart,gtlength)
MaskImage graphicfont,4,2,4
End Function


.typetext

;-------------------------------------------------------------------------------------------
; Page 0;;
;-------------------------------------------------------------------------------------------


Data "                                                "
Data "                 DARK BIT FACTORY               "
Data "              PRESENT BUBBLES INTRO!            "
Data "                                                "


;-------------------------------------------------------------------------------------------
; Page 1;;
;-------------------------------------------------------------------------------------------

Data "------------------------------------------------"
Data "- BECAUSE BUBBLES SEEM  TO BE IN VOGUE WE MADE -"
Data "-               SOME OF OUR OWN!!              -"
Data "------------------------------------------------"

;-------------------------------------------------------------------------------------------
; Page 2;;
;-------------------------------------------------------------------------------------------

Data "     CODING AND SOME GFX BY SHOCKWAVE / DBF     "
Data "             OTHER GFX BY WHAM / DBF            "
Data "               MUSIC BY R0LY / DBF              "
Data "      RELEASED IN MARCH 2005 JUST FOR FUN!      "

;-------------------------------------------------------------------------------------------
; Page 3;;
;-------------------------------------------------------------------------------------------

Data " IF YOU WANT TO CONTACT US FOR ANYTHING GO HERE "
Data "                                                "
Data "                                                "
Data "             WWW.DBFINTERACTIVE.COM             "
;-------------------------------------------------------------------------------------------
; Page 3;;
;-------------------------------------------------------------------------------------------

Data "                     DBF ARE:                   "
Data "     SHOCKWAVE (CODE/GFX) ,  WHAM (GFX/CODE)    "
Data "    R0LY (MUSIC) , TETRA (CODE) ,TETRA (CODE)   "
Data "     BLITZ AMATEUR (CODE)  , THYGRION (CODE)    "


;-------------------------------------------------------------------------------------------
; Page 4a;;
;-------------------------------------------------------------------------------------------

Data "    GREETINGS TO ALL OUR FRIENDS, INCLUDING     "
Data " JIM SHAW, RBRAZ/GVY, CLYDE / GVY , CODEMAN/ESD "
Data "FRYER, LONESTAR/HUGI, YALOOPY, NINO,  GRIMREAPER"
Data "  SPECIS,  KRYLAR, ROBLEONG, BLUNDER, FASH/GVY  "
;-------------------------------------------------------------------------------------------
; Page 4b;;
;-------------------------------------------------------------------------------------------

Data "  AND EVERYONE ELSE WE FORGOT! PRESS ESCAPE TO  "
Data "           EXIT! HOPE YOU ENJOYED IT.           "
Data "                                                "
Data "              SHOCKWAVE / DBF 2005              "


;
Data "END-TEXT"
« Last Edit: July 21, 2007 by Shockwave »
Shockwave ^ Codigos
Challenge Trophies Won: