scrolling background
This commit is contained in:
parent
91b9826625
commit
3c3ead5bf5
|
@ -0,0 +1,26 @@
|
|||
The SHMUP Todo list :
|
||||
|
||||
Partie décors :
|
||||
- animer le décors avec le parallaxe (glissement de la droite vers la gauche pour donner l'avancement du vaisseau).
|
||||
- animer des éléments du décors (clignotements, sprites animés, ...)
|
||||
- interaction avec le décors (collisions possibles avec certaines tiles) qui imposent donc de suivre un "chemin" dans le niveau
|
||||
|
||||
Partie mouvement :
|
||||
- améliorer le système de trajectoires sur base de Splines pour rendre la vitesse des ennemis plus constante.
|
||||
- rendre les satellites sur une trajectoire (possibilité d'avoir des patterns plus complexes)
|
||||
- possibilité de transformer les trajectoires (grossissement/rétrécissement, translation et rotation)
|
||||
|
||||
Partie interaction / gameplay :
|
||||
- implémenter les tirs ennemis (avec une IA minimale)
|
||||
- implémenter les hits des tirs ennemis sur le joueur
|
||||
- implémenter les collisions avec les ennemies
|
||||
- implémenter le tir des satellites
|
||||
- implémenter un système de bonus (points, upgrade tir/satellites/... )
|
||||
|
||||
Autres :
|
||||
- plein de trucs dont boss "multi-morceaux et multi-hitboxes"
|
||||
- création de différents levels
|
||||
- créations de différents ennemis
|
||||
- créations de différents boss
|
||||
- créations de différentes armes
|
||||
- créations de différents bonus
|
|
@ -22,18 +22,21 @@ Background::~Background( )
|
|||
|
||||
void Background::Render( void )
|
||||
{
|
||||
int x0 = (int) xlevel;
|
||||
int shifttile = (int) (16*xlevel.frac());
|
||||
|
||||
for(int i=0; i<25; i++)
|
||||
|
||||
for(int i=0; i<=25; i++)
|
||||
{
|
||||
for(int j=0; j<14; j++)
|
||||
{
|
||||
uint16_t index = j * map_Level1.w + i;
|
||||
uint16_t index = j * map_Level1.w + (x0+i)%25;
|
||||
uint16_t currentTile = map_Level1.layers[ index ];
|
||||
if (currentTile!=0)
|
||||
{
|
||||
uint16_t xtile = ((currentTile % 9)-1) * 16;
|
||||
uint16_t ytile = (currentTile / 9) * 16;
|
||||
azrp_subimage_p8( i*16, j*16, map_Level1.tileset, xtile, ytile, 16, 16, DIMAGE_NONE );
|
||||
azrp_subimage_p8( i*16-shifttile, j*16, map_Level1.tileset, xtile, ytile, 16, 16, DIMAGE_NONE );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -43,5 +46,6 @@ void Background::Render( void )
|
|||
|
||||
void Background::Update( float dt )
|
||||
{
|
||||
|
||||
libnum::num a = libnum::num( dt / 18000.0f );
|
||||
xlevel += a;
|
||||
}
|
|
@ -8,7 +8,7 @@
|
|||
#include <azur/gint/render.h>
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "num/num.h"
|
||||
|
||||
struct Map {
|
||||
/*width, height and the number of layer of the map*/
|
||||
|
@ -31,6 +31,10 @@ class Background
|
|||
|
||||
void Update( float dt );
|
||||
void Render( );
|
||||
|
||||
private:
|
||||
libnum::num xlevel, ylevel;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -67,10 +67,7 @@ void Enemy::Update( float dt )
|
|||
}
|
||||
else
|
||||
{
|
||||
int tempX, tempY;
|
||||
pathToFollow->CalculatePosition( dt, speed, true, &tempX, &tempY );
|
||||
x = libnum::num( tempX );
|
||||
y = libnum::num( tempY );
|
||||
pathToFollow->CalculatePosition( dt, speed, true, &x, &y );
|
||||
}
|
||||
|
||||
xmin = (int) x - width;
|
||||
|
|
|
@ -179,6 +179,9 @@ static void update( float dt )
|
|||
MyPlayerBullets.erase( MyPlayerBullets.begin() + i );
|
||||
}
|
||||
}
|
||||
|
||||
MyBackground.Update( dt );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ void Trajectory::AddPoint( Point2D *p )
|
|||
}
|
||||
|
||||
|
||||
void Trajectory::CalculatePosition( float time, uint16_t speed, bool looped, int *xreturn, int *yreturn )
|
||||
void Trajectory::CalculatePosition( float time, uint16_t speed, bool looped, libnum::num *xreturn, libnum::num *yreturn )
|
||||
{
|
||||
accumulatedTime += speed * time / 2000000.0f;
|
||||
if (accumulatedTime>ControlPoints.size()) accumulatedTime-=ControlPoints.size();
|
||||
|
@ -56,6 +56,6 @@ void Trajectory::CalculatePosition( float time, uint16_t speed, bool looped, int
|
|||
libnum::num tx = libnum::num( 0.5f ) * (ControlPoints[p0]->x * q1 + ControlPoints[p1]->x * q2 + ControlPoints[p2]->x * q3 + ControlPoints[p3]->x * q4);
|
||||
libnum::num ty = libnum::num( 0.5f ) * (ControlPoints[p0]->y * q1 + ControlPoints[p1]->y * q2 + ControlPoints[p2]->y * q3 + ControlPoints[p3]->y * q4);
|
||||
|
||||
*xreturn = (int) tx;
|
||||
*yreturn = (int) ty;
|
||||
*xreturn = tx;
|
||||
*yreturn = ty;
|
||||
}
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
#include <vector>
|
||||
#include "point2D.h"
|
||||
|
||||
#include "num/num.h"
|
||||
|
||||
class Trajectory
|
||||
{
|
||||
|
@ -16,7 +16,7 @@ class Trajectory
|
|||
~Trajectory( );
|
||||
|
||||
void AddPoint( Point2D *p );
|
||||
void CalculatePosition( float time, uint16_t speed, bool looped, int *xreturn, int *yreturn );
|
||||
void CalculatePosition( float time, uint16_t speed, bool looped, libnum::num *xreturn, libnum::num *yreturn );
|
||||
|
||||
std::vector<Point2D*> ControlPoints;
|
||||
bool isLoop;
|
||||
|
|
Loading…
Reference in New Issue