Magic_Game/project/Samples/Demo3.h

88 lines
1.8 KiB
C
Raw Normal View History

2019-02-03 21:45:56 +08:00
// 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 = new Music;
2019-02-03 21:45:56 +08:00
if (!music->Load(L"res/music.wav"))
{
music = nullptr;
TextPtr err = new Text(L"<EFBFBD><EFBFBD>Ƶ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
2019-02-03 21:45:56 +08:00
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>
TextPtr intro_text = 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>");
2019-02-03 21:45:56 +08:00
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 = new Text(L"<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
2019-02-03 21:45:56 +08:00
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 = new Text(L"<EFBFBD><EFBFBD>ǰ״̬<EFBFBD><EFBFBD>");
2019-02-03 21:45:56 +08:00
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();
2019-02-03 21:45:56 +08:00
// <20><><EFBFBD>ո<EFBFBD><D5B8><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (input.WasPressed(KeyCode::Space))
2019-02-03 21:45:56 +08:00
{
music->IsPlaying() ? music->Pause() : music->Resume();
}
// <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (input.WasPressed(KeyCode::Up))
2019-02-03 21:45:56 +08:00
{
music->SetVolume(volume + 0.1f);
}
else if (input.WasPressed(KeyCode::Down))
2019-02-03 21:45:56 +08:00
{
music->SetVolume(volume - 0.1f);
}
}
};