summaryrefslogtreecommitdiff
path: root/particle.bmx
diff options
context:
space:
mode:
authorIan C <ianc@noddybox.co.uk>2005-12-05 00:59:34 +0000
committerIan C <ianc@noddybox.co.uk>2005-12-05 00:59:34 +0000
commitcf0e1b5f3422dc1adc60b1684591ab0962c441bb (patch)
tree8c69f5fe70d39475e1dc31ef994f719948c70621 /particle.bmx
parent2432acd3b0cc49fb71cfee5b32e14e0eac773619 (diff)
Updates and added help page
Diffstat (limited to 'particle.bmx')
-rw-r--r--particle.bmx112
1 files changed, 112 insertions, 0 deletions
diff --git a/particle.bmx b/particle.bmx
index fbf2b6f..40a9c24 100644
--- a/particle.bmx
+++ b/particle.bmx
@@ -204,3 +204,115 @@ Type TextParticles
SetScale(1,1)
End Function
End Type
+
+
+Type TExplosionBase
+ Field p:TPixmap[4]
+
+ Function Create:TExplosionBase(base:TImage)
+ Local o:TExplosionBase=New TExplosionBase
+ o.p=New TPixmap[4]
+ o.p[0]=GrabFrom(base,0,0)
+ o.p[1]=GrabFrom(base,16,0)
+ o.p[2]=GrabFrom(base,0,16)
+ o.p[3]=GrabFrom(base,16,16)
+ Return o
+ End Function
+
+ Function GrabFrom:TPixmap(i:TImage,x:Int, y:Int)
+ Local p:TPixmap=LockImage(i)
+ Local ret:TPixmap=p.Copy()
+ ret=ResizePixmap(ret,16,16)
+ For Local cx:Int=0 Until 16
+ For Local cy:Int=0 Until 16
+ ret.WritePixel(cx,cy,p.ReadPixel(x+cx,y+cy))
+ Next
+ Next
+ UnlockImage(i)
+ Return ret
+ End Function
+End Type
+
+Type TExplosion_Old
+ Field x:Double
+ Field y:Double
+ Field dy:Double
+ Field dx:Double
+ Field p:TPixmap
+
+ Function Create:TExplosion(p:TPixmap,x:Double,y:Double,dx:Double,dy:Double)
+ Local o:TExplosion=New TExplosion
+ o.x=x
+ o.y=y
+ o.dx=dx
+ o.dy=dy
+ Return o
+ End Function
+
+ Method Update:Int()
+ DrawPixmap(p,x,y)
+ x:+dx
+ y:+dy
+ dy:+0.05
+ Return dx>-16 And dx<GraphicsWidth()+16 And y<GraphicsHeight()
+ End Method
+End Type
+
+Type TExplosion
+ Field x:Double
+ Field y:Double
+ Field dy:Double
+ Field dx:Double
+
+ Function Create:TExplosion(x:Double,y:Double,dx:Double,dy:Double)
+ Local o:TExplosion=New TExplosion
+ o.x=x
+ o.y=y
+ o.dx=dx
+ o.dy=dy
+ Return o
+ End Function
+
+ Method Update:Int()
+ SetColor(Rand(0,255),Rand(0,255),Rand(0,255))
+ Plot(x,y)
+ x:+dx
+ y:+dy
+ dy:+0.1
+ Return dx>-16 And dx<GraphicsWidth()+16 And y<GraphicsHeight()
+ End Method
+End Type
+
+Type ExplosionParticles
+ Global plist:TList
+
+ Function Init()
+ plist=CreateList()
+ End Function
+
+ Function Clear()
+ plist.Clear()
+ End Function
+
+ Function BlowUp(x:Int, y:Int)
+ For Local cx:Int=0 Until 32
+ For Local cy:Int=0 Until 32
+ plist.AddLast(TExplosion.Create(x+cx,y+cy,Rnd(-2,2),Rnd(-2,2)))
+ Next
+ Next
+ End Function
+
+ Function Draw()
+ Local l:TEasyLink=TEasyLink.Create(plist)
+
+ While l.Value()
+ Local p:TExplosion=TExplosion(l.Value())
+
+ If (p.Update())
+ l.MoveNext()
+ Else
+ l.Remove()
+ EndIf
+ Wend
+ End Function
+End Type \ No newline at end of file