Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

moved the global "SpeedFaktor" to the timer class #65

Merged
merged 1 commit into from
Nov 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions Hurrican/src/Gameplay.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,6 @@ void InitNewGameLevel() {
// Timer updaten
Timer.update();
Timer.wait();
SpeedFaktor = Timer.getSpeedFactor();

SoundManager.Update();
}
Expand Down Expand Up @@ -262,15 +261,15 @@ void GameLoop() {
TileEngine.NewYOffset = -1;

constexpr float SPD_INC = 0.3f;
float const SpeedFaktorMax = SpeedFaktor;
float const SpeedFaktorMax = Timer.getSpeedFactor();

int chunks = 1;

// If the hardware can not render fast enough the logic catch up becomes too large
// In this case the logic needs to be broken up into chunks
if (SpeedFaktorMax > SPD_INC) {
chunks = ceilf(SpeedFaktorMax / SPD_INC);
SpeedFaktor = SpeedFaktorMax / chunks;
Timer.setSpeedFactor(SpeedFaktorMax / chunks);
}

// Run the Logic
Expand Down Expand Up @@ -309,7 +308,7 @@ void GameLoop() {

TileEngine.CheckBounds();
}
SpeedFaktor = SpeedFaktorMax; // Restore the factor so other logic can stay in sync
Timer.setSpeedFactor(SpeedFaktorMax); // Restore the factor so other logic can stay in sync

if (SpielZustand != GameStateEnum::GAMELOOP)
return;
Expand Down Expand Up @@ -1139,7 +1138,6 @@ void SummaryScreen() {

Timer.update();
Timer.wait();
SpeedFaktor = Timer.getSpeedFactor();

DirectInput.UpdateTastatur();
DirectInput.UpdateJoysticks();
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/GegnerClass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ void GegnerClass::SimpleAnimation(bool backward) {
// Animieren
if (AnimEnde > 0) // Soll überhaupt animiert werden ?
{
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
AnimCount = 0; // Dann wieder auf Null setzen
Expand Down
9 changes: 2 additions & 7 deletions Hurrican/src/Main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@ bool NochKeinFullScreen = true; // Logo noch anzeigen in Paint ?
#ifndef NDEBUG
bool DebugMode = false; // Debug Mode ein/aus
#endif //NDEBUG
float SpeedFaktor = 1.0f; // Faktor, mit dem alle Bewegungen verrechnet werden
TexturesystemClass Textures; // DKS - Added Texturesystem class (see DX8Sprite.cpp)
DirectGraphicsClass DirectGraphics; // Grafik-Objekt
DirectInputClass DirectInput; // Input-Objekt
Expand Down Expand Up @@ -450,18 +449,14 @@ int main(int argc, char *argv[]) {
//
if (FixedFramerate) {
Timer.SetMaxFPS(60);
SpeedFaktor = 1.0f / 60.0f * Timer.GetMoveSpeed();
} else {
// Timer.SetMaxFPS (0);
SpeedFaktor = Timer.getSpeedFactor();
Timer.setSpeedFactor(1.0f / 60.0f * Timer.GetMoveSpeed());
}

Timer.wait();

// Bei Demo immer gleichen Speedfaktor setzen
//
if (DEMORecording || DEMOPlaying)
SpeedFaktor = 0.28f;
Timer.setSpeedFactor(0.28f);
}
}
// DKS - Exceptions can now be disabled, reducing unnecessary code-bloat:
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/Menu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -795,7 +795,7 @@ void MenuClass::ShowMenu() {
}

// Highscore-Farben blinken lassen
BlinkCounter -= SpeedFaktor;
BlinkCounter -= Timer.getSpeedFactor();
if (BlinkCounter < 0.0f) {
BlinkCounter = 0.75f;
BlinkOffset++;
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/Partikelsystem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2161,7 +2161,7 @@ void PartikelClass::Run() {
// Animieren
if (AnimEnde > 0) // Soll überhaupt anmiert werden ?
{
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
AnimCount = 0; // Dann wieder auf Null setzen
Expand Down
6 changes: 3 additions & 3 deletions Hurrican/src/Player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2582,7 +2582,7 @@ bool PlayerClass::DrawPlayer(bool leuchten, bool farbe) {
{
// Zeit der Darstellung verringern
//
FlameTime -= SpeedFaktor;
FlameTime -= Timer.getSpeedFactor();

DirectGraphics.SetAdditiveMode();
CalcFlamePos();
Expand Down Expand Up @@ -3542,7 +3542,7 @@ bool PlayerClass::DoLightning() {
//----- Blitz animieren

if (!Console.Showing)
BlitzCount += SpeedFaktor; // Counter erhöhen
BlitzCount += Timer.getSpeedFactor(); // Counter erhöhen

if (BlitzCount > PLAYER_BLITZ_SPEED) // Animationsgrenze überschritten ?
{
Expand Down Expand Up @@ -3796,7 +3796,7 @@ bool PlayerClass::LoadBeam() {

//----- Blitz animieren

BlitzCount += SpeedFaktor; // Counter erhöhen
BlitzCount += Timer.getSpeedFactor(); // Counter erhöhen
if (BlitzCount > PLAYER_BLITZ_SPEED) // Animationsgrenze überschritten ?
{
BlitzCount = 0.0f; // Dann Counter wieder auf Null setzen und
Expand Down
10 changes: 5 additions & 5 deletions Hurrican/src/Tileengine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -950,7 +950,7 @@ void TileEngineClass::DrawBackground() {
//----- Wolken Layer (Wenn Focus des Level GANZ oben, dann wird er GANZ angezeigt)

// Wolken bewegen
CloudMovement += SpeedFaktor;
CloudMovement += Timer.getSpeedFactor();
if (CloudMovement > RENDERWIDTH)
CloudMovement = 0.0f;

Expand Down Expand Up @@ -2018,11 +2018,11 @@ void TileEngineClass::UpdateLevel() {
Timelimit = 0.0f;
}

XOffset += ScrollSpeedX * SpeedFaktor;
YOffset += ScrollSpeedY * SpeedFaktor;
XOffset += ScrollSpeedX * Timer.getSpeedFactor();
YOffset += ScrollSpeedY * Timer.getSpeedFactor();

// Tiles animieren
TileAnimCount += SpeedFaktor; // Counter erhöhen
TileAnimCount += Timer.getSpeedFactor(); // Counter erhöhen
if (TileAnimCount > TILEANIM_SPEED) // auf Maximum prüfen
// if (TileAnimCount > 0.5f) // auf Maximum prüfen
{
Expand Down Expand Up @@ -2197,7 +2197,7 @@ void TileEngineClass::UpdateLevel() {

/* DKS - Replaced both SinList2 and WaterList lookup tables with new
class WaterSinTableClass. See comments in Tileengine.h */
WaterSinTable.AdvancePosition(SpeedFaktor);
WaterSinTable.AdvancePosition(Timer.getSpeedFactor());
#if 0
// Schwabbeln des Levels animieren
//SinPos += Timer.sync(3.0f); //DKS - unused; disabled
Expand Down
9 changes: 8 additions & 1 deletion Hurrican/src/Timer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -171,10 +171,17 @@ double TimerClass::getAverageFPS() const {
// --------------------------------------------------------------------------------------
// Wert holen, mit dem die Bewegungen verrechnet werden
// --------------------------------------------------------------------------------------
double TimerClass::getSpeedFactor() const {
float TimerClass::getSpeedFactor() const {
return SpeedFaktor;
}

// --------------------------------------------------------------------------------------
// Set the speed factor
// --------------------------------------------------------------------------------------
void TimerClass::setSpeedFactor(float Wert) {
SpeedFaktor = Wert;
}

// --------------------------------------------------------------------------------------
// Max und Min FPS resetten
// --------------------------------------------------------------------------------------
Expand Down
8 changes: 4 additions & 4 deletions Hurrican/src/Timer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,6 @@
// Klassen Deklaration
// --------------------------------------------------------------------------------------

// The Timer class needs the global SpeedFactor variable
extern float SpeedFaktor;

class TimerClass {
private:
std::int64_t vergangeneFrames; // Vergangene Frames seit Beginn (für Schnitt)
Expand All @@ -43,6 +40,8 @@ class TimerClass {
double vergangeneZeit; // Zeit seit dem vorherigen Frame
double aktuelleFramerate; // Aktuelle Framerate
int maxFPS; // Maximum Framerate (Framebremse)

float SpeedFaktor;

public:
TimerClass(); // Konstruktor
Expand All @@ -59,7 +58,8 @@ class TimerClass {
double getMinFrameRate() const; // Minimale Framerate auslesen
double getMaxFrameRate() const; // Maximale Framerate auslesen
double getAverageFPS() const; // Durchschnittliche FPS auslesen
double getSpeedFactor() const; // Wert holen, mit dem die Bewegungen verrechnet werden
float getSpeedFactor() const; // Wert holen, mit dem die Bewegungen verrechnet werden
void setSpeedFactor(float Wert);// Set the speed factor
void resetMaxMinFPS(); // Max und Min FPS resetten
void WriteLogValues(); // Werte in Logdatei sichern

Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/bosses/Boss_Bratklops.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ void GegnerBratklops::DoKI() {

if (AnimEnde > 0) // Soll überhaupt anmiert werden ?
{
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
AnimCount = 0; // Dann wieder auf Null setzen
Expand Down
4 changes: 2 additions & 2 deletions Hurrican/src/bosses/Boss_EisFaust.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ void GegnerEisFaust::DoKI() {

case GEGNER::LAUFEN: // Über dem Spieler schweben und ggf runtersausen
{
AnimCount -= SpeedFaktor;
AnimCount -= Timer.getSpeedFactor();

// Rechts vom Spieler oder zu nahe am rechten Rand ?
if (pAim->xpos + pAim->CollideRect.right < xPos || xPos > TileEngine.ScrolltoX + 480)
Expand Down Expand Up @@ -285,7 +285,7 @@ void GegnerEisFaust::DoKI() {

// Faust fliegt in die Luft
case GEGNER::EXPLODIEREN: {
AnimCount -= SpeedFaktor;
AnimCount -= Timer.getSpeedFactor();

Energy = 100.0f;

Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/bosses/Boss_FlugBoss.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ void GegnerFlugBoss::DoKI() {
// Animieren
if (AnimEnde > 0) // Soll überhaupt anmiert werden ?
{
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
AnimCount = 0; // Dann wieder auf Null setzen
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/bosses/Boss_Golem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -711,7 +711,7 @@ void GegnerGolem::DoKI() {
case GEGNER::EXPLODIEREN: {
Energy = 100.0f;

AnimCount -= SpeedFaktor;
AnimCount -= Timer.getSpeedFactor();
if (AnimCount <= 0.0f) {
AnimCount = 0.5f;

Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/bosses/Boss_PharaoKopf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -485,7 +485,7 @@ void GegnerPharaoKopf::DoKI() {

// Pharao Kopf explodiert
case GEGNER::EXPLODIEREN: {
AnimCount -= SpeedFaktor;
AnimCount -= Timer.getSpeedFactor();
Energy = 100.0f;

// brodeln lassen
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/bosses/Boss_RiesenPiranha.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ void GegnerRiesenPiranha::DoKI() {
// Animieren
if (AnimEnde > 0) // Soll überhaupt anmiert werden ?
{
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
AnimCount = 0; // Dann wieder auf Null setzen
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/bosses/Boss_RiesenQualle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ GegnerRiesenQualle::GegnerRiesenQualle(int Wert1, int Wert2, bool Light) {

void GegnerRiesenQualle::DoKI() {
// animieren
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
AnimCount = 0; // Dann wieder auf Null setzen
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/bosses/Boss_RiesenRaupe.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ GegnerRiesenRaupe::GegnerRiesenRaupe(int Wert1, int Wert2, bool Light) {

void GegnerRiesenRaupe::DoKI() {
// animieren
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
AnimCount = 0; // Dann wieder auf Null setzen
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/bosses/Boss_RiesenWespe.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ GegnerRiesenWasp::GegnerRiesenWasp(int Wert1, int Wert2, bool Light) {

void GegnerRiesenWasp::DoKI() {
// animieren
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
AnimCount = 0; // Dann wieder auf Null setzen
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/bosses/Boss_Stahlfaust.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ void GegnerStahlfaust::DoKI() {

case GEGNER::LAUFEN: // Über dem Spieler schweben und ggf runtersausen
{
AnimCount -= SpeedFaktor;
AnimCount -= Timer.getSpeedFactor();

// Rechts vom Spieler oder zu nahe am rechten Rand ?
if (pAim->xpos + pAim->CollideRect.right < xPos || xPos > TileEngine.ScrolltoX + 480)
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/bosses/Boss_Ufo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ void GegnerUfo::DoKI() {
// Animieren
if (AnimEnde > 0) // Soll überhaupt anmiert werden ?
{
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
AnimCount = 0; // Dann wieder auf Null setzen
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/enemies/Gegner_Auge.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ void GegnerAuge::DoKI() {
// Animieren (nur drehen)
//
if (Handlung != GEGNER::STEHEN) {
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (Handlung == GEGNER::DREHEN) {
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/enemies/Gegner_Climber.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ void GegnerClimber::DoKI() {
blocku = TileEngine.BlockUntenNormal(xPos, yPos, xPosOld, yPosOld, GegnerRect[GegnerArt]);

// Animationscounter weiterzählen
AnimCount += SpeedFaktor;
AnimCount += Timer.getSpeedFactor();

if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
Expand Down
6 changes: 3 additions & 3 deletions Hurrican/src/enemies/Gegner_DeckenKrabbe.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ void GegnerDeckenKrabbe::DoKI() {
// Krabbe ist gelandet und dreht sich in Richtung Spieler
case GEGNER::DREHEN: {
zRot = 0.0f;
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
AnimCount = 0.0f; // Dann wieder auf Null setzen
Expand All @@ -123,7 +123,7 @@ void GegnerDeckenKrabbe::DoKI() {
// Krabbe ist gelandet und dreht sich in Richtung Spieler
case GEGNER::DREHEN2: {
zRot = 0.0f;
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
AnimCount = 0.0f; // Dann wieder auf Null setzen
Expand Down Expand Up @@ -174,7 +174,7 @@ void GegnerDeckenKrabbe::DoKI() {

xPos += Timer.sync(7.0f * static_cast<float>(Direction::asInt(Direction::invert(BlickRichtung))));

AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
AnimCount = 0.0f; // Dann wieder auf Null setzen
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/enemies/Gegner_Drone.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ GegnerDrone::GegnerDrone(int Wert1, int Wert2, bool Light) {
void GegnerDrone::DoKI() {
// Animieren
//
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (Handlung == GEGNER::LAUFEN) {
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/enemies/Gegner_EierMann.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ void GegnerEierMann::DoKI() {
// Animieren
if (AnimEnde > 0) // Soll überhaupt anmiert werden ?
{
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
AnimCount = 0; // Dann wieder auf Null setzen
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/enemies/Gegner_FetteSpinne.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ void GegnerFetteSpinne::DoKI() {
// Animieren
if (AnimEnde > 0) // Soll überhaupt anmiert werden ?
{
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
AnimCount = 0; // Dann wieder auf Null setzen
Expand Down
2 changes: 1 addition & 1 deletion Hurrican/src/enemies/Gegner_FieseDrone.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ void GegnerFieseDrone::DoKI() {

// Animieren
//
AnimCount += SpeedFaktor; // Animationscounter weiterzählen
AnimCount += Timer.getSpeedFactor(); // Animationscounter weiterzählen
if (Handlung == GEGNER::LAUFEN) {
if (AnimCount > AnimSpeed) // Grenze überschritten ?
{
Expand Down
Loading
Loading