Añadidos enemigos volteados verticalmente

This commit is contained in:
2022-11-09 22:49:51 +01:00
parent 41c765619d
commit 1a95abc2f5
9 changed files with 262 additions and 35 deletions

View File

@@ -3,7 +3,7 @@
<tileset firstgid="1" source="standard.tsx"/> <tileset firstgid="1" source="standard.tsx"/>
<layer id="1" name="Capa de patrones 1" width="32" height="16"> <layer id="1" name="Capa de patrones 1" width="32" height="16">
<data encoding="csv"> <data encoding="csv">
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, 115,118,119,114,115,118,119,114,115,118,119,114,115,118,119,114,115,118,119,114,115,118,119,114,115,118,119,114,115,118,119,114,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -18,7 +18,7 @@
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25 118,119,114,115,118,119,114,115,118,119,114,115,118,119,114,115,118,119,114,115,118,119,114,115,118,119,114,115,118,119,114,115
</data> </data>
</layer> </layer>
</map> </map>

View File

@@ -7,27 +7,183 @@ roomUp=0
roomDown=0 roomDown=0
roomLeft=37.room roomLeft=37.room
roomRight=35.room roomRight=35.room
itemColor1=green
itemColor2=red
[enemy] [enemy]
tileSetFile=diskette.png tileSetFile=spark.png
animation=diskette.ani animation=spark.ani
width=16 width=8
height=16 height=16
x=2 x=6
y=2 y=13
vx=0 vx=0.4
vy=0 vy=0
x1=2 x1=2
y1=13
x2=14
y2=13
color=yellow
[/enemy]
[enemy]
tileSetFile=spark.png
animation=spark.ani
width=8
height=16
x=21
y=13
vx=0.4
vy=0
x1=17
y1=13
x2=29
y2=13
color=yellow
[/enemy]
[enemy]
tileSetFile=spark.png
animation=spark.ani
width=8
height=16
x=2
y=10
vx=0.4
vy=0
x1=2
y1=10
x2=14
y2=10
color=yellow
mirror=true
[/enemy]
[enemy]
tileSetFile=spark.png
animation=spark.ani
width=8
height=16
x=17
y=10
vx=0.4
vy=0
x1=17
y1=10
x2=29
y2=10
color=yellow
mirror=true
[/enemy]
[enemy]
tileSetFile=shock.png
animation=shock.ani
width=8
height=8
x=13
y=2
vx=0
vy=0.4
x1=13
y1=2 y1=2
x2=2 x2=13
y2=2 y2=7
color=magenta color=bright_yellow
[/enemy]
[enemy]
tileSetFile=shock.png
animation=shock.ani
width=8
height=8
x=10
y=4
vx=0
vy=0.5
x1=10
y1=2
x2=10
y2=7
color=bright_yellow
[/enemy]
[enemy]
tileSetFile=shock.png
animation=shock.ani
width=8
height=8
x=7
y=6
vx=0
vy=0.6
x1=7
y1=2
x2=7
y2=7
color=bright_yellow
[/enemy]
[enemy]
tileSetFile=shock.png
animation=shock.ani
width=8
height=8
x=24
y=2
vx=0
vy=0.4
x1=24
y1=2
x2=24
y2=7
color=bright_yellow
[/enemy]
[enemy]
tileSetFile=shock.png
animation=shock.ani
width=8
height=8
x=21
y=4
vx=0
vy=0.5
x1=21
y1=2
x2=21
y2=7
color=bright_yellow
[/enemy]
[enemy]
tileSetFile=shock.png
animation=shock.ani
width=8
height=8
x=18
y=6
vx=0
vy=0.6
x1=18
y1=2
x2=18
y2=7
color=bright_yellow
[/enemy] [/enemy]
[item] [item]
tileSetFile=items.png tileSetFile=items.png
tile=1 tile=57
x=1 x=3
y=1 y=7
counter=1 counter=1
[/item]
[item]
tileSetFile=items.png
tile=57
x=28
y=7
counter=2
[/item] [/item]

View File

@@ -62,7 +62,7 @@ color=magenta
tileSetFile=items.png tileSetFile=items.png
tile=54 tile=54
x=17 x=17
y=2 y=1
[/item] [/item]
[item] [item]

View File

@@ -6,12 +6,12 @@
30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
30,0,0,0,0,0,0,0,0,0,0,323,323,0,0,0,0,323,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 30,0,0,0,0,0,0,0,0,0,0,323,323,0,0,0,0,323,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
30,0,0,0,0,0,0,0,323,323,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 30,0,0,0,0,0,0,0,323,323,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
30,0,0,0,0,323,323,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 30,0,0,0,0,323,323,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
30,0,323,323,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,323,323,323,323,323,0,323,323,323,323,323,0,323,323,323,323,0,395,0,0,0,395,395,395,395,395,395, 0,0,323,323,0,323,323,323,323,323,0,323,323,323,323,323,0,323,323,323,323,0,395,0,0,0,395,395,395,395,395,395,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,395,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,395,0,0,0,0,0,0,0,0,0,
30,30,30,0,0,0,395,395,395,0,0,0,395,395,0,0,0,0,395,395,395,0,0,0,0,0,0,0,0,0,0,0, 30,30,30,0,0,0,395,395,395,0,0,0,395,395,0,0,0,0,395,395,395,0,0,0,0,0,0,0,0,0,0,0,

View File

@@ -49,6 +49,8 @@ MovingSprite::MovingSprite(float x, float y, int w, int h, float velx, float vel
// Establece el tipo de volteado // Establece el tipo de volteado
currentFlip = SDL_FLIP_NONE; currentFlip = SDL_FLIP_NONE;
currentFlipH = false;
currentFlipV = false;
}; };
// Reinicia todas las variables // Reinicia todas las variables
@@ -305,16 +307,56 @@ void MovingSprite::switchRotate()
rotateAmount *= -1; rotateAmount *= -1;
} }
// Establece el valor de la variable // Actualiza el valor de la variable
void MovingSprite::setFlip(SDL_RendererFlip flip) void MovingSprite::updateCurrentFlip()
{ {
currentFlip = flip; if (currentFlipH && currentFlipV)
{
currentFlip = SDL_RendererFlip(SDL_FLIP_HORIZONTAL | SDL_FLIP_VERTICAL);
}
else if (currentFlipH && !currentFlipV)
{
currentFlip = SDL_FLIP_HORIZONTAL;
}
else if (!currentFlipH && currentFlipV)
{
currentFlip = SDL_FLIP_VERTICAL;
}
else if (!currentFlipH && !currentFlipV)
{
currentFlip = SDL_FLIP_NONE;
}
}
// Establece el valor de la variable
void MovingSprite::setFlipH(bool flip)
{
currentFlipH = flip;
updateCurrentFlip();
} }
// Gira el sprite horizontalmente // Gira el sprite horizontalmente
void MovingSprite::flip() void MovingSprite::flipH()
{ {
currentFlip = (currentFlip == SDL_FLIP_HORIZONTAL) ? SDL_FLIP_NONE : SDL_FLIP_HORIZONTAL; currentFlipH = !currentFlipH;
updateCurrentFlip();
}
// Establece el valor de la variable
void MovingSprite::setFlipV(bool flip)
{
currentFlipV = flip;
updateCurrentFlip();
}
// Voltea el sprite verticalmente
void MovingSprite::flipV()
{
currentFlipV = !currentFlipV;
updateCurrentFlip();
} }
// Obtiene el valor de la variable // Obtiene el valor de la variable
@@ -323,6 +365,18 @@ SDL_RendererFlip MovingSprite::getFlip()
return currentFlip; return currentFlip;
} }
// Obtiene el valor de la variable
bool MovingSprite::getFlipH()
{
return currentFlipH;
}
// Obtiene el valor de la variable
bool MovingSprite::getFlipV()
{
return currentFlipV;
}
// Devuelve el rectangulo donde está el sprite // Devuelve el rectangulo donde está el sprite
SDL_Rect MovingSprite::getRect() SDL_Rect MovingSprite::getRect()
{ {

View File

@@ -35,6 +35,8 @@ protected:
double rotateAmount; // Cantidad de grados a girar en cada iteración double rotateAmount; // Cantidad de grados a girar en cada iteración
int counter; // Contador interno int counter; // Contador interno
SDL_RendererFlip currentFlip; // Indica como se voltea el sprite SDL_RendererFlip currentFlip; // Indica como se voltea el sprite
bool currentFlipV;
bool currentFlipH;
public: public:
// Constructor // Constructor
@@ -139,15 +141,30 @@ public:
// Cambia el sentido de la rotación // Cambia el sentido de la rotación
void switchRotate(); void switchRotate();
// Actualiza el valor de la variable
void updateCurrentFlip();
// Establece el valor de la variable // Establece el valor de la variable
void setFlip(SDL_RendererFlip flip); void setFlipH(bool flip);
// Gira el sprite horizontalmente // Gira el sprite horizontalmente
void flip(); void flipH();
// Establece el valor de la variable
void setFlipV(bool flip);
// Voltea el sprite verticalmente
void flipV();
// Obtiene el valor de la variable // Obtiene el valor de la variable
SDL_RendererFlip getFlip(); SDL_RendererFlip getFlip();
// Obtiene el valor de la variable
bool getFlipH();
// Obtiene el valor de la variable
bool getFlipV();
// Devuelve el rectangulo donde está el sprite // Devuelve el rectangulo donde está el sprite
SDL_Rect getRect(); SDL_Rect getRect();

View File

@@ -26,9 +26,10 @@ Enemy::Enemy(enemy_t enemy)
{ {
if (enemy.vx < 0.0f) if (enemy.vx < 0.0f)
{ {
sprite->setFlip(SDL_FLIP_HORIZONTAL); sprite->setFlipH(true);
} }
} }
sprite->setFlipV(mirror);
collider = getRect(); collider = getRect();
@@ -66,7 +67,7 @@ void Enemy::checkPath()
sprite->setVelX(sprite->getVelX() * (-1)); sprite->setVelX(sprite->getVelX() * (-1));
if (doFlip) if (doFlip)
{ {
sprite->flip(); sprite->flipH();
} }
} }
@@ -75,7 +76,7 @@ void Enemy::checkPath()
sprite->setVelY(sprite->getVelY() * (-1)); sprite->setVelY(sprite->getVelY() * (-1));
if (doFlip) if (doFlip)
{ {
sprite->flip(); sprite->flipH();
} }
} }
} }

View File

@@ -43,7 +43,7 @@ Player::Player(player_t player)
sprite->setWidth(8); sprite->setWidth(8);
sprite->setHeight(16); sprite->setHeight(16);
sprite->setFlip(player.spawn.flip); sprite->setFlipH(player.spawn.flipH);
sprite->setCurrentAnimation("walk"); sprite->setCurrentAnimation("walk");
sprite->animate(); sprite->animate();
@@ -162,13 +162,13 @@ void Player::checkInput()
if (input->checkInput(INPUT_LEFT, REPEAT_TRUE)) if (input->checkInput(INPUT_LEFT, REPEAT_TRUE))
{ {
vx = -0.6f; vx = -0.6f;
sprite->setFlip(SDL_FLIP_HORIZONTAL); sprite->setFlipH(true);
} }
else if (input->checkInput(INPUT_RIGHT, REPEAT_TRUE)) else if (input->checkInput(INPUT_RIGHT, REPEAT_TRUE))
{ {
vx = 0.6f; vx = 0.6f;
sprite->setFlip(SDL_FLIP_NONE); sprite->setFlipH(false);
} }
else else
@@ -186,11 +186,11 @@ void Player::checkInput()
if (vx > 0.0f) if (vx > 0.0f)
{ {
sprite->setFlip(SDL_FLIP_NONE); sprite->setFlipH(false);
} }
else else
{ {
sprite->setFlip(SDL_FLIP_HORIZONTAL); sprite->setFlipH(true);
} }
} }
@@ -685,7 +685,7 @@ playerSpawn_t Player::getSpawnParams()
params.vy = vy; params.vy = vy;
params.jumpIni = jumpIni; params.jumpIni = jumpIni;
params.state = state; params.state = state;
params.flip = sprite->getFlip(); params.flipH = sprite->getFlipH();
return params; return params;
} }
@@ -694,7 +694,6 @@ playerSpawn_t Player::getSpawnParams()
void Player::reLoadTexture() void Player::reLoadTexture()
{ {
sprite->getTexture()->reLoad(); sprite->getTexture()->reLoad();
// texture->reLoad();
} }
// Recarga la paleta // Recarga la paleta

View File

@@ -30,7 +30,7 @@ struct playerSpawn_t
float vy; float vy;
int jumpIni; int jumpIni;
state_e state; state_e state;
SDL_RendererFlip flip; bool flipH;
}; };
struct player_t struct player_t