diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..50c39fe3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+# Ignore the documentation folder
+/doc
diff --git a/Doxyfile b/Doxyfile
index 6e98e042..9bc982dd 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -52,7 +52,7 @@ PROJECT_LOGO =
# If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used.
-OUTPUT_DIRECTORY = "C:/Documents and Settings/Piotrek/Pulpit/colobot/doc"
+OUTPUT_DIRECTORY = "./doc"
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
# 4096 sub-directories (in 2 levels) under the output directory of each output
@@ -671,7 +671,7 @@ WARN_LOGFILE =
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT = "C:/Documents and Settings/Piotrek/Pulpit/colobot/src"
+INPUT = "src" "src/CBot"
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
@@ -689,38 +689,9 @@ INPUT_ENCODING = UTF-8
# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
# *.f90 *.f *.for *.vhd *.vhdl
-FILE_PATTERNS = *.c \
- *.cc \
- *.cxx \
+FILE_PATTERNS = *.h \
*.cpp \
- *.c++ \
- *.d \
- *.java \
- *.ii \
- *.ixx \
- *.ipp \
- *.i++ \
- *.inl \
- *.h \
- *.hh \
- *.hxx \
- *.hpp \
- *.h++ \
- *.idl \
- *.odl \
- *.cs \
- *.php \
- *.php3 \
- *.inc \
- *.m \
- *.mm \
- *.dox \
- *.py \
- *.f90 \
- *.f \
- *.for \
- *.vhd \
- *.vhdl
+ *.doc.txt
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
# should be searched for input files as well. Possible values are YES and NO.
@@ -1681,7 +1652,7 @@ CLASS_GRAPH = YES
# indirect implementation dependencies (inheritance, containment, and
# class references variables) of the class with other documented classes.
-COLLABORATION_GRAPH = YES
+COLLABORATION_GRAPH = NO
# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for groups, showing the direct groups dependencies
@@ -1720,7 +1691,7 @@ INCLUDE_GRAPH = YES
# documented header file showing the documented files that directly or
# indirectly include this file.
-INCLUDED_BY_GRAPH = YES
+INCLUDED_BY_GRAPH = NO
# If the CALL_GRAPH and HAVE_DOT options are set to YES then
# doxygen will generate a call dependency graph for every global function
@@ -1728,7 +1699,7 @@ INCLUDED_BY_GRAPH = YES
# the time of a run. So in most cases it will be better to enable call graphs
# for selected functions only using the \callgraph command.
-CALL_GRAPH = YES
+CALL_GRAPH = NO
# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
# doxygen will generate a caller dependency graph for every global function
diff --git a/src/docmain.doc.txt b/src/docmain.doc.txt
new file mode 100644
index 00000000..473090c1
--- /dev/null
+++ b/src/docmain.doc.txt
@@ -0,0 +1,151 @@
+This file is part of code documentation. Do not remove it.
+
+/**
+
+\mainpage
+
+Doxygen documentation of Colobot project
+
+\section Intro Introduction
+
+The source code released by Epitec was sparsely documented. This documentation, written from scratch,
+will aim to describe the various components of the code.
+
+Currently, it contains only the automatically generated content from Doxygen
+and the following brief description of source code files.
+
+\section Files Short description of source files
+
+(Currently in Polish, translation coming soon...)
+
+Lista modułów .cpp:
+- auto.cpp - Główna klasa odpowiadająca za obsługę stacjonarnych elementów. Posiada klasy dziedziczące:
+ - autobase.cpp - Klasa odpowiadająca za obsługę statku kosmicznego.
+ - autoconverter.cpp - Klasa odpowiadająca za obsługę huty tytanu.
+ - autoderrick.cpp - Klasa odpowiadająca za obsługę kopalni.
+ - autodestroyer.cpp autoegg.cpp - Klasa odpowiadająca za obsługę jaj obcych.
+ - autoenergy.cpp - Klasa odpowiadająca za obsługę fabryki ogniw elektrycznych.
+ - autofactory.cpp - Klasa odpowiadająca za obsługę fabryki robotów.
+ - autoflag.cpp - Klasa odpowiadająca za obsługę flagi.
+ - autohuston.cpp - Klasa odpowiadająca za obsługę Centrum Kontroli Misji w Houston.
+ - autoinfo.cpp - Klasa odpowiadająca za obsługę stacji przekaźnikowej.
+ - autojostle.cpp autokid.cpp autolabo.cpp - Klasa odpowiadająca za obsługę laboratorium.
+ - automush.cpp - Klasa odpowiadająca za obsługę grzybów.
+ - autonest.cpp - Klasa odpowiadająca za obsługę gniazda obcych.
+ - autonuclear.cpp - Klasa odpowiadająca za obsługę reaktora jądrowego.
+ - autopara.cpp - Klasa odpowiadająca za obsługę odgromnika.
+ - autoportico.cpp - Klasa odpowiadająca za obsługę drzwi statku kosmicznego.
+ - autoradar.cpp - Klasa odpowiadająca za obsługę radaru.
+ - autorepair.cpp - Klasa odpowiadająca za obsługę warsztatu.
+ - autoresearch.cpp - Klasa odpowiadająca za obsługę centrum badawczego.
+ - autoroot.cpp - Klasa odpowiadająca za obsługę korzeni.
+ - autosafe.cpp - Klasa odpowiadająca za obsługę skrytki.
+ - autostation.cpp - Klasa odpowiadająca za obsługę elektrowni.
+ - autotower.cpp - Klasa odpowiadająca za obsługę wieży obronnej.
+
+- blitz.cpp - Klasa odpowiadająca za obsługę piorunów.
+- brain.cpp - Klasa odpowiadająca za obsługę programów i poleceń dla robotów i budynków.
+- camera.cpp - Klasa odpowiadająca za obsługę kamery.
+- cbottoken.cpp - Funkcje odpowiadające za zwracanie informacji do „Podręcznika programowania”.
+- ClassFILE.cpp - Funkcje odpowiadające za obsługę plików w CBOT.
+- cloud.cpp - Klasa odpowiadająca za obsługę chmur.
+- cmdtoken.cpp - Funkcje odpowiadające za obsługę typów w CBOT.
+
+- control.cpp - Główna klasa odpowiadająca za obsługę kontrolek. Posiada klasy dziedziczące:
+ - button.cpp - Klasa odpowiadająca za obsługę przycisków.
+ - check.cpp - Klasa odpowiadająca za obsługę przycisków zaznaczania.
+ - color.cpp - Klasa odpowiadająca za obsługę jednokolorowych elementów.
+ - compass.cpp - Klasa odpowiadająca za obsługę kompasu.
+ - edit.cpp - Klasa odpowiadająca za obsługę edytora programów.
+ - editvalue.cpp - Klasa odpowiadająca za obsługę zaznaczeń.
+ - gauge.cpp - Klasa odpowiadająca za obsługę wskaźników.
+ - group.cpp - Klasa odpowiadająca za obsługę tła ikon.
+ - image.cpp - Klasa odpowiadająca za obsługę obrazków.
+ - key.cpp - Klasa odpowiadająca za obsługę klawiszy.
+ - label.cpp - Klasa odpowiadająca za obsługę etykiet.
+ - list.cpp - Klasa odpowiadająca za obsługę list.
+ - map.cpp - Klasa odpowiadająca za obsługę mapy.
+ - scroll.cpp - Klasa odpowiadająca za obsługę przycisków do przewijania.
+ - shortcut.cpp - Klasa odpowiadająca za obsługę skrótów.
+ - slider.cpp - Klasa odpowiadająca za obsługę paska przewijania.
+ - target.cpp - Klasa odpowiadająca za obsługę znaczników celu.
+ - window.cpp - Klasa odpowiadająca za obsługę okna.
+
+- d3dapp.cpp - Klasa odpowiadająca za uruchomienie programu. Zawiera funkcję WinMain().
+- d3dengine.cpp - Klasa zawierająca silnik gry.
+- d3denum.cpp - Funkcje odpowiadające za typy wyliczeniowe D3D.
+- d3dframe.cpp - Klasa odpowiadająca za zaimplementowanie struktur D3D.
+- d3dmath.cpp - Funkcje matematyczne D3D.
+- d3dtextr.cpp - Funkcje odpowiadające za zarządzanie teksturami.
+- d3dutil.cpp - Funkcje odpowiadające za używanie obiektów DirectX.
+- dd.cpp - Funkcje kompilujące funkcję „space()” CBOTa.
+- displayinfo.cpp - Klasa odpowiadająca za wyświetlanie informacji w SatCom.
+- displaytext.cpp - Klasa odpowiadająca za wyświetlanie informacji.
+- event.cpp - Klasa odpowiadająca za obsługę zdarzeń.
+- iman.cpp - Menedżer instancji.
+- interface.cpp - Klasa odpowiadająca za tworzenie kontrolek.
+- joystick.cpp - Obsługa DirectInput.
+- light.cpp - Klasa odpowiadająca za obsługę światła.
+- maindialog.cpp - Klasa odpowiadająca za obsługę menu.
+- mainmap.cpp - Klasa odpowiadająca za obsługę mini mapy.
+- mainmovie.cpp - Klasa odpowiadająca za obsługę filmików.
+- mainshort.cpp - Klasa odpowiadająca za obsługę skrótów.
+- math3d.cpp - Funkcje matematyczne.
+- metafile.cpp - Klasa odpowiadająca za obsługę plików ‘.dat’.
+- misc.cpp - Funkcje przetwarzające znaki.
+- model.cpp - Klasa odpowiadająca za obsługę modeli.
+- modfile.cpp - Klasa odpowiadająca za obsługę plików modeli.
+
+- motion.cpp - Główna klasa odpowiadająca za obsługę ruchomych modeli. Posiada klasy dziedziczące:
+ - motionant.cpp - Klasa odpowiadająca za ruch mrówki.
+ - motionbee.cpp - Klasa odpowiadająca za ruch osy.
+ - motionhuman.cpp - Klasa odpowiadająca za ruch człowieka.
+ - motionmother.cpp - Klasa odpowiadająca za ruch Królowej Obcych.
+ - motionspider.cpp - Klasa odpowiadająca za ruch pająka.
+ - motiontoto.cpp - Klasa odpowiadająca za ruch „toto”.
+ - motionvehicle.cpp - Klasa odpowiadająca za ruch robotów.
+ - motionworm.cpp - Klasa odpowiadająca za ruch robaka.
+
+- object.cpp - Klasa odpowiadająca za obsługę obiektów.
+- particule.cpp - Klasa odpowiadająca za obsługę cząsteczek.
+- physics.cpp - Klasa odpowiadająca za obsługę zdarzeń fizycznych.
+- planet.cpp - Klasa odpowiadająca za obsługę planet.
+- profile.cpp - Funkcje przetwarzające profile.
+- pyro.cpp - Klasa odpowiadająca za obsługę efektów pirotechnicznych.
+- restext.cpp - Baza tekstów.
+- robotmain.cpp - Klasa odpowiadająca za obsługę robotów.
+- script.cpp - Klasa odpowiadająca za obsługę funkcji CBOT.
+- sound.cpp - Klasa odpowiadająca za obsługę dźwięku.
+- studio.cpp - Klasa odpowiadająca za obsługę edytora CBOT.
+
+- task.cpp - Główna klasa odpowiadająca za obsługę zadań dla robotów i budynków. Posiada klasy dziedziczące:
+ - taskadvance.cpp - Klasa odpowiadająca za obsługę poruszania się w przód/tył.
+ - taskbuild.cpp - Klasa odpowiadająca za obsługę budowania.
+ - taskfire.cpp - Klasa odpowiadająca za obsługę strzelania.
+ - taskfireant.cpp - Klasa odpowiadająca za obsługę strzelania przez mrówkę.
+ - taskflag.cpp - Klasa odpowiadająca za obsługę flagi.
+ - taskgoto.cpp - Klasa odpowiadająca za obsługę polecenia „goto()”.
+ - taskgungoal.cpp taskinfo.cpp - Klasa odpowiadająca za obsługę stacji przekaźnikowej.
+ - taskmanip.cpp - Klasa odpowiadająca za obsługę ramienia robota.
+ - taskpen.cpp - Klasa odpowiadająca za obsługę kredek.
+ - taskrecover.cpp - Klasa odpowiadająca za obsługę odzyskiwania tytanu.
+ - taskreset.cpp tasksearch.cpp - Klasa odpowiadająca za obsługę przeszukiwania podłoża.
+ - taskshield.cpp - Klasa odpowiadająca za obsługę pola ochronnego.
+ - taskspiderexplo.cpp - Klasa odpowiadająca za obsługę wybuchu pająka.
+ - tasktake.cpp - Klasa odpowiadająca za obsługę chwytaka.
+ - taskterraform.cpp - Klasa odpowiadająca za obsługę uderzacza.
+ - taskturn.cpp - Klasa odpowiadająca za obsługę obracania się.
+ - taskwait.cpp - Klasa odpowiadająca za obsługę czekania.
+
+- taskmanager.cpp - Klasa odpowiadająca za zarządzanie zadaniami dla robotów i budynków.
+- terrain.cpp - Klasa odpowiadająca za nakładanie tekstur na mapę.
+- text.cpp - Klasa odpowiadająca za wyświetlanie tekstu.
+- water.cpp - Klasa odpowiadająca za obsługę wody.
+
+Ważniejsze pliki .h:
+- event.h - typ wyliczeniowy EventMsg.
+- global.h - stałe dla budynków i badań.
+- language.h - wybór trybu kompilacji.
+- misc.h - typy wyliczeniowe ClassType i Error, stałe dla klawiszy.
+
+*/