January 26, 2021, 06:40:11 AM

### Author Topic: [bb] Wiping transition by Neo Genesis10 [ 1+ years ago ]  (Read 404 times)

#### BlitzBot

• Jr. Member
• Posts: 1
##### [bb] Wiping transition by Neo Genesis10 [ 1+ years ago ]
« on: June 29, 2017, 12:28:40 AM »
Title : Wiping transition
Author : Neo Genesis10
Posted : 1+ years ago

Description : Call Transition to grab the contents of the buffers and 'slice' the front buffer into segments. Then call UpdateTransition to move the segments. The UpdateTransition function will return True once the transition is complete.

The optional parameters for the wipe are direction and lineararity. If you want the effect to travel in a certain direction use cstUp, cstDown etc to choose its direction or randomise it. cstHoriz / cstVert slices the screen and each half of the transition moves in opposing directions. The linear option means all slices move at the same pace.

Hope you enjoy it!

Code :
Code: BlitzBasic
1. Const cstUp = 0
2. Const cstDown = 1
3. Const cstRight = 2
4. Const cstLeft = 3
5. Const cstHoriz = 4
6. Const cstVert = 5
7.
8. Type trans_slide
9.         Field x, y
10.         Field img
11.         Field speed
12.         Field dir
13. End Type
14.
15. Global trans_img = CreateImage(GraphicsWidth(), GraphicsHeight())
16.
17. Function Transition(dir=cstRight, linear=False)
18.
19.         buffer = GraphicsBuffer()
20.
21.         GrabImage trans_img, 0, 0
22.
23.         SetBuffer FrontBuffer()
24.
25.         Select dir
26.                 Case cstLeft, cstRight
27.                         For y = 0 To GraphicsHeight()
28.                                 t.trans_slide = New trans_slide
29.                                 timg = CreateImage(GraphicsWidth(), 1)
30.                                 GrabImage timg, 0, y
31.                                 tx = 0
32.                                 ty = y
33.                                 If linear
34.                                         tspeed = 6
35.                                 Else
36.                                         tspeed = Rand(4, 8)
37.                                 EndIf
38.                                 tdir = dir
39.                         Next
40.                 Case cstUp, cstDown
41.                         For x = 0 To GraphicsWidth()
42.                                 t.trans_slide = New trans_slide
43.                                 timg = CreateImage(1, GraphicsHeight())
44.                                 GrabImage timg, x, 0
45.                                 tx = x
46.                                 ty = 0
47.                                 If linear
48.                                         tspeed = 6
49.                                 Else
50.                                         tspeed = Rand(4, 8)
51.                                 EndIf
52.                                 tdir = dir
53.                         Next
54.                 Case cstHoriz
55.                         tdir = False
56.                         For y = 0 To GraphicsHeight()
57.                                 t.trans_slide = New trans_slide
58.                                 timg = CreateImage(GraphicsWidth(), 1)
59.                                 GrabImage timg, 0, y
60.                                 tx = 0
61.                                 ty = y
62.                                 If linear
63.                                         tspeed = 6
64.                                 Else
65.                                         tspeed = Rand(4, 8)
66.                                 EndIf
67.                                 If tdir
68.                                         tdir = cstLeft
69.                                 Else
70.                                         tdir = cstRight
71.                                 EndIf
72.                                 tdir = Not tdir
73.                         Next
74.                 Case cstVert
75.                         tdir = False
76.                         For x = 0 To GraphicsWidth()
77.                                 t.trans_slide = New trans_slide
78.                                 timg = CreateImage(1, GraphicsHeight())
79.                                 GrabImage timg, x, 0
80.                                 tx = x
81.                                 ty = 0
82.                                 If linear
83.                                         tspeed = 6
84.                                 Else
85.                                         tspeed = Rand(4, 8)
86.                                 EndIf
87.                                 If tdir
88.                                         tdir = cstUp
89.                                 Else
90.                                         tdir = cstDown
91.                                 EndIf
92.                                 tdir = Not tdir
93.                         Next
94.         End Select
95.
96.         buffer = GraphicsBuffer()
97.
98. End Function
99.
100. Function UpdateTransition()
101.
102.         SetBuffer BackBuffer()
103.         DrawBlock trans_img, 0, 0
104.         count = 0
105.         For t.trans_slide = Each trans_slide
106.                 Select tdir
107.                         Case cstUp
108.                                 ty = ty - tspeed
109.                                 If ty < -GraphicsHeight()
110.                                         FreeImage timg
111.                                         Delete t
112.                                 Else
113.                                         DrawBlock timg, tx, ty
114.                                         count = count + 1
115.                                 EndIf
116.                         Case cstDown
117.                                 ty = ty + tspeed
118.                                 If ty > GraphicsHeight()
119.                                         FreeImage timg
120.                                         Delete t
121.                                 Else
122.                                         DrawBlock timg, tx, ty
123.                                         count = count + 1
124.                                 EndIf
125.                         Case cstRight
126.                                 tx = tx + tspeed
127.                                 If tx > GraphicsWidth()
128.                                         FreeImage timg
129.                                         Delete t
130.                                 Else
131.                                         DrawBlock timg, tx, ty
132.                                         count = count + 1
133.                                 EndIf
134.                         Case cstLeft
135.                                 tx = tx - tspeed
136.                                 If tx < -GraphicsWidth()
137.                                         FreeImage timg
138.                                         Delete t
139.                                 Else
140.                                         DrawBlock timg, tx, ty
141.                                         count = count + 1
142.                                 EndIf
143.                 End Select
144.         Next
145.
146.         If count = 0
147.                 Return True
148.         EndIf
149.
150. End Function