Liquid - Vesitehoste
Author: MaGetzUb
Added: 12. huhtikuuta 2011 kello 22.08
Edited: 20. huhtikuuta 2011 kello 21.16
Category: Efektit
Description
Tämmöinen Ruuttu:n Fluidize-efektistä saadun inspiksen innoittamana koodattu efekti.
Liput(Vakiot)
LIQ_WATER <- Vesi efekti
LIQ_FIRE <- Kohina efekti
LIQ_HORWAVE <- Vaakasuuntainen aaltoiluefekti
LiQ_VERWAVE <- Pystysuuntainen aaltoiluefekti
LIQ_HORRIPPLE <- Vain vaakasuoraa kohinaa
LIQ_VERRIPPLE <- Vain pystysuoraa kohinaa
Funktiot:
LiquidSettings(quality, amp, angspeed) <- Säädetään efektin asetuksia
Liquid(tyyli = 0, mask = True)
Code
Select all1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | //effect by: MaGetzUb 2011
SCREEN 640, 480
SCREEN 640, 480, 32, 2
Const LIQ_WATER = 0
Const LIQ_FIRE = 1
Const LIQ_HORWAVE = 2
Const LIQ_VERWAVE = 3
Const LIQ_HORRIPPLE = 4
Const LIQ_VERRIPPLE = 5
Global SW
Global SH
SW = ScreenWidth()
SH = ScreenHeight()
Global Liq_Quality : Liq_Quality = 5 //(paras laatu on 1 [koska 1 pikseli per aalto])
Global Liq_Freq : Liq_Freq = 20
Global Liq_Ang : Liq_Ang = 0
Global Liq_AngSpeed : Liq_AngSpeed = 2
Dim Liq(1) As Integer
Dim EFFNAMES(5) As String
EFFNAMES(LIQ_WATER) = "Vesi"
EFFNAMES(LIQ_FIRE) = "Lämpöväreily"
EFFNAMES(LIQ_HORWAVE) = "Horisontaaliset aallot"
EFFNAMES(LIQ_VERWAVE) = "Vertikaaliset aallot"
EFFNAMES(LIQ_HORRIPPLE) = "Horisontaalinen väreily"
EFFNAMES(LIQ_VERRIPPLE) = "Vertikaalinen väreily"
Liq(0) = MakeImage(SW, SH)
Liq(1) = CloneImage(Liq(0))
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1
ukko = LoadObject ("Media\guy.bmp",72)
SetupCollision ukko, kartta, 1, 4, 2
Freq = 2
LiquidSettings(1, Freq, 10)
Repeat
ClearText
AddText "FPS: "+FPS()
AddText EFFNAMES(efekti)+" käytössä."
AddText "Säädä aallon taajuutta hiiren rullasta."
AddText "Säädä laatua näppäimillä W/S"
AddText "Vaihda efektiä Enterillä"
AddText "Nykyinen taajuus: "+Freq
AddText "Nykyinen laatu: "+koko+"px"
If LeftKey() Then TurnObject ukko,5
If RightKey() Then TurnObject ukko,-5
If UpKey() Then MoveObject ukko,2
If DownKey() Then MoveObject ukko,-2
UpdateGame
CloneCameraPosition ukko
DrawGame
Freq = Freq + MouseMoveZ()
koko = koko + KeyHit(cbkeyW) - KeyHit(cbkeys)
If koko < 1 Then koko = 1
LiquidSettings(koko, Freq, 10)
efekti = efekti + KeyHit(28)
If efekti > 5 Then efekti = 0
Liquid(efekti, True)
Color cbwhite
DrawScreen True
Forever
//------------------------------------------------//
//FUNKTIOT
//------------------------------------------------//
Function LiquidSettings(quality, Freq, angspeed)
Liq_Quality = quality
Liq_Freq = Freq
Liq_AngSpeed = angspeed
EndFunction
Function Liquid(tyyli = 0, mask = 1)
pixrgb = getRGB(3) + getRGB(1) Shl 16 + getRGB(2) Shl 8
For i = 0 To 1
DrawToImage Liq(i)
Cls
DrawToScreen
Next i
Select tyyli
Case 0
Liq_Ang = Liq_Ang + Liq_AngSpeed
For x# = 0 To SW / Liq_Quality
CopyBox Int(x) * Liq_Quality, 0, Liq_Quality, SH, Int(x)*Liq_Quality, Int(Sin(x+Liq_Ang)*Liq_Freq), SCREEN(), Image(Liq(0))
Next x#
For y# = 0 To SH / Liq_Quality
CopyBox 0, Int(y) * Liq_Quality, SW, Liq_Quality, Int(Sin(y+Liq_Ang)*Liq_Freq), Int(y)*Liq_Quality , Image(Liq(0)), Image(Liq(1))
Next y#
Case 1
For x# = 0 To SW / Liq_Quality
CopyBox Int(x) * Liq_Quality, 0, Liq_Quality, SH, Int(x)*Liq_Quality, Int(Rnd(-Liq_Freq, Liq_Freq)), SCREEN(), Image(Liq(0))
Next x#
For y# = 0 To SH / Liq_Quality
CopyBox 0, Int(y) * Liq_Quality, SW, Liq_Quality, Int(Rnd(-Liq_Freq, Liq_Freq)), Int(y)*Liq_Quality , Image(Liq(0)), Image(Liq(1))
Next y#
Case 2
Liq_Ang = Liq_Ang + Liq_AngSpeed
For x# = 0 To SW / Liq_Quality
CopyBox Int(x) * Liq_Quality, 0, Liq_Quality, SH, Int(x)*Liq_Quality, Int(Sin(x+Liq_Ang)*Liq_Freq), SCREEN(), Image(Liq(1))
Next x#
Case 3
Liq_Ang = Liq_Ang + Liq_AngSpeed
For y# = 0 To SH / Liq_Quality
CopyBox 0, Int(y) * Liq_Quality, SW, Liq_Quality, Int(Sin(y+Liq_Ang)*Liq_Freq), Int(y)*Liq_Quality , SCREEN() , Image(Liq(1))
Next y#
Case 4
For x# = 0 To SW / Liq_Quality
CopyBox Int(x) * Liq_Quality, 0, Liq_Quality, SH, Int(x)*Liq_Quality, Int(Rnd(-Liq_Freq, Liq_Freq)), SCREEN(), Image(Liq(1))
Next x#
Case 5
For y# = 0 To SH / Liq_Quality
CopyBox 0, Int(y) * Liq_Quality, SW, Liq_Quality, Int(Rnd(-Liq_Freq, Liq_Freq)), Int(y)*Liq_Quality , SCREEN(), Image(Liq(1))
Next y#
EndSelect
If mask Then
Color cbblack
Box 0, 0, SW, SH
EndIf
DrawImage Liq(1), 0, 0
Color 0, 0, pixrgb
EndFunction
|
Comments
No comments. You can be first!
Leave a comment
You must be logged in to comment.