Index: orxonox/branches/gui/CODING-STANDARDS
===================================================================
--- orxonox/branches/gui/CODING-STANDARDS	(revision 1860)
+++ orxonox/branches/gui/CODING-STANDARDS	(revision 1860)
@@ -0,0 +1,52 @@
+
+
+
+1.Coding Conventions
+2.How to format your Code
+
+1.Coding Conventions
+--------------------
+==> If you are beginning a new code-file: copy the proto_class.{cc,h}
+==> and work with these files.
+
+a) in every code file, there has to be a GNU copyright header
+b) under the (c) header write your name as main-programmer, if
+   you are just bugfixing or extending write it under co-programmer
+c) Every function has a header with informations about it:
+/**
+   \brief <a brief description>
+   \param <parameters the function needs>
+   \param <more parameters>
+
+   <more description>
+*/
+   This makes live easier, if we want to add a documentation.
+
+
+2.How to format your Code
+-------------------------
+We use the GNU conding convention (which is also used in xemacs etc.):
+
+-- Put a space after every comma.
+-- Put a space before the parenthesis that begins a function call,
+   macro call, function declaration or definition, or control
+   statement (if, while, switch, for). (DO NOT do this for macro
+   definitions; this is invalid preprocessor syntax.)
+-- The brace that begins a control statement (if, while, for, switch,
+   do) or a function definition should go on a line by itself.
+-- In function definitions, put the return type and all other
+   qualifiers on a line before the function name.  Thus, the function
+   name is always at the beginning of a line.
+-- Indentation level is two spaces.  (However, the first and following
+   statements of a while/for/if/etc. block are indented four spaces
+   from the while/for/if keyword.  The opening and closing braces are
+   indented two spaces.)
+-- Variable and function names should be all lowercase, with underscores
+   separating words, except for a prefixing tag, which may be in
+   uppercase.  Do not use the mixed-case convention (e.g.
+   SetVariableToValue ()) and *especially* do not use Microsoft
+   Hungarian notation (char **rgszRedundantTag).
+-- preprocessor and enum constants should be all uppercase, and should
+   be prefixed with a tag that groups related constants together.
+
+
Index: orxonox/branches/gui/COPYING
===================================================================
--- orxonox/branches/gui/COPYING	(revision 1860)
+++ orxonox/branches/gui/COPYING	(revision 1860)
@@ -0,0 +1,345 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Index: orxonox/branches/gui/README
===================================================================
--- orxonox/branches/gui/README	(revision 1860)
+++ orxonox/branches/gui/README	(revision 1860)
@@ -0,0 +1,136 @@
+
+This is the offical README file for the game project
+
+--------------------------------------------------------
+                       orxOnox
+--------------------------------------------------------
+
+
+
+
+1.Preface:
+----------
+Orxonox is a open-source vertical scroller game programed
+in c++ and OpenGL.
+If we manage to be sober enough, this game shall definitly 
+become _the_ open-source vertical scroller ever.
+
+2.Manifesto:
+------------
+1) Alien is a great film
+2) Guiness is the most delicious beer
+
+to be continoued...
+
+
+3.Overview:
+---------
+1.Preface
+2.Manifesto
+3.Overview
+3.Contributing To The Project
+4.Howto C++ Programming
+5.Howto SVN
+6.Coding conventions
+
+
+4.Contributing To The project:
+------------------------------
+People who want to help us working on orxonox are always
+welcome:) Feel free to chip in anything you like. Wine, beer, 
+coffee... If you like to help us programming orxonox, you:
+- join the developer community mailing lists
+- read this README file
+then you have multiple ways to get started. 
+a) Read the hole source code and choose a topic you like
+b) check the TODO file to get a knowledge of what we need
+c) ask us for more information
+To get more informations about programming and project specs
+read the programming sections below.
+
+To start programming on orxonox you first have to download the 
+newest svn tree of orxonox. You can do this by enterning following
+lines in the linux console (ensure svn to be installed with ssl
+support enabled):
+
+svn co https://open.datacore.ch/pw/orxonox orxonox
+
+If you haven't got ssl support in you svn tool, recompile it
+./configure --with-ssl
+make
+make install
+
+
+5.Howto C++ Programming:
+------------------------
+If you are new to c/c++ programming, this project is probably
+not the best starting place to learn it. For you and the rest who 
+need "refreshment" check out these guides:
+
+www.cplusplus.com/doc/tutorial
+www.4p8.com/eric.brasseur/cppcen.html
+
+
+6.Howto SVN:
+------------
+For a more complete guide about this topic read the documentation
+avaiable at subversion.tigris.org.
+
+SVN (=subversion) is a version control program similar to CVS but
+newer. This program enables us to work all at the same program at 
+the same time - tricky.
+
+subversion checkout https://open.datacore.ch/pw/orxonox orxonox
+same as: subversion co https://open.datacore....
+
+this makes a directory orxonox at your current place in and gets
+the hole brand new source code from the server.
+
+now you can work. Remember to use 'svn copy instead of 'cp', 
+'svn mv' instead of 'mv', 'svn rm' instead of 'rm'... - you got it
+I think.
+After you have made your changes to the files enter
+svn status
+or with more details: svn status -vv
+which will show you the changes you did locally on your computer.
+svn diff
+is similar but shows you all the changes in detail.
+
+svn diff > patchfile
+the patchfile you can use later in conjunction with the patch program.
+You could, for example, email this patchfile to another developer for
+review or testing prior to commit.
+
+To add a new file type
+svn add <filename>
+and to publish all your changes type
+svn commit --message "Corrected number of chees slices."
+svn commit will send all of your changs to the repository. When you 
+commit a change, you need to supply a log message, describing your 
+change. The message can also be read from a file:
+svn commit --file logmsg
+
+If you accidently make a change you like to revert, you just can do this
+by typing:
+svn revert <filename>
+
+To keep track about the work that is running on the project use the
+command: svn log. This will show you a bref summary of all changes.
+
+
+Most of the programmer will do their work on a branch. A Branch is
+a line of development that exists independently of another line, yet
+still shares a common history. A branch always begins life as a copy
+of something, and moves on trom there, generating its own history. Later
+the two versions will merge.
+
+If you are working on orxonox you will have your own branch in which you 
+will program, some sort of sand-box. If you finish your work on your 
+topic, it will be revised by us and merged with the trunk
+
+7.Coding Conventions
+--------------------
+Read the File CODING-STANDARDS
+
+
+#EOF
Index: orxonox/branches/gui/ToDo
===================================================================
--- orxonox/branches/gui/ToDo	(revision 1860)
+++ orxonox/branches/gui/ToDo	(revision 1860)
@@ -0,0 +1,7 @@
+
+
+./configure
+-----------
+- if dri is not supported glxinfo returns "Xlib:  extension "XFree86-DRI" missing on display ":0.0"." -> this message should not be shown on the console!
+
+
Index: orxonox/branches/gui/configure
===================================================================
--- orxonox/branches/gui/configure	(revision 1860)
+++ orxonox/branches/gui/configure	(revision 1860)
@@ -0,0 +1,133 @@
+## Conact Address
+###############################
+SUPPORT_ADDRESS="orxonox-dev@mail.datacore.ch"
+
+## Configure Version
+###############################
+CONFIG_VERS="0.1alpha - orxonox is still in development - please send bug-reports, requests, ideas to $SUPPORT_ADDRESS"
+
+## Defaults
+################################
+ENABLE_GLUT="yes"
+ENABLE_GTK="yes"
+VERBOSE="no"
+
+
+## Where to look for stuff
+################################
+std_bin_dirs="/usr/bin /usr/X11R6/bin /usr/local/bin $HOME/bin"
+std_include_dirs="/usr/include/GL"
+std_lib_dirs="/usr/lib /usr/X11R6/lib /usr/local/lib $HOME/lib"
+
+## The functions enter the room.
+## In order to understand this 
+## file you have to understand 
+## scripts/configure_functions
+################################
+source ./scripts/configure_functions
+
+## print instruction
+################################
+print_newline
+print_separator
+print_message "This scripts determines all options"
+print_message "needed to build Orxonox."
+print_message "This is no autoconf configure script"
+print_separator
+
+## Check command line for options
+#################################
+check_command_line_options $@
+
+## Check linux distribution
+#############################################################
+print_topic "Checking OS"
+OS=`uname -a | awk '{print $1}'`
+if [ $OS == "Linux" ]; then
+	print_ack
+	print_info "Running on a $OS system"
+else
+	print_nack
+	print_error "Running on a $OS system - probably not supported"
+	print_error "Orxonox is designed to run on Linux systems"
+	print_error "please do not stop here an try to port the game to"
+	print_error "your system. Send your patch to $SUPPORT_ADDRESS"
+	print_exit
+	exit 1
+fi
+
+## Check GLUT installation
+##############################################################
+if [ $ENABLE_GLUT = "yes" ]; then
+	print_topic "Verifing GLUT install"
+	if check_for_GLUT; then
+		print_ack
+		print_info "GLUT found at: $GLUT_DIR"
+	else
+		print_nack
+		print_error "GLUT not found!"
+		print_exit
+		exit 1
+	fi	
+fi
+
+
+## Check Direct Rendering Support
+##############################################################
+if [ $ENABLE_GLUT = "yes" ]; then
+	print_topic "Checking Direct Rendering Support (dri)"
+	if check_for_glxinfo; then
+		if check_for_dri; then
+			print_ack
+			print_info "DRI is working on your system"
+		else
+			print_nack
+			print_warning "DRI not supported, you probably want to configure it"
+			print_warning "or you try OpenGL emulation with Mesa"
+		fi
+	else
+		print_nack
+		print_error "no glxinfo detected - check your xfree install"
+	fi
+fi
+
+
+## Check GtK Installation
+##############################################################
+if [ $ENABLE_GTK == "yes" ]; then
+	print_topic "Checking for GtK Support"
+	if check_for_gtk_config; then
+		print_ack
+		print_info "gtk-config found: $GTK_CONFIG"
+	else
+		print_nack
+		print_warning "You won't be able to use our gtk config"
+		print_warning "menu. This ain't gonna hurt..."
+	fi
+fi
+
+## Write Makefile
+###############################################################
+print_topic "Writing out Makefile"
+if [ $ENABLE_GLUT == "yes" ]; then
+	if [ $ENABLE_GLUT == "yes" ]; then
+		cp scripts/Makefile.all Makefile > /dev/null
+	else
+		cp scripts/Makefile.GLUT Makefile > /dev/null
+	fi
+fi
+if [ -f Makefile ]; then
+	print_ack
+else
+	print_nack
+	print_error "This error should not occure, please send"
+	print_error "a full bug-report to $SUPPORT_ADDRESS"
+	exit 1
+fi
+print_separator
+print_message "Configure finished"
+print_newline
+print_message "Now, type 'make' to build Orxonox"
+print_newline
+
+### EOF
Index: orxonox/branches/gui/core/Makefile
===================================================================
--- orxonox/branches/gui/core/Makefile	(revision 1860)
+++ orxonox/branches/gui/core/Makefile	(revision 1860)
@@ -0,0 +1,86 @@
+
+CC = gcc
+CXX = g++
+APP_LIB_DEPS = -lglut -lGLU -lGL -lm -L/usr/X11R6/lib -lXt -lX11
+GL_LIB = libGL.so
+GLU_LIB = libGLU.so
+GLUT_LIB = libglut.so
+GLW_LIB = libGLw.so
+OSMESA_LIB = libOSMesa.so
+
+CFLAGS = -O3 -pedantic -fPIC -ffast-math -I/usr/X11R6/include
+CXXFLAGS = -fPIC -O3
+GLUT_CFLAGS = -fexceptions
+
+TOP = ../..
+INCDIR = /usr/Mesa-6.0.1/include
+LIBDIR = /usr/Mesa-6.0.1/lib
+
+LIBS = -L$(LIBDIR) $(APP_LIB_DEPS)
+
+OSMESA_LIBS = -L$(LIBDIR) -lglut -lOSMesa -lGLU -lGL $(APP_LIB_DEPS)
+
+LIB_DEP = $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GLU_LIB) $(LIBDIR)/$(GLUT_LIB)
+
+PROGS = \
+	orxonox \
+
+HEADERS = \
+	orxonox.h \
+	data_core.h
+	
+SOURCES = \
+	orxonox.cc \
+	data_core.cc
+
+OBJECTS = \
+	orxonox.o \
+	data_tank.o \
+	npc.o \
+	player.o \
+	world.o 
+
+TARGET = orxonox
+
+.SUFFIXES:
+.SUFFIXES: .cc .o
+
+#.cc: $(LIB_DEP)
+#	$(CXX) -I$(INCDIR) $(CFLAGS) $< $(LIBS) -o $@
+
+.cc.o:
+	@ echo "$@ wird kompiliert..."
+	@ $(CXX) -c $(CFLAGS) -I$(INCDIR) -o $@ $<
+
+
+#### build
+
+all: $(TARGET)
+
+$(TARGET): $(OBJECTS)
+	@ echo "orxonox wird gelinkt..."
+	@ $(CXX) $(LIBS) -o $(TARGET) $(OBJECTS)
+
+
+help:
+	@echo "Cleaning targets:"
+	@echo "  clean		- remove most generated files"
+	@echo ""
+	@echo "Generic targets:"
+	@echo "  all		- Build all targets"
+	@echo ""
+	@echo "For further info see the README file"
+	
+clean:
+	rm -rf *.o *~
+
+
+####compile
+
+#orxonox.o: orxonox.cc \
+#		orxonox.h
+
+#data_tank.o: data_tank.cc \
+#		data_tank.h	
+	
+#EOF
Index: orxonox/branches/gui/core/data_tank.cc
===================================================================
--- orxonox/branches/gui/core/data_tank.cc	(revision 1860)
+++ orxonox/branches/gui/core/data_tank.cc	(revision 1860)
@@ -0,0 +1,28 @@
+
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   Copyright by: Patrick Boenzli
+   Fixes by:
+*/
+
+
+#include "data_tank.h"
+
+using namespace std;
+
+
+DataTank::DataTank () {}
+
+
+
+DataTank::~DataTank () {}
+
+
Index: orxonox/branches/gui/core/data_tank.h
===================================================================
--- orxonox/branches/gui/core/data_tank.h	(revision 1860)
+++ orxonox/branches/gui/core/data_tank.h	(revision 1860)
@@ -0,0 +1,14 @@
+
+#ifndef DATA_TANK_H
+#define DATA_TANK_H
+
+
+class DataTank {
+
+ private:
+  DataTank ();
+  ~DataTank ();
+
+};
+
+#endif
Index: orxonox/branches/gui/core/npc.cc
===================================================================
--- orxonox/branches/gui/core/npc.cc	(revision 1860)
+++ orxonox/branches/gui/core/npc.cc	(revision 1860)
@@ -0,0 +1,49 @@
+
+
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Patrick Boenzli
+   co-programmer:
+*/
+
+
+#include "npc.h"
+
+#include <iostream>
+
+using namespace std;
+
+
+NPC::NPC () {}
+
+
+
+NPC::~NPC () {}
+
+
+void NPC::setPosition(int x, int y, int z)
+{
+  xCor = x; yCor = y; zCor = z;
+}
+
+void NPC::getPosition(int* x, int* y, int* z) 
+{
+  *x = xCor; 
+  *y = yCor; 
+  *z = zCor;
+}
+
+
+void NPC::drawNPC(void) 
+{
+  cout << "Player::drawNPC()" << endl;
+}
Index: orxonox/branches/gui/core/npc.h
===================================================================
--- orxonox/branches/gui/core/npc.h	(revision 1860)
+++ orxonox/branches/gui/core/npc.h	(revision 1860)
@@ -0,0 +1,28 @@
+
+#ifndef NPC_H
+#define NPC_H
+
+
+class NPC {
+
+ public:
+  NPC ();
+  ~NPC ();
+
+  void drawNPC(void);
+  void setPosition(int x, int y, int z);
+  void getPosition(int* x, int* y, int* z);
+
+ private:
+  /* position of the non player space craft */
+
+  int npcType;
+
+  int xCor;
+  int yCor;
+  int zCor;
+;
+
+};
+
+#endif
Index: orxonox/branches/gui/core/orxonox.cc
===================================================================
--- orxonox/branches/gui/core/orxonox.cc	(revision 1860)
+++ orxonox/branches/gui/core/orxonox.cc	(revision 1860)
@@ -0,0 +1,146 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Patrick Boenzli
+   co-programmer:
+*/
+
+
+
+
+
+
+/* class definition header */
+#include "orxonox.h"
+#include "data_tank.h"
+
+/* standard headers */
+#include <iostream>
+#include <cstdio>
+
+/* openGL Headers */
+#include <GL/glut.h>
+
+using namespace std;
+
+
+
+Orxonox::Orxonox () {}
+
+
+
+Orxonox::~Orxonox () {}
+
+
+/* this is a singleton class to prevent dublicates */
+Orxonox* Orxonox::singleton_ref = 0;
+Orxonox* Orxonox::getInstance (void)
+{
+  if (singleton_ref == NULL)
+    singleton_ref = new Orxonox();
+  return singleton_ref;
+}
+
+
+
+int Orxonox::globalInit (int argc, char** argv) 
+{
+  glutInit(&argc, argv);
+  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
+  glutInitWindowSize(500, 500);
+  glutInitWindowPosition(100, 100);
+  glutCreateWindow("orxOnox");
+  /* window event dispatchers */
+  glutDisplayFunc(display);
+  glutReshapeFunc(reshape);
+  glutKeyboardFunc(keyboard);
+}
+
+
+
+int Orxonox::menuInit (void)
+{
+  glClearColor(0.0, 0.0, 0.0, 0.0);
+}
+
+
+
+int Orxonox::gameInit (void) 
+{
+
+}
+
+
+void Orxonox::keyboard(unsigned char key, int x, int y)
+{
+  switch(key) {
+  case 27:
+    exit 0;
+    break;
+  }
+}
+
+
+void Orxonox::display (void) 
+{
+  glClear(GL_COLOR_BUFFER_BIT);
+  glutSwapBuffers();
+} 
+
+
+
+void Orxonox::reshape (int w, int h)
+{
+  glViewport(0, 0, (GLsizei) w, (GLsizei) h);
+  glMatrixMode(GL_PROJECTION);
+  glLoadIdentity();
+  glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0);
+  glMatrixMode(GL_MODELVIEW);
+  glLoadIdentity(); //pb why a second time?
+}
+
+
+
+int main (int argc, char** argv) 
+{  
+  Orxonox *orx = Orxonox::getInstance();
+  (*orx).globalInit(argc, argv);
+  (*orx).menuInit();
+
+  World* wd = new World;
+  Player* pl = new Player;
+  (*wd).addPlayer(pl);
+  (*wd).addPlayer(pl);
+  (*wd).addPlayer(pl);
+  (*wd).addPlayer(pl);
+
+  NPC* nl = new NPC;
+  (*wd).addNPC(nl);
+  (*wd).addNPC(nl);
+  (*wd).addNPC(nl);
+  (*wd).addNPC(nl);
+  (*wd).addNPC(nl);
+  (*wd).addNPC(nl);
+  (*wd).testThaTest();
+
+  glutMainLoop();  
+  return 0;
+}
Index: orxonox/branches/gui/core/orxonox.h
===================================================================
--- orxonox/branches/gui/core/orxonox.h	(revision 1860)
+++ orxonox/branches/gui/core/orxonox.h	(revision 1860)
@@ -0,0 +1,29 @@
+
+#include "world.h"
+
+#ifndef ORXONOX_H
+#define ORXONOX_H
+
+#define NULL 0
+
+class Orxonox {
+
+ private:
+  static Orxonox *singleton_ref;
+  Orxonox ();
+  ~Orxonox ();
+
+ public:
+
+  static Orxonox* getInstance (void);
+
+  int globalInit (int argc, char** argv);
+  int menuInit (void);
+  int gameInit (void);
+  static void display (void);
+  static void reshape (int w, int h);
+  static void keyboard(unsigned char key, int x, int y);
+};
+
+#endif
+
Index: orxonox/branches/gui/core/player.cc
===================================================================
--- orxonox/branches/gui/core/player.cc	(revision 1860)
+++ orxonox/branches/gui/core/player.cc	(revision 1860)
@@ -0,0 +1,37 @@
+
+
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+*/
+
+
+#include "player.h"
+#include <iostream>
+
+using namespace std;
+
+
+Player::Player () {}
+
+
+
+Player::~Player () {}
+
+
+void Player::setPosition( int x, int y, int z)
+{
+  xCor = x; yCor = y; zCor = z;
+}
+
+
+void Player::drawPlayer(void) 
+{
+  cout << "Player::drawPlayer()" << endl;
+}
Index: orxonox/branches/gui/core/player.h
===================================================================
--- orxonox/branches/gui/core/player.h	(revision 1860)
+++ orxonox/branches/gui/core/player.h	(revision 1860)
@@ -0,0 +1,26 @@
+
+#ifndef PLAYER_H
+#define PLAYER_H
+
+
+class Player {
+
+ public:
+  Player ();
+  ~Player ();
+
+  void setPosition(int x, int y, int z);
+  void getPosition(int* x, int* y, int* z);
+  void drawPlayer(void);
+
+ private:
+  /* position of the space craft */
+  int xCor;
+  int yCor;
+  int zCor;
+
+
+
+};
+
+#endif
Index: orxonox/branches/gui/core/proto_class.cc
===================================================================
--- orxonox/branches/gui/core/proto_class.cc	(revision 1860)
+++ orxonox/branches/gui/core/proto_class.cc	(revision 1860)
@@ -0,0 +1,32 @@
+
+
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: ...
+   co-programmer: ...
+*/
+
+
+#include "proto_class.h"
+
+
+using namespace std;
+
+
+
+ProtoClass::ProtoClass () {}
+
+
+
+ProtoClass::~ProtoClass () {}
+
+
Index: orxonox/branches/gui/core/proto_class.h
===================================================================
--- orxonox/branches/gui/core/proto_class.h	(revision 1860)
+++ orxonox/branches/gui/core/proto_class.h	(revision 1860)
@@ -0,0 +1,14 @@
+
+#ifndef PROTO_CLASS_H
+#define PROTO_CLASS_H
+
+
+class ProtoClass {
+
+ private:
+  ProtoClass ();
+  ~ProtoClass ();
+
+};
+
+#endif
Index: orxonox/branches/gui/core/stdincl.h
===================================================================
--- orxonox/branches/gui/core/stdincl.h	(revision 1860)
+++ orxonox/branches/gui/core/stdincl.h	(revision 1860)
@@ -0,0 +1,7 @@
+
+#ifndef STDINCL_H
+#define STDINCL_H
+
+#define null 0
+
+#endif
Index: orxonox/branches/gui/core/world.cc
===================================================================
--- orxonox/branches/gui/core/world.cc	(revision 1860)
+++ orxonox/branches/gui/core/world.cc	(revision 1860)
@@ -0,0 +1,179 @@
+
+
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Patrick Boenzli
+   co-programmer:
+*/
+
+
+#include "world.h"
+
+#include <iostream>
+
+using namespace std;
+
+
+/** 
+   \brief Create a new World
+   
+   This creates a new empty world!
+*/
+World::World () {
+  lastPlayer = null;
+  lastNPC = null;
+}
+
+
+World::~World () {}
+
+
+/** 
+   \brief Add Player
+   \param player A reference to the new player object
+   
+   Add a new Player to the game. Player has to be initialised previously 
+*/
+bool World::addPlayer(Player* player) 
+{
+  playerList* listMember = new playerList;
+  listMember->player = player;
+  if ( lastPlayer != null ) 
+    {
+      listMember->number = lastPlayer->number + 1;
+      listMember->next = lastPlayer;
+    }
+  else 
+    {
+      listMember->number = 0;
+      listMember->next = null;
+    }
+  lastPlayer = listMember;
+}
+
+
+/** 
+   \brief Remove Player
+   \param player A reference to the new npc object
+   
+   Remove a new Player to the game.
+*/
+bool World::removePlayer(Player* player) {
+  cout << "World::removeNPC not implemented yet" << endl;
+}
+
+
+/** 
+   \brief Add Non-Player-Character
+   \param player A reference to the new npc object
+   
+   Add a new Non-Player-Character to the game. Player has to be initialised previously 
+*/
+bool World::addNPC(NPC* npc) 
+{
+  npcList* listMember = new npcList;
+  listMember->npc = npc;
+  if ( lastNPC != null ) 
+    {
+      listMember->number = lastNPC->number + 1;
+      listMember->next = lastNPC;
+    }
+  else 
+    {
+      listMember->number = 0;
+      listMember->next = null;
+    }
+  lastNPC = listMember;
+}
+
+
+/** 
+   \brief Remove Non-Player-Character
+   \param player A reference to the new npc object
+   
+   Remove a new Non-Player-Character to the game.
+*/
+bool World::removeNPC(NPC* npc) {
+  cout << "World::removeNPC not implemented yet" << endl;
+}
+
+
+
+/** 
+   \brief Draws the World and all Objects contained
+   
+   Calls the draw function of all: Objects, Players, Environement
+*/
+void World::drawWorld(void) 
+{
+  playerList* tmpPlayer = lastPlayer;
+  Player* player = tmpPlayer->player;
+  while( tmpPlayer != null ) 
+    {
+      (*tmpPlayer->player).drawPlayer();
+      tmpPlayer = tmpPlayer->next;
+    }
+  npcList* tmpNPC = lastNPC;
+  while( tmpNPC != null )
+    {
+      (*tmpNPC->npc).drawNPC();
+      tmpNPC = tmpNPC->next;
+    }
+}
+
+
+/** 
+   \brief Updates the world and all its objects
+   
+   Calculates the new state of the world. User-input and AI of
+   the enemies are accounted for.
+*/
+void World::updateWorld(void) 
+{
+  
+
+}
+
+
+
+/** 
+   \brief Routine for testing purposes.
+   
+   testing, testing, testing...
+*/
+void World::testThaTest(void) 
+{
+  cout << "World::testThaTest() called" << endl;
+  /* test addPlayer */
+  cout << "addPlayer test..." << endl;
+  playerList* pl = lastPlayer;
+  while ( pl != null )
+    {
+      cout << "player " << pl->number << " was found" << endl;
+      pl = pl->next;
+    }
+
+  /* test addNPC */
+  cout << "addNPC test..." << endl;
+  npcList* nl = lastNPC;
+  while ( nl != null )
+    {
+      cout << "npc " << nl->number << " was found" << endl;
+      nl = nl->next;
+    }
+
+  /* test drawWorld() */
+  cout << "drawWorld()..." << endl;
+  drawWorld();
+
+  cout << "World::testThaTest() finished" << endl;
+}
Index: orxonox/branches/gui/core/world.h
===================================================================
--- orxonox/branches/gui/core/world.h	(revision 1860)
+++ orxonox/branches/gui/core/world.h	(revision 1860)
@@ -0,0 +1,50 @@
+
+#include "npc.h"
+#include "player.h"
+#include "stdincl.h"
+
+#ifndef WORLD_H
+#define WORLD_H
+
+
+class World {
+
+ public:
+  World ();
+  ~World ();
+
+  /* for easier use: map the first two player here */
+  Player *player1;
+  Player *player2;
+
+  /* a list of all players */
+  struct playerList {
+    playerList* next;
+    Player* player;
+    int number;
+  };
+  playerList* lastPlayer;
+
+  /* a list of all non-player-characters */
+  struct npcList {
+    npcList* next;
+    NPC* npc;
+    int number;
+  };
+  npcList* lastNPC;
+
+  bool addPlayer(Player* player);
+  bool removePlayer(Player* player);
+
+  bool addNPC(NPC* npc);
+  bool removeNPC(NPC* npc);
+
+
+  void drawWorld(void);
+  void updateWorld(void);
+  void testThaTest(void);
+
+
+};
+
+#endif
Index: orxonox/branches/gui/doc/CREDITS
===================================================================
--- orxonox/branches/gui/doc/CREDITS	(revision 1860)
+++ orxonox/branches/gui/doc/CREDITS	(revision 1860)
@@ -0,0 +1,19 @@
+
+
+The Orxonox Team Thanks To 
+--------------------------
+
+Programmers:
+------------
+Patrick Boenzli
+Benjamin Grauer
+
+Infrastructure:
+---------------
+amir@datacore.ch	for giving us access to subversion and mailing lists
+
+The Great Orx Sound:
+--------------------
+Luke Grey		for making the orxonox sound
+
+
Index: orxonox/branches/gui/doc/program_examples/c++/README
===================================================================
--- orxonox/branches/gui/doc/program_examples/c++/README	(revision 1860)
+++ orxonox/branches/gui/doc/program_examples/c++/README	(revision 1860)
@@ -0,0 +1,12 @@
+
+c++ compile guide
+
+to compile the source orxonox:
+
+linux:
+you simply enter following line:
+g++ orxonox.cc -o orxonox
+this will compile orxonox source into a binary called orxonox
+
+
+
Index: orxonox/branches/gui/doc/program_examples/c++/orxonox.cc
===================================================================
--- orxonox/branches/gui/doc/program_examples/c++/orxonox.cc	(revision 1860)
+++ orxonox/branches/gui/doc/program_examples/c++/orxonox.cc	(revision 1860)
@@ -0,0 +1,27 @@
+#include "orxonox.h"
+
+#include <iostream>
+#include <cstdio>
+
+using namespace std;
+
+
+Orxonox::Orxonox() { int x = 1; }
+Orxonox::~Orxonox() { int x = 1; }
+
+
+int Orxonox::getInfo() {  }
+int Orxonox::setInfo() { int z = 1; }
+
+
+
+int main( int argc, char** argv ) {
+  
+  Orxonox orx;
+  orx.getInfo();
+
+  cout << "test" << endl;
+
+  
+  return 0;
+}
Index: orxonox/branches/gui/doc/program_examples/c++/orxonox.h
===================================================================
--- orxonox/branches/gui/doc/program_examples/c++/orxonox.h	(revision 1860)
+++ orxonox/branches/gui/doc/program_examples/c++/orxonox.h	(revision 1860)
@@ -0,0 +1,15 @@
+#ifndef ORXONOX_H
+#define ORXONOX_H
+
+class Orxonox {
+
+ public:
+  Orxonox();
+  ~Orxonox();
+
+  int getInfo();
+  int setInfo();
+
+};
+
+#endif
Index: orxonox/branches/gui/doc/program_examples/openGL/Makefile
===================================================================
--- orxonox/branches/gui/doc/program_examples/openGL/Makefile	(revision 1860)
+++ orxonox/branches/gui/doc/program_examples/openGL/Makefile	(revision 1860)
@@ -0,0 +1,48 @@
+
+CPLUSPLUS = g++
+APP_LIB_DEPS = -lglut -lGLU -lGL -lm -L/usr/X11R6/lib -lXt -lX11
+GL_LIB = libGL.so
+GLU_LIB = libGLU.so
+GLUT_LIB = libglut.so
+GLW_LIB = libGLw.so
+OSMESA_LIB = libOSMesa.so
+
+CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -I/usr/X11R6/include
+CXXFLAGS = -fPIC -O3
+GLUT_CFLAGS = -fexceptions
+
+TOP = ../..
+INCDIR = /usr/Mesa-6.0.1/include
+LIBDIR = /usr/Mesa-6.0.1/lib
+
+LIBS = -L$(LIBDIR) $(APP_LIB_DEPS)
+
+OSMESA_LIBS = -L$(LIBDIR) -lglut -lOSMesa -lGLU -lGL $(APP_LIB_DEPS)
+
+LIB_DEP = $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GLU_LIB) $(LIBDIR)/$(GLUT_LIB)
+
+PROGS = \
+	cube \
+	gl_test \
+	double
+
+.SUFFIXES:
+.SUFFIXES: .c
+
+.c: $(LIB_DEP)
+	$(CPLUSPLUS) -I$(INCDIR) $(CFLAGS) $< $(LIBS) -o $@
+
+default: $(PROGS)
+
+help:
+	@echo "Cleaning targets:"
+	@echo "  clean		- remove most generated files"
+	@echo ""
+	@echo "Generic targets:"
+	@echo "  all		- Build all targets"
+	@echo ""
+	@echo "For further info see the README file"
+	
+clean:
+	rm -rf *.o *~ $(PROGS)
+
Index: orxonox/branches/gui/doc/program_examples/openGL/compile
===================================================================
--- orxonox/branches/gui/doc/program_examples/openGL/compile	(revision 1860)
+++ orxonox/branches/gui/doc/program_examples/openGL/compile	(revision 1860)
@@ -0,0 +1,12 @@
+
+#gcc -I/usr/local/include -I/GL -I/usr/include -c $argv[1].c
+#echo 'compile finished - linking'
+#gcc -o $argv[1] -o32 gl_test.o \
+#-L/usr/local/lib -L/usr/lib -lglut -L/lib -lm
+
+gcc cube.c -lglut -ffast-math -lMesaGLU -lMesaGL -lm -L/usr/X11/lib \
+-L/usr/X11R6/lib -lX11 -lXext -lXmu -lXt -lXi -lSM -lICE -o cube
+
+
+##end
+
Index: orxonox/branches/gui/doc/program_examples/openGL/cube.c
===================================================================
--- orxonox/branches/gui/doc/program_examples/openGL/cube.c	(revision 1860)
+++ orxonox/branches/gui/doc/program_examples/openGL/cube.c	(revision 1860)
@@ -0,0 +1,87 @@
+
+
+#include <GL/glut.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+static float alpha = 0;
+
+void init(void) {
+
+  glClearColor(0.0, 0.0, 0.0, 0.0);
+  glShadeModel(GL_FLAT);
+}
+
+
+void display(void) {
+
+  glClear(GL_COLOR_BUFFER_BIT);
+  glColor3f(1.0, 1.0, 1.0);
+  glLoadIdentity();
+  
+  gluLookAt(5*cos(alpha), 5*sin(alpha), 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
+  glScalef(1.0, 2.0, 1.0);
+  glutWireCube(1.0);
+  glFlush();
+}
+
+
+void reshape(int w, int h) {
+
+  glViewport(0, 0, (GLsizei) w, (GLsizei)h);
+  glMatrixMode(GL_PROJECTION);
+  glLoadIdentity();
+  glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
+  glMatrixMode(GL_MODELVIEW);
+}
+
+
+void spinDisplay( void ) {
+
+  alpha = alpha + 0.01;
+  if (alpha > 360)
+    alpha = 0;
+  glutPostRedisplay();
+}
+
+
+void mouse( int button, int state, int x, int y ) {
+
+  switch( button ) {
+  case GLUT_LEFT_BUTTON:
+    if (state == GLUT_DOWN) {
+      glutIdleFunc(spinDisplay);
+    }
+    break;
+  case GLUT_RIGHT_BUTTON:
+    if (state == GLUT_DOWN) {
+      glutIdleFunc(NULL);
+    }
+    break;
+  default:
+    break;
+  }
+}
+
+
+
+int main(int argc, char** argv) {
+
+  glutInit(&argc, argv);
+  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
+  glutInitWindowSize(500, 500);
+  glutInitWindowPosition(100, 100);
+  glutCreateWindow(argv[0]);
+  init();
+  glutDisplayFunc(display);
+  glutReshapeFunc(reshape);
+  glutMouseFunc(mouse);
+  glutMainLoop();
+
+  return 0;
+}
+
+
+//EOF
Index: orxonox/branches/gui/doc/program_examples/openGL/double.c
===================================================================
--- orxonox/branches/gui/doc/program_examples/openGL/double.c	(revision 1860)
+++ orxonox/branches/gui/doc/program_examples/openGL/double.c	(revision 1860)
@@ -0,0 +1,95 @@
+
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <GL/glut.h>
+
+
+static GLfloat spin = 0.0;
+
+void init( void ) {
+
+  glClearColor( 0.0, 1.0, 0.0, 0.0 );
+  glShadeModel( GL_FLAT );
+}
+
+
+void display( void ) {
+
+  glClear( GL_COLOR_BUFFER_BIT );
+  glPushMatrix();
+  glRotatef( spin, 0.0, 0.0, 1.0 );
+  glColor3f( 1.0, 1.0, 1.0 );
+  glRectf( -25.0, -25.0, 25.0, 25.0 );
+  glColor3f(1.0, 0.0, 0.0);
+  glRectf(-5.0, -5.0, 5.0, 5.0);
+
+  glPointSize(4.0);
+  glColor3f(0.0, 0.0, 1.0);
+  glBegin(GL_POINTS);
+  glVertex2f(6.0, 2.0);
+  glVertex2f(15.0, 14.0);
+  glVertex2f(12.0, 20.0);
+  glVertex2f(-3.0, 17.0);
+  glEnd();
+  
+
+  glPopMatrix();
+  glutSwapBuffers();
+}  
+
+
+void spinDisplay( void ) {
+
+  spin = spin + 2.0;
+  if( spin > 360.0 )
+    spin = spin - 360.0;
+  glutPostRedisplay();
+}
+
+
+void reshape(int w, int h) {
+
+  glViewport( 0, 0, (GLsizei) w, (GLsizei) h);
+  glMatrixMode(GL_PROJECTION);
+  glLoadIdentity();
+  glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0 );
+  glMatrixMode(GL_MODELVIEW);
+  glLoadIdentity();
+}
+
+
+void mouse( int button, int state, int x, int y ) {
+
+  switch( button ) {
+  case GLUT_LEFT_BUTTON:
+    if (state == GLUT_DOWN)
+      glutIdleFunc(spinDisplay);
+    break;
+  case GLUT_RIGHT_BUTTON:
+    if (state == GLUT_DOWN)
+      glutIdleFunc(NULL);
+    break;
+  default:
+    break;
+  }
+}
+
+
+
+int main( int argc, char** argv ) {
+
+  glutInit(&argc, argv);
+  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
+  glutInitWindowSize(250, 250);
+  glutInitWindowPosition(100, 100);
+  glutCreateWindow("rock-it");
+  init();
+  glutDisplayFunc(display);
+  glutReshapeFunc(reshape);
+  glutMouseFunc(mouse);
+  glutMainLoop();
+
+  return 0;
+}
Index: orxonox/branches/gui/doc/program_examples/openGL/gl_test.c
===================================================================
--- orxonox/branches/gui/doc/program_examples/openGL/gl_test.c	(revision 1860)
+++ orxonox/branches/gui/doc/program_examples/openGL/gl_test.c	(revision 1860)
@@ -0,0 +1,51 @@
+
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <GL/glut.h>
+
+
+
+
+void display( void ) {
+
+  glClear( GL_COLOR_BUFFER_BIT );
+  glColor3f( 1.0, 1.0, 1.0 );
+  glBegin( GL_POLYGON );
+  glVertex3f( 0.25, 0.25, 0.0 );
+  glVertex3f( 0.75, 0.25, 0.0 );
+  glVertex3f( 0.75, 0.75, 0.0 );
+  glVertex3f( 0.25, 0.75, 0.0 );
+  glEnd();
+
+  glFlush();
+}
+
+
+
+void init( void ) {
+
+  glClearColor( 0.0, 0.0, 0.0, 0.0 );
+  glMatrixMode( GL_PROJECTION );
+  glLoadIdentity();
+  glOrtho( 0.0, 1.0, 0.0, 1.0, -1.0, 1.0 );
+  
+}
+
+
+
+
+int main( int argc, char** argv ) {
+  
+  glutInit( &argc, argv );
+  glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );
+  glutInitWindowSize( 250, 250 );
+  glutInitWindowPosition( 100, 100);
+  glutCreateWindow( "hello" );
+  init();
+  glutDisplayFunc( display );
+  glutMainLoop();
+
+  return 0;
+}
Index: orxonox/branches/gui/gui/Makefile
===================================================================
--- orxonox/branches/gui/gui/Makefile	(revision 1860)
+++ orxonox/branches/gui/gui/Makefile	(revision 1860)
@@ -0,0 +1,86 @@
+
+CC = gcc
+CXX = g++
+APP_LIB_DEPS = `pkg-config --libs  gtk+-2.0`
+GL_LIB = libGL.so
+GLU_LIB = libGLU.so
+GLUT_LIB = libglut.so
+GLW_LIB = libGLw.so
+OSMESA_LIB = libOSMesa.so
+
+CFLAGS = `pkg-config --cflags gtk+-2.0`
+CXXFLAGS = -fPIC -O3
+GLUT_CFLAGS = -fexceptions
+
+TOP = ../..
+INCDIR = /usr/Mesa-6.0.1/include
+LIBDIR = /usr/Mesa-6.0.1/lib
+
+LIBS = -L$(LIBDIR) $(APP_LIB_DEPS)
+
+OSMESA_LIBS = -L$(LIBDIR) -lglut -lOSMesa -lGLU -lGL $(APP_LIB_DEPS)
+
+LIB_DEP = $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GLU_LIB) $(LIBDIR)/$(GLUT_LIB)
+
+PROGS = \
+	orxonox_gui \
+
+HEADERS = \
+	orxonox.h \
+	data_core.h
+	
+SOURCES = \
+	orxonox.cc \
+	data_core.cc
+
+OBJECTS = \
+	orxonox_gui.o \
+	orxonox_gui_exec.o \
+	orxonox_gui_audio.o \
+	orxonox_gui_video.o \
+	orxonox_gui_file.o 
+
+TARGET = orxonox_gui
+
+.SUFFIXES:
+.SUFFIXES: .c .o
+
+#.cc: $(LIB_DEP)
+#	$(CXX) -I$(INCDIR) $(CFLAGS) $< $(LIBS) -o $@
+
+.cc.o:
+	@ echo "$@ is being comiled..."
+	@ $(CXX) -c $(CFLAGS) -I$(INCDIR) -o $@ $<
+
+
+#### build
+
+all: $(TARGET)
+
+$(TARGET): $(OBJECTS)
+	@ echo "orxonox_gui is being linked..."
+	@ $(CXX) $(LIBS) -o $(TARGET) $(OBJECTS)
+
+
+help:
+	@echo "Cleaning targets:"
+	@echo "  clean		- remove most generated files"
+	@echo ""
+	@echo "Generic targets:"
+	@echo "  all		- Build all targets"
+	@echo ""
+	@echo "For further info see the README file"
+	
+clean:
+	rm -rf *.o *~
+	rm $(TARGET)
+
+####compile
+
+#orxonox.o: orxonox.cc \
+#		orxonox.h
+
+#data_tank.o: data_tank.cc \
+#		data_tank.h	
+	
+#EOF
Index: orxonox/branches/gui/gui/orxonox_gui.c
===================================================================
--- orxonox/branches/gui/gui/orxonox_gui.c	(revision 1860)
+++ orxonox/branches/gui/gui/orxonox_gui.c	(revision 1860)
@@ -0,0 +1,65 @@
+#include "orxonox_gui.h"
+#include "orxonox_gui_video.h"
+#include "orxonox_gui_audio.h"
+int verbose = 1;
+
+int main( int argc, char *argv[] )
+  {
+    GtkWidget *window;
+    GtkWidget *vbox_main;
+    GtkWidget *hbox_video_audio;
+    GtkWidget *hbox_view_exec;
+    struct settings *orxonox_settings;
+
+    int option_count = 7; /* important: look that this is greater than options in 'struct settings' */
+
+    /* Initialize all settings */
+    
+    orxonox_settings = malloc (option_count*sizeof (int));
+
+    orxonox_gui_file_default (orxonox_settings);
+    orxonox_gui_file_load ("~/.orxonox.conf", orxonox_settings);
+
+
+    gtk_init (&argc, &argv);
+    /* Main Window */
+    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+    gtk_window_set_title ( GTK_WINDOW (window), "orxonox");
+    g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (gtk_main_quit), NULL);
+    g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (orxonox_gui_quit), orxonox_settings);
+    gtk_container_set_border_width (GTK_CONTAINER (window), 5);
+    
+    /*  VBOX - MAIN */
+    vbox_main = gtk_vbox_new (FALSE, 0);
+    {
+      hbox_video_audio = gtk_hbox_new (FALSE, 0);
+      
+      {
+	gtk_box_pack_start(GTK_BOX(hbox_video_audio), orxonox_gui_video_frame(orxonox_settings), TRUE, TRUE, 0);	
+	
+	gtk_box_pack_start(GTK_BOX(hbox_video_audio), orxonox_gui_audio_frame(orxonox_settings), TRUE, TRUE, 0);	
+      }
+      gtk_box_pack_start (GTK_BOX (vbox_main), hbox_video_audio, TRUE, TRUE, 0);
+      
+      {
+	hbox_view_exec = gtk_hbox_new ( FALSE,0);
+	/*
+	{
+	  info ( hbox_view_exec );
+	}
+	*/
+	{
+	  gtk_box_pack_start(GTK_BOX(hbox_view_exec), orxonox_gui_exec_frame(orxonox_settings), TRUE, TRUE, 0);	
+
+	}
+	gtk_box_pack_start (GTK_BOX (vbox_main), hbox_view_exec, TRUE, TRUE, 0);
+      } 
+    }
+    gtk_container_add (GTK_CONTAINER (window), vbox_main);
+    
+    gtk_widget_show_all  (window);
+
+    gtk_main ();
+    
+    return(0);
+  }
Index: orxonox/branches/gui/gui/orxonox_gui.h
===================================================================
--- orxonox/branches/gui/gui/orxonox_gui.h	(revision 1860)
+++ orxonox/branches/gui/gui/orxonox_gui.h	(revision 1860)
@@ -0,0 +1,25 @@
+
+#ifndef _ORXONOX_GUI_H
+#define _ORXONOX_GUI_H
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gtk/gtk.h>
+#include "orxonox_gui_exec.h"
+
+struct settings
+{
+  int video_fullscreen;
+  int video_wireframe;
+  
+  int audio_enable_sound;
+  int audio_music_volume;
+  int audio_effects_volume;
+  
+  int exec_save_settings;
+  int exec_show_menu;
+};
+extern verbose;
+
+#endif /* _ORXONOX_GUI_H */
Index: orxonox/branches/gui/gui/orxonox_gui_audio.c
===================================================================
--- orxonox/branches/gui/gui/orxonox_gui_audio.c	(revision 1860)
+++ orxonox/branches/gui/gui/orxonox_gui_audio.c	(revision 1860)
@@ -0,0 +1,63 @@
+#include "orxonox_gui.h"
+
+void audio_check_button_change(GtkWidget *widget, int* data)
+{
+  *data = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (widget)); 
+  orxonox_flags_update ();
+  if (verbose >=1)
+    printf ("%s changed to %i.\n", gtk_button_get_label(GTK_BUTTON(widget)), *data);
+  return;
+}
+
+void audio_slider_change(GtkWidget *widget, int* data)
+{
+  *data = gtk_range_get_value ( GTK_RANGE (widget));
+  orxonox_flags_update ();
+  if (verbose >=1)
+    printf ("Changed slider to %i.\n", *data);
+  return;
+}
+
+GtkWidget *orxonox_gui_audio_frame (struct settings *orxonox_settings)
+{
+  GtkWidget *frame;
+  GtkWidget *enable_sound_button;
+  GtkWidget *label;
+  GtkWidget *music_volume_slider;
+  GtkWidget *effects_volume_slider;
+
+  frame = gtk_frame_new ( "Audio-Options:");
+  gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
+  {
+    GtkWidget *orxonox_gui_audio_vbox;
+    orxonox_gui_audio_vbox = gtk_vbox_new (FALSE, 0);
+    {
+
+	enable_sound_button = gtk_check_button_new_with_label ("Enable Sound");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (enable_sound_button), orxonox_settings->audio_enable_sound);
+	g_signal_connect(GTK_TOGGLE_BUTTON(enable_sound_button), "clicked", G_CALLBACK(audio_check_button_change), &(orxonox_settings->audio_enable_sound));
+
+	gtk_box_pack_start(GTK_BOX (orxonox_gui_audio_vbox), enable_sound_button, TRUE, TRUE, 0);
+
+	label=gtk_label_new ("Music Volume");
+	gtk_box_pack_start (GTK_BOX(orxonox_gui_audio_vbox), label, TRUE, TRUE, 0);
+	music_volume_slider = gtk_hscale_new_with_range (0,100,5);
+	gtk_range_set_value ( GTK_RANGE (music_volume_slider), orxonox_settings->audio_music_volume);
+	gtk_range_set_update_policy ( GTK_RANGE (music_volume_slider), GTK_UPDATE_DISCONTINUOUS);
+	g_signal_connect (GTK_RANGE (music_volume_slider), "value_changed", G_CALLBACK (audio_slider_change), &(orxonox_settings->audio_music_volume) );
+	gtk_box_pack_start ( GTK_BOX (orxonox_gui_audio_vbox), music_volume_slider, TRUE, TRUE, 0);
+
+	label=gtk_label_new ("Effects Volume");
+	gtk_box_pack_start (GTK_BOX(orxonox_gui_audio_vbox), label, TRUE, TRUE, 0);
+	effects_volume_slider = gtk_hscale_new_with_range (0,100,5);
+	gtk_range_set_value ( GTK_RANGE (effects_volume_slider), orxonox_settings->audio_effects_volume);
+	gtk_range_set_update_policy ( GTK_RANGE (effects_volume_slider), GTK_UPDATE_DISCONTINUOUS);
+	g_signal_connect (GTK_RANGE (effects_volume_slider), "value_changed", G_CALLBACK (audio_slider_change), &(orxonox_settings->audio_effects_volume) );
+	gtk_box_pack_start ( GTK_BOX (orxonox_gui_audio_vbox), effects_volume_slider, TRUE, TRUE, 0);
+
+    }
+    gtk_container_add(GTK_CONTAINER(frame), orxonox_gui_audio_vbox);
+  }
+  return frame;
+}
+
Index: orxonox/branches/gui/gui/orxonox_gui_audio.h
===================================================================
--- orxonox/branches/gui/gui/orxonox_gui_audio.h	(revision 1860)
+++ orxonox/branches/gui/gui/orxonox_gui_audio.h	(revision 1860)
@@ -0,0 +1,8 @@
+#ifndef _ORXONOX_GUI_AUDIO_H
+#define _ORXONOX_GUI_AUDIO_H
+
+
+void audio_check_button_change(GtkWidget *widget, int* data);
+GtkWidget *orxonox_gui_audio_frame (struct settings *orxonox_settings);
+
+#endif /* _ORXONOX_GUI_AUDIO_H */
Index: orxonox/branches/gui/gui/orxonox_gui_exec.c
===================================================================
--- orxonox/branches/gui/gui/orxonox_gui_exec.c	(revision 1860)
+++ orxonox/branches/gui/gui/orxonox_gui_exec.c	(revision 1860)
@@ -0,0 +1,149 @@
+#include "orxonox_gui_exec.h"
+GtkWidget *exec_flags_label;
+struct settings *exec_orxonox_settings;
+
+gint orxonox_gui_quit ( GtkWidget *widget, GdkEvent *event, gpointer data)
+{
+  if (exec_orxonox_settings->exec_save_settings)
+    orxonox_gui_file_save("~/.orxonox.conf", exec_orxonox_settings);
+  gtk_main_quit();
+  return FALSE;
+}
+
+
+void exec_check_button_change(GtkWidget *widget, int* data)
+{
+  *data = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (widget)); 
+  orxonox_flags_update ();
+  if (verbose >=1)
+    printf ("%s changed to %i.\n", gtk_button_get_label(GTK_BUTTON(widget)), *data);
+  return;
+}
+
+void exec_verbose_mode_change(GtkWidget *widget, gpointer data)
+{
+  verbose = GPOINTER_TO_INT(data);
+  orxonox_flags_update ();
+  if (verbose >= 1)
+    printf ("Verbose-mode changed to %i.\n", verbose);
+  return;
+}
+
+
+GtkWidget *orxonox_gui_exec_frame (struct settings *orxonox_settings)
+{
+  GtkWidget *frame;
+  GtkWidget *save_settings_button;
+  GtkWidget *show_menu_button;
+  GtkWidget *start_button;
+  GtkWidget *quit_button;
+  GtkWidget *flags_frame;
+  GtkWidget *setting_box;
+  GtkWidget *verbose_button;
+
+
+  frame = gtk_frame_new ( "Execute-Tags:");
+  gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
+  {
+    GtkWidget *orxonox_gui_exec_vbox;
+    orxonox_gui_exec_vbox = gtk_vbox_new (FALSE, 5);
+    {
+
+	start_button = gtk_button_new_with_label ("Start");
+	gtk_box_pack_start(GTK_BOX (orxonox_gui_exec_vbox), start_button, TRUE, TRUE, 5);
+	setting_box = gtk_hbox_new(FALSE, 5);
+	{
+	  save_settings_button = gtk_check_button_new_with_label ("Save Settings");
+	  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (save_settings_button), orxonox_settings->exec_save_settings);
+	  g_signal_connect(GTK_TOGGLE_BUTTON(save_settings_button), "clicked", G_CALLBACK(exec_check_button_change), &(orxonox_settings->exec_save_settings));
+	  gtk_box_pack_start(GTK_BOX (setting_box), save_settings_button, TRUE, TRUE, 0);
+	  
+	  {
+	    GtkWidget *opt;
+	    GtkWidget *menu;
+	    GtkWidget *item;
+
+	    opt = gtk_option_menu_new ();
+	    menu = gtk_menu_new ();
+
+	    item = gtk_menu_item_new_with_label ("no verbose");     
+	    g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (exec_verbose_mode_change), GINT_TO_POINTER(0));
+	    gtk_menu_shell_append(GTK_MENU_SHELL (menu), item);
+
+	    item = gtk_menu_item_new_with_label ("verbose");
+	    g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (exec_verbose_mode_change), GINT_TO_POINTER(1));
+	    gtk_menu_shell_append(GTK_MENU_SHELL (menu), item);
+
+	    item = gtk_menu_item_new_with_label ("debug");
+	    g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (exec_verbose_mode_change), GINT_TO_POINTER(2));
+	    gtk_menu_shell_append(GTK_MENU_SHELL (menu), item);
+
+	    gtk_option_menu_set_menu (GTK_OPTION_MENU (opt), menu);
+	    gtk_option_menu_set_history (GTK_OPTION_MENU (opt), verbose);
+	    gtk_box_pack_start (GTK_BOX (setting_box), opt, TRUE, TRUE, 0);
+
+	  }
+	}
+	gtk_box_pack_start(GTK_BOX(orxonox_gui_exec_vbox), setting_box, TRUE, TRUE, 0);
+	show_menu_button = gtk_check_button_new_with_label ("Always show this Menu");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (show_menu_button), orxonox_settings->exec_show_menu);
+	g_signal_connect(GTK_TOGGLE_BUTTON(show_menu_button), "clicked", G_CALLBACK(exec_check_button_change), &(orxonox_settings->exec_show_menu));
+	gtk_box_pack_start(GTK_BOX (orxonox_gui_exec_vbox), show_menu_button, TRUE, TRUE, 0);
+	
+	quit_button = gtk_button_new_with_label ("quit");
+	g_signal_connect(GTK_BUTTON(quit_button), "clicked", G_CALLBACK(orxonox_gui_quit), NULL);
+	gtk_box_pack_start(GTK_BOX (orxonox_gui_exec_vbox), quit_button, FALSE, FALSE, 5);
+
+
+	flags_frame = gtk_frame_new("Orxonox's starting Flags");
+	{
+	  exec_flags_label = gtk_label_new("test");
+	  exec_orxonox_settings = orxonox_settings;
+	  orxonox_flags_update();
+	  gtk_container_add (GTK_CONTAINER(flags_frame), exec_flags_label);
+
+	}
+	gtk_box_pack_start(GTK_BOX (orxonox_gui_exec_vbox), flags_frame, FALSE, FALSE, 5);
+    }
+    gtk_container_add(GTK_CONTAINER(frame), orxonox_gui_exec_vbox);
+  }
+
+  return frame;
+
+}
+
+
+char * orxonox_flags_text (struct settings *orxonox_settings, char *exec_flags_text)
+{
+  char temp [50];
+  bzero(exec_flags_text, 1);
+  strcat(exec_flags_text, "orxonox ");
+
+  if(!orxonox_settings->video_fullscreen)
+    strcat(exec_flags_text, "--windowed ");
+  if(orxonox_settings->video_wireframe)
+    strcat(exec_flags_text, "--wireframe ");
+  
+  if(!orxonox_settings->audio_enable_sound)
+    strcat(exec_flags_text, "--disable_audio ");
+  if(orxonox_settings->audio_music_volume != 80)
+    {
+      strcat(exec_flags_text, "--music_volume=");
+      sprintf(temp, "%i ", (int) orxonox_settings->audio_music_volume);
+      strcat(exec_flags_text, temp);
+    }
+  if(orxonox_settings->audio_effects_volume != 80)
+    {
+      strcat(exec_flags_text, "--effects_volume= ");
+      sprintf(temp, "%i ", (int) orxonox_settings->audio_effects_volume);
+      strcat(exec_flags_text, temp);
+    }
+  return (exec_flags_text);
+}
+
+void orxonox_flags_update (void)
+{
+  char exec_flags_text[1024];
+  gtk_label_set_text (GTK_LABEL(exec_flags_label), orxonox_flags_text (exec_orxonox_settings, exec_flags_text));
+  return;
+}
Index: orxonox/branches/gui/gui/orxonox_gui_exec.h
===================================================================
--- orxonox/branches/gui/gui/orxonox_gui_exec.h	(revision 1860)
+++ orxonox/branches/gui/gui/orxonox_gui_exec.h	(revision 1860)
@@ -0,0 +1,12 @@
+#ifndef _ORXONOX_GUI_EXEC_H
+#define _ORXONOX_GUI_EXEC_H
+#include "orxonox_gui.h"
+
+gint orxonox_gui_quit ( GtkWidget *widget, GdkEvent *event, gpointer data);
+
+void exec_check_button_change(GtkWidget *widget, int* data);
+GtkWidget *orxonox_gui_exec_frame (struct settings *orxonox_settings);
+char * orxonox_flags_text (struct settings *orxonox_settings, char *exec_flags_text);
+void orxonox_flags_update (void);
+
+#endif /* _ORXONOX_GUI_EXEC_H */
Index: orxonox/branches/gui/gui/orxonox_gui_file.c
===================================================================
--- orxonox/branches/gui/gui/orxonox_gui_file.c	(revision 1860)
+++ orxonox/branches/gui/gui/orxonox_gui_file.c	(revision 1860)
@@ -0,0 +1,139 @@
+#include <sys/stat.h>
+#include "orxonox_gui_file.h"
+
+
+void orxonox_gui_file_default (struct settings *orxonox_settings)
+{
+  if (verbose >= 1)
+    printf("Setting orxonox to it's default settings.\n");
+
+  orxonox_settings->video_fullscreen = 1;
+  orxonox_settings->video_wireframe = 0;
+  
+  orxonox_settings->audio_enable_sound = 1;
+  orxonox_settings->audio_music_volume = 80;
+  orxonox_settings->audio_effects_volume = 80;
+  
+  orxonox_settings->exec_save_settings = 1;
+  orxonox_settings->exec_show_menu = 0;
+
+  return;
+}
+
+void orxonox_gui_file_save (char *config_file, struct settings *orxonox_settings)
+{
+  FILE *IOFILE;
+  char local_config_file[1000];
+
+  sprintf(local_config_file,"%s", config_file);
+  if (!strncmp (local_config_file,"~/", 2))
+  {
+    char buffer[100];
+    char *homedir = getenv("HOME");
+    sprintf(buffer, local_config_file);
+    sprintf (local_config_file,"%s/%s", homedir,buffer+2);
+  }
+
+  IOFILE = fopen( local_config_file, "w");
+  if (IOFILE)
+    {
+      if (verbose >= 1)
+	printf ("Saving settings to '%s'\n", local_config_file);
+      
+      fprintf (IOFILE, "%s\n", "Configuration file of orxonox (do not edit if ou do not know what you are doing)");
+      fprintf (IOFILE, "orxonox_settings->video_fullscreen = %i\n", orxonox_settings->video_fullscreen);
+      fprintf (IOFILE, "orxonox_settings->video_wireframe = %i\n", orxonox_settings->video_wireframe);
+      
+      fprintf (IOFILE, "orxonox_settings->audio_enable_sound = %i\n", orxonox_settings->audio_enable_sound);
+      fprintf (IOFILE, "orxonox_settings->audio_music_volume = %i\n", orxonox_settings->audio_music_volume);
+      fprintf (IOFILE, "orxonox_settings->audio_effects_volume = %i\n", orxonox_settings->audio_effects_volume);
+      
+      fprintf (IOFILE, "orxonox_settings->exec_save_settings = %i\n", orxonox_settings->exec_save_settings);
+      fprintf (IOFILE, "orxonox_settings->exec_show_menu = %i\n", orxonox_settings->exec_show_menu);
+      
+      fprintf (IOFILE, "orxonox_settings->verbose = %i\n", verbose);
+      
+      fclose( IOFILE );
+      return;
+    }
+  else
+    {
+      if (verbose >= 1)
+	printf ("Settingsfile '%s' does not exist.\n", local_config_file);
+    }
+}
+
+void orxonox_gui_file_load (char *config_file, struct settings *orxonox_settings)
+{
+  FILE *IOFILE;
+  char variable[100];
+  char equals[5];
+  char value[100];
+  char buffer[100];
+  char local_config_file[1000];
+  
+  sprintf(local_config_file,"%s", config_file);
+  if (!strncmp (config_file, "~/", 2))
+    {
+      char *homedir = getenv("HOME");
+      sprintf(buffer, local_config_file);
+      sprintf (local_config_file,"%s/%s", homedir, buffer+2);
+    }
+  
+
+  IOFILE = fopen(local_config_file, "r");
+  if (IOFILE)
+    {
+      if (verbose >= 1)
+	printf ("Loading settings from '%s'\n", local_config_file);
+      
+      fscanf (IOFILE, "Configuration file of orxonox (do not edit if ou do not know what you are doing)");
+      while (fscanf (IOFILE,"%s %s %s", variable, equals, value) != EOF)
+	{
+	  if ( !strcmp (variable, "orxonox_settings->video_fullscreen"))
+	    {
+	      orxonox_settings->video_fullscreen = atoi (value);
+	    }
+	  else if ( !strcmp (variable, "orxonox_settings->video_wireframe"))
+	    {
+	      orxonox_settings->video_wireframe = atoi (value);
+	    }
+	  
+	  else if ( !strcmp (variable, "orxonox_settings->audio_enable_sound"))
+	    {
+	      orxonox_settings->audio_enable_sound = atoi (value);
+	    }
+	  else if ( !strcmp (variable, "orxonox_settings->audio_music_volume"))
+	    {
+	      orxonox_settings->audio_music_volume = atoi (value);
+	    }
+	  else if ( !strcmp (variable, "orxonox_settings->audio_effects_volume"))
+	    {
+	      orxonox_settings->audio_effects_volume = atoi (value);
+	    }
+	  
+	  else if ( !strcmp (variable, "orxonox_settings->exec_save_settings"))
+	    {
+	      orxonox_settings->exec_save_settings = atoi (value);
+	    }
+	  else if ( !strcmp (variable, "orxonox_settings->exec_show_menu"))
+	    {
+	      orxonox_settings->exec_show_menu = atoi (value);
+	    }
+	  
+	  else if ( !strcmp (variable, "orxonox_settings->verbose"))
+	    {
+	      verbose = atoi (value);
+	    }
+	  
+	}
+      fclose( IOFILE );      
+      return;
+    }
+
+  else
+    {
+      if (verbose >= 1)
+	printf ("File '%s' does not exist. Can not load orxonox-states.\n", local_config_file);
+    }
+}
Index: orxonox/branches/gui/gui/orxonox_gui_file.h
===================================================================
--- orxonox/branches/gui/gui/orxonox_gui_file.h	(revision 1860)
+++ orxonox/branches/gui/gui/orxonox_gui_file.h	(revision 1860)
@@ -0,0 +1,12 @@
+#ifndef _ORXONOX_GUI_VIDEO_H
+#define _ORXONOX_GUI_VIDEO_H
+
+#include "orxonox_gui.h"
+
+void orxonox_gui_file_save (char *config_file, struct settings *orxonox_settings);
+void orxonox_gui_file_load (char *config_file, struct settings *orxonox_settings);
+void orxonox_gui_file_default (struct settings *orxonox_settings);
+
+
+
+#endif /* _ORXONOX_GUI_VIDEO_H */
Index: orxonox/branches/gui/gui/orxonox_gui_video.c
===================================================================
--- orxonox/branches/gui/gui/orxonox_gui_video.c	(revision 1860)
+++ orxonox/branches/gui/gui/orxonox_gui_video.c	(revision 1860)
@@ -0,0 +1,42 @@
+#include "orxonox_gui_video.h"
+
+void video_option_change(GtkWidget *widget, int* data)
+{
+  *data = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); 
+  orxonox_flags_update ();
+  if (verbose >=1)
+    printf ("%s changed to %i.\n", gtk_button_get_label(GTK_BUTTON(widget)), *data);
+}
+
+/* Drawing The VIDEO_FRAME */
+GtkWidget *orxonox_gui_video_frame (struct settings *orxonox_settings)
+{
+  GtkWidget *frame;
+  GtkWidget *fullscreen_button;
+  GtkWidget *wireframe_button;
+  
+  frame = gtk_frame_new ( "Video-Options:");
+  gtk_container_set_border_width (GTK_CONTAINER (frame), 5);
+
+  {
+    GtkWidget *orxonox_gui_video_vbox;
+    orxonox_gui_video_vbox = gtk_vbox_new (FALSE, 0);
+    {
+	fullscreen_button = gtk_check_button_new_with_label ("Fullscreen-mode");
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (fullscreen_button), orxonox_settings->video_fullscreen);
+	g_signal_connect(GTK_TOGGLE_BUTTON(fullscreen_button), "clicked", G_CALLBACK(video_option_change), &(orxonox_settings->video_fullscreen));
+	gtk_box_pack_start(GTK_BOX (orxonox_gui_video_vbox), fullscreen_button, TRUE, TRUE, 0);
+
+	wireframe_button = gtk_check_button_new_with_label ("Wireframe-mode");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wireframe_button), orxonox_settings->video_wireframe);
+	g_signal_connect(GTK_TOGGLE_BUTTON(wireframe_button), "clicked", G_CALLBACK(video_option_change), &(orxonox_settings->video_wireframe));
+	gtk_box_pack_start(GTK_BOX (orxonox_gui_video_vbox), wireframe_button, TRUE, TRUE, 0);
+	
+    }
+    gtk_container_add(GTK_CONTAINER(frame), orxonox_gui_video_vbox);
+  }
+
+  return frame;
+
+}
+
Index: orxonox/branches/gui/gui/orxonox_gui_video.h
===================================================================
--- orxonox/branches/gui/gui/orxonox_gui_video.h	(revision 1860)
+++ orxonox/branches/gui/gui/orxonox_gui_video.h	(revision 1860)
@@ -0,0 +1,9 @@
+#ifndef _ORXONOX_GUI_VIDEO_H
+#define _ORXONOX_GUI_VIDEO_H
+
+#include "orxonox_gui.h"
+
+void video_option_change(GtkWidget *widget, int * data);
+GtkWidget *orxonox_gui_video_frame (struct settings *orxonox_settings);
+
+#endif /* _ORXONOX_GUI_VIDEO_H */
Index: orxonox/branches/gui/orxonox.1
===================================================================
--- orxonox/branches/gui/orxonox.1	(revision 1860)
+++ orxonox/branches/gui/orxonox.1	(revision 1860)
@@ -0,0 +1,56 @@
+.\"                              hey, Emacs:   -*- nroff -*-
+.\" orxonox is free software; you can redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as published by
+.\" the Free Software Foundation; either version 2 of the License, or
+.\" (at your option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program; see the file COPYING.  If not, write to
+.\" the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+.\"
+.TH ORXONOX 1 "April 13, 2004"
+.\" Please update the above date whenever this man page is modified.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins (default)
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+orxonox \- the future of 3D-vertical-scrollers
+.SH SYNOPSIS
+.B orxonox
+.RI [ options ]
+.SH DESCRIPTION
+\fBorxonox\fP washes your windows, mends your fences, mows your lawn...
+.PP
+It also...
+.SH OPTIONS
+\fBorxonox\fP accepts the following options:
+.TP
+.BR  -q , " --quiet" , " --silent"
+Inhibit usual output.
+.TP
+.B  -v, --verbose
+Print more information.
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-V, \-\-version
+Show version of program.
+.\" .SH "SEE ALSO"
+.\" .BR foo (1), 
+.\" .BR bar (1).
+.SH AUTHOR
+orx <orxonox-announce@mail.datacore.ch>.
Index: orxonox/branches/gui/scripts/Makefile.GLUT
===================================================================
--- orxonox/branches/gui/scripts/Makefile.GLUT	(revision 1860)
+++ orxonox/branches/gui/scripts/Makefile.GLUT	(revision 1860)
@@ -0,0 +1,23 @@
+
+ORXONOX_DIRS = ./core
+
+all: orxonox
+
+orxonox: $(ORXONOX_DIRS) finish
+
+$(ORXONOX_DIRS): FORCE
+	cd $@; $(MAKE)
+	
+finish:
+	@echo ""
+	@mv -vf ./core/orxonox ./bin
+	@echo ""
+	@echo "now cd to ./bin and run orxonox"
+	@echo ""
+
+clean:
+	for i in $(ORXONOX_DIRS); do ( cd $$i ; $(MAKE) clean ) ; done
+	-rm -f ./bin/*
+	-rm -f *~
+	
+FORCE:
Index: orxonox/branches/gui/scripts/Makefile.all
===================================================================
--- orxonox/branches/gui/scripts/Makefile.all	(revision 1860)
+++ orxonox/branches/gui/scripts/Makefile.all	(revision 1860)
@@ -0,0 +1,24 @@
+
+ORXONOX_DIRS = 	./core \
+	        ./gui
+
+all: orxonox
+
+orxonox: $(ORXONOX_DIRS) finish
+
+$(ORXONOX_DIRS): FORCE
+	cd $@; $(MAKE)
+	
+finish:
+	@echo ""
+	@mv -vf ./core/orxonox ./bin
+	@echo ""
+	@echo "now cd to ./bin and run orxonox"
+	@echo ""
+
+clean:
+	for i in $(ORXONOX_DIRS); do ( cd $$i ; $(MAKE) clean ) ; done
+	-rm -f ./bin/*
+	-rm -f *~
+	
+FORCE:
Index: orxonox/branches/gui/scripts/configure_functions
===================================================================
--- orxonox/branches/gui/scripts/configure_functions	(revision 1860)
+++ orxonox/branches/gui/scripts/configure_functions	(revision 1860)
@@ -0,0 +1,173 @@
+
+function print_message
+{
+	echo "   " $@
+}
+
+function print_topic
+{
+	echo -n "(II) " $@
+}
+
+function print_ack
+{
+	echo "...ok"
+}
+
+function print_nack
+{
+	echo "...failed"
+}
+
+function print_error
+{
+	echo "(EE) " $@
+}
+
+function print_warning
+{
+	echo "(WW) " $@
+}
+
+function print_info
+{
+	if [ $VERBOSE == "yes" ]; then
+		echo "         " $@
+	fi
+}
+
+function print_exit
+{
+	echo " => fatal error occured - see (WW) and (EE) tags for more info"
+	echo " => for support send a bugreport with this output to"
+	echo "            $SUPPORT_ADDRESS"
+	echo " => exiting gracefuly..."
+}
+
+function print_separator
+{
+	echo "--------------------------------------------------------------"
+}
+
+function print_small_separator
+{
+	echo "      ---"
+}
+
+function print_newline
+{
+	echo ""
+}
+
+
+#### Command Line Options
+
+function check_command_line_options
+{
+	local arg
+	for arg in $@; do
+		case $arg in
+			--enable-glut )
+				ENABLE_GLUT="yes"
+				;;
+			--disable-glut )
+				ENABLE_GLUT="no"
+				;;
+			--enable-gtk )
+				ENABLE_GTK="yes"
+				;;
+			--disable-gtk )
+				ENABLE_GTL="no"
+				;;
+			-v )
+				VERBOSE="yes"
+				;;
+			--verbose )
+				VERBOSE="yes"
+				;;
+			*)
+				print_command_line_options
+				exit 1
+				;;
+		esac
+	done
+}
+
+function print_command_line_options
+{
+	echo ""
+	echo "USAGE:"
+	echo "--enable-<option>     enable option"
+	echo "--disable-<option>    disable option"
+	echo "-v  --verbose         verbose output"
+	echo ""
+	echo "OPTIONS:"
+	echo "glut                  enable use of glut library (default: $ENABLE_GLUT)"
+	echo "gtk                   enable use of gtl libraty (default: $ENABLE_GTK)"
+	echo ""
+	echo "EXAMPLE:"
+	echo "./configure --enable-gtk"
+	echo ""
+}
+
+
+#### Check OS
+function get_OS
+{
+	#if [ uname -a | awk '{print $1}' ==  "Linux" ]; then
+	#	return 0
+	#fi
+	#return 1
+	#name -a | awk '{if( $1 == "Linux" ) print "1"; else print "0"}'
+	echo "not supported function"
+}
+
+
+#### Check GLUT 
+function check_for_GLUT
+{
+	local directory
+	for directory in $std_include_dirs; do
+		if [ -f $directory/glut.h ]; then
+			GLUT_DIR=$directory/glut.h
+			return 0
+		fi
+	done
+	return 1
+}
+
+
+### Check for Direct Rendering Support
+function check_for_glxinfo
+{
+	local directory
+	for directory in $std_bin_dirs; do
+		if [ -f $directory/glxinfo ]; then
+			return 0
+		fi
+	done
+	return 1
+}
+
+function check_for_dri
+{
+	DRI_SUPPORT=`glxinfo | grep "direct rendering:" | awk '{print $3}'`
+	if [ $DRI_SUPPORT == "No" ]; then
+		return 1
+	fi
+	return 0
+}
+
+### GtK Check
+function check_for_gtk_config
+{
+	local directory
+	for directory in $std_bin_dirs; do
+		if [ -f $directory/gtk-config ]; then
+			GTK_CONFIG=$directory/gtk-config
+			return 0
+		fi
+	done
+	return 1
+}
+
