88 lines
1.8 KiB
C
88 lines
1.8 KiB
C
|
|
// Copyright (C) 2019 Nomango
|
|||
|
|
|
|||
|
|
#pragma once
|
|||
|
|
#include "common.h"
|
|||
|
|
|
|||
|
|
class Demo3
|
|||
|
|
: public Scene
|
|||
|
|
{
|
|||
|
|
MusicPtr music; // <20><><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>
|
|||
|
|
TextPtr volume_text; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
TextPtr state_text; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
static ScenePtr Create()
|
|||
|
|
{
|
|||
|
|
return new Demo3;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Demo3()
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
music = E_NEW Music;
|
|||
|
|
if (!music->Load(L"res/music.wav"))
|
|||
|
|
{
|
|||
|
|
music = nullptr;
|
|||
|
|
|
|||
|
|
auto err = E_NEW Text(L"<EFBFBD><EFBFBD>Ƶ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
|
|||
|
|
this->AddChild(err);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-1 <20><>ʾѭ<CABE><D1AD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>
|
|||
|
|
music->Play(-1);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
auto intro_text = E_NEW Text(L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
intro_text->SetAnchor(0.5f, 0.5f);
|
|||
|
|
intro_text->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2 - 50);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
volume_text = E_NEW Text(L"<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
volume_text->SetAnchor(0.5f, 0.5f);
|
|||
|
|
volume_text->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2 + 30);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
state_text = E_NEW Text(L"<EFBFBD><EFBFBD>ǰ״̬<EFBFBD><EFBFBD>");
|
|||
|
|
state_text->SetAnchor(0.5f, 0.5f);
|
|||
|
|
state_text->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2 + 60);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
this->AddChild(intro_text);
|
|||
|
|
this->AddChild(volume_text);
|
|||
|
|
this->AddChild(state_text);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void OnUpdate(Duration dt) override
|
|||
|
|
{
|
|||
|
|
if (music == nullptr)
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>״̬
|
|||
|
|
float volume = music->GetVolume();
|
|||
|
|
bool playing = music->IsPlaying();
|
|||
|
|
|
|||
|
|
// <20><EFBFBD><DEB8>ı<EFBFBD>
|
|||
|
|
volume_text->SetText(L"<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + std::to_wstring(volume));
|
|||
|
|
state_text->SetText(playing ? L"<EFBFBD><EFBFBD>ǰ״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>" : L"<EFBFBD><EFBFBD>ǰ״̬<EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>豸
|
|||
|
|
auto input = Input::Instance();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ո<EFBFBD><D5B8><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (input->WasPressed(KeyCode::Space))
|
|||
|
|
{
|
|||
|
|
music->IsPlaying() ? music->Pause() : music->Resume();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (input->WasPressed(KeyCode::Up))
|
|||
|
|
{
|
|||
|
|
music->SetVolume(volume + 0.1f);
|
|||
|
|
}
|
|||
|
|
else if (input->WasPressed(KeyCode::Down))
|
|||
|
|
{
|
|||
|
|
music->SetVolume(volume - 0.1f);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|