132 lines
2.9 KiB
BlitzBasic
132 lines
2.9 KiB
BlitzBasic
;
|
|
; Small SpaceCraft and flame. Code, Textures and Models By Rob Hutchinson.
|
|
; loki.sd@cableinet.co.uk
|
|
;
|
|
; CONTROLS:
|
|
; LMB + Up/Down = Zoom in/out
|
|
; Move Mouse = Rotate
|
|
;
|
|
; LAST UPDATED: 18/08/2001
|
|
;
|
|
|
|
Global obfile$ = "craft1.x"
|
|
|
|
; Sorry about this, switch screen mode if it doesn`t work..
|
|
; But this was only a small test.
|
|
Include "start.bb"
|
|
|
|
Global light=CreateLight()
|
|
LightColor light,130,130,130
|
|
TurnEntity light,45,45,0
|
|
|
|
Global camera=CreateCamera()
|
|
CameraViewport camera,0,0,1024,768
|
|
|
|
Global shippivot = CreatePivot()
|
|
Global shipobj = LoadMesh(obfile$,shippivot)
|
|
ScaleEntity shipobj,.3,.3,.3
|
|
|
|
|
|
Global flameobj1 = LoadSprite("Flame1.bmp",1,shippivot)
|
|
ScaleSprite flameobj1,2.5,2.5
|
|
MoveEntity flameobj1,0,0,-7
|
|
EntityAlpha flameobj1,.3
|
|
HideEntity flameobj1
|
|
Global flameobj2 = LoadSprite("Flame2.bmp",1,shippivot)
|
|
ScaleSprite flameobj2,2.5,2.5
|
|
MoveEntity flameobj2,0,0,-7
|
|
EntityAlpha flameobj2,.3
|
|
HideEntity flameobj2
|
|
;flameob2 = LoadSprite("Flame2.bmp")
|
|
|
|
Global pointflameent = CopyEntity(flameobj1,shippivot)
|
|
MoveEntity pointflameent,0,0,-50
|
|
HideEntity pointflameent
|
|
|
|
Type ship_flame
|
|
Field obj,speed#,count#,untildist#,prescale#,scaledown#,alphadown#,alphacn#
|
|
End Type
|
|
|
|
MoveEntity camera,0,0,-60
|
|
Global x_speed#,y_speed#,y_zoom#
|
|
|
|
Global k
|
|
Global newflameAfterFrames = 0
|
|
Global flameCountFrame = 0
|
|
|
|
While Not KeyHit(1)
|
|
|
|
If MouseDown(1)
|
|
y_zoom=(MouseYSpeed()-y_zoom)/13+y_zoom
|
|
x_speed=(0-x_speed)/13+x_speed
|
|
y_speed=(0-y_speed)/13+y_speed
|
|
|
|
Else
|
|
x_speed=(MouseXSpeed()-x_speed)/13+x_speed
|
|
y_speed=(MouseYSpeed()-y_speed)/13+y_speed
|
|
y_zoom=(0-y_zoom)/13+y_zoom
|
|
|
|
EndIf
|
|
TurnEntity shippivot,0,-x_speed,0
|
|
TurnEntity shippivot,-y_speed,0,0
|
|
MoveEntity camera,0,0,y_zoom
|
|
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
|
|
|
|
DoFlame()
|
|
|
|
flameCountFrame = flameCountFrame + 1
|
|
If flameCountFrame > newflameAfterFrames
|
|
j = Rnd(100)
|
|
If j > 50
|
|
CreateNewFlame(flameobj1,0.8,20,6)
|
|
Else
|
|
CreateNewFlame(flameobj2,0.8,20,6)
|
|
EndIf
|
|
flameCountFrame = 0
|
|
EndIf
|
|
|
|
UpdateWorld
|
|
RenderWorld
|
|
Text 0,0,"Craft Flare: [By Rob Hutchinson 2001]"
|
|
k = 0
|
|
Flip
|
|
|
|
Wend
|
|
|
|
End
|
|
|
|
Function CreateNewFlame(object,speed#,untildist#,scale#)
|
|
n.ship_flame = New ship_flame
|
|
n\obj = CopyEntity(object)
|
|
RotateEntity n\obj,Rnd(0,360),Rnd(0,360),Rnd(0,360)
|
|
PointEntity n\obj,pointflameent
|
|
MoveEntity n\obj,0,0,7
|
|
rn1# = Rnd(-.5,.5)
|
|
rn2# = Rnd(-.5,.5)
|
|
MoveEntity n\obj,rn1,rn2,0
|
|
ShowEntity n\obj
|
|
If scale <> 1 Then ScaleSprite n\obj,scale,scale
|
|
n\speed = speed
|
|
n\untildist = untildist
|
|
n\prescale = (n\speed / n\untildist)
|
|
n\scaledown = scale
|
|
n\alphacn = 1.0 / (n\untildist / n\speed)
|
|
n\alphadown = 1
|
|
End Function
|
|
|
|
Function DoFlame()
|
|
For n.ship_flame = Each ship_flame
|
|
MoveEntity n\obj,0,0,n\speed
|
|
n\scaledown = n\scaledown - (n\prescale*4)
|
|
ScaleSprite n\obj,n\scaledown#,n\scaledown#
|
|
n\alphadown = n\alphadown - n\alphacn
|
|
EntityAlpha n\obj,n\alphadown
|
|
|
|
n\count = n\count + n\speed
|
|
If n\count > n\untildist
|
|
FreeEntity n\obj
|
|
Delete n
|
|
EndIf
|
|
k = k + 1
|
|
Next
|
|
End Function |