mirror of
https://github.com/zeldaret/st
synced 2026-10-07 13:25:33 -04:00
46f5ed79bf
oops forgot to remove this
77 lines
1.3 KiB
C++
77 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "nitro/types.h"
|
|
|
|
struct Timer {
|
|
/* 00 */ volatile u16 value;
|
|
/* 02 */ u16 max;
|
|
/* 04 */
|
|
|
|
Timer() {}
|
|
|
|
Timer(u16 value, u16 max) {
|
|
this->value = value;
|
|
this->max = max;
|
|
}
|
|
|
|
// advances the value until it reached the max value
|
|
void Update() {
|
|
if (this->value < this->max) {
|
|
this->value++;
|
|
}
|
|
}
|
|
|
|
// same as `Update()` except it returns true if the max value is reached
|
|
bool HasExpired() {
|
|
if (this->value < this->max) {
|
|
this->value++;
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void Set(u16 value, u16 max) {
|
|
this->max = max;
|
|
this->value = value;
|
|
}
|
|
|
|
void SetAlt(u16 value, u16 max) {
|
|
this->value = value;
|
|
this->max = max;
|
|
}
|
|
|
|
void Init() {
|
|
this->Set(0, 0);
|
|
}
|
|
|
|
void Reset() {
|
|
this->Set(0, -1);
|
|
}
|
|
|
|
int GetRemainingTime() {
|
|
return this->max - this->value;
|
|
}
|
|
|
|
bool HasReachedMax() {
|
|
return this->GetValue() >= this->max;
|
|
}
|
|
|
|
bool HasReachedMaxU() {
|
|
u32 value = this->value;
|
|
return value >= this->max;
|
|
}
|
|
|
|
int GetValue() {
|
|
return this->value;
|
|
}
|
|
|
|
u32 GetValueU() {
|
|
return this->value;
|
|
}
|
|
|
|
int GetMax() {
|
|
return this->max;
|
|
}
|
|
};
|