forked from Mirrorlandia_minetest/minetest
Fix full crack texture being shown when releasing dig button
This commit is contained in:
parent
7b13d119ed
commit
7fbc8152bf
16
src/tile.cpp
16
src/tile.cpp
@ -555,7 +555,7 @@ static void blit_with_alpha_overlay(video::IImage *src, video::IImage *dst,
|
|||||||
|
|
||||||
// Draw or overlay a crack
|
// Draw or overlay a crack
|
||||||
static void draw_crack(video::IImage *crack, video::IImage *dst,
|
static void draw_crack(video::IImage *crack, video::IImage *dst,
|
||||||
bool use_overlay, u32 frame_count, u32 progression,
|
bool use_overlay, s32 frame_count, s32 progression,
|
||||||
video::IVideoDriver *driver);
|
video::IVideoDriver *driver);
|
||||||
|
|
||||||
// Brighten image
|
// Brighten image
|
||||||
@ -1058,8 +1058,8 @@ bool TextureSource::generateImage(std::string part_of_name, video::IImage *& bas
|
|||||||
bool use_overlay = (part_of_name[6] == 'o');
|
bool use_overlay = (part_of_name[6] == 'o');
|
||||||
Strfnd sf(part_of_name);
|
Strfnd sf(part_of_name);
|
||||||
sf.next(":");
|
sf.next(":");
|
||||||
u32 frame_count = stoi(sf.next(":"));
|
s32 frame_count = stoi(sf.next(":"));
|
||||||
u32 progression = stoi(sf.next(":"));
|
s32 progression = stoi(sf.next(":"));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Load crack image.
|
Load crack image.
|
||||||
@ -1499,7 +1499,7 @@ static void blit_with_alpha_overlay(video::IImage *src, video::IImage *dst,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void draw_crack(video::IImage *crack, video::IImage *dst,
|
static void draw_crack(video::IImage *crack, video::IImage *dst,
|
||||||
bool use_overlay, u32 frame_count, u32 progression,
|
bool use_overlay, s32 frame_count, s32 progression,
|
||||||
video::IVideoDriver *driver)
|
video::IVideoDriver *driver)
|
||||||
{
|
{
|
||||||
// Dimension of destination image
|
// Dimension of destination image
|
||||||
@ -1507,11 +1507,11 @@ static void draw_crack(video::IImage *crack, video::IImage *dst,
|
|||||||
// Dimension of original image
|
// Dimension of original image
|
||||||
core::dimension2d<u32> dim_crack = crack->getDimension();
|
core::dimension2d<u32> dim_crack = crack->getDimension();
|
||||||
// Count of crack stages
|
// Count of crack stages
|
||||||
u32 crack_count = dim_crack.Height / dim_crack.Width;
|
s32 crack_count = dim_crack.Height / dim_crack.Width;
|
||||||
// Limit frame_count
|
// Limit frame_count
|
||||||
if(frame_count > dim_dst.Height)
|
if(frame_count > (s32) dim_dst.Height)
|
||||||
frame_count = dim_dst.Height;
|
frame_count = dim_dst.Height;
|
||||||
if(frame_count == 0)
|
if(frame_count < 1)
|
||||||
frame_count = 1;
|
frame_count = 1;
|
||||||
// Limit progression
|
// Limit progression
|
||||||
if(progression > crack_count-1)
|
if(progression > crack_count-1)
|
||||||
@ -1543,7 +1543,7 @@ static void draw_crack(video::IImage *crack, video::IImage *dst,
|
|||||||
// Scale crack image by copying
|
// Scale crack image by copying
|
||||||
crack_cropped->copyToScaling(crack_scaled);
|
crack_cropped->copyToScaling(crack_scaled);
|
||||||
// Copy or overlay crack image onto each frame
|
// Copy or overlay crack image onto each frame
|
||||||
for(u32 i = 0; i < frame_count; ++i)
|
for(s32 i = 0; i < frame_count; ++i)
|
||||||
{
|
{
|
||||||
v2s32 dst_pos(0, dim_crack_scaled.Height * i);
|
v2s32 dst_pos(0, dim_crack_scaled.Height * i);
|
||||||
if(use_overlay)
|
if(use_overlay)
|
||||||
|
Loading…
Reference in New Issue
Block a user