git repos / blockattack-game

commit 6444412c

Poul Sander · 2023-07-30 22:07
6444412cc8c7a3ba3fdd537131c4027664ce3df2 patch · browse files
parent 081d847ab67afcf2def54c77c8601af6b215b5b8

Add option for scrolling background

Changed files

M source/code/main.cpp before
M source/code/themes.cpp before
M source/code/themes.hpp before
diff --git a/source/code/main.cpp b/source/code/main.cpp index 8ec9eb0..8fcaa29 100644 --- a/source/code/main.cpp +++ b/source/code/main.cpp
@@ -123,8 +123,6 @@ static int InitImages(sago::SagoSpriteHolder& holder) {
bricks[5] = holder.GetSprite("block_yellow");
bricks[6] = holder.GetSprite("block_grey");
bomb = holder.GetSprite("block_bomb");
- //backgroundImage = holder.GetSprite("background");
- //backgroundSixteenNineImage = holder.GetSprite("background_sixteen_nine");
globalData.bHighScore = holder.GetSprite("b_highscore");
globalData.bBack = holder.GetSprite("b_blank");
bForward = holder.GetSprite("b_forward");
@@ -275,19 +273,26 @@ void DrawBackground(SDL_Renderer* target) {
if ( (double)globalData.xsize/globalData.ysize > 1.5 && globalData.theme.background.background_sprite_16x9.length()) {
background = globalData.spriteHolder->GetSprite(globalData.theme.background.background_sprite_16x9);
}
+ size_t ticks = SDL_GetTicks();
if (globalData.theme.background.background_scale == ImgScale::Tile) {
int nextX = 0;
+ if (globalData.theme.background.tileMoveSpeedX) {
+ nextX -= (ticks/globalData.theme.background.tileMoveSpeedX)%background.GetWidth();
+ }
while (nextX < globalData.xsize) {
int nextY = 0;
+ if (globalData.theme.background.tileMoveSpeedY) {
+ nextY -= (ticks/globalData.theme.background.tileMoveSpeedY)%background.GetWidth();
+ }
while (nextY < globalData.ysize) {
- background.Draw(target, SDL_GetTicks(), nextX, nextY);
+ background.Draw(target, ticks, nextX, nextY);
nextY += background.GetHeight();
}
nextX += background.GetWidth();
}
return;
}
- background.DrawScaled(target, SDL_GetTicks(), 0, 0, globalData.xsize, globalData.ysize);
+ background.DrawScaled(target, ticks, 0, 0, globalData.xsize, globalData.ysize);
}
/**
diff --git a/source/code/themes.cpp b/source/code/themes.cpp index 0b50be8..f5abd38 100644 --- a/source/code/themes.cpp +++ b/source/code/themes.cpp
@@ -44,6 +44,8 @@ static void InitBackGroundData() {
alt_background.background_sprite = "background_sample";
alt_background.background_sprite_16x9 = "";
alt_background.background_scale = ImgScale::Tile;
+ alt_background.tileMoveSpeedX = 50;
+ alt_background.tileMoveSpeedY = 100;
background_data["alt_background"] = alt_background;
}
diff --git a/source/code/themes.hpp b/source/code/themes.hpp index 34fe300..df7579b 100644 --- a/source/code/themes.hpp +++ b/source/code/themes.hpp
@@ -34,6 +34,8 @@ struct BackGroundData {
std::string background_name = "";
std::string background_sprite = "";
std::string background_sprite_16x9 = "";
+ int tileMoveSpeedX = 0; //Move the tiled background every X milliseconds. 0 disables it.
+ int tileMoveSpeedY = 0; //Move the tiled background every X milliseconds. 0 disables it.
ImgScale background_scale = ImgScale::Stretch;
};