# HG changeset patch # User Wuzzy # Date 1607890901 -3600 # Node ID da1bb21e6fbf17d6da138b7ea588473342f84adc # Parent 95db10dcad71b95957d82942bdca3d5d1d95a7a1 Teach vgtSmallDamageTag to use dX, dY and screen coords (Frame<>0) diff -r 95db10dcad71 -r da1bb21e6fbf ChangeLog.txt --- a/ChangeLog.txt Sun Dec 13 21:16:25 2020 +0100 +++ b/ChangeLog.txt Sun Dec 13 21:21:41 2020 +0100 @@ -54,6 +54,7 @@ Lua: + Add RopeKnocking library + + vgtSmallDamageTag: Can change dX, dY; add screen coordinates (Frame~=0) * Fix crash when spawning a vgtSmallDamageTag ====================== 1.0.0 ======================= diff -r 95db10dcad71 -r da1bb21e6fbf hedgewars/uVisualGears.pas --- a/hedgewars/uVisualGears.pas Sun Dec 13 21:16:25 2020 +0100 +++ b/hedgewars/uVisualGears.pas Sun Dec 13 21:21:41 2020 +0100 @@ -55,7 +55,7 @@ begin if cAltDamage then begin - Gear:= AddVisualGear(X, Y, vgtSmallDamageTag); + Gear:= AddVisualGear(X, Y, vgtSmallDamageTag, Damage); if Gear <> nil then with Gear^ do Tex:= RenderStringTex(ansistring(inttostr(Damage)), Color, fntSmall); @@ -266,7 +266,16 @@ else if (Gear^.Tex <> nil) and (((Gear^.State = 0) and ((Gear^.Hedgehog = nil) or (Gear^.Hedgehog^.Team = CurrentTeam))) or (Gear^.State = 2)) then DrawTextureCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex); vgtSmallDamageTag: if Gear^.Tex <> nil then - DrawTextureCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex); + begin + if Gear^.Frame = 0 then + DrawTextureCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex) + else + begin + SetScale(cDefaultZoomLevel); + DrawTexture(round(Gear^.X), round(Gear^.Y), Gear^.Tex); + SetScale(zoom); + end + end; vgtHealthTag: if Gear^.Tex <> nil then begin if Gear^.Frame = 0 then diff -r 95db10dcad71 -r da1bb21e6fbf hedgewars/uVisualGearsHandlers.pas --- a/hedgewars/uVisualGearsHandlers.pas Sun Dec 13 21:16:25 2020 +0100 +++ b/hedgewars/uVisualGearsHandlers.pas Sun Dec 13 21:21:41 2020 +0100 @@ -43,7 +43,7 @@ procedure doStepEgg(Gear: PVisualGear; Steps: Longword); procedure doStepFire(Gear: PVisualGear; Steps: Longword); procedure doStepShell(Gear: PVisualGear; Steps: Longword); -procedure doStepSmallDamage(Gear: PVisualGear; Steps: Longword); +procedure doStepSmallDamageTag(Gear: PVisualGear; Steps: Longword); procedure doStepBubble(Gear: PVisualGear; Steps: Longword); procedure doStepSteam(Gear: PVisualGear; Steps: Longword); procedure doStepAmmo(Gear: PVisualGear; Steps: Longword); @@ -402,16 +402,18 @@ dec(Gear^.FrameTicks, Steps) end; -procedure doStepSmallDamage(Gear: PVisualGear; Steps: Longword); +procedure doStepSmallDamageTag(Gear: PVisualGear; Steps: Longword); var s: shortstring; begin -Gear^.Y:= Gear^.Y - 0.02 * Steps; if Gear^.Tex = nil then begin s:= IntToStr(Gear^.State); Gear^.Tex:= RenderStringTex(ansistring(s), cWhiteColor, fntSmall); end; +Gear^.X:= Gear^.X + Gear^.dX * Steps; +Gear^.Y:= Gear^.Y + Gear^.dY * Steps; + if Gear^.FrameTicks <= Steps then DeleteVisualGear(Gear) else @@ -1042,7 +1044,7 @@ @doStepExpl, @doStepExpl, @doStepFire, - @doStepSmallDamage, + @doStepSmallDamageTag, @doStepTeamHealthSorter, @doStepSpeechBubble, @doStepBubble, diff -r 95db10dcad71 -r da1bb21e6fbf hedgewars/uVisualGearsList.pas --- a/hedgewars/uVisualGearsList.pas Sun Dec 13 21:16:25 2020 +0100 +++ b/hedgewars/uVisualGearsList.pas Sun Dec 13 21:21:41 2020 +0100 @@ -177,7 +177,10 @@ vgtShell: FrameTicks:= 500; vgtSmallDamageTag: begin - gear^.FrameTicks:= 1100 + gear^.Frame:= 0; + gear^.FrameTicks:= 1100; + gear^.dX:= 0; + gear^.dY:= -0.02; end; vgtBubble: begin