#ifndef SELECTABLE_H_ #define SELECTABLE_H_ #include "raylib.h" #include "../game.h" typedef struct Selectable Selectable; typedef struct Selectable{ Vector2 position; // Linke obere Ecke Vector2 centerPosition; // Die Mitte des Selectables Texture2D texture[3];// [0]: Normal | [1]: Hovered | [2]: Selected Texture2D backgroundTexture[3]; // [0]: Normal | [1]: Hovered | [2]: Selected int hasBackground; // 0: hat keine Background Textur | 1: hat Background Textur char description[20]; //Text der unter dem selectable angezeigt werden kann int showDescription; //0: zeigt Description nicht | 1: zeigt Description int id; // Durch die ID wird dem Selectable eine Funktion zugeordnet int state; // 0: not selected | 1: hovered | 2: selected int fontSize; // FontSize kann für jede Selectable Description individuell festgelegt werden int unselectAfterExecute; // 0: will unselect | 1 won't unselect // Notiz: Die Selectables können auch in einem 2-Dimensionalen Array im UiContainer gespeichert werden, worüber die Groups auch definiert werden könnten int groupID; // Selectables können gruppiert werden, man kann also mehrere Dinge gleichzeitig selected haben void (*onSelected)(Game *game, Selectable *selectable); }Selectable; // Textures+backgroundTextures: [0]: Normal | [1]: Hovered | [2]: Selected // hasBackground: 0: hat keine Background Textur | 1: hat Background Textur // showDescription 0: zeigt Description nicht | 1: zeigt Description // Max Description LEN 20 Selectable * SelectableInit(Texture2D textures[3], Texture2D backgroundTextures[3], int hasBackground, Vector2 *position, char *description, int showDescripton, int descriptionLEN, int fontSize, int id, int groupID, int unselectAfterExecute); void SelectableExecuteSelectable(Selectable *selectable, Game * game); int SelectableUpdateSelectableState(Selectable * selectable, Game *game); int SelectableUnselectSelectable(Selectable * selectable); void SelectableDrawSelectable(Selectable * selectable); #endif