Capa de fondo con posibilidad de scroll
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
fullScreenMode=0
|
fullScreenMode=0
|
||||||
windowSize=2
|
windowSize=3
|
||||||
filter=FILTER_NEAREST
|
filter=FILTER_NEAREST
|
||||||
vSync=true
|
vSync=true
|
||||||
integerScale=true
|
integerScale=true
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ tileset_img=surface.png
|
|||||||
enemy_file=01.ene
|
enemy_file=01.ene
|
||||||
bgColor1=0,171,159
|
bgColor1=0,171,159
|
||||||
bgColor2=144,225,231
|
bgColor2=144,225,231
|
||||||
|
bgScroll=true
|
||||||
|
|
||||||
room_up=0
|
room_up=0
|
||||||
room_down=0
|
room_down=0
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ tileset_img=surface.png
|
|||||||
enemy_file=02.ene
|
enemy_file=02.ene
|
||||||
bgColor1=0,171,159
|
bgColor1=0,171,159
|
||||||
bgColor2=144,225,231
|
bgColor2=144,225,231
|
||||||
|
bgScroll=true
|
||||||
|
|
||||||
room_up=0
|
room_up=0
|
||||||
room_down=03.map
|
room_down=03.map
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
tileset_img=surface.png
|
tileset_img=surface.png
|
||||||
bgColor1=255,90,100
|
bgColor1=255,90,100
|
||||||
bgColor2=255,255,100
|
bgColor2=255,255,100
|
||||||
|
bgScroll=true
|
||||||
|
|
||||||
room_up=0
|
room_up=0
|
||||||
room_down=04.map
|
room_down=04.map
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
tileset_img=surface.png
|
tileset_img=surface.png
|
||||||
bgColor1=0,171,159
|
bgColor1=0,171,159
|
||||||
bgColor2=144,225,231
|
bgColor2=144,225,231
|
||||||
|
bgScroll=true
|
||||||
|
|
||||||
room_up=0
|
room_up=0
|
||||||
room_down=06.map
|
room_down=06.map
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, D
|
|||||||
this->screen = screen;
|
this->screen = screen;
|
||||||
this->input = input;
|
this->input = input;
|
||||||
this->debug = debug;
|
this->debug = debug;
|
||||||
this->debug->setEnabled(true);
|
//this->debug->setEnabled(true);
|
||||||
|
|
||||||
// Reserva memoria para los objetos
|
// Reserva memoria para los objetos
|
||||||
scoreboard = new ScoreBoard(renderer, asset, &board);
|
scoreboard = new ScoreBoard(renderer, asset, &board);
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ Map::Map(std::string file, SDL_Renderer *renderer, Asset *asset, ItemTracker *it
|
|||||||
name = file.substr(file.find_last_of("\\/") + 1);
|
name = file.substr(file.find_last_of("\\/") + 1);
|
||||||
enemy_file = "";
|
enemy_file = "";
|
||||||
bgColor1 = bgColor2 = {0, 0, 0};
|
bgColor1 = bgColor2 = {0, 0, 0};
|
||||||
|
bgScroll = false;
|
||||||
|
counter = 0;
|
||||||
|
|
||||||
// Copia los punteros a objetos
|
// Copia los punteros a objetos
|
||||||
this->asset = asset;
|
this->asset = asset;
|
||||||
@@ -273,6 +275,7 @@ bool Map::setVars(std::string var, std::string value)
|
|||||||
{
|
{
|
||||||
tileset_img = value;
|
tileset_img = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "bgColor1")
|
else if (var == "bgColor1")
|
||||||
{
|
{
|
||||||
// Se introducen los valores separados por comas en un vector
|
// Se introducen los valores separados por comas en un vector
|
||||||
@@ -285,6 +288,7 @@ bool Map::setVars(std::string var, std::string value)
|
|||||||
getline(ss, tmp, ',');
|
getline(ss, tmp, ',');
|
||||||
bgColor1.b = std::stoi(tmp);
|
bgColor1.b = std::stoi(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "bgColor2")
|
else if (var == "bgColor2")
|
||||||
{
|
{
|
||||||
// Se introducen los valores separados por comas en un vector
|
// Se introducen los valores separados por comas en un vector
|
||||||
@@ -297,29 +301,41 @@ bool Map::setVars(std::string var, std::string value)
|
|||||||
getline(ss, tmp, ',');
|
getline(ss, tmp, ',');
|
||||||
bgColor2.b = std::stoi(tmp);
|
bgColor2.b = std::stoi(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (var == "bgScroll")
|
||||||
|
{
|
||||||
|
bgScroll = stringToBool(value);
|
||||||
|
}
|
||||||
|
|
||||||
else if (var == "room_up")
|
else if (var == "room_up")
|
||||||
{
|
{
|
||||||
room_up = value;
|
room_up = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "room_down")
|
else if (var == "room_down")
|
||||||
{
|
{
|
||||||
room_down = value;
|
room_down = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "room_left")
|
else if (var == "room_left")
|
||||||
{
|
{
|
||||||
room_left = value;
|
room_left = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "room_right")
|
else if (var == "room_right")
|
||||||
{
|
{
|
||||||
room_right = value;
|
room_right = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "enemy_file")
|
else if (var == "enemy_file")
|
||||||
{
|
{
|
||||||
enemy_file = value;
|
enemy_file = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "")
|
else if (var == "")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
success = false;
|
success = false;
|
||||||
@@ -338,53 +354,66 @@ bool Map::setActor(actor_t *actor, SDL_Point *p1, SDL_Point *p2, std::string var
|
|||||||
{
|
{
|
||||||
actor->tileset = value;
|
actor->tileset = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "animation")
|
else if (var == "animation")
|
||||||
{
|
{
|
||||||
actor->animation = value;
|
actor->animation = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "width")
|
else if (var == "width")
|
||||||
{
|
{
|
||||||
actor->w = std::stoi(value);
|
actor->w = std::stoi(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "height")
|
else if (var == "height")
|
||||||
{
|
{
|
||||||
actor->h = std::stoi(value);
|
actor->h = std::stoi(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "x")
|
else if (var == "x")
|
||||||
{
|
{
|
||||||
actor->x = std::stof(value) * tile_size;
|
actor->x = std::stof(value) * tile_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "y")
|
else if (var == "y")
|
||||||
{
|
{
|
||||||
actor->y = std::stof(value) * tile_size;
|
actor->y = std::stof(value) * tile_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "vx")
|
else if (var == "vx")
|
||||||
{
|
{
|
||||||
actor->vx = std::stof(value);
|
actor->vx = std::stof(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "vy")
|
else if (var == "vy")
|
||||||
{
|
{
|
||||||
actor->vy = std::stof(value);
|
actor->vy = std::stof(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "x1")
|
else if (var == "x1")
|
||||||
{
|
{
|
||||||
p1->x = std::stoi(value) * tile_size;
|
p1->x = std::stoi(value) * tile_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "x2")
|
else if (var == "x2")
|
||||||
{
|
{
|
||||||
p2->x = std::stoi(value) * tile_size;
|
p2->x = std::stoi(value) * tile_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "y1")
|
else if (var == "y1")
|
||||||
{
|
{
|
||||||
p1->y = std::stoi(value) * tile_size;
|
p1->y = std::stoi(value) * tile_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var == "y2")
|
else if (var == "y2")
|
||||||
{
|
{
|
||||||
p2->y = std::stoi(value) * tile_size;
|
p2->y = std::stoi(value) * tile_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if ((var == "[/moving platform]") || (var == "[/diamond]"))
|
else if ((var == "[/moving platform]") || (var == "[/diamond]"))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
success = false;
|
success = false;
|
||||||
@@ -468,8 +497,23 @@ void Map::render()
|
|||||||
void Map::renderLayer0()
|
void Map::renderLayer0()
|
||||||
{
|
{
|
||||||
// Dibuja la textura con el mapa en pantalla
|
// Dibuja la textura con el mapa en pantalla
|
||||||
|
if (bgScroll)
|
||||||
|
{
|
||||||
|
const int offset = PLAY_AREA_WIDTH - ((counter / 20) % PLAY_AREA_WIDTH);
|
||||||
|
SDL_Rect src1 = {PLAY_AREA_X, PLAY_AREA_Y, offset, PLAY_AREA_HEIGHT};
|
||||||
|
SDL_Rect dst1 = {PLAY_AREA_X + PLAY_AREA_WIDTH - offset, PLAY_AREA_Y, offset, PLAY_AREA_HEIGHT};
|
||||||
|
|
||||||
|
SDL_Rect src2 = {PLAY_AREA_X + offset, PLAY_AREA_Y, PLAY_AREA_WIDTH - offset, PLAY_AREA_HEIGHT};
|
||||||
|
SDL_Rect dst2 = {PLAY_AREA_X, PLAY_AREA_Y, PLAY_AREA_WIDTH - offset, PLAY_AREA_HEIGHT};
|
||||||
|
|
||||||
|
SDL_RenderCopy(renderer, map_layer0, &src1, &dst1);
|
||||||
|
SDL_RenderCopy(renderer, map_layer0, &src2, &dst2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
SDL_Rect rect = {PLAY_AREA_X, PLAY_AREA_Y, PLAY_AREA_WIDTH, PLAY_AREA_HEIGHT};
|
SDL_Rect rect = {PLAY_AREA_X, PLAY_AREA_Y, PLAY_AREA_WIDTH, PLAY_AREA_HEIGHT};
|
||||||
SDL_RenderCopy(renderer, map_layer0, NULL, &rect);
|
SDL_RenderCopy(renderer, map_layer0, nullptr, nullptr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dibuja la capa 1
|
// Dibuja la capa 1
|
||||||
@@ -492,6 +536,8 @@ void Map::renderActors()
|
|||||||
// Actualiza todas las variables
|
// Actualiza todas las variables
|
||||||
void Map::update()
|
void Map::update()
|
||||||
{
|
{
|
||||||
|
counter++;
|
||||||
|
|
||||||
for (auto actor : actors)
|
for (auto actor : actors)
|
||||||
{
|
{
|
||||||
actor->update();
|
actor->update();
|
||||||
|
|||||||
@@ -53,7 +53,9 @@ private:
|
|||||||
std::vector<Actor *> actors; // Listado con los actores de la habitación
|
std::vector<Actor *> actors; // Listado con los actores de la habitación
|
||||||
color_t bgColor1; // Color superior del degradado de fondo
|
color_t bgColor1; // Color superior del degradado de fondo
|
||||||
color_t bgColor2; // Color inferior del degradado de fondo
|
color_t bgColor2; // Color inferior del degradado de fondo
|
||||||
|
bool bgScroll; // Indica si la capa de fondo se mueve
|
||||||
ItemTracker *itemTracker; // Objeto que gestiona los items que ya se han recogido
|
ItemTracker *itemTracker; // Objeto que gestiona los items que ya se han recogido
|
||||||
|
int counter; // Contador para lo que se necesite
|
||||||
|
|
||||||
int tile_size; // Ancho del tile en pixels
|
int tile_size; // Ancho del tile en pixels
|
||||||
int map_width; // Ancho del mapa en tiles
|
int map_width; // Ancho del mapa en tiles
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Asset *asset, board_t *board)
|
|||||||
// Inicializa las variables
|
// Inicializa las variables
|
||||||
rect = {SCOREBOARD_X, SCOREBOARD_Y, SCOREBOARD_WIDTH, SCOREBOARD_HEIGHT};
|
rect = {SCOREBOARD_X, SCOREBOARD_Y, SCOREBOARD_WIDTH, SCOREBOARD_HEIGHT};
|
||||||
counter = 0;
|
counter = 0;
|
||||||
movingCounter = 0;
|
|
||||||
fadingCounter = 0;
|
fadingCounter = 0;
|
||||||
state = sb_hide;
|
state = sb_hide;
|
||||||
}
|
}
|
||||||
@@ -101,16 +100,12 @@ void ScoreBoard::update()
|
|||||||
|
|
||||||
else if (state == sb_showing)
|
else if (state == sb_showing)
|
||||||
{
|
{
|
||||||
movingCounter++;
|
|
||||||
fadingCounter++;
|
fadingCounter++;
|
||||||
|
|
||||||
// float step = ((float)fadingCounter / (float)SCOREBOARD_HEIGHT);
|
const float step = ((float)fadingCounter / (float)SCOREBOARD_HEIGHT);
|
||||||
auto easingFunction = getEasingFunction(EaseOutSine);
|
const int alpha = 255 * step;
|
||||||
auto step = easingFunction(((float)fadingCounter / (float)SCOREBOARD_HEIGHT));
|
|
||||||
int alpha = 0 + ((255 - 0) * step);
|
|
||||||
int pos = -32 + ((0 + 32) * step);
|
|
||||||
|
|
||||||
rect.y = pos;
|
rect.y++;
|
||||||
SDL_SetTextureAlphaMod(layer, alpha);
|
SDL_SetTextureAlphaMod(layer, alpha);
|
||||||
|
|
||||||
if (rect.y == SCOREBOARD_Y)
|
if (rect.y == SCOREBOARD_Y)
|
||||||
@@ -122,22 +117,18 @@ void ScoreBoard::update()
|
|||||||
|
|
||||||
else if (state == sb_hiding)
|
else if (state == sb_hiding)
|
||||||
{
|
{
|
||||||
movingCounter--;
|
|
||||||
fadingCounter--;
|
fadingCounter--;
|
||||||
|
|
||||||
auto easingFunction = getEasingFunction(EaseOutSine);
|
const float step = ((float)fadingCounter / (float)SCOREBOARD_HEIGHT);
|
||||||
auto step = easingFunction(((float)fadingCounter / (float)SCOREBOARD_HEIGHT));
|
const int alpha = 255 * step;
|
||||||
int alpha = 0 + ((255 - 0) * step);
|
|
||||||
int pos = -32 + ((0 + 32) * step);
|
|
||||||
|
|
||||||
rect.y = pos;
|
rect.y--;
|
||||||
SDL_SetTextureAlphaMod(layer, alpha);
|
SDL_SetTextureAlphaMod(layer, alpha);
|
||||||
|
|
||||||
if (rect.y == SCOREBOARD_Y - SCOREBOARD_HEIGHT)
|
if (rect.y == SCOREBOARD_Y - SCOREBOARD_HEIGHT)
|
||||||
{
|
{
|
||||||
state = sb_hide;
|
state = sb_hide;
|
||||||
counter = 0;
|
counter = 0;
|
||||||
movingCounter = 0;
|
|
||||||
fadingCounter = 0;
|
fadingCounter = 0;
|
||||||
SDL_SetTextureAlphaMod(layer, 255);
|
SDL_SetTextureAlphaMod(layer, 255);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ private:
|
|||||||
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
|
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
|
||||||
Text *text; // Objeto para escribir texto
|
Text *text; // Objeto para escribir texto
|
||||||
int counter; // Contador interno
|
int counter; // Contador interno
|
||||||
int movingCounter; // Contador para el movimiento del marcador
|
|
||||||
int fadingCounter; // Contador para el desvanecimiento del marcador
|
int fadingCounter; // Contador para el desvanecimiento del marcador
|
||||||
board_t *board; // Contiene las variables a mostrar en el marcador
|
board_t *board; // Contiene las variables a mostrar en el marcador
|
||||||
sb_state_e state; // Estado en el que se encuentra el marcador
|
sb_state_e state; // Estado en el que se encuentra el marcador
|
||||||
|
|||||||
Reference in New Issue
Block a user