Updated game structure
This commit is contained in:
36
src/core/GravityManager.cpp
Normal file
36
src/core/GravityManager.cpp
Normal file
@ -0,0 +1,36 @@
|
||||
#include "GravityManager.h"
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
|
||||
GravityManager::GravityManager() {
|
||||
levelMultipliers.fill(1.0);
|
||||
}
|
||||
|
||||
void GravityManager::setGlobalMultiplier(double m) {
|
||||
globalMultiplier = std::clamp(m, 0.01, 100.0);
|
||||
}
|
||||
|
||||
double GravityManager::getGlobalMultiplier() const { return globalMultiplier; }
|
||||
|
||||
void GravityManager::setLevelMultiplier(int level, double m) {
|
||||
if (level < 0) return;
|
||||
int idx = level >= 29 ? 29 : level;
|
||||
levelMultipliers[idx] = std::clamp(m, 0.01, 100.0);
|
||||
}
|
||||
|
||||
double GravityManager::getLevelMultiplier(int level) const {
|
||||
int idx = level < 0 ? 0 : (level >= 29 ? 29 : level);
|
||||
return levelMultipliers[idx];
|
||||
}
|
||||
|
||||
double GravityManager::getMsForLevel(int level) const {
|
||||
int idx = level < 0 ? 0 : (level >= 29 ? 29 : level);
|
||||
double frames = static_cast<double>(FRAMES_TABLE[idx]) * levelMultipliers[idx];
|
||||
double result = frames * FRAME_MS * globalMultiplier;
|
||||
return std::max(1.0, result);
|
||||
}
|
||||
|
||||
double GravityManager::getFpsForLevel(int level) const {
|
||||
double ms = getMsForLevel(level);
|
||||
return 1000.0 / ms;
|
||||
}
|
||||
Reference in New Issue
Block a user