Skip to main content

カウントダウンタイマークラスを作ってみようz

CDTimer.h

#pragma once
#include "Engine/GameObject.h"

class CDTimer :
    public GameObject
{
private:
	double CountDownTimer_;  //現在の残り時間
	double TIMER_INIT_TIME_; //初期時間
	bool isTimerRun_;//タイマーが動いているかどうか?
	DWORD oldTime_;
public:
	//コンストラクタ
	//引数:parent  親オブジェクト(SceneManager)
	CDTimer(GameObject *parent);
	CDTimer(GameObject *parent, double _initTime);


	//初期化
	void Initialize() override;

	//更新
	void Update() override;

	//描画
	void Draw() override;

	//開放
	void Release() override;

public:

	bool IsTimeOver();//タイマーは0になりましたか?YES?NO?
	void ResetTimer();//タイマーを初期時間に戻す
	void StartTimer();//タイマーをスタートします
	void StopTimer();//タイマーをストップします
	void SetInitTime(double cdTime) { TIMER_INIT_TIME_ = cdTime; ResetTimer(); }
	double GetTime() { return(CountDownTimer_); }
};

CDTimer.cpp

#include "CDTimer.h"


const int DEF_TIMER_TIME{ 5 };

CDTimer::CDTimer(GameObject* parent)
	:TIMER_INIT_TIME_(DEF_TIMER_TIME),
	CountDownTimer_(DEF_TIMER_TIME),
	isTimerRun_(true)
{
	oldTime_ = timeGetTime();
};


CDTimer::CDTimer(GameObject* parent, double _initTime)
	:TIMER_INIT_TIME_(_initTime),
	CountDownTimer_(_initTime),
	isTimerRun_(true)
{
	oldTime_ = timeGetTime();
};

bool CDTimer::IsTimeOver()
{
	return(CountDownTimer_ <= 0);
}

void CDTimer::ResetTimer()
{
	CountDownTimer_ = TIMER_INIT_TIME_;
	StartTimer();
}

void CDTimer::StartTimer()
{
	isTimerRun_ = true;
}

void CDTimer::StopTimer()
{
	isTimerRun_ = false;
}

void CDTimer::Initialize()
{

}

void CDTimer::Update()
{
	DWORD nowTime = timeGetTime();
	//下staticは要らんかった。。。
	//static int deltaTime = nowTime - oldTime_;
	int deltaTime = nowTime - oldTime_;
	if (isTimerRun_)
		CountDownTimer_ = CountDownTimer_ - (float)deltaTime/1000.0;
	oldTime_ = nowTime;
}

void CDTimer::Draw()
{
}

void CDTimer::Release()
{
}