stability I guess
This commit is contained in:
parent
eb25f940bd
commit
a753e7a7b9
@ -1,7 +1,8 @@
|
||||
# Players config
|
||||
players:
|
||||
width: 250
|
||||
startXPosition: 0
|
||||
startXPosition: 50
|
||||
fireCooldown: 50
|
||||
speed: 1
|
||||
user1:
|
||||
color: red
|
||||
@ -18,6 +19,7 @@ players:
|
||||
|
||||
# Enemies config
|
||||
invaders:
|
||||
fireCooldown: 20
|
||||
size: 15
|
||||
speed: 2
|
||||
distance: 10 # distance in pixels between invaders
|
||||
|
@ -11,20 +11,25 @@ struct ConfigData {
|
||||
|
||||
invadersGrid grid;
|
||||
|
||||
unsigned startXPosition;
|
||||
unsigned playersSpeed;
|
||||
unsigned playersWidth;
|
||||
unsigned playersFireCooldown;
|
||||
vector<PlayerDef> playerDefs;
|
||||
|
||||
|
||||
|
||||
unsigned invadersSpeed;
|
||||
unsigned invadersSize;
|
||||
unsigned invadersDistance;
|
||||
unsigned invadersFireCooldown;
|
||||
|
||||
unsigned missilesWidth;
|
||||
unsigned missilesLength; // auto defined from width
|
||||
unsigned missilesSpeed;
|
||||
unsigned torpedosWidth;
|
||||
unsigned torpedosLength; // auto defined from width
|
||||
unsigned playersWidth;
|
||||
|
||||
unsigned invadersSpeed;
|
||||
unsigned playersSpeed;
|
||||
|
||||
vector<PlayerDef> playerDefs;
|
||||
unsigned startXPosition;
|
||||
unsigned torpedosSpeed;
|
||||
};
|
||||
|
||||
#endif
|
@ -40,7 +40,7 @@ private:
|
||||
bool checkTorpedosAndInvaders();
|
||||
bool invadersTouchPlayer();
|
||||
|
||||
void managePlayerMoves(PlayerDef&, unsigned&, unsigned);
|
||||
void manageOnePlayer(unsigned);
|
||||
|
||||
public:
|
||||
// in case someone wants to mess with the code, here's a minimal API, costs nothing to us
|
||||
|
@ -8,6 +8,7 @@ struct Player{
|
||||
unsigned score=0;
|
||||
|
||||
unsigned deathAnimCounter=0;
|
||||
unsigned fireCooldown=0;
|
||||
};
|
||||
|
||||
#endif
|
@ -77,6 +77,7 @@ void ConfigBuilder::readConfig() {
|
||||
collectedData.playersWidth = getInt("players.width");
|
||||
collectedData.startXPosition = getInt("players.startXPosition");
|
||||
collectedData.playersSpeed = getInt("players.speed");
|
||||
collectedData.playersFireCooldown = getInt("players.fireCooldown");
|
||||
|
||||
// the scalability behind the vector of players is only an illusion, because we force player count to be 1 or 2
|
||||
// It was done so the 2+ players implementation could be easier in the future, if wanted
|
||||
@ -95,13 +96,16 @@ void ConfigBuilder::readConfig() {
|
||||
collectedData.invadersSize = getInt("invaders.size");
|
||||
collectedData.invadersSpeed = getInt("invaders.speed");
|
||||
collectedData.invadersDistance = getInt("invaders.distance");
|
||||
collectedData.invadersFireCooldown = getInt("invaders.fireCooldown");
|
||||
|
||||
// projectiles
|
||||
collectedData.missilesWidth = getInt("projectiles.missiles.width");
|
||||
collectedData.missilesLength = collectedData.missilesWidth*PROJ_LENGTH_FACTOR;
|
||||
collectedData.missilesSpeed = getInt("projectiles.missiles.speed");
|
||||
|
||||
collectedData.torpedosWidth = getInt("projectiles.torpedos.width");
|
||||
collectedData.torpedosLength = collectedData.torpedosWidth*PROJ_LENGTH_FACTOR;
|
||||
collectedData.torpedosSpeed = getInt("projectiles.missiles.speed");
|
||||
}
|
||||
|
||||
int ConfigBuilder::getInt(const configKey& key) {
|
||||
|
@ -1,30 +1,28 @@
|
||||
#include "game.h"
|
||||
|
||||
// TODO put in config (EVERYTHING SHALL GO IN CONFIG, THE WHOLE CODE SHALL GO IN CONFIIIIIIIIG)
|
||||
#define MISSILE_SPEED 5
|
||||
#define TORPEDO_SPEED MISSILE_SPEED
|
||||
|
||||
#define ISPRESSED(X) window.isPressed({X, false})
|
||||
|
||||
void Game::managePlayerMoves(PlayerDef& pdef, unsigned& playerX, unsigned playerId){
|
||||
if (ISPRESSED(pdef.keys.left)){
|
||||
if(playerX < confData.playersSpeed) playerX = 0;
|
||||
else playerX = playerX - confData.playersSpeed;
|
||||
void Game::manageOnePlayer(unsigned id){
|
||||
#define ISPRESSED(ID, X) window.isPressed({confData.playerDefs[ID].keys.X, false})
|
||||
if (ISPRESSED(id, left)){
|
||||
if(players[id].x < confData.playersSpeed) players[id].x = 0;
|
||||
else players[id].x -= confData.playersSpeed;
|
||||
}
|
||||
if (ISPRESSED(pdef.keys.right)){
|
||||
if(playerX + confData.playersSpeed >= pm.getScreenWidth()) playerX = pm.getScreenWidth() - 1;
|
||||
else playerX = playerX + confData.playersSpeed;
|
||||
}
|
||||
if(ISPRESSED(pdef.keys.shoot)){
|
||||
torpedos.emplace_back(playerX + confData.playersWidth / 2, pm.getScreenHeight() - PLAYER_HEIGHT, playerId);
|
||||
if (ISPRESSED(id, right)){
|
||||
if(players[id].x + confData.playersSpeed >= pm.getScreenWidth()) players[id].x = pm.getScreenWidth() - 1;
|
||||
else players[id].x += confData.playersSpeed;
|
||||
}
|
||||
if(players[id].fireCooldown==0) {
|
||||
if (ISPRESSED(id, shoot)) {
|
||||
torpedos.emplace_back(players[id].x + confData.playersWidth / 2, pm.getScreenHeight() - PLAYER_HEIGHT, id);
|
||||
players[id].fireCooldown = confData.playersFireCooldown;
|
||||
}
|
||||
}else --players[id].fireCooldown;
|
||||
}
|
||||
|
||||
/** Makes the players play once
|
||||
*/
|
||||
void Game::managePlayers(){
|
||||
managePlayerMoves(confData.playerDefs[0], players[0].x,0);
|
||||
if(playMode==PlayMode::TWO_LOCAL)managePlayerMoves(confData.playerDefs[1], players[1].x, 1);
|
||||
manageOnePlayer(0);
|
||||
if(playMode==PlayMode::TWO_LOCAL)manageOnePlayer(1);
|
||||
else if(playMode==PlayMode::TWO_TCPIP){
|
||||
// TODO TCPIP
|
||||
}
|
||||
@ -101,7 +99,7 @@ void Game::moveMissiles() {
|
||||
while (miss != missiles.end()) {
|
||||
if (miss->getY() >= pm.getScreenHeight())missiles.erase(miss);
|
||||
else {
|
||||
miss->setY(miss->getY()+MISSILE_SPEED);
|
||||
miss->setY(miss->getY()+confData.missilesSpeed);
|
||||
++miss;
|
||||
}
|
||||
}
|
||||
@ -112,7 +110,7 @@ void Game::moveTorpedos() {
|
||||
while (tor != torpedos.end()) {
|
||||
if (tor->getY() <= 0)torpedos.erase(tor); // TODO maybe wait for it to be 100% offscreen
|
||||
else{
|
||||
tor->setY(tor->getY() - TORPEDO_SPEED);
|
||||
tor->setY(tor->getY()-confData.torpedosSpeed);
|
||||
++tor;
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,6 @@ void PixelManager::dessinerJoueur(const nsGraphics::Vec2D& baseVector, unsigned
|
||||
window << nsShape::Triangle(nsGraphics::Vec2D(15+width*2, 720)+baseVector, nsGraphics::Vec2D(15+width*2, 720-PLAYER_HEIGHT/2)+baseVector, nsGraphics::Vec2D(20+width*2, 720)+baseVector, color);
|
||||
window << nsShape::Triangle(nsGraphics::Vec2D(5,720-PLAYER_HEIGHT/2)+baseVector, nsGraphics::Vec2D(5+width,720-PLAYER_HEIGHT/2)+baseVector, nsGraphics::Vec2D(5+width,720-PLAYER_HEIGHT*0.9)+baseVector, color);
|
||||
window << nsShape::Triangle(nsGraphics::Vec2D(15+width,720-PLAYER_HEIGHT/2)+baseVector, nsGraphics::Vec2D(15+width*2,720-PLAYER_HEIGHT/2)+baseVector, nsGraphics::Vec2D(15+width,720-PLAYER_HEIGHT*0.9)+baseVector, color);
|
||||
|
||||
}
|
||||
|
||||
void PixelManager::dessinerSprite(const nsGraphics::Vec2D& baseVector, const std::string& spritePath){
|
||||
|
Loading…
Reference in New Issue
Block a user