Make lowest line of Splash image frames transparent to work around scaling issues
The Splash image is scaled. Sometimes, the lowest line is repeated on the top, which caused some weird lines to appear above big splashes (e.g. piano).
This has been done fully automated with a script. Only the alpha channel was changed. The color information is preserved.
--[[ Static Mines Test
This test tests if mines are able to stand still on the ground for a very long time. 8 mines are spawned on a few girders.
The test passes if the mines don't move for a very long time.
The test failes if any mine moves even the tiniest bit or is destroyed.
This test case has been created as response to bug 96.
]]
-- Max. time to test
local TEST_TIME_LIMIT = 3600000 * 5 -- 5 hours
local hhs = {}
function onGameInit()
ClearGameFlags()
EnableGameFlags(gfDisableWind, gfOneClanMode)
Map = ""
Seed = 12
Theme = "Desert"
MapGen = mgDrawn
TurnTime = -1
Explosives = 0
MinesNum = 0
CaseFreq = 0
Delay = 100
WaterRise = 0
HealthDecrease = 0
AirMinesNum = 0
AddTeam("Test Team", 0xFFFF00, "Statue", "Tank", "Default", "cm_test")
hhs[1] = AddHog("Test Hog", 0, 100, "cm_test")
SetGearPosition(hhs[1], 300, 1450)
end
local mines = {
{ x = 231, y = 1708},
{ x = 290, y = 1708},
{ x = 342, y = 1708},
{ x = 261, y = 1708},
{ x = 319, y = 1708},
{ x = 403, y = 1706},
{ x = 428, y = 1706},
{ x = 461, y = 1706},
{ x = 498, y = 1706},
{ x = 518, y = 1706},
}
function LoadGearData()
------ GIRDER LIST ------
PlaceGirder(290, 1718, 4)
PlaceGirder(290, 1790, 4)
PlaceGirder(452, 1716, 4)
PlaceGirder(452, 1790, 4)
PlaceGirder(300, 1500, 4)
------ MINE LIST ------
for m=1, #mines do
mines[m].gear = AddGear(mines[m].x, mines[m].y, gtMine, 0, 0, 0, 0)
end
end
function onGameStart()
LoadGearData()
end
function onGearDelete(gear)
for m=#mines, 1, -1 do
if gear == mines[m] then
WriteLnToConsole(string.format("Mine %d died!", m))
table.remove(mines, m)
end
end
end
-- Give a short time for the mines to settle first.
local checkTimer = -5000
local initPosCheck = false
-- Count the total times the mines managed to stand still
local totalTime = 0
local fin = false
function onGameTick20()
if fin then
return
end
-- Infinite turn time
if TurnTimeLeft < 6000 then
TurnTimeLeft = -1
end
checkTimer = checkTimer + 20
if initPosCheck then
totalTime = totalTime + 20
end
if checkTimer >= 1000 then
local failed = false
for m=1, #mines do
if not initPosCheck then
-- Position initialization
-- Save “real” x and y values after the mines have settled
local x, y = GetGearPosition(mines[m].gear)
mines[m].rx = x
mines[m].ry = y
else
-- Position check
local x, y = GetGearPosition(mines[m].gear)
local rx, ry = mines[m].rx, mines[m].ry
if not x or not y then
WriteLnToConsole(string.format("Mine %d has died!", m))
failed = true
elseif x ~= rx or y ~= ry then
WriteLnToConsole(string.format("Mine %d has moved! Expected: (%d, %d). Actual: (%d, %d)", m, rx, ry, x, y))
failed = true
end
end
end
if not initPosCheck then
initPosCheck = true
end
if failed then
WriteLnToConsole(string.format("Test failed. The mines managed to stand still for %d ticks.", totalTime))
EndLuaTest(TEST_FAILED)
fin = true
return
end
end
if totalTime >= TEST_TIME_LIMIT then
WriteLnToConsole(string.format("All mines have been static for over %d ticks! Success!", TEST_TIME_LIMIT))
EndLuaTest(TEST_SUCCESSFUL)
fin = true
return
end
end