Ich schreib mir grad eine Timing Klasse zusammen. Recht sinnig, damit komme ich endlich mal davon los das jede neue Klasse ihr eigenes Süppchen brockt. Desweiteren bringt das etwaige FrameUpdates etc an eine Stelle.
Ich habe nur ein paar Fragen wie man das angehen sollte, eh ich hier irgendwas großartig verbocke.
Bisher dachte ich mir das so:
Es gibt eine TimeManagement Klasse, diese könnte eine Singleton werden, muss aber nicht unbedingt sein. Beim hochfahren der "Engine" (*hust*) wird diese initialisiert. Möchte nun einen Objekt einen Timer anfordern nutzt es dazu eine "addTimer" (oder wie auch immer) Methode. Die Management Klasse liefert dann eine eindeutige TimerID zurück, mit welcher das anfordernde Objekt den Zeitzustand abfragen kann.
Soweit die Grundidee, nun frage ich mich wie ich das technisch umsetzen könnte.
Spontan dachte ich daran ein weiteres Timer Objekt zu erschaffen, welches dann von der Managementklasse in eine Liste gepusht wird. Die Managementklasse verfügt über eine "update" Methode, in welcher sie alle einzelnen Timer Objekte durchgeht und die Zeit hinzufügt. Wird eine Zeit angefordert geht sie auch alle Objekte durch bis sie das mit der richtigen ID findet.
Klingt für mich sehr unperformant. Es wäre doch klüger nur einmal die Framezeit zu aktualisieren, und zwar in der Management Klasse. Aber ... Ich denke ich hab ein Brett vorm Kopf, wie würde ich denn dann die Zeit nehmen?
In Pseudocode stell ich mir, bei der Benutzung der Klasse(n), etwa folgendes vor.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
|
TimeManagement* = new CTimeManage();
int ID = TimeManagement->addTimer(GewünschteCountdownZeit = 30s);
TimeManagement->update(FrameTime);
if(TimeManagemt->Check(ID))
{
MachWasTolles();
}
|
Etwas konfus, aber ich hoffe ihr versteht was ich meine xD
Wie kann ich es also umgehen für jedes "Child" Objekt einzeln eine addTime Methode aufzurufen? Ich schätze ich hab echt nur ein Brett vorm Kopf xD