added bones block to master mode and added invisible mode
All checks were successful
Linux arm64 / Build (push) Successful in 1m55s
All checks were successful
Linux arm64 / Build (push) Successful in 1m55s
This commit is contained in:
@@ -366,6 +366,10 @@ bool Game::areBlocksBones() const {
|
||||
return this->parameters.getBoneBlocks();
|
||||
}
|
||||
|
||||
bool Game::isBoardInvisible() const {
|
||||
return this->parameters.getInvisibleBoard();
|
||||
}
|
||||
|
||||
const Board& Game::getBoard() const {
|
||||
return this->board.getBoard();
|
||||
}
|
||||
|
||||
@@ -136,6 +136,11 @@ class Game {
|
||||
*/
|
||||
bool areBlocksBones() const;
|
||||
|
||||
/**
|
||||
* @return If the board is currently invisible
|
||||
*/
|
||||
bool isBoardInvisible() const;
|
||||
|
||||
/**
|
||||
* @return The board
|
||||
*/
|
||||
|
||||
@@ -24,6 +24,8 @@ void GameParameters::reset() {
|
||||
case MARATHON : {this->level = 1; break;}
|
||||
// goes from level 20 to 39
|
||||
case MASTER : {this->level = 20; break;}
|
||||
// goes from level 1 to 19
|
||||
case INVISIBLE : {this->level = 1; break;}
|
||||
// no gravity
|
||||
case ZEN : {this->level = 0; break;}
|
||||
default : this->level = 1;
|
||||
@@ -34,7 +36,7 @@ void GameParameters::reset() {
|
||||
|
||||
void GameParameters::lockedPiece(const LineClear& lineClear) {
|
||||
switch (this->gamemode) {
|
||||
// modes where level increases
|
||||
// modes where level increases with lines
|
||||
case MARATHON :
|
||||
case MASTER : {
|
||||
int previousLines = this->clearedLines;
|
||||
@@ -51,9 +53,23 @@ void GameParameters::lockedPiece(const LineClear& lineClear) {
|
||||
default : this->clearedLines += lineClear.lines;
|
||||
}
|
||||
|
||||
int previousGrade = this->grade;
|
||||
if (!((lineClear.lines == 0) && ((this->grade % 100) == 99))) {
|
||||
this->grade += (1 + lineClear.lines);
|
||||
}
|
||||
|
||||
switch (this->gamemode) {
|
||||
// modes where level increases with grade
|
||||
case INVISIBLE : {
|
||||
if (previousGrade / 100 < this->grade / 100) {
|
||||
this->level += 2;
|
||||
this->updateStats();
|
||||
}
|
||||
break;
|
||||
}
|
||||
// other modes
|
||||
default : break;
|
||||
}
|
||||
}
|
||||
|
||||
bool GameParameters::hasWon(int framesPassed) const {
|
||||
@@ -66,6 +82,8 @@ bool GameParameters::hasWon(int framesPassed) const {
|
||||
case MARATHON : return this->clearedLines >= 200;
|
||||
// win once 200 lines have been cleared
|
||||
case MASTER : return this->clearedLines >= 200;
|
||||
// win once 1000 grade has been passed
|
||||
case INVISIBLE : return this->grade >= 1000;
|
||||
// infinite mode
|
||||
case ZEN :
|
||||
default : return false;
|
||||
@@ -84,7 +102,8 @@ void GameParameters::updateStats() {
|
||||
}
|
||||
// 3 for slow-controls gamemodes
|
||||
case MARATHON :
|
||||
case MASTER : {
|
||||
case MASTER :
|
||||
case INVISIBLE : {
|
||||
this->nextQueueLength = 3;
|
||||
break;
|
||||
}
|
||||
@@ -94,10 +113,13 @@ void GameParameters::updateStats() {
|
||||
/* BONE BLOCKS */
|
||||
switch (this->gamemode) {
|
||||
// blocks turns into bone blocks at level 30
|
||||
case MASTER : this->boneBlocks = (this->level >= 30);
|
||||
case MASTER : {this->boneBlocks = (this->level >= 30); break;}
|
||||
default : this->boneBlocks = false;
|
||||
}
|
||||
|
||||
/* INVISIBLE */
|
||||
this->invisibleBoard = (this->gamemode == INVISIBLE);
|
||||
|
||||
/* GRAVITY */
|
||||
// get gravity for an assumed 20-rows board
|
||||
static const int gravityPerLevel[] = {
|
||||
@@ -152,6 +174,8 @@ void GameParameters::updateStats() {
|
||||
case MARATHON : {this->ARE = 24 - (this->level - 1); break;}
|
||||
// starts at 400ms (24f) at lvl 20 and ends at 083ms (5f) at lvl 39
|
||||
case MASTER : {this->ARE = 24 - (this->level - 20); break;}
|
||||
// fixed at 250ms (15f)
|
||||
case INVISIBLE : {this->ARE = 15; break;}
|
||||
// no ARE by default
|
||||
default : this->ARE = 0;
|
||||
}
|
||||
@@ -228,6 +252,10 @@ bool GameParameters::getBoneBlocks() const {
|
||||
return this->boneBlocks;
|
||||
}
|
||||
|
||||
bool GameParameters::getInvisibleBoard() const {
|
||||
return this->invisibleBoard;
|
||||
}
|
||||
|
||||
int GameParameters::getGravity() const {
|
||||
return this->gravity;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ class GameParameters {
|
||||
int grade; // the current amount of points
|
||||
int nextQueueLength; // the number of pieces visibles in the next queue
|
||||
bool boneBlocks; // wheter all blocks are bone blocks
|
||||
bool invisibleBoard; // wheter the board is invisible
|
||||
int gravity; // the gravity at which pieces drop
|
||||
int lockDelay; // the time before the piece lock in place
|
||||
int forcedLockDelay; // the forced time before the piece lock in place
|
||||
@@ -77,9 +78,14 @@ class GameParameters {
|
||||
int getNextQueueLength() const;
|
||||
|
||||
/**
|
||||
* Returns wheter the blocks are currently bone blocks
|
||||
* @return Wheter the blocks are currently bone blocks
|
||||
*/
|
||||
bool getBoneBlocks() const;
|
||||
|
||||
/**
|
||||
* @return Wheter the board is currently invisible
|
||||
*/
|
||||
bool getInvisibleBoard() const;
|
||||
|
||||
/**
|
||||
* @return The current gravity for a 20-line high board
|
||||
|
||||
@@ -11,6 +11,7 @@ enum Gamemode {
|
||||
MARATHON,
|
||||
ULTRA,
|
||||
MASTER,
|
||||
INVISIBLE,
|
||||
ZEN
|
||||
};
|
||||
|
||||
@@ -24,6 +25,7 @@ inline std::string getGamemodeName(Gamemode gamemode) {
|
||||
"MARATHON",
|
||||
"ULTRA",
|
||||
"MASTER",
|
||||
"INVISIBLE",
|
||||
"ZEN"
|
||||
};
|
||||
|
||||
@@ -39,6 +41,7 @@ inline std::string getGamemodeGoal(Gamemode gamemode) {
|
||||
"200 lines",
|
||||
"2 minutes",
|
||||
"200 lines",
|
||||
"1000 grade",
|
||||
"Infinite"
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user