Skip to content
This repository has been archived by the owner on Oct 21, 2024. It is now read-only.

Proste Immidiate mode UI #3

Open
jaenek opened this issue Mar 1, 2021 · 0 comments
Open

Proste Immidiate mode UI #3

jaenek opened this issue Mar 1, 2021 · 0 comments
Assignees
Labels
good first issue Good for newcomers

Comments

@jaenek
Copy link
Member

jaenek commented Mar 1, 2021

Aktualnie do obiektów selection oraz button przekazywane są zmienne lub funkcje które zmieniają zachowanie programu.

// klasa button
	std::function<void()> action;
// klasa selection
	ship_type sel_type;

Nie jest to dobre ponieważ mieszamy części gry z interfejsem, który powinnien móc zmieniać różne rzeczy a nie tylko typ statków.

Prostszym podejściem byłoby w metodzie rysowania okna stworzyć przycisk lub inny element interfejsu, przypisując mu dane właściwości a następnie sprawdzić czy przycisk został wciśnięty. Mogło by to wyglądać w następujacy sposób:

// metoda rysująca
	ui::set_font(22);
	ui::set_font_color(ui::color::green);
	ui::set_border_color(ui::color::green);
	ui::set_fill_color(ui::color::black);

	if (ui::button(200,200,100,50, "Click me!")) {
		// ... np. zmiana liczby statków danego rodzaju
	}

Na zapleczu, czyli w przestrzeni nazw ui istniała by lokalna struktura przechowująca właściwości przypisywane elementom interfejsu, szablony rozłożenia tych elementów.

Załóżmy że chcielibyśmy wiecęj przycisków o takich samych właściwościach, wystarczy:

	if (ui::button(200,250,100,50, "Click me 1!")) {
		// ...
	}
	if (ui::button(200,300,100,50, "Click me2!")) {
		// ...
	}
@jaenek jaenek added the good first issue Good for newcomers label Mar 1, 2021
@jaenek jaenek assigned jaenek and xDMPx and unassigned jaenek May 4, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

2 participants