mirror of
https://github.com/Relintai/programming_tutorials.git
synced 2025-04-21 21:51:22 +02:00
Cleanups to button and the main scene.
This commit is contained in:
parent
d825deb190
commit
894687ed06
@ -40,10 +40,6 @@ void Button::event(const SDL_Event &ev) {
|
||||
if (on_click) {
|
||||
on_click();
|
||||
}
|
||||
|
||||
if (on_click_member) {
|
||||
on_click_member(cls);
|
||||
}
|
||||
} else {
|
||||
state = BUTTON_STATE_UP;
|
||||
}
|
||||
|
@ -22,15 +22,8 @@ public:
|
||||
void update(float delta);
|
||||
void render();
|
||||
|
||||
//ver a: (Csak statikus fv állítható be rá)
|
||||
std::function<void(void)> on_click;
|
||||
|
||||
//ver b: (Képes osztályok függvényeit is meghívni)
|
||||
//Meg lehet oldani sokféleképp, egyik sem annyira szép sajnos
|
||||
//mindneképp érdemes lenne setter mögé rejteni ezeket
|
||||
void* cls;
|
||||
std::function<void(void*)> on_click_member;
|
||||
|
||||
Button();
|
||||
virtual ~Button();
|
||||
|
||||
|
@ -25,24 +25,9 @@ void MainScene::render() {
|
||||
b2->render();
|
||||
b3->render();
|
||||
|
||||
//_s->draw();
|
||||
//_s2->draw();
|
||||
_ts->draw();
|
||||
}
|
||||
|
||||
void MainScene::on_first_button_clicked() {
|
||||
printf("Click!\n");
|
||||
}
|
||||
|
||||
void MainScene::on_first_button_clicked_member(void* cls) {
|
||||
if (cls) {
|
||||
reinterpret_cast<MainScene*>(cls)->member_print();
|
||||
}
|
||||
}
|
||||
void MainScene::member_print() {
|
||||
printf("Click Member!\n");
|
||||
}
|
||||
|
||||
MainScene::MainScene() {
|
||||
_camera = new Camera();
|
||||
_image = new Image("ti.bmp");
|
||||
@ -64,14 +49,8 @@ MainScene::MainScene() {
|
||||
b1->up = new Sprite(_texture);
|
||||
b1->down = new Sprite(_texture, Color(100, 100, 100));
|
||||
b1->hover = new Sprite(_texture, Color(200, 200, 200));
|
||||
|
||||
//b1->on_click = MainScene::on_first_button_clicked;
|
||||
|
||||
//a verzió lambda 1 (this-nélkül):
|
||||
//b1->on_click = []() -> void { printf("Click lambda!"); };
|
||||
|
||||
//a verzió lambda 2 (this-el):
|
||||
b1->on_click = [this]() -> void { this->member_print(); };
|
||||
//b1->on_click = [this]() -> void { this->member_print(); };
|
||||
|
||||
b2 = new Button();
|
||||
b2->transform = Rect2(0, 110, 100, 100);
|
||||
@ -83,8 +62,6 @@ MainScene::MainScene() {
|
||||
b3->up = new Sprite(_texture);
|
||||
b3->down = new Sprite(_texture, Color(100, 100, 100));
|
||||
b3->hover = new Sprite(_texture, Color(200, 200, 200));
|
||||
b3->cls = this;
|
||||
b3->on_click_member = MainScene::on_first_button_clicked_member;
|
||||
}
|
||||
|
||||
MainScene::~MainScene() {
|
||||
|
@ -18,13 +18,6 @@ public:
|
||||
void update(float delta);
|
||||
void render();
|
||||
|
||||
//ver a
|
||||
static void on_first_button_clicked();
|
||||
|
||||
//ver b
|
||||
static void on_first_button_clicked_member(void* cls);
|
||||
void member_print();
|
||||
|
||||
MainScene();
|
||||
~MainScene();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user