mirror of
https://github.com/vcmi/vcmi.git
synced 2024-11-28 08:48:48 +02:00
Gradual fade-in of built building
This commit is contained in:
parent
6ea7add4bb
commit
9e7e649d37
@ -94,8 +94,8 @@ public:
|
||||
// Keep the original palette, in order to do color switching operation
|
||||
void savePalette();
|
||||
|
||||
void draw(SDL_Surface * where, int posX=0, int posY=0, const Rect *src=nullptr, ui8 alpha=255) const override;
|
||||
void draw(SDL_Surface * where, const SDL_Rect * dest, const SDL_Rect * src, ui8 alpha=255) const override;
|
||||
void draw(SDL_Surface * where, int posX=0, int posY=0, const Rect *src=nullptr, ui8 alpha=255) override;
|
||||
void draw(SDL_Surface * where, const SDL_Rect * dest, const SDL_Rect * src, ui8 alpha=255) override;
|
||||
std::shared_ptr<IImage> scaleFast(float scale) const override;
|
||||
void exportBitmap(const boost::filesystem::path & path) const override;
|
||||
void playerColored(PlayerColor player) override;
|
||||
@ -642,17 +642,17 @@ SDLImage::SDLImage(std::string filename)
|
||||
}
|
||||
}
|
||||
|
||||
void SDLImage::draw(SDL_Surface *where, int posX, int posY, const Rect *src, ui8 alpha) const
|
||||
void SDLImage::draw(SDL_Surface *where, int posX, int posY, const Rect *src, ui8 alpha)
|
||||
{
|
||||
if(!surf)
|
||||
return;
|
||||
|
||||
Rect destRect(posX, posY, surf->w, surf->h);
|
||||
|
||||
draw(where, &destRect, src);
|
||||
draw(where, &destRect, src, alpha);
|
||||
}
|
||||
|
||||
void SDLImage::draw(SDL_Surface* where, const SDL_Rect* dest, const SDL_Rect* src, ui8 alpha) const
|
||||
void SDLImage::draw(SDL_Surface* where, const SDL_Rect* dest, const SDL_Rect* src, ui8 alpha)
|
||||
{
|
||||
if (!surf)
|
||||
return;
|
||||
@ -663,6 +663,12 @@ void SDLImage::draw(SDL_Surface* where, const SDL_Rect* dest, const SDL_Rect* sr
|
||||
|
||||
if(src)
|
||||
{
|
||||
if(alpha != UINT8_MAX)
|
||||
{
|
||||
const ColorShifterMultiplyAndAdd alphaShifter ({255, 255, 255, alpha}, {0, 0, 0, 0});
|
||||
adjustPalette(&alphaShifter);
|
||||
}
|
||||
|
||||
if(src->x < margins.x)
|
||||
destShift.x += margins.x - src->x;
|
||||
|
||||
|
@ -40,8 +40,8 @@ public:
|
||||
using SpecialPalette = std::array<SDL_Color, 7>;
|
||||
|
||||
//draws image on surface "where" at position
|
||||
virtual void draw(SDL_Surface * where, int posX = 0, int posY = 0, const Rect * src = nullptr, ui8 alpha = 255) const=0;
|
||||
virtual void draw(SDL_Surface * where, const SDL_Rect * dest, const SDL_Rect * src, ui8 alpha = 255) const = 0;
|
||||
virtual void draw(SDL_Surface * where, int posX = 0, int posY = 0, const Rect * src = nullptr, ui8 alpha = 255) = 0;
|
||||
virtual void draw(SDL_Surface * where, const SDL_Rect * dest, const SDL_Rect * src, ui8 alpha = 255) = 0;
|
||||
|
||||
virtual std::shared_ptr<IImage> scaleFast(float scale) const = 0;
|
||||
|
||||
|
@ -339,7 +339,7 @@ void CAnimImage::playerColored(PlayerColor currPlayer)
|
||||
anim->getImage(0, group)->playerColored(player);
|
||||
}
|
||||
|
||||
CShowableAnim::CShowableAnim(int x, int y, std::string name, ui8 Flags, ui32 Delay, size_t Group):
|
||||
CShowableAnim::CShowableAnim(int x, int y, std::string name, ui8 Flags, ui32 Delay, size_t Group, uint8_t alpha):
|
||||
anim(std::make_shared<CAnimation>(name)),
|
||||
group(Group),
|
||||
frame(0),
|
||||
@ -349,7 +349,7 @@ CShowableAnim::CShowableAnim(int x, int y, std::string name, ui8 Flags, ui32 Del
|
||||
flags(Flags),
|
||||
xOffset(0),
|
||||
yOffset(0),
|
||||
alpha(255)
|
||||
alpha(alpha)
|
||||
{
|
||||
anim->loadGroup(group);
|
||||
last = anim->size(group);
|
||||
|
@ -142,7 +142,7 @@ public:
|
||||
//Set per-surface alpha, 0 = transparent, 255 = opaque
|
||||
void setAlpha(ui32 alphaValue);
|
||||
|
||||
CShowableAnim(int x, int y, std::string name, ui8 flags=0, ui32 Delay=4, size_t Group=0);
|
||||
CShowableAnim(int x, int y, std::string name, ui8 flags=0, ui32 Delay=4, size_t Group=0, uint8_t alpha = 255);
|
||||
~CShowableAnim();
|
||||
|
||||
//set animation to group or part of group
|
||||
|
Loading…
Reference in New Issue
Block a user