Magic_Game/samples/Samples/Demo2.h

96 lines
1.7 KiB
C
Raw Normal View History

2019-02-03 21:45:56 +08:00
// Copyright (C) 2019 Nomango
#pragma once
#include "common.h"
2019-03-18 15:00:58 +08:00
// <20><><EFBFBD><EFBFBD>
2019-04-11 14:40:54 +08:00
KGE_DECLARE_SMART_PTR(Monster);
2019-03-18 15:00:58 +08:00
class Monster
2019-02-03 21:45:56 +08:00
: public Sprite
{
public:
2019-03-18 15:00:58 +08:00
Monster()
2019-02-03 21:45:56 +08:00
{
// <20><><EFBFBD><EFBFBD>ͼƬ
2019-03-18 15:00:58 +08:00
Load(L"res/akushu.png");
2019-02-03 21:45:56 +08:00
// <20><>СͼƬ
2019-03-18 15:00:58 +08:00
SetScale(0.7f);
2019-02-03 21:45:56 +08:00
}
2019-03-18 15:00:58 +08:00
// ÿ֡<C3BF><D6A1>Ⱦǰִ<C7B0><D6B4> OnUpdate
2019-02-03 21:45:56 +08:00
void OnUpdate(Duration dt) override
{
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>
auto& input = Input::Instance();
2019-02-03 21:45:56 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD>
if (input.IsDown(KeyCode::Left))
2019-02-03 21:45:56 +08:00
{
this->Move(-2, 0);
}
else if (input.IsDown(KeyCode::Right))
2019-02-03 21:45:56 +08:00
{
this->Move(2, 0);
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
if (input.IsDown(KeyCode::Up))
2019-02-03 21:45:56 +08:00
{
this->Move(0, -2);
}
else if (input.IsDown(KeyCode::Down))
2019-02-03 21:45:56 +08:00
{
this->Move(0, 2);
}
2019-03-18 15:00:58 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳ʱ<CBB3><CAB1><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
if (input.IsDown(MouseButton::Left))
2019-02-03 21:45:56 +08:00
{
// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ת<EFBFBD>Ƕ<EFBFBD>
float rotation = this->GetRotation();
// <20><><EFBFBD>ýǶ<C3BD>ֵ+2
this->SetRotation(rotation + 2);
}
2019-03-18 15:00:58 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
if (input.WasPressed(MouseButton::Right))
2019-02-03 21:45:56 +08:00
{
// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ʾ״̬
bool visible = this->IsVisible();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0B7B4><EFBFBD><EFBFBD>ʾ״̬
this->SetVisible(!visible);
}
}
};
class Demo2
: public Scene
{
public:
static ScenePtr Create()
{
return new Demo2;
}
Demo2()
{
2019-03-18 15:00:58 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MonsterPtr monster = new Monster;
2019-02-03 21:45:56 +08:00
// <20><><EFBFBD><EFBFBD>Ļ<EFBFBD>Ͼ<EFBFBD><CFBE><EFBFBD><EFBFBD><EFBFBD>ʾ
2019-03-18 15:00:58 +08:00
monster->SetAnchor(0.5f, 0.5f);
monster->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2);
2019-02-03 21:45:56 +08:00
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TextPtr text = new Text(L"<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>ת\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
2019-03-10 13:44:02 +08:00
// <20><><EFBFBD>ýڵ<C3BD><DAB5><EFBFBD>СΪ<D0A1><CEAA><EFBFBD>ֲ<EFBFBD><D6B2>ִ<EFBFBD>С
text->SetSize(text->GetLayoutSize());
2019-02-03 21:45:56 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
text->SetAnchor(0.5f, 0.5f);
text->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT - 50);
text->SetAlignment(TextAlign::Center);
// <20><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
2019-03-18 15:00:58 +08:00
this->AddChild(monster);
2019-02-03 21:45:56 +08:00
this->AddChild(text);
}
};