1 kryzys za nami oby ostatni 😀
ładna pogoda szkoła i wciągniecie się w grę sprawiły ze czasu na projekt było mało do tego doszły problemy z kodem, ale mam teraz miesiąc praktyk przez co ilość czasu się zwiększy
co do projektu zacząłem od menu i udało mi się przysiąc skupić i ukończyć je
może wynik nie jest powalający ale jest to dopiero koncepcja i po uzyskaniu takiego efektu pokazał się banan a to jest najważniejsze 😀
teraz trochę kodu :
warstwa fizyczna( struktura obiektu) dzieli sie na 2 czesci
- pasek menu
class menu
{
public:
RectangleShape ramka;
vector < tytul_menu > elementy;
};
2.elementy menu
class tytul_menu
{
public:
bool wysuniete, ptaszek;
Text tytul;
//element menu może posiadać kolejne elementy
vector < tytul_menu > elementy;
//
FloatRect kolizja;
RectangleShape ramka;
RectangleShape tlo;
RectangleShape zaznaczenie;
};
co do konstruktorów to nic specjalnego ot zwykle instrukcje konfigurujace elementy dla zainteresowanych :
oraz warstwa logiczna(odpowiedzialna za kolizje )
tu był wielki problem i nadal jest ponieważ wygląd kodu nie zadowala i brak wsparcia dla bardziej zaawansowanego menu z więcej niż 1 podmenu jednak na dzień dzisiejszy mamy to
for (size_t i = 0; i < elementy->glowne_menu->elementy.size(); i++)
{
if (elementy->glowne_menu->elementy[i].kolizja.contains(mysz2))
{
elementy->glowne_menu->elementy[i].wysuniete = true;
elementy->glowne_menu->elementy[i].tlo.setFillColor(Color::Red);
kolizja_menu = true;
}else
{
elementy->glowne_menu->elementy[i].tlo.setFillColor(Color::Blue);
}
if (jeżeli elementy są wysunięte i mysz nie jest na pasku menu)
{
for (size_t j; j = 0; j < elementy->glowne_menu->elementy[i].elementy.size(); j++)
{
if (elementy->glowne_menu->elementy[i].elementy[j].kolizja.contains(mysz2))
{
elementy->glowne_menu->elementy[i].elementy[j].wysuniete = true;
elementy->glowne_menu->elementy[i].elementy[j].tlo.setFillColor(Color::Red);
kolizja_menu = true;
j = elementy->glowne_menu->elementy[i].elementy.size();
}else
{
elementy->glowne_menu->elementy[i].elementy[j].wysuniete = false; elementy->glowne_menu->elementy[i].elementy[j].tlo.setFillColor(Color::Blue);
kolizja_menu = false;
}
}
}
if (!kolizja_menu && !elementy->glowne_menu->elementy[i].kolizja.contains(mysz2))
{
elementy->glowne_menu->elementy[i].wysuniete = false;
}