text: ﻿/*!
  * W pliku znajdują sie zmienne globalne, deklaracje typów strukturalnych oraz wyliczeniowych.
  */
  
  #pragma once
  #include <allegro5/allegro.h>
  #include <allegro5/allegro_font.h>
  #include <allegro5/allegro_ttf.h>
  
  //! Struktury odpowiedzialne za font używany w grze.
  ALLEGRO_FONT* main_font;
  ALLEGRO_FONT* score_font;
  ALLEGRO_FONT* hint_font;
  
  //! Rozdzielczość ekranu (w pikselach).
  unsigned int display_width;
  unsigned int display_height;
  
  //! Zmienna przyjmująca wartość true w chwili wyjścia z gry.
  bool want_to_quit;
  
  //! Stany gry - kolejno menu, właściwa gra i ekran opcji.
  typedef enum game_states
  {
  	MENU_SCREEN,
  	GAME_SCREEN,
  	OPTIONS_SCREEN,
  	HIGHSCORES_SCREEN,
  } game_state;
  game_state current_game_state;
  
  //! Kategorie menu.
  typedef enum menu_items
  {
  	NEW_GAME,
  	SETTINGS,
  	HIGHSCORES,
  	QUIT
  } menu_item;
  
  //! Reprezentacja bloku.
  typedef struct Block {
  	float x1; //! współrzędna x początku bloku
  	float y1; //! współrzędna y początku bloku
  	float x2; //! współrzędna x końca bloku
  	float y2; //! współrzędna y końca bloku
  	ALLEGRO_COLOR color; //! kolor bloku
  	bool exists; //! odpowiedzialne za zbicie bloku
  } Block;
  
  //! Reprezentacja paletki.
  typedef struct Shelf {
  	float x1; //! współrzędna x początku paletki
  	int y1; //! współrzędna y początku paletki
  	float x2; //! współrzędna x końca paletki
  	int y2; //! współrzędna y końca paletki
  	float movement_speed; //! prędkość poruszania się
  	ALLEGRO_COLOR color;
  } Shelf;
  
  //! Odpowiedzialne za kierunek poruszania się piłki.
  typedef struct Ball_Movement {
  	float movementX; //! ruch po osi x
  	float movementY; //! ruch po osi y
  } Movement;
  
  //! Reprezentacja piłki.
  typedef struct Ball {
  	float positionX; //! składowa x pozycji
  	float positionY; //! składowa y pozycji
  	int radius; //! promień piłki
  	Movement movement; //! ruch piłki
  	ALLEGRO_COLOR color; //! kolor piłki
  } Ball;
  
  //! Reprezentacja poziomu trudności.
  typedef enum difficulty_level {
  	EASY,
  	MEDIUM,
  	ADVANCED,
  	HARD,
  	CRAZY,
  } difficulty_level;
  
  //! Reprezentacja ustawień.
  typedef struct Game_Settings {
  	float ball_speed;
  	int block_columns;
  	int block_rows;
  	int shelf_width;
  	float shelf_speed;
  	int points_for_block;
  	bool sound_enabled;
  	bool control_by_keyboard;
  	difficulty_level difficulty_level;
  } GameSettings;
  GameSettings current_game_settings;
  
  //! definicja elementu listy z pliku list.c
  typedef struct HighscoreNode {
  	char gamer_name[20];
  	int score;
  	struct sll_node* next;
  } HighscoreNode;
  
  typedef struct HighscoreTile {
  	char gamer_name[20];
  	int score;
  } HighscoreTile;