Group :: Jogos/Enigmas
RPM: ff-clone
Main Changelog Spec Patches Sources Download Gear Bugs e FR Repocop
Patch: ff-clone-gcc10.patch
Download
Download
diff --git a/X.c b/X.c
index 971cad4..ce76305 100644
--- a/X.c
+++ b/X.c
@@ -3,6 +3,8 @@
#include "warning.h"
#include "X.h"
+Display *display;
+int screen;
// Zahaji komunikaci s X serverem, inicializuje promenne display a screen
void initX()
{
diff --git a/X.h b/X.h
index dfb5ee1..70906a5 100644
--- a/X.h
+++ b/X.h
@@ -2,7 +2,7 @@
#include <X11/Xutil.h>
// Nasledujici promenne jsou vyzadujovany nekterymi X-ovymi funkcemi
-Display *display;
-int screen;
+extern Display *display;
+extern int screen;
void initX(); // Zahaji komunikaci s X serverem, inicializuje promenne vyse.
diff --git a/directories.c b/directories.c
index e35abca..481ee5c 100644
--- a/directories.c
+++ b/directories.c
@@ -42,6 +42,8 @@ char *datadir = DATADIR;
char *datadir = "./data";
#endif
+char *homedir;
+
int asprintf(char **strp, const char *fmt, ...);
char *savedir = NULL;
diff --git a/directories.h b/directories.h
index d6d5a00..133751b 100644
--- a/directories.h
+++ b/directories.h
@@ -1,6 +1,6 @@
-char *datadir; // cesta k datum
-char *homedir; // cesta do skryteho adresare v home (vcetne cesty k home)
-char *savedir; // cesta do adresare s ulozenymi pozicemi
+extern char *datadir; // cesta k datum
+extern char *homedir; // cesta do skryteho adresare v home (vcetne cesty k home)
+extern char *savedir; // cesta do adresare s ulozenymi pozicemi
char *datafile(char *filename); // vrati datadir/filename
char *homefile(char *filename); // vrati homedir/filename
diff --git a/draw.c b/draw.c
index 53830f4..3188788 100644
--- a/draw.c
+++ b/draw.c
@@ -17,8 +17,19 @@
#include "gsaves.h"
#include "keyboard.h"
#include "menuevents.h"
-
+float room_x_scale; // cca 30, transformace pixel->velikost policka
+float room_y_scale;
+int room_x_translate; // souradnice mistnosti v okne
+int room_y_translate;
+int room_x_size; // velikost mistnosti v pixelech
+int room_y_size;
+float anim_phase; // o kolik jsou posunute posouvane objekty
+float heap_x_advance, heap_y_advance; // houpani ryb a predmety na nich
+char safemode; // je hra v uspornem rezimu?
+char img_change;
+cairo_pattern_t *bg_pattern; // barva pozadi -- tmave modra
static void draw_fish_rectangle();
+enum _gridmode gridmode;
#define GRID_THICKNESS 2 // tloustka mrizky v padesatinach policka
#define GRID_MINTHICK 1.2 /* minimalni tlouska v pixelech
diff --git a/draw.h b/draw.h
index eeb0502..e982204 100644
--- a/draw.h
+++ b/draw.h
@@ -1,23 +1,23 @@
-float room_x_scale; // cca 30, transformace pixel->velikost policka
-float room_y_scale;
+extern float room_x_scale; // cca 30, transformace pixel->velikost policka
+extern float room_y_scale;
-int room_x_translate; // souradnice mistnosti v okne
-int room_y_translate;
+extern int room_x_translate; // souradnice mistnosti v okne
+extern int room_y_translate;
-int room_x_size; // velikost mistnosti v pixelech
-int room_y_size;
+extern int room_x_size; // velikost mistnosti v pixelech
+extern int room_y_size;
-float anim_phase; // o kolik jsou posunute posouvane objekty
+extern float anim_phase; // o kolik jsou posunute posouvane objekty
-float heap_x_advance, heap_y_advance; // houpani ryb a predmety na nich
+extern float heap_x_advance, heap_y_advance; // houpani ryb a predmety na nich
-char safemode; // je hra v uspornem rezimu?
+extern char safemode; // je hra v uspornem rezimu?
/*
Nasledujici promenna udava, ktere komponenty se zmenily
a je treba je prekreslit.
*/
-char img_change;
+extern char img_change;
// Moznosti jsou:
#define CHANGE_ROOM 1 // hlavni okno hry
@@ -26,13 +26,15 @@ char img_change;
#define CHANGE_ALL (CHANGE_ROOM | CHANGE_GMOVES | CHANGE_GSAVES)
// mrizka je
-enum {
+enum _gridmode {
GRID_OFF, // vypnuta
GRID_BG, // na pozadi
GRID_FG // nebo na popredi
-} gridmode;
+};
-cairo_pattern_t *bg_pattern; // barva pozadi -- tmave modra
+extern enum _gridmode gridmode;
+
+extern cairo_pattern_t *bg_pattern; // barva pozadi -- tmave modra
void draw(); // vykresli okno
void anim_step(); // posune animaci o jeden krok
diff --git a/gmoves.c b/gmoves.c
index 5c1b775..dcbc67a 100644
--- a/gmoves.c
+++ b/gmoves.c
@@ -11,7 +11,13 @@ struct ff_object;
#include "gmoves.h"
#include "gsaves.h"
#include "menuevents.h"
-
+int FIRSTUNDOWAIT; // auto repeat delay u tlacitek '-' a '+' ve framech
+int UNDOWAIT; // auto repeat rate u tlacitek '-' a '+' ve framech
+int gmoves_width; // sirka svisleho undo pasecku
+int gmoves_height; // vyska vodorovneho undo pasecku
+char gmoves_vertical; // je undo pasecek svisly?
+int rewinding; // -1 = zmacknute '-', 1 = zmacknute '+', 0 = nezmacknute nic
+char slider_hold; // je drzeny posuvnik?
/*
Undo pasecek ma dva hlavni ovladaci prvky:
1) panel - to, kde jsou tlacitka -, + a pocitadlo tahu
diff --git a/gmoves.h b/gmoves.h
index 60de6ca..52d717f 100644
--- a/gmoves.h
+++ b/gmoves.h
@@ -1,11 +1,11 @@
-int FIRSTUNDOWAIT; // auto repeat delay u tlacitek '-' a '+' ve framech
-int UNDOWAIT; // auto repeat rate u tlacitek '-' a '+' ve framech
+extern int FIRSTUNDOWAIT; // auto repeat delay u tlacitek '-' a '+' ve framech
+extern int UNDOWAIT; // auto repeat rate u tlacitek '-' a '+' ve framech
-int gmoves_width; // sirka svisleho undo pasecku
-int gmoves_height; // vyska vodorovneho undo pasecku
-char gmoves_vertical; // je undo pasecek svisly?
-int rewinding; // -1 = zmacknute '-', 1 = zmacknute '+', 0 = nezmacknute nic
-char slider_hold; // je drzeny posuvnik?
+extern int gmoves_width; // sirka svisleho undo pasecku
+extern int gmoves_height; // vyska vodorovneho undo pasecku
+extern char gmoves_vertical; // je undo pasecek svisly?
+extern int rewinding; // -1 = zmacknute '-', 1 = zmacknute '+', 0 = nezmacknute nic
+extern char slider_hold; // je drzeny posuvnik?
void init_gmoves(); // inicializace promennych undo pasecku, napr gmoves_width
void level_gmoves_init(); // pri startu levelu nastavi undo pasecek na necinnost
diff --git a/gsaves.c b/gsaves.c
index ebfcd4c..8e69865 100644
--- a/gsaves.c
+++ b/gsaves.c
@@ -20,7 +20,15 @@
#include "draw.h"
#include "loop.h"
#include "keyboard.h"
-
+double GSAVES_ACT_SPEED; // za kolik framu se tlacitko zvetsi / zmensi
+double GSAVES_SPACE_SPEED;
+char gsaves_vertical; // gsaves jsou svisle
+int gsaves_width; // sirka svislych neaktivnich gsaves
+int gsaves_height; // vyska vodorovnych neaktivnich gsaves
+int gsaves_x_size, gsaves_y_size; // rozmery aktivnich gsaves v aktualni orientaci
+int gsaves_length; // delka, tj. vyska (jsou-li gsaves svisle) nebo sirka (jsou-li vodorovne)
+char gsaves_blockanim; // gsaves jsou aktivni, tak nebudeme zatezovat procesor dalsimi animacemi
+unsigned char gsaves_change_mask;
#define ICON_SIZE 200 // polovina obvodu zvetseneho tlacitka
#define MINI_SCALE 0.5 // zmenseni neaktivniho tlacitka (nenarazime-li na okraje okna)
#define BORDER 5 // mezery mezi tlacitky (konstantni pro zvetsena i nezvetsena)
@@ -960,7 +968,7 @@ void gsaves_save()
int i, j;
char name[20]; // nazev bez poradoveho cisla
char used[MAXSAVES]; // ktera poradova cisla jsou jiz pouzita
- char fullname[20]; // plny nazev
+ char fullname[42]; // plny nazev
char *type; // typ pozice
cairo_surface_t *surf; // nahled pozice
struct gsave *tmp; // pomocny ukazatel pro preusporadani pole save
diff --git a/gsaves.h b/gsaves.h
index 543bb99..e17443b 100644
--- a/gsaves.h
+++ b/gsaves.h
@@ -2,17 +2,17 @@
Gsaves je mac menu ulozenych pozic, veskere animace v tomto mac menu resim sam.
*/
-double GSAVES_ACT_SPEED; // za kolik framu se tlacitko zvetsi / zmensi
-double GSAVES_SPACE_SPEED; /* za kolik framu se presune mezera mezi dvema
+extern double GSAVES_ACT_SPEED; // za kolik framu se tlacitko zvetsi / zmensi
+extern double GSAVES_SPACE_SPEED; /* za kolik framu se presune mezera mezi dvema
tlacitky (pri presouvani tlacitka) */
-char gsaves_vertical; // gsaves jsou svisle
-int gsaves_width; // sirka svislych neaktivnich gsaves
-int gsaves_height; // vyska vodorovnych neaktivnich gsaves
-int gsaves_x_size, gsaves_y_size; // rozmery aktivnich gsaves v aktualni orientaci
-int gsaves_length; // delka, tj. vyska (jsou-li gsaves svisle) nebo sirka (jsou-li vodorovne)
+extern char gsaves_vertical; // gsaves jsou svisle
+extern int gsaves_width; // sirka svislych neaktivnich gsaves
+extern int gsaves_height; // vyska vodorovnych neaktivnich gsaves
+extern int gsaves_x_size, gsaves_y_size; // rozmery aktivnich gsaves v aktualni orientaci
+extern int gsaves_length; // delka, tj. vyska (jsou-li gsaves svisle) nebo sirka (jsou-li vodorovne)
-char gsaves_blockanim; // gsaves jsou aktivni, tak nebudeme zatezovat procesor dalsimi animacemi
+extern char gsaves_blockanim; // gsaves jsou aktivni, tak nebudeme zatezovat procesor dalsimi animacemi
/*
Gsaves mohou precuhovat pres ostatni ovladaci prvky. V takovem pripade je treba prekreslit
@@ -20,7 +20,7 @@ char gsaves_blockanim; // gsaves jsou aktivni, tak nebudeme zatezovat procesor d
udava, prez ktere prvky gsaves precuhuje (v analogickem formatu jako promenna img_change
z draw.h).
*/
-unsigned char gsaves_change_mask;
+extern unsigned char gsaves_change_mask;
void level_gsaves_init(); /* pri startu levelu spocita nemenne velikosti (napriklad velikost
zvetseneho tlacitka) a nacte seznam ulozenych pozic */
diff --git a/keyboard.c b/keyboard.c
index 13199a0..22cba33 100644
--- a/keyboard.c
+++ b/keyboard.c
@@ -18,6 +18,8 @@
#include "menuevents.h"
#include "infowindow.h"
+int keyboard_blockanim;
+
// typy klaves
#define NO_KEY -1 // zadna
diff --git a/keyboard.h b/keyboard.h
index 09ec8e2..9533f9a 100644
--- a/keyboard.h
+++ b/keyboard.h
@@ -9,7 +9,7 @@ void init_keyboard(); // inicializace modulu
void keyboard_erase_queue(); // promaze frontu klaves
-int keyboard_blockanim; /* Pri drzeni klaves Home, End, PgUp, PgDown je zablokovana animace,
+extern int keyboard_blockanim; /* Pri drzeni klaves Home, End, PgUp, PgDown je zablokovana animace,
aby u levelu, ve kterych na zacatku pada predmet, bylo mozne si tento
predmet prohlednot pred padem. Animace je takto blokovana pri
keyboard_blockanim != 0 */
diff --git a/layers.h b/layers.h
index 7c75b3e..acd1a84 100644
--- a/layers.h
+++ b/layers.h
@@ -50,7 +50,7 @@ typedef struct ff_layer{
Ze je nacitany obrazek lokalni se pozna podle toho, ze je promena local_image_mode
nastavena na true.
*/
-char local_image_mode;
+extern char local_image_mode;
ff_image *new_image(cairo_surface_t *surf, float x, float y,
float scalex, float scaley);
diff --git a/levelscript.h b/levelscript.h
index 5dfa7a3..1d54fd7 100644
--- a/levelscript.h
+++ b/levelscript.h
@@ -3,7 +3,7 @@
je nastavena lua skriptem. Bud bude rovna codename prislusneho node v menu nebo
v pripade uzivatelova levelu "user_<jmeno souboru bez pripony>".
*/
-char *room_codename;
+extern char *room_codename;
int script_set_codename(lua_State *L); // nastavi room_codename (ocekava jeden parametr -- string)
/*
diff --git a/loop.c b/loop.c
index a7792ab..0cf78fa 100644
--- a/loop.c
+++ b/loop.c
@@ -24,7 +24,8 @@
#include "menuscript.h"
#include "loop.h"
#include "gsaves.h"
-
+int mouse_x, mouse_y; // souradnice mysi v okne
+char mouse_pressed; // je zmacknute leve tlacitko mysi?
static int sec = 1; // pocet sekund mezi jednotlivymi framy
static int usec = 0; // pocet mikrosekund mezi jednotlivymi framy
diff --git a/loop.h b/loop.h
index 8c1f4c5..3efb300 100644
--- a/loop.h
+++ b/loop.h
@@ -1,9 +1,9 @@
void loop(); // hlavni cyklus
void setdelay (int vteriny, int mikro); // nastavi casovou prodlevy mezi jednotlivymi framy
-int mouse_x, mouse_y; // souradnice mysi v okne
+extern int mouse_x, mouse_y; // souradnice mysi v okne
void setmouse(); // nastavi souradnice mysi na mouse_x, mouse_y
-char mouse_pressed; // je zmacknute leve tlacitko mysi?
+extern char mouse_pressed; // je zmacknute leve tlacitko mysi?
void loop_noskip(); // oznami modulu, ze se cekalo dobu, kterou neni vhodno kompenzovat
diff --git a/main.c b/main.c
index becfb08..7847cd3 100644
--- a/main.c
+++ b/main.c
@@ -18,6 +18,10 @@
#include "keyboard.h"
#include "directories.h"
+char *userlev;
+int gargc;
+char **gargv;
+
static void usage() // kdyz jsou spatne parametry -- vypise Usage a ukonci program
{
printf("Usage: ff-clone [-d <data directory>] [<user level path>]\n");
diff --git a/main.h b/main.h
index e21b751..0a3b321 100644
--- a/main.h
+++ b/main.h
@@ -1,9 +1,9 @@
-char *userlev; /* nazev uzivatelova levelu (zadan jako parametr prikazove radky),
+extern char *userlev; /* nazev uzivatelova levelu (zadan jako parametr prikazove radky),
nebyl-li zadan, hodnota je NULL */
// zpristupneni argv a argc i jinym funkcim nez main
-int gargc;
-char **gargv;
+extern int gargc;
+extern char **gargv;
int main();
void escape(); // unik z mistnosti nebo hry
diff --git a/menuevents.c b/menuevents.c
index 652bcc0..1dab4ad 100644
--- a/menuevents.c
+++ b/menuevents.c
@@ -11,6 +11,7 @@
#include "levelscript.h"
static menu_node *last_active = NULL; // drzene tlacitko
+char menumode; // je hra v menu?
void menu_click() /* pri kliknuti se nestane nic slozitejsiho, nez ze si
zapamatuji kolecko, na ktere se kliklo */
diff --git a/menuevents.h b/menuevents.h
index 1ddb163..34c8a6c 100644
--- a/menuevents.h
+++ b/menuevents.h
@@ -1,4 +1,4 @@
-char menumode; // je hra v menu?
+extern char menumode; // je hra v menu?
void menu_click(); // kliknuti mysi v menu
void menu_unclick(); // pusteni mysi v menu
void menu_pointer(); // pohyb mysi v menu
diff --git a/menuscript.c b/menuscript.c
index 3ff065f..057daca 100644
--- a/menuscript.c
+++ b/menuscript.c
@@ -10,6 +10,9 @@
#include "menudraw.h"
#include "infowindow.h"
+menu_node *first_menu_node; // prvni prvek seznamu
+menu_node *active_menu_node;
+menu_line *first_menu_line; // prvni prvek spojoveho seznamu
// C_add_line(x1, y1, x2, y3) - prida usecku podle zadanych souradnic
static int menuscript_add_line(lua_State *L)
diff --git a/menuscript.h b/menuscript.h
index 259586f..53abd56 100644
--- a/menuscript.h
+++ b/menuscript.h
@@ -29,9 +29,9 @@ typedef struct menu_node{ // kolecko na mape
struct menu_node *next;
} menu_node;
-menu_node *first_menu_node; // prvni prvek seznamu
+extern menu_node *first_menu_node; // prvni prvek seznamu
-menu_node *active_menu_node; /* mistnost, nad kterou je mys, pripadne
+extern menu_node *active_menu_node; /* mistnost, nad kterou je mys, pripadne
spustena mistnost */
typedef struct menu_line{ // usecka na mape
@@ -39,7 +39,7 @@ typedef struct menu_line{ // usecka na mape
double x2, y2; // souradnice konce cary
struct menu_line *next;
} menu_line;
-menu_line *first_menu_line; // prvni prvek spojoveho seznamu
+extern menu_line *first_menu_line; // prvni prvek spojoveho seznamu
void menu_initlua(); // inicializuje skript a promenne tohoto modulu
diff --git a/moves.c b/moves.c
index 4022faf..f874fce 100644
--- a/moves.c
+++ b/moves.c
@@ -10,6 +10,11 @@
#include "draw.h"
#include "main.h"
+int moves; // aktualni pocet tahu
+int minmoves; // minimalni pocet tahu: -1 nebo 0 podle
+int maxmoves; // maximalni pocet tahu v teto situaci, tedy kam az dosahne redo
+char room_sol_esc;
+
/*
Undo historie je ulozena ve spojovem seznamu struktury movesblock,
kazda tato struktura ma ulozeno MOVESBLOCK (100) tahu a pozici vsech
diff --git a/moves.h b/moves.h
index 8e0dcaa..a60ae0b 100644
--- a/moves.h
+++ b/moves.h
@@ -1,11 +1,11 @@
#define FLIPCHANGE 0 // ryba se otocila
#define LIVECHANGE 1 // ryba zemrela
-int moves; // aktualni pocet tahu
-int minmoves; // minimalni pocet tahu: -1 nebo 0 podle
-int maxmoves; // maximalni pocet tahu v teto situaci, tedy kam az dosahne redo
+extern int moves; // aktualni pocet tahu
+extern int minmoves; // minimalni pocet tahu: -1 nebo 0 podle
+extern int maxmoves; // maximalni pocet tahu v teto situaci, tedy kam az dosahne redo
-char room_sol_esc; /* mistnost byla vyresena, a proto se nyni
+extern char room_sol_esc; /* mistnost byla vyresena, a proto se nyni
ma hra vratit do menu */
void init_moves(); /* inicializuje struktury pro undo historii,
diff --git a/object.c b/object.c
index fcdd296..632a858 100644
--- a/object.c
+++ b/object.c
@@ -14,7 +14,10 @@
#include "imgsave.h"
#include "menudraw.h"
#include "main.h"
-
+int objnum; // pocet objektu
+ff_object **objlist[NUMOBJLISTS];
+int room_width; // celkovy pocet policek na sirku
+int room_height; // celkovy pocet policek na vysku
static void analyzeobject(ff_object *obj);
ff_object *first_object = NULL; // prvni objekt ve spojovem seznamu
diff --git a/object.h b/object.h
index ca41bf2..3058b49 100644
--- a/object.h
+++ b/object.h
@@ -47,14 +47,14 @@ typedef struct ff_object{ // predmet ve hre (nebo i ryba / zed)
struct ff_object *next; // dalsi objekt ve spojovem seznamu
} ff_object;
-ff_object *first_object; // prvni objekt ve spojovem seznamu
-int objnum; // pocet objektu
+extern ff_object *first_object; // prvni objekt ve spojovem seznamu
+extern int objnum; // pocet objektu
/* Vedle spojoveho seznamu jsou objekty v nekolika (NUMOBJLISTS) polich
objlist[], ruzne sprehazeny. Navic kazdy objekt ma ulozeno, na jake
pozici daneho pole objlist se nachazi, v polozce index.
*/
-ff_object **objlist[NUMOBJLISTS];
+extern ff_object **objlist[NUMOBJLISTS];
/*
Pro prohozeni dvou objektu v danem poli objlist slouzi nasledujici funkce.
prvni parametr udava objekt, druhy na kterou pozici se ma premistit
@@ -62,8 +62,8 @@ ff_object **objlist[NUMOBJLISTS];
*/
void swapobject(ff_object *obj1, int index2, int list);
-int room_width; // celkovy pocet policek na sirku
-int room_height; // celkovy pocet policek na vysku
+extern int room_width; // celkovy pocet policek na sirku
+extern int room_height; // celkovy pocet policek na vysku
ff_object *new_object(const char *color, char type, int x, int y,
int width, int height, const char *data);
diff --git a/rules.c b/rules.c
index 00d1112..cf28659 100644
--- a/rules.c
+++ b/rules.c
@@ -7,7 +7,11 @@
#include "rules.h"
#include "main.h"
#include "menuscript.h"
-
+struct ff_object *active_fish; // prave aktivni ryba (s rameckem)
+struct ff_object *start_active_fish; // ryba aktivni pri startu
+int room_movedir;
+int fishnum; // pocet ryb
+enum _room_state room_state;
// Zde pouzivane objlisty: (a pak jeste FISHLIST v rules.h)
// polozka out v ff_object muze nabyvat:
diff --git a/rules.h b/rules.h
index 6f6336d..f3febb8 100644
--- a/rules.h
+++ b/rules.h
@@ -1,19 +1,21 @@
-enum{
+enum _room_state {
ROOM_IDLE, // nic se nedeje
ROOM_MOVE, // ryba se posunuje
ROOM_FALL, // predmety padaji
ROOM_BEGIN, // predmety budou padat (pri startu)
-} room_state;
+};
+
+extern enum _room_state room_state;
#define FISHLIST 2 // seznam ryb, viz rulec.c, kapitola
// zbyle objlisty definovane v rules.c
-struct ff_object *active_fish; // prave aktivni ryba (s rameckem)
-struct ff_object *start_active_fish; // ryba aktivni pri startu
-int room_movedir; /* smer kterym se hybou hybajici se predmety, tedy
+extern struct ff_object *active_fish; // prave aktivni ryba (s rameckem)
+extern struct ff_object *start_active_fish; // ryba aktivni pri startu
+extern int room_movedir; /* smer kterym se hybou hybajici se predmety, tedy
bud smer posunu ryby, nebo DOWN, padaji-li. */
-int fishnum; // pocet ryb
+extern int fishnum; // pocet ryb
void init_rules(); /* inicializuje tento modul, nutno spoustet po
finish_objects() */
diff --git a/script.c b/script.c
index b6c7812..01c0de2 100644
--- a/script.c
+++ b/script.c
@@ -9,6 +9,8 @@
#include "layers.h"
#include "draw.h"
+lua_State *luastat;
+
static void setluaint(lua_State *L, char *name, int value)
// nastavi ve skriptu do daneho nazvu promenne dane cislo.
{
diff --git a/script.h b/script.h
index 0069404..ecbee74 100644
--- a/script.h
+++ b/script.h
@@ -23,7 +23,7 @@
stringy datadir a homedir. Opet jejich nazev v lue bude zacinat predponou "C_".
*/
-lua_State *luastat;
+extern lua_State *luastat;
void initlua(); // inicializuje luastat
void *my_luaL_checkludata(lua_State *L, int narg);
diff --git a/window.c b/window.c
index 2cd1753..2ae6941 100644
--- a/window.c
+++ b/window.c
@@ -14,7 +14,14 @@
#include "gsaves.h"
#include "warning.h"
#include "main.h"
-
+Atom wmDeleteMessage; // pomoci tohoto se pozna zavreni krizkem
+Window real_win; // hlavni okno
+Window win; // podokno hlavniho okna, ktere ma stejne rozmery a je mozne do nej krelit
+int win_width, win_height; // velikost okna
+int owin_width, owin_height; // velikost okna pred fullscreenem
+char win_fs; // hra je ted ve fullscreenu
+cairo_t *win_cr;
+cairo_surface_t *win_surf;
char win_resize = 0;
cairo_t *win_cr = NULL;
static Pixmap win_pixmap; /* pixmapa, na kterou se ve skutecnosti
diff --git a/window.h b/window.h
index 009efc4..ab85e9e 100644
--- a/window.h
+++ b/window.h
@@ -1,11 +1,11 @@
-Atom wmDeleteMessage; // pomoci tohoto se pozna zavreni krizkem
-Window real_win; // hlavni okno
-Window win; // podokno hlavniho okna, ktere ma stejne rozmery a je mozne do nej krelit
+extern Atom wmDeleteMessage; // pomoci tohoto se pozna zavreni krizkem
+extern Window real_win; // hlavni okno
+extern Window win; // podokno hlavniho okna, ktere ma stejne rozmery a je mozne do nej krelit
-int win_width, win_height; // velikost okna
-int owin_width, owin_height; // velikost okna pred fullscreenem
+extern int win_width, win_height; // velikost okna
+extern int owin_width, owin_height; // velikost okna pred fullscreenem
-char win_fs; // hra je ted ve fullscreenu
+extern char win_fs; // hra je ted ve fullscreenu
/* Aby bylo prekreslovani co mozna nejmene rusive, je poreseno nasledovne:
Kreslici funkce vykresluji pomoci caira (win_cr) na surface win_surf, coz je
@@ -14,9 +14,9 @@ char win_fs; // hra je ted ve fullscreenu
velikost, ale pocka se az na prvni vykresleni nove jinak velke pixmapy. Do te
doby je na true nastavena promenna win_resize.
*/
-cairo_t *win_cr;
-cairo_surface_t *win_surf;
-char win_resize;
+extern cairo_t *win_cr;
+extern cairo_surface_t *win_surf;
+extern char win_resize;
void createwin(); // vyrobi hlavni okno
void create_win_cr(); // vyrobi pro okno spravne velkou pixmapu a cairo kontext