chce napisac sobie UI w SDL. Oczywiscie krok po kroczku, myslalem na razie o dwoch klasach konkretnych

  • TextInput
  • Button

Myslalem jak to napisac. Wymyslilem takie cos, ale zastanawiam sie czy moze byc to napisane lepiej

  • UI bedzie umieszczane do klas w ktorych bedzie ten button wyswietlany

Czyli jezeli mamy klase Menu, w ktorej jest klasa Background to w klasie background bedziemy miec funkcje AddElement(). Czyli

class Background
{
  vector<GUI> guiElements;
  UIFactory guiFactory;
  AddElement(UIType guiType, rectangle rec, callback c)
  {
    GUI guiElement = guiFactory.create(guiType);
    guiElement.rectangle = rec;
    guiElement.callback = c;
    uiElements.push_back(guiElement);
  }
} 

W klasie Button bedzie takze zdefiniowana funkcja "HandleEvenets" ktora zostanie wywolana jezeli zostal zarejestrowany click. Jezeli rectangle bedzie w x,y pozycji myszki to wtedy wywola callback. Myslalem tez zeby zamiast wrzucac to do background moze zrobic menuView i tam to wrzucic? Ale... jakos nie przemawia to do mnie

Alternatywa do tego (ale idea mi sie nie podoba tak bardzo, ani kombinacje tych pomyslow) ze bedzie globalny observer ktory bedzie trzymal wszystkie buttony (czyli nie beda nalezec do background tylko po prostu beda wyswietlane) i dzieki temu ta klasa bedzie miala pozycje wszystkich buttonow to moze sprawdzic czy nalezy do wspolrzednych i wywolac jakas funkcje (callback, albo nawet po prostu zdefiniowana w tym obserwerze)

co o tym sadzicie?