From 14ef0a201a36614217ee5713ec3fe320be097451 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Tue, 17 Oct 2006 02:30:47 -0400 Subject: [PATCH] *** empty log message *** --- Makefile.linux | 26 - Makefile.macosx | 21 - configure | 54 -- doc/OpenArena User's Manual.doc | Bin 52736 -> 0 bytes doc/OpenArena User's Manual.htm | 1096 ------------------------------ doc/OpenArena User's Manual.html | 1096 ------------------------------ heading.txt | 28 - license.txt | 1 - macosx/Info.plist | 24 - macosx/PkgInfo | 1 - oa.nsi | 205 ------ oa.sln | 41 -- oa.vcproj | 520 -------------- oa/config/G2k.cfg | 30 - oa/config/my.cfg | 34 - oa/maps/intro.map | 16 - oa/maps/oamap1.map | 225 ------ oa/maps/oamap1.xml | 0 oa/music/bgm/bgm1.mp3 | Bin 1407 -> 0 bytes oa/music/bgm/bgm2.mp3 | Bin 1198 -> 0 bytes oa/textures/default.bmp | Bin 3126 -> 0 bytes oa/textures/groundc.tga | Bin 49196 -> 0 bytes oa/textures/menu/con_back.bmp | Bin 460856 -> 0 bytes oa/textures/menu/con_back.tga | Bin 196626 -> 0 bytes oa/textures/menu/font.bmp | Bin 196662 -> 0 bytes oa/textures/moonc.tga | Bin 12332 -> 0 bytes oa/textures/nightSkyc.tga | Bin 12332 -> 0 bytes src/.gitignore | 3 - src/EventManager.cpp | 76 --- src/EventManager.h | 38 -- src/Geometry2D/Point.cpp | 1 - src/Geometry2D/Point.h | 15 - src/Geometry2D/Rectangle.cpp | 1 - src/Logger.h | 115 ---- src/Makefile.linux | 99 --- src/Makefile.macosx | 109 --- src/Model.cpp | 33 - src/Model.h | 39 -- src/NullVideoPlugin.cpp | 37 - src/NullVideoPlugin.h | 119 ---- src/Plugin.h | 70 -- src/PluginManager.cpp | 44 -- src/PluginManager.h | 133 ---- src/VideoPlugin.h | 106 --- src/WindowsLogger.cpp | 68 -- src/WindowsLogger.h | 173 ----- src/bmp.cpp | 305 --------- src/bmp.h | 48 -- src/camera.cpp | 232 ------- src/camera.h | 384 ----------- src/carbon.h | 4 - src/ctrls.cpp | 224 ------ src/ctrls.h | 76 --- src/datatypes.h | 81 --- src/geometry.h | 64 -- src/image.h | 181 ----- src/keys.cpp | 572 ---------------- src/keys.h | 220 ------ src/level.cpp | 956 -------------------------- src/level.h | 143 ---- src/linux.cpp | 254 ------- src/list.h | 817 ---------------------- src/macosx.cpp | 318 --------- src/main.cpp | 32 - src/main.h | 135 ---- src/mydefs.h | 32 - src/mygl.cpp | 85 --- src/mygl.h | 113 --- src/myglFont.cpp | 164 ----- src/myglFont.h | 273 -------- src/myglTexture.cpp | 132 ---- src/myglTexture.h | 345 ---------- src/player.cpp | 45 -- src/player.h | 57 -- src/screen.cpp | 98 --- src/screen.h | 318 --------- src/strmanip.cpp | 320 --------- src/strmanip.h | 239 ------- src/texture.h | 51 -- src/tga.cpp | 688 ------------------- src/tga.h | 101 --- src/vector.cpp | 270 -------- src/vector.h | 1060 ----------------------------- src/version.h | 21 - src/window.cpp | 515 -------------- src/window.h | 125 ---- src/windows.cpp | 891 ------------------------ src/worlddefs.h | 31 - src/x11.cpp | 408 ----------- src/x11.h | 40 -- 90 files changed, 16165 deletions(-) delete mode 100644 Makefile.linux delete mode 100644 Makefile.macosx delete mode 100755 configure delete mode 100644 doc/OpenArena User's Manual.doc delete mode 100644 doc/OpenArena User's Manual.htm delete mode 100644 doc/OpenArena User's Manual.html delete mode 100644 heading.txt delete mode 100644 license.txt delete mode 100644 macosx/Info.plist delete mode 100644 macosx/PkgInfo delete mode 100644 oa.nsi delete mode 100644 oa.sln delete mode 100644 oa.vcproj delete mode 100644 oa/config/G2k.cfg delete mode 100644 oa/config/my.cfg delete mode 100644 oa/maps/intro.map delete mode 100644 oa/maps/oamap1.map delete mode 100644 oa/maps/oamap1.xml delete mode 100644 oa/music/bgm/bgm1.mp3 delete mode 100644 oa/music/bgm/bgm2.mp3 delete mode 100644 oa/textures/default.bmp delete mode 100644 oa/textures/groundc.tga delete mode 100644 oa/textures/menu/con_back.bmp delete mode 100644 oa/textures/menu/con_back.tga delete mode 100644 oa/textures/menu/font.bmp delete mode 100644 oa/textures/moonc.tga delete mode 100644 oa/textures/nightSkyc.tga delete mode 100644 src/.gitignore delete mode 100644 src/EventManager.cpp delete mode 100644 src/EventManager.h delete mode 100644 src/Geometry2D/Point.cpp delete mode 100644 src/Geometry2D/Point.h delete mode 100644 src/Geometry2D/Rectangle.cpp delete mode 100644 src/Logger.h delete mode 100644 src/Makefile.linux delete mode 100644 src/Makefile.macosx delete mode 100644 src/Model.cpp delete mode 100644 src/Model.h delete mode 100644 src/NullVideoPlugin.cpp delete mode 100644 src/NullVideoPlugin.h delete mode 100644 src/Plugin.h delete mode 100644 src/PluginManager.cpp delete mode 100644 src/PluginManager.h delete mode 100644 src/VideoPlugin.h delete mode 100644 src/WindowsLogger.cpp delete mode 100644 src/WindowsLogger.h delete mode 100644 src/bmp.cpp delete mode 100644 src/bmp.h delete mode 100644 src/camera.cpp delete mode 100644 src/camera.h delete mode 100644 src/carbon.h delete mode 100644 src/ctrls.cpp delete mode 100644 src/ctrls.h delete mode 100644 src/datatypes.h delete mode 100644 src/geometry.h delete mode 100644 src/image.h delete mode 100644 src/keys.cpp delete mode 100644 src/keys.h delete mode 100644 src/level.cpp delete mode 100644 src/level.h delete mode 100644 src/linux.cpp delete mode 100644 src/list.h delete mode 100644 src/macosx.cpp delete mode 100644 src/main.cpp delete mode 100644 src/main.h delete mode 100644 src/mydefs.h delete mode 100644 src/mygl.cpp delete mode 100644 src/mygl.h delete mode 100644 src/myglFont.cpp delete mode 100644 src/myglFont.h delete mode 100644 src/myglTexture.cpp delete mode 100644 src/myglTexture.h delete mode 100644 src/player.cpp delete mode 100644 src/player.h delete mode 100644 src/screen.cpp delete mode 100644 src/screen.h delete mode 100644 src/strmanip.cpp delete mode 100644 src/strmanip.h delete mode 100644 src/texture.h delete mode 100644 src/tga.cpp delete mode 100644 src/tga.h delete mode 100644 src/vector.cpp delete mode 100644 src/vector.h delete mode 100644 src/version.h delete mode 100644 src/window.cpp delete mode 100644 src/window.h delete mode 100644 src/windows.cpp delete mode 100644 src/worlddefs.h delete mode 100644 src/x11.cpp delete mode 100644 src/x11.h diff --git a/Makefile.linux b/Makefile.linux deleted file mode 100644 index 8ee27a9..0000000 --- a/Makefile.linux +++ /dev/null @@ -1,26 +0,0 @@ -EXECUTABLES = OpenArena/OA -LIBRARIES = -BUILDROOT = /usr/local -PREFIX = - -.Phony: all clean install distclean - -all: - $(MAKE) -C src all - -clean: - $(MAKE) -C src clean - -install: - -install-devel: - -install-doc: - -distclean: clean - rm -f Makefile - rm -f src/Makefile - - - - diff --git a/Makefile.macosx b/Makefile.macosx deleted file mode 100644 index 044cbc7..0000000 --- a/Makefile.macosx +++ /dev/null @@ -1,21 +0,0 @@ -EXECUTABLES = OpenArena/OA -LIBRARIES = -BUILDROOT = /usr/local -PREFIX = -.Phony: all clean install - -all: - $(MAKE) -C src all - -clean: - $(MAKE) -C src clean - -install: - -install-devel: - -install-doc: - - - - diff --git a/configure b/configure deleted file mode 100755 index 65c0d90..0000000 --- a/configure +++ /dev/null @@ -1,54 +0,0 @@ -#Symlink Makefiles -case `uname -s` in -Darwin) - ln -sf Makefile.macosx Makefile - ln -sf Makefile.macosx src/Makefile - - #this should be set as a default if no option is specified and set via options otherwise - USE_AGL=1 - ;; -Linux) - ln -sf Makefile.linux Makefile - ln -sf Makefile.linux src/Makefile - - #this should be set as a default if no option is specified and set via options otherwise - USE_GLX=1 - HAVE_XF86VIDMODE=1 - ;; -esac - -#Generate config.h -CONFIGFILE="src/config.h" - -#Write Header -echo "#ifndef CONFIG_H -#define CONFIG_H -" > $CONFIGFILE - -#Check for GLX ie X11 -if [ $USE_GLX ]; then - echo "#define USE_GLX" >> $CONFIGFILE - if [ $HAVE_XF86VIDMODE ]; then - echo "#define HAVE_XF86VIDMODE" >> $CONFIGFILE - fi -fi - -#Check for AGL -if [ $USE_AGL ]; then - echo "#define USE_AGL" >> $CONFIGFILE -fi - -#Check for CGL -if [ $USE_CGL ]; then - echo "#define USE_CGL" >> $CONFIGFILE -fi - -#Check for WGL -if [ $USE_WGL ]; then - echo "#define USE_WGL" >> $CONFIGFILE -fi - -#Write Footer -echo " -#endif -" >> $CONFIGFILE diff --git a/doc/OpenArena User's Manual.doc b/doc/OpenArena User's Manual.doc deleted file mode 100644 index 09ac164f4632e870256b6aa3c29bc1b83c22ec0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52736 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 - - - - - - - -OpenArena User’s Manual v0 - - - - - - - -
- -

OpenArena User’s Manual v0.1.0

- -

 

- -

Table -of Contents

- -

 

- -

1.         Introduction

- -

            a.         What This Is

- -

            b.         What This Is Not

- -

            c.         Version History

- -

2.         Legal Stuff

- -

            a.         Legal Notices

- -

            b.         Copyright Information

- -

            c.         Suggested Proper Uses

- -

3.         How To Use the SDK

- -

4.         Us

- -

            a.         Contact Information / Who Did What

- -

            b.         Why I Started This Project

- -

5.         Files

- -

            a.         Format of the .map file

- -

            b.         Format of the .cfg file

- -

6.         Notes on -the Source Code

- -

            a.         Mistakes I Plan To Do Something -About

- -

            b.         Mistakes I Plan To Do Nothing -About

- -

7.         Changes to -this manual

- -

            a.         Versions

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

1.         Introduction

- -

 

- -

1.a.      What This Is

- -

            OpenArena -is a 3D rendering engine.  It is suitable -for any type of game, but can be used for anything that requires 3D Rendering.

- -

 

- -

1.b.      What This Is Not

- -

            OpenArena -is not a game in itself.  I PLAN -to distribute some sample games as well.  -OpenArena is not opensource -software.  It is available under the QTPL -a copy of which is attached.

- -

 

- -

1.c.      Version History

- -

            0.0.1-alpha

- -

                        First Version

- -

                        Loads a map from a file -and then renders from the origin.

- -

            0.0.2-alpha

- -

                        Beginning -of movement code.

- -

            0.0.3-alpha

- -

                        Added -prelim texture support.

- -

            0.0.4-alpha

- -

                        Better movement code.

- -

            0.0.4.1-alpha

- -

                        More movement code -(mouse look) still haven't gotten strafing done yet.

- -

            0.0.5-alpha

- -

                        Added support for -control config files for controls implemented so far.

- -

            0.0.6-alpha

- -

                        If only I could -remember.

- -

            0.0.7-alpha

- -

                        Added the ability for -map files to specify textures to load and which textures go with which -triangle.

- -

            0.0.8-alpha

- -

                        Added -the ability to load lighting information for an infinite amount of lights from -a .lit file.

- -

            0.0.9-alpha

- -

                        Fixed -control loading.

- -

                        Modified default -tom4.map file to add 2 more sectors(rooms) to test -multiple sectors.  Until now we had never -tested a map with more than one sector.

- -

            0.0.10-alpha

- -

                        Completely -overhauled control loading. (technically a -little faster now)

- -

                        Added -strafing.

- -

                        Added mouselook, movespeed, turnspeed, and mousespeed (sensativity) to the config file

- -

                        Changed -textures in the sample maps.

- -

            0.0.11-alpha

- -

                        Added support for -setting the screen resolution in the config file.

- -

                        Added togglemouselook and quickmouselook -keys.

- -

            0.0.12-alpha

- -

                        Moved -all code from the CONTROLS class into the LEVEL class.

- -

                        Moved -the LoadBMP function into the LEVEL class.

- -

                        Moved -the texutre array into the LEVEL class.

- -

                        Added left right and -middle mouse buttons as viable config keys (mouse1 -left, mouse2 right, mouse3 middle)

- -

            0.0.13-alpha

- -

                        Added maxfps param to config files.

- -

                        Added colordepth param to config files.

- -

                        Added fullscreen param to config files.

- -

                        Added map param to config files.

- -

                        Added nextLevel to LEVEL class.  This should allow to have a series of maps be -determined from some other config file later on ie. a maplist -file.

- -

            0.0.14-alpha

- -

                        Changed textures to targa files for now only 24 and 32 bit uncompressed images -are supported but more variety will come as will the return of bitmaps.

- -

            0.0.14.1-alpha
-                        Added support for -compressed targa files.

- -

            0.0.15-alpha

- -

                        Added first command line -switch "+set" with it's first parameter -game.  This changes the directory oa loads data from (will make it also look in the oa folder later and add xgame -that only looks in this folder).

- -

            0.0.16-alpha

- -

                        Added support for .bmp -textures.

- -

            0.0.17-alpha

- -

                        Minor internal tweaking -can’t remember exactly what though.

- -

            0.0.18-alpha

- -

                        Major tweaking to -movement and rendering although there isn’t apparently any discernable changes -while running but greatly improved code readability.

- -

            0.1.0-alpha

- -

                        Complete rewrite of ingame controls.

- -

Complete rewrite of level -loading code.

- -

Complete rewrite of config loading code.

- -

New map file format.

- -

New cfg -file format.

- -

Added support for saving a -map file.

- -

Added support for saving a cfg file.

- -

Removed lit file.

- -

Removed ent file.

- -

Temporarily removed support -for lights (they will be back soon).

- -

(coming soon)

- -

                        Added support for .md3 -models.

- -

                        Compression some type of -package system probably zip or rar.

- -

                        Camera/World -Collision.

- -

                        A test -weapon.

- -

                        A test -target ie. Bot with -no AI just change color or something when hit.

- -

                        3D sound and other -sounds

- -

                        More/real background -music

- -

 

- -

2.         Legal Stuff

- -

 

- -

2.a.      Legal Notices

- -

            This software is provided without any warranty of any kind not even -that of merchantability or fitness for a particular purpose.  I take no responsibility for any damages to -anyone or anything resulting from the use or possession of this software.

- -

 

- -

2.b.      Copyright Information

- -

            This program can be distributed -under the GNU GPL with the following exception. I want to make this multiplayer -compatible later on.  So any -modifications that have anything to do with encryption or netcode -don't have to be opensource as long as a copy of the -source is sent to me to peruse and possibly add to the program (with applicable -credit given).  Other than that OA will -be open source hence the name.  -Alternatively you can redistribute OA under the QTPL.

- -

            If you would like to modify the -source code all I want you to do is make the new source available including -giving me a copy either by e-mail headhunter45@hotmail.com but I have the inbox -protector on so make sure the subject line has OpenArena -in it preferably even just OpenArena as a subject -this is only necessary the first time or two you e-mail me so I can add you to -my address book.

- -

            The following textures are used with -permission from Texture Station at http://www.nepthys.com/textures moon2.bmp, ground.bmp, nightSky.bmp.  The names have been changed.

- -

            Some of the audio loops used to -create the background music came, royalty free, from http://www.beatmode.com and Creative Power.

- -

 

- -

2.c.      Suggested Uses

- -

            Make the next greatest first person -shooter.

- -

Make a really cool RPG.

- -

 

- -

3.         How To Use -The SDK

- -

            I.          Take -my code.

- -

II.         Modify -it if necessary.

- -

III.       Create -your own media ie textures, music, maps.

- -

IV.       Distribute.

- -

V.        Repeat.

- -

 

- -

4.         Us

- -

 

- -

4.a.      Contact Information / Who Did What

- -

            G2k, headhunter45@hotmail.com -put OpenArena in the subject or I'll never see your -message.

- -

 

- -

4.b.      Why I Started This Project

- -

            I got bored one weekend and couldn't -find my quake3™ cd.

- -

 

- -

5.         Files

- -

 

- -

5.a.      Format of the .map file

- -

 

- -

“//” denotes a C++ style comment in this -description, but there are no comments in the .map file at all.

- -

Blank lines and organization are for readability -purposes only.

- -

 

- -

1          //Gravity -not implemented yet

- -

4          //Number -of triangles in the map

- -

 

- -

//First triangle

- -

1          //Texture -for the first triangle

- -

//Verticies of this triangle  u and v are -texture coordinates

- -

// x        -y       z       u      -v

- -

-10.0  -1.0  --10.0   0.0  0.0

- -

-10.0  -1.0   -10.0   2  0.0

- -

-10.0  10.0   -10.0   -2  1.1

- -

//The normal for this triangle in x, y, z format -will take out later

- -

1.0 0.0 0.0

- -

 

- -

//Second triangle

- -

1

- -

-10.0  -1.0  --10.0   0.0  0.0

- -

-10.0  10.0  --10.0   0.0  1.1

- -

-10.0  10.0   -10.0   -2  1.1

- -

1.0 0.0 0.0

- -

 

- -

//Third triangle

- -

1

- -

 10.0  -1.0  -10.0   -0.0  0.0

- -

 10.0  -1.0   10.0   -2  0.0

- -

 10.0  10.0   10.0   2  1.1

- -

-1.0 0.0 0.0

- -

 

- -

//Fourth Triangle

- -

1

- -

 10.0  -1.0  -10.0   -0.0  0.0

- -

 10.0  10.0  -10.0   -0.0  1.1

- -

 10.0  10.0   10.0   2  1.1

- -

-1.0 0.0 0.0

- -

 

- -

3          //Number -of textures

- -

groundc.tga      //Texture filenames all in the gamedir/textures folder.  Bmp and tga -textures are allowed.

- -

moonc.tga

- -

nightSkyc.tga

- -

 

- -

bgm2.mp3        //Background -music file cda1 specifies the first cd-audio track in -the first cd-rom drive cda2 the second and so on.

- -

 

- -

5.b.      Format of the .cfg file

- -

            <command> <param 1> <param 2> … <param n>

- -

            One command per line separated by any amount of whitespace.  WARNING!  -The parser treats newlines as whitespace but does not require a newline -to separate a command.  This may change -so stick with this format.  The parser -does not like syntax errors.

- - - -

           

- -

6.         Notes On -The Source Code

- -

 

- -

6.a.      Mistakes I Plan To Do Something About

- -

            Almost nothing is properly -commented. (I’m working on this … slowly … kinda)

- -

            Really really bad organization and nonuniform -nameing conventions.  (This is getting better though.)

- -

 

- -

6.b.      Mistakes I Plan To Do Nothing About

- -

None so far.

- -

 

- -

7.         Changes to this file

- -

 

- -

7.a.      Versions

- -

 

- -

            v0.0.1

- -

                        Origional -Version

- -

            v0.0.2

- -

                        Reorganized a few things

- -

            v0.0.3

- -

                        Updated contact -information and added an update for OpenArena -v0.0.18-alpha

- -

            v0.1.0

- -

                        Made version numbers of -this file match OpenArena release versions.

- -

                        Updated file description -sections.

- -

                        Made -section headings bold.

- -

                        Removed sections 5.b and -5.c and renamed 5.d to 5.b because those files are no longer used.

- -

 

- -

 

- -

 

- -

           

- -
- - - - diff --git a/doc/OpenArena User's Manual.html b/doc/OpenArena User's Manual.html deleted file mode 100644 index c1cdc1c..0000000 --- a/doc/OpenArena User's Manual.html +++ /dev/null @@ -1,1096 +0,0 @@ - - - - - - - - -OpenArena User’s Manual v0 - - - - - - - -
- -

OpenArena User’s Manual v0.1.0

- -

 

- -

Table -of Contents

- -

 

- -

1.         Introduction

- -

            a.         What This Is

- -

            b.         What This Is Not

- -

            c.         Version History

- -

2.         Legal Stuff

- -

            a.         Legal Notices

- -

            b.         Copyright Information

- -

            c.         Suggested Proper Uses

- -

3.         How To Use the SDK

- -

4.         Us

- -

            a.         Contact Information / Who Did What

- -

            b.         Why I Started This Project

- -

5.         Files

- -

            a.         Format of the .map file

- -

            b.         Format of the .cfg file

- -

6.         Notes on -the Source Code

- -

            a.         Mistakes I Plan To Do Something -About

- -

            b.         Mistakes I Plan To Do Nothing -About

- -

7.         Changes to -this manual

- -

            a.         Versions

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

 

- -

1.         Introduction

- -

 

- -

1.a.      What This Is

- -

            OpenArena -is a 3D rendering engine.  It is suitable -for any type of game, but can be used for anything that requires 3D Rendering.

- -

 

- -

1.b.      What This Is Not

- -

            OpenArena -is not a game in itself.  I PLAN -to distribute some sample games as well.  -OpenArena is not opensource -software.  It is available under the QTPL -a copy of which is attached.

- -

 

- -

1.c.      Version History

- -

            0.0.1-alpha

- -

                        First Version

- -

                        Loads a map from a file -and then renders from the origin.

- -

            0.0.2-alpha

- -

                        Beginning -of movement code.

- -

            0.0.3-alpha

- -

                        Added -prelim texture support.

- -

            0.0.4-alpha

- -

                        Better movement code.

- -

            0.0.4.1-alpha

- -

                        More movement code -(mouse look) still haven't gotten strafing done yet.

- -

            0.0.5-alpha

- -

                        Added support for -control config files for controls implemented so far.

- -

            0.0.6-alpha

- -

                        If only I could -remember.

- -

            0.0.7-alpha

- -

                        Added the ability for -map files to specify textures to load and which textures go with which -triangle.

- -

            0.0.8-alpha

- -

                        Added -the ability to load lighting information for an infinite amount of lights from -a .lit file.

- -

            0.0.9-alpha

- -

                        Fixed -control loading.

- -

                        Modified default -tom4.map file to add 2 more sectors(rooms) to test -multiple sectors.  Until now we had never -tested a map with more than one sector.

- -

            0.0.10-alpha

- -

                        Completely -overhauled control loading. (technically a -little faster now)

- -

                        Added -strafing.

- -

                        Added mouselook, movespeed, turnspeed, and mousespeed (sensativity) to the config file

- -

                        Changed -textures in the sample maps.

- -

            0.0.11-alpha

- -

                        Added support for -setting the screen resolution in the config file.

- -

                        Added togglemouselook and quickmouselook -keys.

- -

            0.0.12-alpha

- -

                        Moved -all code from the CONTROLS class into the LEVEL class.

- -

                        Moved -the LoadBMP function into the LEVEL class.

- -

                        Moved -the texutre array into the LEVEL class.

- -

                        Added left right and -middle mouse buttons as viable config keys (mouse1 -left, mouse2 right, mouse3 middle)

- -

            0.0.13-alpha

- -

                        Added maxfps param to config files.

- -

                        Added colordepth param to config files.

- -

                        Added fullscreen param to config files.

- -

                        Added map param to config files.

- -

                        Added nextLevel to LEVEL class.  This should allow to have a series of maps be -determined from some other config file later on ie. a maplist -file.

- -

            0.0.14-alpha

- -

                        Changed textures to targa files for now only 24 and 32 bit uncompressed images -are supported but more variety will come as will the return of bitmaps.

- -

            0.0.14.1-alpha
-                        Added support for -compressed targa files.

- -

            0.0.15-alpha

- -

                        Added first command line -switch "+set" with it's first parameter -game.  This changes the directory oa loads data from (will make it also look in the oa folder later and add xgame -that only looks in this folder).

- -

            0.0.16-alpha

- -

                        Added support for .bmp -textures.

- -

            0.0.17-alpha

- -

                        Minor internal tweaking -can’t remember exactly what though.

- -

            0.0.18-alpha

- -

                        Major tweaking to -movement and rendering although there isn’t apparently any discernable changes -while running but greatly improved code readability.

- -

            0.1.0-alpha

- -

                        Complete rewrite of ingame controls.

- -

Complete rewrite of level -loading code.

- -

Complete rewrite of config loading code.

- -

New map file format.

- -

New cfg -file format.

- -

Added support for saving a -map file.

- -

Added support for saving a cfg file.

- -

Removed lit file.

- -

Removed ent file.

- -

Temporarily removed support -for lights (they will be back soon).

- -

(coming soon)

- -

                        Added support for .md3 -models.

- -

                        Compression some type of -package system probably zip or rar.

- -

                        Camera/World -Collision.

- -

                        A test -weapon.

- -

                        A test -target ie. Bot with -no AI just change color or something when hit.

- -

                        3D sound and other -sounds

- -

                        More/real background -music

- -

 

- -

2.         Legal Stuff

- -

 

- -

2.a.      Legal Notices

- -

            This software is provided without any warranty of any kind not even -that of merchantability or fitness for a particular purpose.  I take no responsibility for any damages to -anyone or anything resulting from the use or possession of this software.

- -

 

- -

2.b.      Copyright Information

- -

            This program can be distributed -under the GNU GPL with the following exception. I want to make this multiplayer -compatible later on.  So any -modifications that have anything to do with encryption or netcode -don't have to be opensource as long as a copy of the -source is sent to me to peruse and possibly add to the program (with applicable -credit given).  Other than that OA will -be open source hence the name.  -Alternatively you can redistribute OA under the QTPL.

- -

            If you would like to modify the -source code all I want you to do is make the new source available including -giving me a copy either by e-mail headhunter45@hotmail.com but I have the inbox -protector on so make sure the subject line has OpenArena -in it preferably even just OpenArena as a subject -this is only necessary the first time or two you e-mail me so I can add you to -my address book.

- -

            The following textures are used with -permission from Texture Station at http://www.nepthys.com/textures moon2.bmp, ground.bmp, nightSky.bmp.  The names have been changed.

- -

            Some of the audio loops used to -create the background music came, royalty free, from http://www.beatmode.com and Creative Power.

- -

 

- -

2.c.      Suggested Uses

- -

            Make the next greatest first person -shooter.

- -

Make a really cool RPG.

- -

 

- -

3.         How To Use -The SDK

- -

            I.          Take -my code.

- -

II.         Modify -it if necessary.

- -

III.       Create -your own media ie textures, music, maps.

- -

IV.       Distribute.

- -

V.        Repeat.

- -

 

- -

4.         Us

- -

 

- -

4.a.      Contact Information / Who Did What

- -

            G2k, headhunter45@hotmail.com -put OpenArena in the subject or I'll never see your -message.

- -

 

- -

4.b.      Why I Started This Project

- -

            I got bored one weekend and couldn't -find my quake3™ cd.

- -

 

- -

5.         Files

- -

 

- -

5.a.      Format of the .map file

- -

 

- -

“//” denotes a C++ style comment in this -description, but there are no comments in the .map file at all.

- -

Blank lines and organization are for readability -purposes only.

- -

 

- -

1          //Gravity -not implemented yet

- -

4          //Number -of triangles in the map

- -

 

- -

//First triangle

- -

1          //Texture -for the first triangle

- -

//Verticies of this triangle  u and v are -texture coordinates

- -

// x        -y       z       u      -v

- -

-10.0  -1.0  --10.0   0.0  0.0

- -

-10.0  -1.0   -10.0   2  0.0

- -

-10.0  10.0   -10.0   -2  1.1

- -

//The normal for this triangle in x, y, z format -will take out later

- -

1.0 0.0 0.0

- -

 

- -

//Second triangle

- -

1

- -

-10.0  -1.0  --10.0   0.0  0.0

- -

-10.0  10.0  --10.0   0.0  1.1

- -

-10.0  10.0   -10.0   -2  1.1

- -

1.0 0.0 0.0

- -

 

- -

//Third triangle

- -

1

- -

 10.0  -1.0  -10.0   -0.0  0.0

- -

 10.0  -1.0   10.0   -2  0.0

- -

 10.0  10.0   10.0   2  1.1

- -

-1.0 0.0 0.0

- -

 

- -

//Fourth Triangle

- -

1

- -

 10.0  -1.0  -10.0   -0.0  0.0

- -

 10.0  10.0  -10.0   -0.0  1.1

- -

 10.0  10.0   10.0   2  1.1

- -

-1.0 0.0 0.0

- -

 

- -

3          //Number -of textures

- -

groundc.tga      //Texture filenames all in the gamedir/textures folder.  Bmp and tga -textures are allowed.

- -

moonc.tga

- -

nightSkyc.tga

- -

 

- -

bgm2.mp3        //Background -music file cda1 specifies the first cd-audio track in -the first cd-rom drive cda2 the second and so on.

- -

 

- -

5.b.      Format of the .cfg file

- -

            <command> <param 1> <param 2> … <param n>

- -

            One command per line separated by any amount of whitespace.  WARNING!  -The parser treats newlines as whitespace but does not require a newline -to separate a command.  This may change -so stick with this format.  The parser -does not like syntax errors.

- - - -

           

- -

6.         Notes On -The Source Code

- -

 

- -

6.a.      Mistakes I Plan To Do Something About

- -

            Almost nothing is properly -commented. (I’m working on this … slowly … kinda)

- -

            Really really bad organization and nonuniform -nameing conventions.  (This is getting better though.)

- -

 

- -

6.b.      Mistakes I Plan To Do Nothing About

- -

None so far.

- -

 

- -

7.         Changes to this file

- -

 

- -

7.a.      Versions

- -

 

- -

            v0.0.1

- -

                        Origional -Version

- -

            v0.0.2

- -

                        Reorganized a few things

- -

            v0.0.3

- -

                        Updated contact -information and added an update for OpenArena -v0.0.18-alpha

- -

            v0.1.0

- -

                        Made version numbers of -this file match OpenArena release versions.

- -

                        Updated file description -sections.

- -

                        Made -section headings bold.

- -

                        Removed sections 5.b and -5.c and renamed 5.d to 5.b because those files are no longer used.

- -

 

- -

 

- -

 

- -

           

- -
- - - - diff --git a/heading.txt b/heading.txt deleted file mode 100644 index e811d18..0000000 --- a/heading.txt +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************************* -00000000011111111112222222222333333333344444444445555555555666666666677777777778 -12345678901234567890123456789012345678901234567890123456789012345678901234567890 -*******************************************************************************/ -//////////////////////////////////////////////////////////////////////////////// -// -// Module: -// Author: Tom Hicks -// Creation: 09-01-2003 -// LastEdit: 09-01-2003 -// Editors: None -// -// Purpose: -// -// Summary of Methods: -// Global -// -function name -// description -// blahClass -// -function name -// description -// -// Summary of Properties: -// blahClass -// -property name -// description -// -//////////////////////////////////////////////////////////////////////////////// diff --git a/license.txt b/license.txt deleted file mode 100644 index ff22d35..0000000 --- a/license.txt +++ /dev/null @@ -1 +0,0 @@ -This program can be distributed under either the GPL or the QTPL. Copies of which will soon be added to this distribution. diff --git a/macosx/Info.plist b/macosx/Info.plist deleted file mode 100644 index f101655..0000000 --- a/macosx/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - OpenArena - CFBundleIdentifier - net.olympusonline.OpenArena - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - OpenArena - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - CSResourcesFileMapped - - - diff --git a/macosx/PkgInfo b/macosx/PkgInfo deleted file mode 100644 index bd04210..0000000 --- a/macosx/PkgInfo +++ /dev/null @@ -1 +0,0 @@ -APPL???? \ No newline at end of file diff --git a/oa.nsi b/oa.nsi deleted file mode 100644 index 76ebe88..0000000 --- a/oa.nsi +++ /dev/null @@ -1,205 +0,0 @@ -; This script is based on example2.nsi - -;-------------------------------- - -; The name of the installer -Name "OpenArena" - -; The installer icon -Icon "${NSISDIR}\Contrib\Graphics\Icons\modern-install-blue-full.ico" - -; The uninstaller icon -UninstallIcon "${NSISDIR}\Contrib\Graphics\Icons\modern-install-blue-full.ico" - - -; The file to write -OutFile "OpenArena-0.1.2-alpha.exe" - -; The default installation directory -InstallDir "$PROGRAMFILES\HHPS\OpenArena-0.1.2-alpha" - -; Registry key to check for directory (so if you install again, it will -; overwrite the old one automatically) -InstallDirRegKey HKLM SOFTWARE\HHPS\OpenArena-0.1.2-alpha "Install_Dir" - -; The text to prompt the user to enter a directory -ComponentText "This will install OpenArena on your computer. Select which options you want installed." - -; The text to prompt the user to enter a directory -DirText "Choose a directory to install in to:" - -;-------------------------------- - -; Main section docs and libs -Section - "Base (required)" - - SectionIn RO - - ;Dynamic libraries - CreateDirectory $INSTDIR - SetOutPath $INSTDIR - File ".\OpenArena\bass.dll" - WriteUninstaller "uninstall.exe" - - ;Documentation - CreateDirectory "$INSTDIR\doc" - SetOutPath "$INSTDIR\doc" - File ".\doc\*.doc" - File ".\doc\*.html" - - ; Write the installation path into the registry - WriteRegStr HKLM SOFTWARE\HHPS\OpenArena-0.1.2-alpha "Install_Dir" "$INSTDIR" - - ; Write the uninstall keys for Windows - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenArena v0.1.2-alpha" "DisplayName" "OpenArena v0.1.2-alpha (remove only)" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenArena v0.1.2-alpha" "UninstallString" '"$INSTDIR\uninstall.exe"' - WriteUninstaller "uninstall.exe" - CreateDirectory "$SMPROGRAMS\HHPS\OpenArena" - SetOutPath $INSTDIR\OpenArena - CreateShortCut "$SMPROGRAMS\HHPS\OpenArena\Readme v0.1.2-alpha.lnk" "$INSTDIR\doc\OpenArena User's Manual.html" - -SectionEnd - -; Source Files required to create and compile a game using the OpenArena SDK -Section "SDK" - - CreateDirectory "$INSTDIR\sources" - SetOutPath "$INSTDIR\sources" - File ".\*.txt" - File ".\*.nsi" - File ".\oa.*" - File ".*" - File "Makefile" - - CreateDirectory "$INSTDIR\sources\lib" - SetOutPath "$INSTDIR\sources\lib" - File ".\lib\bass.lib" - - CreateDirectory "$INSTDIR\sources\include" - SetOutPath "$INSTDIR\sources\include" - File ".\include\*.h" - - CreateDirectory "$INSTDIR\sources\src" - SetOutPath "$INSTDIR\sources\src" - File ".\src\*.cpp" - File ".\Makefile" - - CreateDirectory "$INSTDIR\sources\OpenArena" - SetOutPath "$INSTDIR\sources\OpenArena" - File ".\OpenArena\bass.dll" - - CreateDirectory "$INSTDIR\sources\OpenArena\oa" - CreateDirectory "$INSTDIR\sources\OpenArena\oa\config" - SetOutPath "$INSTDIR\sources\OpenArena\oa\config" - File ".\OpenArena\oa\config\my.cfg" - - CreateDirectory "$INSTDIR\sources\OpenArena\oa\maps" - SetOutPath "$INSTDIR\sources\OpenArena\oa\maps" - File ".\OpenArena\oa\maps\intro.map" - - CreateDirectory "$INSTDIR\sources\OpenArena\oa\music\bgm" - ;SetOutPath "$INSTDIR\sources\OpenArena\oa\music\bgm" - ;File ".\OpenArena\oa\music\bgm\*.mp3" - - CreateDirectory "$INSTDIR\sources\OpenArena\oa\textures" - SetOutPath "$INSTDIR\sources\OpenArena\oa\textures" - File ".\OpenArena\oa\textures\*.bmp" - File ".\OpenArena\oa\textures\*.tga" - CreateDirectory "$INSTDIR\sources\OpenArena\oa\textures\menu" - SetOutPath "$INSTDIR\sources\OpenArena\oa\textures\menu" - File ".\OpenArena\oa\textures\menu\*.bmp" - File ".\OpenArena\oa\textures\menu\*.tga" - - CreateDirectory "$INSTDIR\sources\ModelConverter" - SetOutPath "$INSTDIR\sources\ModelConverter" - File ".\ModelConverter\*.cs" - File ".\ModelConverter\*.ico" - File ".\ModelConverter\*.csproj" - File ".\ModelConverter\*.csproj.user" - - CreateShortCut "$SMPROGRAMS\HHPS\OpenArena\OpenArena SDK v0.1.2-alpha.lnk" "$INSTDIR\sources\oa.sln" - -SectionEnd - -Section "Media" - - CreateDirectory "$INSTDIR" - SetOutPath "$INSTDIR" - File ".\OpenArena\oa.exe" - - CreateDirectory "$INSTDIR\oa" - CreateDirectory "$INSTDIR\oa\config" - SetOutPath "$INSTDIR\oa\config" - File ".\OpenArena\oa\config\my.cfg" - - CreateDirectory "$INSTDIR\oa\maps" - SetOutPath $INSTDIR\oa\maps - File ".\OpenArena\oa\maps\intro.map" - File ".\OpenArena\oa\maps\oamap1.map" - - CreateDirectory "$INSTDIR\oa\music" - CreateDirectory "$INSTDIR\oa\music\bgm" - SetOutPath $INSTDIR\oa\music\bgm - File ".\OpenArena\oa\music\bgm\*.mp3" - - CreateDirectory "$INSTDIR\oa\textures" - SetOutPath $INSTDIR\oa\textures - File ".\OpenArena\oa\textures\*.tga" - File ".\OpenArena\oa\textures\*.bmp" - - CreateDirectory "$INSTDIR\oa\textures\menu" - SetOutPath $INSTDIR\oa\textures\menu - File ".\OpenArena\oa\textures\menu\*.bmp" - File ".\OpenArena\oa\textures\menu\*.tga" - - SetOutPath $INSTDIR - CreateShortCut "$SMPROGRAMS\HHPS\OpenArena\OpenArena v0.1.2-alpha.lnk" "$INSTDIR\oa.exe" - -SectionEnd - -;-------------------------------- -; Uninstaller - -UninstallText "This will uninstall OpenArena. Hit next to continue." -; Uninstall section - -Section "Uninstall" - - ; remove registry keys - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenArena v0.1.2-alpha" - DeleteRegKey HKLM SOFTWARE\HHPS\OpenArena-0.1.2-alpha - - ; remove files and uninstaller - Delete /REBOOTOK "$INSTDIR\oa" - Delete /REBOOTOK "$INSTDIR\sources" - Delete /REBOOTOK "$INSTDIR\doc" - Delete /REBOOTOK "$INSTDIR\*.exe" - Delete /REBOOTOK "$INSTDIR\*.dll" - - ;Delete /REBOOTOK $INSTDIR\lib\* - ;Delete /REBOOTOK $INSTDIR\src\*.* - ;Delete /REBOOTOK $INSTDIR\bass.dll - ;Delete /REBOOTOK $INSTDIR\heading.txt - ;Delete /REBOOTOK $INSTDIR\license.txt - ;Delete /REBOOTOK $INSTDIR\oa.ncb - ;Delete /REBOOTOK $INSTDIR\oa.sln - ;Delete /REBOOTOK $INSTDIR\oa.sou - ;Delete /REBOOTOK $INSTDIR\oa.vcproj - ;Delete /REBOOTOK "$INSTDIR\OpenArena User's Manual.doc" - ;Delete /REBOOTOK "$INSTDIR\OpenArena User's Manual.html" - - Delete /REBOOTOK $INSTDIR\uninstall.exe - - ; remove shortcuts, if any - Delete /REBOOTOK "$SMPROGRAMS\HHPS\OpenArena\Readme v0.1.2-alpha.lnk" - Delete /REBOOTOK "$SMPROGRAMS\HHPS\OpenArena\OpenArena SDK v0.1.2-alpha.lnk" - Delete /REBOOTOK "$SMPROGRAMS\HHPS\OpenArena\OpenArena v0.1.2-alpha.lnk" - - ; remove directories used - RMDIR /r $INSTDIR\include - RMDIR /r $INSTDIR\lib - RMDIR /r $INSTDIR\OpenArena - RMDIR /r $INSTDIR\src - RMDIR /r "$INSTDIR" - -SectionEnd \ No newline at end of file diff --git a/oa.sln b/oa.sln deleted file mode 100644 index bee1fb4..0000000 --- a/oa.sln +++ /dev/null @@ -1,41 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "oa", "oa.vcproj", "{6F5D0FF6-A032-4356-932E-865B601E0DD4}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModelConverter", "ModelConverter\ModelConverter.csproj", "{4327B7E9-B631-479B-8419-BCE37C986360}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|Win32 = Debug|Win32 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {6F5D0FF6-A032-4356-932E-865B601E0DD4}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {6F5D0FF6-A032-4356-932E-865B601E0DD4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {6F5D0FF6-A032-4356-932E-865B601E0DD4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {6F5D0FF6-A032-4356-932E-865B601E0DD4}.Debug|Win32.ActiveCfg = Debug|Win32 - {6F5D0FF6-A032-4356-932E-865B601E0DD4}.Debug|Win32.Build.0 = Debug|Win32 - {6F5D0FF6-A032-4356-932E-865B601E0DD4}.Release|Any CPU.ActiveCfg = Release|Win32 - {6F5D0FF6-A032-4356-932E-865B601E0DD4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {6F5D0FF6-A032-4356-932E-865B601E0DD4}.Release|Mixed Platforms.Build.0 = Release|Win32 - {6F5D0FF6-A032-4356-932E-865B601E0DD4}.Release|Win32.ActiveCfg = Release|Win32 - {6F5D0FF6-A032-4356-932E-865B601E0DD4}.Release|Win32.Build.0 = Release|Win32 - {4327B7E9-B631-479B-8419-BCE37C986360}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4327B7E9-B631-479B-8419-BCE37C986360}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4327B7E9-B631-479B-8419-BCE37C986360}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {4327B7E9-B631-479B-8419-BCE37C986360}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {4327B7E9-B631-479B-8419-BCE37C986360}.Debug|Win32.ActiveCfg = Debug|Any CPU - {4327B7E9-B631-479B-8419-BCE37C986360}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4327B7E9-B631-479B-8419-BCE37C986360}.Release|Any CPU.Build.0 = Release|Any CPU - {4327B7E9-B631-479B-8419-BCE37C986360}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {4327B7E9-B631-479B-8419-BCE37C986360}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {4327B7E9-B631-479B-8419-BCE37C986360}.Release|Win32.ActiveCfg = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/oa.vcproj b/oa.vcproj deleted file mode 100644 index 5423215..0000000 --- a/oa.vcproj +++ /dev/null @@ -1,520 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/oa/config/G2k.cfg b/oa/config/G2k.cfg deleted file mode 100644 index 6721d48..0000000 --- a/oa/config/G2k.cfg +++ /dev/null @@ -1,30 +0,0 @@ -bind forward up -bind backward down -bind forward mouse1 -bind backward mouse2 -bind lookleft left -bind lookright right -bind lookup pageup -bind lookdown pagedown -bind moveleft s -bind moveright d -bind moveup space -bind movedown a -bind fireprimary f -bind firesecondary g -bind weapnext t -bind weapprev r -bind togglelights l -bind togglefps p -bind toggleconsole ` -bind togglemouselook null -bind quickmouselook null -set turnspeed 1.0 -//set movespeed 0.2 -set fullscreen 0 -set mousespeed 5 -set mouselook 1 -set screenwidth 1024 -set screenheight 768 -set colordepth 32 -set maxfps 500 \ No newline at end of file diff --git a/oa/config/my.cfg b/oa/config/my.cfg deleted file mode 100644 index f3bfebe..0000000 --- a/oa/config/my.cfg +++ /dev/null @@ -1,34 +0,0 @@ -bind forward up -bind backward down -bind forward mouse1 -bind backward mouse2 -bind lookleft left -bind lookright right -bind lookup pageup -bind lookdown pagedown -bind moveleft s -bind moveright d -bind moveup space -bind movedown a -bind fireprimary f -bind firesecondary g -bind weapnext t -bind weapprev r -bind togglelights l -bind togglefps p -bind toggleconsole ~ -bind togglemouselook m -bind quickmouselook y -set turnspeed 0.02 -set movespeed 0.2 -set mousespeed 5 -set mouselook 1 -set screenwidth 800 -set screenheight 600 -set colordepth 16 -set fullscreen 0 -map intro.map -set maxfps 60 -bind rollleft w -bind rollright e -set sound false diff --git a/oa/maps/intro.map b/oa/maps/intro.map deleted file mode 100644 index a22b373..0000000 --- a/oa/maps/intro.map +++ /dev/null @@ -1,16 +0,0 @@ -1 -1 - - -0 --10 -10 -5 0 0 --10 10 -5 0 1 -10 -10 -5 1 0 -0 0 1 - -3 -default.bmp -moonc.tga -nightSkyc.tga - -bgm1.mp3 diff --git a/oa/maps/oamap1.map b/oa/maps/oamap1.map deleted file mode 100644 index 1e797c6..0000000 --- a/oa/maps/oamap1.map +++ /dev/null @@ -1,225 +0,0 @@ -1 -36 - -1 --10.0 -1.0 -10.0 0.0 0.0 --10.0 -1.0 10.0 2 0.0 --10.0 10.0 10.0 2 1.1 -1.0 0.0 0.0 - -1 --10.0 -1.0 -10.0 0.0 0.0 --10.0 10.0 -10.0 0.0 1.1 --10.0 10.0 10.0 2 1.1 -1.0 0.0 0.0 - -1 - 10.0 -1.0 -10.0 0.0 0.0 - 10.0 -1.0 10.0 2 0.0 - 10.0 10.0 10.0 2 1.1 --1.0 0.0 0.0 - -1 - 10.0 -1.0 -10.0 0.0 0.0 - 10.0 10.0 -10.0 0.0 1.1 - 10.0 10.0 10.0 2 1.1 --1.0 0.0 0.0 - -1 --10.0 -1.0 -10.0 0.0 0.0 --10.0 10.0 -10.0 0.0 1.1 - -5.0 10.0 -10.0 .5 1.1 -0.0 0.0 1.0 - -1 --10.0 -1.0 -10.0 0.0 0.0 - -5.0 -1.0 -10.0 .5 0.0 - -5.0 10.0 -10.0 .5 1.1 -0.0 0.0 1.0 - -1 - 5.0 -1.0 -10.0 1.5 0.0 - 5.0 10.0 -10.0 1.5 1.1 - 10.0 10.0 -10.0 2 1.1 -0.0 0.0 1.0 - -1 - 5.0 -1.0 -10.0 1.5 0.0 - 10.0 -1.0 -10.0 2 0.0 - 10.0 10.0 -10.0 2 1.1 -0.0 0.0 1.0 - -1 --10.0 -1.0 10.0 0.0 0.0 --10.0 10.0 10.0 0.0 1.1 - 10.0 10.0 10.0 2 1.1 -0.0 0.0 -1.0 - -1 --10.0 -1.0 10.0 0.0 0.0 - 10.0 -1.0 10.0 2 0.0 - 10.0 10.0 10.0 2 1.1 -0.0 0.0 -1.0 - -2 --10.0 10.0 -10.0 0.0 32.0 - 10.0 10.0 -10.0 32.0 32.0 --10.0 10.0 10.0 0.0 0.0 -0.0 -1.0 0.0 - -2 --10.0 10.0 10.0 0.0 0.0 - 10.0 10.0 10.0 32.0 0.0 - 10.0 10.0 -10.0 32.0 32.0 -0.0 -1.0 0.0 - -0 --10.0 -1.0 -10.0 0.0 4.0 - 10.0 -1.0 -10.0 4.0 4.0 --10.0 -1.0 10.0 0.0 0.0 -0.0 1.0 0.0 - -0 --10.0 -1.0 10.0 0.0 0.0 - 10.0 -1.0 10.0 4.0 0.0 - 10.0 -1.0 -10.0 4.0 4.0 -0.0 1.0 0.0 - -0 --5 -1 -10 1 0 --5 -1 -20 1 2 - 5 -1 -10 3 0 -0 1 0 - -0 - 5 -1 -10 3 0 --5 -1 -20 1 2 - 5 -1 -20 3 2 -0 1 0 - -1 --5 -1 -10 0 0 --5 10 -10 0 1.1 --5 -1 -20 1 0 -1 0 0 - -1 --5 10 -10 0 1.1 --5 10 -20 1 1.1 --5 -1 -20 1 0 -1 0 0 - -1 - 5 -1 -10 0 0 - 5 10 -10 0 1.1 - 5 -1 -20 1 0 --1 0 0 - -1 - 5 10 -10 0 1.1 - 5 10 -20 1 1.1 - 5 -1 -20 1 0 --1 0 0 - -2 --5 10 -10 8 0 --5 10 -20 8 16 - 5 10 -10 24 0 -0 -1 0 - -2 - 5 10 -10 24 0 --5 10 -20 8 16 - 5 10 -20 24 16 -0 -1 0 - -0 --10 -1 -20 0 2 - 10 -1 -20 4 2 --10 -1 -40 0 6 -0 1 0 - -0 --10 -1 -40 0 6 - 10 -1 -40 4 6 - 10 -1 -20 4 2 -0 1 0 - -1 --10 -1 -20 0 0 --10 -1 -40 2 0 --10 10 -20 0 1.1 -1 0 0 - -1 --10 10 -20 0 1.1 --10 10 -40 2 1.1 --10 -1 -40 2 0 -1 0 0 - -1 -10 -1 -20 0 0 -10 -1 -40 2 0 -10 10 -20 0 1.1 --1 0 0 - -1 -10 10 -20 0 1.1 -10 10 -40 2 1.1 -10 -1 -40 2 0 --1 0 0 - -1 --10 -1 -40 0 0 --10 10 -40 0 1.1 - 10 -1 -40 2 0 -0 0 1 - -1 --10 10 -40 0 1.1 -10 10 -40 2 1.1 -10 -1 -40 2 0 -0 0 1 - -2 --10 10 -20 0 0 - 10 10 -20 32 0 --10 10 -40 0 32 -0 -1 0 - -2 --10 10 -40 0 32 - 10 10 -40 32 32 - 10 10 -20 32 0 -0 -1 0 - -1 --10 -1 -20 0 0 - -5 -1 -20 .5 0 --10 10 -20 0 1.1 -0 0 -1 - -1 --10 10 -20 0 1.1 - -5 -1 -20 .5 0 - -5 10 -20 .5 1.1 -0 0 -1 - -1 -5 -1 -20 1.5 0 -10 -1 -20 2 0 -5 10 -20 1.5 1.1 -0 0 -1 - -1 -5 10 -20 1.5 1.1 -10 -1 -20 2 0 -10 10 -20 2 1.1 -0 0 -1 - - -3 -groundc.tga -moonc.tga -nightSkyc.tga -bgm1.mp3 diff --git a/oa/maps/oamap1.xml b/oa/maps/oamap1.xml deleted file mode 100644 index e69de29..0000000 diff --git a/oa/music/bgm/bgm1.mp3 b/oa/music/bgm/bgm1.mp3 deleted file mode 100644 index 43cd06fc7884cc9dea00aaa1ad9c9c9619aacc97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1407 zcmeZtF=l1}0`{^H&k!RZLjZ^!b4pT+Qd1OyQWJABODaPGTn&Muyj(ycBtKWdBQrU> zIK5|gt-B3*-kQZS=|Hu(X$Y(VUrT9TOK?&=TH ztq#Nt48duR$(bq68KrsI3`{`22?Ij|NZbO5S%8p(;Q>hTC>RZa(Gb8E0{=fZ1u$?{ z6kDBM!o$FK;!$CtvjM}^_*v`v-gWA|`=G&n_?w8xa`CF^ce@yY$S?K(`1i&BbM83*|EUZ|$q)M<4H*jW|9^0vQWg}zanUurfx+)x zAp`3kmvz5){w;s^eT!Q~$NBg5-|ILO9<;C>h1#79I$tlgRpV%g{j$tQu`x7g-r?oq7vt7c>R0}+`TuBL zZA{Y*poa=fdATa8t8O2bVC3Q0^@_DggCQ{e#kPMD-~XNZ`Hm;A(Ea|tzUog;emYuD zQ;7PX{&fWd!x{#i+Zm^MxkP}0WdGOo=>JdcA3toeoDoxSU15hqgig)R19$TRPp)aY zr0ryT;(};Y{*&GMswW@v1^Txhy}!fXv*i1(PI<{m|K*|PgyiQccw{DL7l%0e2LSo3Kx|}SVC3xY>kDKm12G8r zCZ?n+lxLP?C9U<7y%XW0I^GAUUI5}Q)*65afqXj z6Hr7Hi2Vyv^Bjv(^AdsDff`GS5|gt-B3*-kQZNhMUHw6-)q$9SAvn!3IWxsMqcks@ zK@P~b1dAdQJkH3xQTAvEjD`S#5cvPO36#Sb^+4(ve=x;@=zky9tz~=nZo|}!i&=Y% zY9~yID63@9<2~=Pyt=&nqEOJ%cY-GV<$wPP?f3fsrTU@pUHdO9UHr@U_4}17h!vT)$gy)O`2)uIq;S?K!2R6XwsVEKnvi26xkbo`Oc7DMpXp!|`EGagSCg%9%1T9l2X{3&zxmB!$urJL;< p>f1&GAb?dwYwAr-Q*6c=(bJ5=K(NOE^$`d8t!CDlk2B5#`vcVeUF-k= diff --git a/oa/textures/groundc.tga b/oa/textures/groundc.tga deleted file mode 100644 index d39612a87a3c2b7e0fe539adb903c58b5cb180d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49196 zcma&ORdl3RmNgh+W(p}JMTCNxnVC_F5Hm9~GfSC*l#-N6B`KN7nRYtUkan7(Y?sUB za#eLzS5Nm3^DzIzJk62a{dcdKm#KAEtf*LNNwM#_=j^l3z8?Y+i1?5HO&}%^NJIk4 z7N22-*HnxvljuWJ{b-sG%g84RN?6KTnYB}5?ZoklqS5A{G<9UQIgXf{#w^Cm8o1U0 zP5!L3YF*KB#x{D@Hg;9lcV5!E%W2%ARjm?B7pRph?D`ExO0=XB#V<{vc@we5$P86b95*169vH<4 zilPQak`dtqL^uu+mV*exAi}Z(L(%cUq=W!M1R^ISkPsO{2@azmg7F9h77>6&gp(0* ztiV|2(VHOL(dY0JA}NT7Uti-{!AMaUTA9Rf5R~OiYYW@nPBpdWXxm7pPKIklkUu9Y zT~<~d(>0thHtwja*IC{%yuOWP@6}c;m}{3M{z1H^2_p5Zs2VAQPBs@GU`$NBXe!p1ErAm6g9X*;EFIjO7PR#vXdi+wTEUMCK~$araqds11qV+2}-ls{#1e`4k`H+f5!hC|1dftoDmc&h(@ZD(5Cn- zdmL;*rY#xcLgI5X$$6R7JT%=8G0#xc5CkPLXk#c+iAa(|{Kw?j5~==lb}3d`&ocEY z@}>l(OOmD&w&5#|@oU!ME5^Y~`r*sE!Hd$)Gn|G^h<`=LX;s%*P3NAWYfsm;XKX)X zXx>%VZK^AesY+KRC5zmm8J2&7?j9styYYrLqN*M(sz?R=(S``5GB}PG7|95Xf+(T} zMN$GHNC6RqfH2qsEFu&g5Q>ctqb7&a<3g!np_I@dVqhR15rjvCkpp5`;i;lXq&O&n z8xYS9h-C)GvO*JiVd;_>j4GLAN~7CRY*#YXnn1Rs(48sF+;px#Q(T5oHjxbNBtsWg z-HMVnq>1WKiWaJEK$t(x%bg%-TT(bhiA;Z{usBCvK~Oj0G~H-LJ3-lsmo=h=)i^;J zj$eYJxZ=`fq438?(SxHI;qjaZi2pcFP!tOh!9+x{LlVTXC|yd9B_88~m4J1n;JsmeURAh^)v9boTwu56GpnJ#oRcof+ zeaFb5ZRF58a_E@6?w-178o46tI4x{Gq3t_w7`UK^*PeZC*PgcZl)CYRtme3^Vog%I zEG}7;6wL|>rn$LeOy?lg(oNU3;HA|lrY|MO9E;L~#S4QX*+Eg9uqb+1BqJn}8XQ3k z42LbiBSLWjp@ir#T4FdeI)V`tMnwb>5y8ZONLo-5KRiPgldX=tG?5>k zER4=lrI9UYju#{JV+1}V&5=yBq*5FyWEYZ=o5d@_N@@todYr5Q#ji?bm8SEmQn-~F zf@-q1jcXrZTe@+w>QtsLmFh;)+)0$YaD09gu`rol3}KnhD#dV$bGRiL6mK+A9uUPw zL^6Wo*kSOillT#d{NOk)A{vgQAUsu(fH9>J9Y~Ttjp&2dbg~~s$xo-`r4rl;SX)fC zArhqxPgjQ^l_6=0P?Ro#4dcU7@Qhj{wzCplI0y|c}JO^5te(H;TWJ< zds)VIlCloXDNHBW64CmIByngAH#C+P5zC5*VTHxeL!-&Tk)$Blg$P1$1SvM0o)p21 ziC_eVQ33$}2r8hRh}9(H4M{kCY_>8gLmHJKi%1oRB?(|fWh#&qE1K)g;^n3@orxrK zBHolrv8U2KD7G(~Uz{bZ%obOo1l6hR@?>TSl3yJ|EeyqZ;;8vq;##t{g`{c77L}nm z`RNRA0woW?kEfNR_|-X(d?a-waTP&Oo<++|%+iD;2!mreVF|pb6j4m7I3`6DmM9EP z5QQa6V^G=@yd6dLpg83jtg>`wNjjq_gISWrF2-<+vD^|gryz^vM^fE!I7>970*oo1 z?9SwuVgY}3OOC1~OWu?vYe<&XXPSEj6)XCVv*z9dWB0zH?>w9Z*TfC`*fmH;#(|5l z1^T`N2!3VTDQW#CuVRIoKSOknVyyiba}VLyMYZ(OZGALL57XE|R5fJtN{~cXJlY(U zrie%sMhdRPQAESwb_&On6I5O4}oL~%q*CMOTY z&P^b}U#^S8=wi{@sB~p$k|-#iADSvnz#3A?wnU;O3O>(N$7E^abBsv@JBpEuQ$>5YFQSzg(&PcR17UxPPd(!A$Bt18am51XO;>490NfS}s!8Y~sEWIp! z2USsz<&~z>yeT+yY_=`}DUV2#M5imFP^zd5Wdu?YmZpqCX%ccQ>C{{_yC6#d^{yJl zt3>h2v-nj6X)Qz3#L>5M^vx`715Q|yNOHvHSR%0I7@`x&DMHKY3EDQCt}Rp9k|Aq| z;a4U?F7k{)RBM`dm5nE)joaFeGuENY&arEdk&J^E^#d0S{TFmS`>Kw!P>8vetCWHn zoM$xC+LvYOCcrZH(BO}^_A@NK3`09XQJ={vhBO$HWr;;;<1$on>8g07A}&oHmnw@- z5yvJ8W0C|hNxY~8UT6$2C<gQi9=GP;c4<;UzLeCOAfb)F0W@Q8!57S46gzOF-b4VW|yMb zB^gv-63!W$ZH&&+$3f~K*>gBPqPQYQ)xFbfiij#QEzNpmIP z&G8r=?09^RDK5tti!sKcjgZ@s)Le*jf~X=(Se+%R#fWO5cH`xZ3|%YV+zE@VYof?2 z(;2yuXhS5%7@1>9pyg%>%W>*vim{7i>_ThWG8Ij6{Hj=Cb*8?P=9>~$tO_evITb77 zx(#*bS!4eN)33n~`R8cC5$HarY(Fio--LfdE1V_zCduA0Aa#(1xZW|YYlLMVpcy)H za&m%}UOXxjwF4!W`_n_HGb_N7vMSbh~l)x=OX5Ji;`u}HEj9&3(6Lw++Q5u9-( zKay3NBd%lXy9Cxgx~3_EnIDg{!7oK~@-rFUbc!>B=7M68Ms=l-ovCD32K@+pqNIwZ zs7sgBqvVZPRSOY#m#%|p?&4Ux==#@xV z-X4#4#OK%&uqOEKvDuK@^)cD{2$ViD(-4ibC9?czSryULO15?4O|99g+Eh_l8owly zSDeD|B|$dBSYpto=uATtN*|G-3(M3;WEtae_E@wzBvlohs!G7wN#aVru^kpwUYp6x zPsBUn!z@+-Ls`euHw%nyB2ybnRg=ZcjYI1rGnC;O+9bwtk+Y zpYMPq(25ZhM`4V>d=L;|Ip$132@OcEvybB*X1a!G_5p&ek6`OZYde#LwXxia6nP`r zHNq{LXBW+Lix&h{>%5v{+^RKs%Pz#cto@X<hgP+sBz2jPfd!Q*jDmQQCxPruhHpf2B@>+~1bY(Bnus+gVBu(+ zpfLmt;j7^^^&DppCwGwI?7`|AGZodDikfVBb(WwkmFb7Pol0`2QM_p+PjZeu4r7Jg zOrz#zvI;V2dC5dq8rhS>D`9Dx_=Yy7x)CoZONY-Pys=gk!%vgdaJ7v>Q=7!n!BkX1 z@_}3zoFWNBs>3o&AxL8s){d9f$h{*H*8o;n9#3>7Gkg%SSP2w}qlFfg1BS38P}<-h z5aqRWZ8KBfO0o@*k9v(krehEoAm2R*_*1n_S=@q%Y<)noG!&&trg;d;TCTlEt;IgInf}#BkkWyB`EZI4PHgskvo71KBsp6VMZfQKT zFo9K+3`v!dpFqt^AiLv;t~jDI9u5V`oz4NqQh`@B&}=;d-zdjFN^tgO>zlK*O*nH0 z$=pFuHKJuTXhC^4rx?X5MAGxqD0xV_A3mX|8foe#vZ9_St0l|ppzv{x?QC5OSzepP zDNG_d<8rJq7&B~oHanjzDPyW@VWBy`NR%283vC52I9V2ytPV(22BoUg=zgxLQ|cL_ zsvDCT`SEmLhOitXuSLsiQQ}H?pCKyGmQ>bx3AjSf(}zse}@i$@Y^}b!=-F-__6Y40AmroZK;9!HlGANl*kqJ3(`e z60HN7sy3{#8&Z(2VOw0e#w}SC!E5Czzj|F%zbOR#TX)5sr=`8;RD&0E6Iac1w{5d` z>|-~qqt^`sm*s6|I910eg|isTvS<@DyXh={rB&(Z~RZVHi#uQn7qNqB7R~E-D zOXQa)@ypZ1H56+v&E8LiG_lF{7IH`5E3TU(21AU1DQ#o z7b00DQ0y4SZjpOL;2P%G`dOA92IPELhIX2!2^x@emOmP6g7h1arH#ze#O0V!EDu3a zj29Ipk*q<foV+Q9XB?~V!Ww(n`7?@|S@|Gj-^-V8sa+!*+9CCT{L|=P2Wld ze3bQ&z*8A{kbZ;HRiPQGuncu9)|gIrVR(KN(;Jms6AfeE6BR83sAITme! z3`SGbs|%(KrSm-JK(?X*t!zZe>(eAPNLg)`vXN-%=D3Fh-eIn5fNkqxS-V-bo@{e> zmZb;cp9-kvjf?$bLRUXo+lT`EA^y`8u^1DQ>cLAZS*CWry_W$c9x8=%5R#9mWIIQmq?DG-%=3#UpNJjOt_^>TzC&hpk|$0cU;i0$#2;acAZuL{^N(H*;}5K z#|3N89n*L9LsxZ!SBxXqE#o&$W7qXVhr0et+P;hWzKgn^19jIqUB@|n$DX&>%-9t>@xX?EyaP|>Ybs5aO zaFix6MHZE*gOZ06m2*rT0yrk7ZnD0UV(x(-2q{Qhu_CYAR5fgC8c(qDr-20#9YcI5 z!A0{&_?Im5%9o)QKnmj4tPAQl_|4nG&LjNwlh-VZcipQ`JWEft!`CET=M{aItTXq$ ztIs{KBMXnL)AuY>ceO)T6+IW!{g;h{SM8%Wy_5F~ryu&J?t6xASi3K2n@)>MmpOUU zWY;LhF__~TCio{QWsB_UHPHRUO(*2dJM!8MUg;7XPnsRh&ZsbNMp?Y1EL#y3FY^2| zY}XjWGDtP{lC*7DWfMkPgAtWxaPyO?j+h*MSf(-*DGE;GholL@(!~*((vVaUA{sPI z($N;gvxAdGv1#&*9CHfZnn<)|a`G9rE^XzKrFk1jg|&0f*m+jfc2d#2qiQ^%sNa%R zt_kv|DfU4e&}?lhv{5+M5Y9PBf_j=e3iu21M!B|boTBE4`Df{%{)VI~;xI-mzl?9` z61xTgf1J7nr)wuU1{t0)LCK=5ZbQ?wV`@JmEM3CGPqq!P{nMPnId>UpT5h&QX$cgpfPVD4G}4ZOA*$0MS)K zuh()?(Q?wzb_Tw`-COI+VH-9657jRF%am zgxZ%xam3{qBD2(ynbP1?J|doph-Dz+m`5v`0TNRHye4o%0RL1u5@Q7XlZXxoTAaF( z=NXchEr8PQ=-GD;UbYTg0%gG3dtm80r*GMnmoEd&BUyTghE9^Hi<&UQXCJud9-0OZCG|U^+HFzgadFwY zuyjpOvcfA`X8Pwzo++GboM9j1T83%*Ub3n!N7{e}b&>4{^&pLCP07(EW~&pkdxZiXUXbvAdgvk$&jC`*QE_R zlBQFN*0WIEtV4&k!OOf z>10J!)O13*mLwJ&Hp!*4mw zY}h4NZIY|EIIVliq3iDD=LK8u`;WcMUwX$q{n*%d9l#e=?+VJdL}gq2(&O~Jd3xRq zJ%52wwl1pM)%IO>%-nO&J+e*S(G6V_Hl1V?Ewcdj@?+wP8)QRKRfeQCQ{94b4zZyORc{Jvcf<`Rl^uJA{!7-u z%jV8KdHt5OY*|t`Cn=ogmM?M2mjHih*`la)UY0*8a`poUBk+qesUDDDf@6h|DRL~k zKxXSzd4}q6_NaI4ySqQV=w@AWFb? z1OB3hP2e^Xz`yg12IPo|Yqo{E&bfP*(OZVWtMaY`LCa}Q!!EUEi&nEO>^N_keo(aa zVbz(>D^7h{aO{UgoRVc$#W7Lcj;i~> zICj%KehW$l>?Wh~IJ<0(TeTsn-B#4^$m@0_HCuv;W9$+TK$d8Qi)_~<$2dgS_faAK zLF#7~A&HK-Y-0>k9+|`k=`tpT7Zyto2+lzSWCsLcUkv}agnC2HuOL9jA)^4(*E(bbgf+G(4>qKd6sshI>keRzxj(&`|CXSpJ zPs>M1>v5Vkq^>w*RI)J6?zF_RRVCcE1?L4n+IU}q)0sBQOU*ou^dB$O;u8#o&6hTcU#g~FMM#H2p zmJ=LK4h$tlM3Te8i9sPaSizzA@JLE*JS#DUpO7kwP2?dnm2_4vS5Ux`mQy8V1Yt?K zq#AGR;Fl~YJI`5%uR5phn#XP`doD;?&j^}M@@qEvWlN0w8HRV94GnDG1j^Er3H;wR z#Pp7W6ee&Datv)Ct7cKXNe~8U>iAS;Y_c3f^GS@Ia%*oUzakRniYDczi|YXY6m?6O zydhEF!6{!>Ht#^jqXOA;4nrXZP6!nl+F?-pg;4h)|3eqnv?XraRd(+|3#J{rVx73* z9J^x~ysquOq-Z~{=s3^}Ty@SoEZ%sp>eT1;=e{o8{LnG|NZWrMz?anTX<9G1`fufp zKJX1caChIdv|hG$T(ET<7(32uI`;Kl=glKG@>ZTz?0#5z@^#7fd%ne|?uk2YDC=W4 zJxA-7d+e5D=$gL!g0%H4zhRf3JIB)xF?Ib6WgAXVlR@?+pmZT|k^q>}!UQ=09T12P z49W=!BZP(%!z0One?&AbHi4CpB8X4sXJo55e7{Cpt9Jr8?JQMow!EHZ>r>Sow+vtN zPTg@$-!qQhQ1)JsweP_eNE&t^C(wOUBoJ^+-FQ=XinJnGT7i^Rp%t|`+D59Og`#c1 zh|5x`p2#eHaEd%6O__wZkrmZ^TPID^5KHldV9as!+-zknUe^S3+f;Q+nyLwQP*k<5 zYTg#qtdsqdSow+u!j5UEEiI0F%a3JJqT zMUi7;sPPHBq*Q5Anlvmy9GWakB|6FSdbX}r?3)l3%~BnM>4qMncS_cH(lU4h*s^o{ z9;8iu|5atrMN#`XVdE~p`WUTf0a#+XyfL0%nJq6zNz2lO#p!|~SefDyl&~n7l^0F0 z1!SlZsj`r4eFnFHWo=_SI!5Yoe-6QO&lj;iRhbyk+FNd+v#M^;Q1HhxV0s z%_}e5Tdy6vZ%msXShha&ochGM`>}rUnPm8uu>YE*=TJR((=c)0JpITt`A|3UKzp?A z%SUcXhpx&-Zfd6=I@aDTIQ3cC!FOfnf9F5>x%2pI{oHfK*j>f=J;UUEC@8k+hk28C zTtiol9edjP4O!KiqI6E+9U`b3Fbq#TN);N%3JZr+gFytRBLb5U0f_;jNJL0#aA;;s zBq=VMoRlm=qI9Vl8bq8lFh!F@FU-+&5wzW$LQuMP7^SP(-dR$~y0~S}&~pfE%|3j` zK6KkU1oh~usPjP3d|KGJ!>ixo6fKaf11ME1*W1T(_fRcuL|sF+v>eGRNTj)=@YZm& zAt*x~maPXX2v$_eG_^2HEiiNr#hF8LOv&8*9Bm!J&`1TcYU<8VG^DAUNS#rQ^ zuRL3?T{|D!PkiJ(^=aY$*SV)YwXVIZnR=)gy`vtwWf;3>n|b1#f99Bb%R2kia$Z5%7w1hd9Q`C+ONO8nNw7wz$%12;VG;OXm@J26B0|y-fhmX(BqAs!C>RwH zijNG($HsA!QWc4*ihwvtNU8?ZB)p~r%n#Cvb?DHQ&8JwEo4kfo%8mnl_Z4&hb?4|^ z_rwFo=w02=b!qoSaoZlqT#C*;UCSwL&4#Re)zY|XtY6Yq&MFEH$IpH9d!4Op#TwAT_CKL6iu`TOtY8G=3po-#{`oGhF=?TYr|SDHY~!mTrF8qPF9- zZSbOF=#r)Xg0cG?^aap?a*G$4zByL@Jg0P3RI>&6YkDqNL3x|FYZ!mvS$fB@^1{CM z(!Kei>%>RyQ=b-J{I2@O&&8L%_iVp5&cCIddZ-(_XP$iMn1AM4eA~J3+y+}P|IEJd z+%o^f3_O4Kk$w5?f}M}+uKd_~`!9_*{#3I6JNvN@jSJ81OK&??-}SD&@Gd>G!8Q$C zQ8b<6lq^x)!&q}qmZBc~4ADeabjFd_0=nAZP;6ibHXt-BAT0d|{9xFH@Xzo3)ZQhkst#bi=y2(HJ5&9`ZfNG_P((n|Iohn%D?qG|HQ{YWqm7eTPE)6yAMRQTU7rH&eDt0 zwk2?iLvtY0Y6Ig1h%g#>R|0}DfPWyEyTUU9!ZQ8~{@9>^tl&^`Bv_~7gotQSc)C8F zQ%W@S0RFP-4f7GbKhzIgH4fjjjoxvM-OHbQt8nR^!sQqK#pm|fN6Nu#{FXD^+D%sV zhM;0i2;xl9Jk8clwYE`AEfjqtQBy}!RO7{EXl`K^J@;34gcHs5VcGf66{gWV2}FA= z$qsWpjG~HUZifGm?HS_0(8Sh<(zYba>(aC>#N07S-EoL~OW%R6<4D!#moBji<{182 zrhkr6xJWNqVU>d%w=HcytM0o3f$d&;$8+pG*YWpZnUBBcI{8V>%|CTL`)~Dk|5~#D zO)gNNwU^Gtw_OX*e+z!t2;<~K!_*@abYwFC{$tnbJ9%3l7N7pKZ2#-h^WPNjed&Yz zzxh$#i8mGJzAoSU8kz|I+6&XzZFT#epn8LrKZ~~yWEwjYxg}vawm_6FC_xCeC~$27 z_`zYgpm6lR;~$!i2u=+QMui4r0}!ZyKzwi*Gc1aWh~!76>tSe40_T-wKv=O39j2-W+^H&q%fx| zOlA3?>}Im_F`R;IMqVb#nSwSYWf{^i<_x?&m0*XdaU!TpFj3_f=BTOxf4aS$>m3&Q zCfS}5thp;$UK=B-O3}7LPa&*c2hm9m4R6&NP*7&U9Nj<5$e$zU&yx!m8D(p{#$8~= z=83zm<#!9W-xQtxyzunr{*#|twmz_*d{cGnPd#t{kA{2yRDI>g(!HZg zUhe8k*sOoYfAS&Zf5-B(yp31Ir#>k=|8?2^R|RLk@a%l-+WOGF^|5FBlcKZVKt_T? zQMLCa;BOeY3HXcaj=nzKKM9--t!_f{N`TbGXKF$dML|)Fut-8kI05kgE&m)Hfly>n zNM=}YP9P!^fxra@QA5I+hzMR(h9Of>NwoA+tOLA?H8{@p@tanN2PjFSx3mM-T{Dlp z3(xXbUzVNtxb*a=1v{_ZE6ehj z%q~eTkX7SRx@h2^S%w7QoEQ_}pUliXvVN(m38p5xy@QuGDk+!&O_k^zfD{xZsEC%; zWx|ZOa0X<2QOz-^ztI1(3g@YLGc?}}**`}sUgkjw=svJd-pO5lo_FknlHJeB_P(k( z_+8ogZ=EOKxX*r8fA6m&@Bc420+xy79-l!`~O4{lc;FzIFYjbK}FjozKb-zHh$qr~0cuRl|u`d0RhxLkm^1 z>9n+dOHjT<11Z=wKryss!f=q{j6%?0?a3c;f*EQ<8v&@zpm75Q%aU0E>#toC{4=H zCuN%wG3FFdnV5N5f?}+!06xgO`I8)aeFRqRQ{J}q&KLxVCxc0cZ zX$Ot~%{NVOjgvhS)Pe;7U)iw_DuH+Tt-Q4tE=Z5ZKY;kJy8J`U)t_?DeVM!eRpZ0I zkAM7s54`t(bw2(_{sQdJ}=t-*mvxG_woyZC#3kLkd3BiHcNAVv_3yEYS zVnp#+J5Jt6ag5L$!`$*!P2WZL%ze+&bJNrVLEApPYFpfP-a7dp|JZva+aJLR_3ylP ztvoYN-B$EpgqbYp!vxQmFn56K>Y?fzvBJ_6Ms6b30x=(p)Fh;-6Vo(tDax26IWo(H z#9GsGY)FD5o#g|CHcMENqpW7xI}}ATx{6hK(Ht{(6l>~4s+y3xHoS8XTo97F4NxRN z_vV!@;vB=-=6<4c6x0}1$9enME&JR9_sUbp;!`tF%Eh`G@+OfAXFG+I{x( z>f65ze(=A#-u*w@9{j!G@TbZP-&LIXvh?I<1zR8GuD=IiZ-t7s{Eqkd`&9>DH(&d) z?e;INcm7;|?GJ!IFevBtYwzx7`Fr0~UH(Jk^`C1G|4?!EbNA9S=+R)%X&$-)ny{{I zS5Udaa1P*<^+@nYQPKv57TUY|-mV``wbebv_2AW6W!_g}WV?hD(L|9JH z#?#sU3|>LDtb%54krz(s!EI7F3;5%$J!n%W)-k{+m=@QpgDFwndQw_@obI2_Hus^7 zy%g`HxbB2`=$d!-p>yGpW8tA~?y+U|E&Kd4Xm|nthTFdY{*eC*FMZea=$~uv|5MGi zKUN-m2lcdg_tQcM{*4bkt1o}0ozGwkTzlUC+^5XZ!yKh{JZ$VnNj$Ct$-LMZ`(Y5ZvY=~g&NaYko5uK4~@<1@h z1`!Z}Ss=Cj+V-X)f}jOXLZ)z+@$o>SLO^S$SZa8KoA?@f&w^ zu(?zB)FU^z&1adlyV}7Up2g>Yzi<7OYwd00{A11dE!EH!`M@PLxB;6^Kz`PgOp5ac z>BeT9v?7yV1kyL;naFf?Oo}od4C?8c?vtPU&U{h6 z|BY|w4d@ckg4yRD`xhVQ0$=UFD6Lti`lqnEmSlEeIL;Q9ED4NeBSOgmL7+Uq796FW zqv9Ko91xlo9F`6ICoBXT8b%F|d|b}``3@J^7e0~qHB?WhD_)Q#TaweOQE zHW)QKhLPLe<#!5>0r`2)z5c?y_*4&**6|zak*nIC^Dr9)mZB^i6MFk;`lcL7IV5(d zyh-3TM5-bZr4b2|=wvx;0ThC?97`JEhy}$H?Qujq6zeo@eukistZU&q208Wtx?_N9 zKN=#li)Q6@$2F}d!G#D%0Q7&D#Sq=&RNt(mW>edJU>><{n*is-!@Of}`#0ZnuD)wo zc;<%qKm4)f!QX-T_zu2tochGJ`?2lh8`Jtr3Ko~hN7;_Z=fk;pu0)N9F^8bIqKP-|R z87KHp{BtM3`;lcIB9$&HI`>sW*I3PGaHVVXnjQVfZO_u%`Rl*N|N0Bl!V}%pUESDq z)$pOF`<$$PlUuPYhWzjB2G1T|R*4ptWHQ0!Xbn$O2E_>jBe}uRV4RkM{ttd#ut&m0 zj6|{%@Q))o5*c13&rei0GR-{<7z&$v$d(?6e|GVlqJ9I^EmP0F5zKF`r@$Ht{U)bu zRo<|p?YUqax(br436!_hXU>)9I?!|Go_bHbslNWl)`$OGbN4TWSAKx_x14ybU4PfG z`ogmQ(thk!?&b&nt&gCS@^2rV1<%F@(5yMvU)k2)@oc>Z%(MCSFFjBGrR&MR)ZYA) zfA34{=4;*ROXKQG+uBPDbapFm=dQoV-+WcR@oxU&V?*x&w`?)THH1>sCoufMXjAZi z;2#_c3W#T6@R5@I*g(M>}#=F>v|FhY68cG{<*#vn*|7P2Exa^NTWA zzC?oUXz~uuH|R2=xnPWh6`ZDw$63wgl zYlu@auWZ;fb?!O(E;#xx!h$;&^2QS&y=vOdYI`qg2M={aSGD7}Y>SW0^N-b&4=jt% z^G(exeQq6hwo2KnTvm-L2QE{~7SFfBcX7hkviQ z`7$Ui_~7(hv1ler$kF>cV%h1%QzN6&TGNd)Kx3GI!^7{+Z8;_rEGW z__pBS+rooyi!OX$dif9K&^uiEz5fz5Y{nF zDOplCwwI`?A;_y>n|`apnY?_ms*$DZq-(*- z(g_BB4s^cdOUk+pecLHh=Q-Gdys_(fqt~2Aqvu0AL_Wx0y%*)6Qw?3wOx`lhKe8^r z11Y)?MlDxn*0CM^!(pip8s3zgTIwt{|U4pAd|k+pO>Bcy7K(DP)v)VP2PC} z_=8>w%eDE+x$zQCf#uk{&aDq}&wf^X`TMGyf2zCtw}$)wXnyd|t@r=deD9xtpf(-; zP;vINqV=~;!&iAV$8p|Kq^T=iUYo?s4}tu16#s1CpW(mqf9StJfA|f5coPzV4h_Nr z{|^iz1_aZB!kGbyibR5&tZwFdCmFUOykmr3x~%OwZyLEJ>$=FO+M<^p7dM_YkKE3i zf0hTW%JOsj!c*(?eaqMlP5&ij^DbCNU`oq1wKBC0SYZj6JmUzqSh6FT?aPvsp%s-F zWp$RU0x2v`6BK1h%SpO=h8Y}U4Vk<`r~*kOCz9a>^CbAL>6*49{O$cb-=v^)Q3kWf zx(#K+2}u611)iZR?vbmm(Ho%s8bGV>y$Eg}@xUed=r!HUee3cI--(Y4&V3DPXT`Oj zY99Wr@%g{iJ^4q;^`CMNzA>!7)GoYb-+UjW2@oP+7obyv(F|;vck4B*+?@|0|J#ng zYdQYXdE&!@3*SHmX?gO0v^@UT`g{M}c<=9R58?H%jo1HBwg07W@Nj)tMnEB4}zU z#^xhY&eTFRx56vK+RkxwacmtlT_dC*z#p`@WQr3nsb*-}$;xJeu8n5xmQNg`;))O~L6mzSD2~ zd!LtF{I=%ypIYDg*N*4^t?|J>N)LZ3z5HX%^*@$h`F-iRFMONtS>_%Yh7Lh`WmT?G zi>3+rlVp2uwxlYC&{1w?Zo|NMXB|G(y+U*rGZ@lPUp$f_2Odz@h%#90R^h4aeR zGsdCo^3Ds4$_+}v3ae~G)_UGFc+)<1*EaLWI{U~recv{I6aEHm>uGQd9^tQVVyf$M zM5U0`A*;kQycyC`7_5-2ZFqAF!Q4V~K~?Q$yL({KZS621$mSQN(mZg#09K9=r0GVy zq%KFBQrjhH4-b)bwyxs%h;3fIk zP2KDhpfT>%;zQhUsPQDy6W)z+M9oDy!+?Yr~lIV_J41G>)&c_|21#_Tkn}KV2+b_ z`t#iF4;)Kx=_c+%izEf3OWh`?a+y)S$jTjoJB$gmyr^_VU<~))^Z$|lmJRv;Nc;&* z3H*=x`&<4G3ZaAk5R?p;D7{p5D-RrW=6P9>Sh+AJ1CrTHRKne;;!JLS7CSGK>BVqM;d%&~SCJ*IA?e!bjzNlNl;|7+ z7gmpU+jE}RcR@0GLpS%-vhu=u{5|){Pl_-9 zQ2prdl@I^sz4Wd6_$%?!GxO&A1?Rr1xbk~IzUThmyYBt1`TEb*7rra`^#~N71%>C^ z=375?KKfhF^MC7o=fC&7_@A9G{%7mcf33XrXYaXh9J`<7p8UiCW6iY}*11P|@I?$= zQFZM@`!A|n=hd!?3a4m>Ht_1h6|KM+4j9`Y{z3nQ`U|ofD4$2emoOyo9~i!bLj48) z69U&T*#Sw)B*0(O#)J4b_h%V;vh2fbFo3n5<2Ril7q8*G^OS;BZsiGC^S-7F#?v?T zV|T%rapW`}yrOMBDFjW@Il?eBQ#AExacLUcm&W!(=7&4TIGBQ|YO$(XlA#$4jSO2S z!`ewTw&GNE7*RQjTa?Z&K(PzKB#(rPLadTBPHDQR8n11Gdl_J2C)pq#da}VOXX%Ag z0Q!%*^%R&fJX4^J-%<}9N_!9Zy%&Uomlew(Pk_#aL8{t5bDs3s8n_N~{T#aWKO=U9K&w*1^Q_Xrek{m^w~_kpbC6u)j8EW|8F zU#6rA?uZ2^2m`{X!2f@>nxI3%P{E<7z#t(1D8N5B1RE3t79f0JC@n0O7oDNcX6Cc? z9XxP9YTDBk&1h3Er(j-Ky~!yD2f`dNcZOcL#3}*%_ol4rw7MJafgW0i4{iOI4Bh+M zh7*$FMevP7Zpkq;Ch_uP;ewK&h^TIW>xY@Vl1z3HL)|2E48Rf?I~kf*vb>2PsfRmy zY0Q#TW^p>V0t1myu{YC9jhPkaP@9B6$oJJSu{QFdJB)t}{;tgv&(VT6t16@{m35O9eY zfkp)8goomy!?58Y=#Y@?u+Z#~qsJY;b^C@s8dFCJGEjA8KGgw*I2%^e1IkzN^0V$J#r8s=oPC`L*Ad9zYlN zvHSQd!|FS#g}0P5kK|)_MZ-76gE!>Ew^UD~ zxX@T?RH`rutx3n5Py`zaF8yJwVcE7wtTSCu$#IRS%a+7Nb6{*EI|lL20lWitVSwlw zBzuNwd1LINX)!cMRjZ216Q0CD9jL*WXZ}i1SRR*qHIw)K~am7 zR;AK>(P%3adbo^9lr<2K9NN|C+|o=z6+C}H=pJLchOzoKq@*T^SC+yr&pdMfw&8Uh zM12><&`UMq$c_qBebj=7ujpOh7&VE{Q>D!9K?_rf){$2TnuVJE81Tx*m`}&o4 zAlg-v4`icvm1Fk|Gmno1Rgm1bJ}TY+w&C`lp&~#R23t^Z@w-y!9oAl1Cm!lLuZZgR zxCILg`w-F4l_M@sqBx^bs<xOZniLMm2WN+c=Y)iy1A?;QaR;F>)Tk6eToydH zL>-G%g(pZ5F+xOwG7N2lYta(_l(u{s9uoog6G`@df}+KOyrYkq zHx3C(QZf&((5r%IjMFz{YicrO6<}#d7Zs-+U6X|Sl0_(PF_M`diMAjTmW?% zaIownw7h9S)rPL;qH6-u&OIA=BS&r;`VV!zS0r5*B>h)RGY`C*@41h^gsHk};F@~q zx~%_-5{BCIkL(*S^G%65<`hd;zg&+z!x2zssIaIP`o54 zO&?FrqZm4rMRTy=DGJ~QLF-yErcSi6BSYJqrfL9l4lI}tk{tb9kO&HGWX&QT{wLgTx%tn`-r9iqOl)m=*OA|N%k>T!J@o= z*VcR4J9fKp_EFyCJ@de!dGM;P|B80-s%8APWA=e@;RnF39L>?6qiIF+OA?4K z7<@#>^FpJUq2Z)ZFx-aZ9C=Yfa{|Nhh$u>MEFB)B5tA-U$Wo_ZjOjR-)mq~S?o4he z$I>nLPYPT^7(km>nk*4|lYCc&=et{*1PK zMP33VYJ%o~r^occMlju@91lFn1RkdG+Zv%*h5-K@eILd+K(LI^ywig6bzRF@*U?u0RFvU?51=51+XTtdRCnMqI&=9`U}5ny7*ngrSI!tUHq;V*wo<$psQ_??bDbGdV?ZI0roOCNhp296=8bAprg%q4)rx zoxn&Vh=6}UG!>p86q3M=M#_@WhHSDUgW`@SdDB_H>X3$ZoV+fMnI8^rE?Qoqs616t znJTSH5|zjEisN|2$>MU17EBAh9M2HXI}G^Kt=&Xp6UEYs)7C-#jiI{Wo_iuKHK%F0WXZmBHhER=B=7s&gD~8NykHDb5L|@BiWJJ%8&u(=AV?lOuToPtG~#oC6Pe zn0c6U&QTO8k`k#vN~A>PEZMSUIZL+XB$q=~x$?c$sC(};rUw&%LH{eWHdVLLm=6tX z2twIaMLzr8d%y4Vto2)m-ocx($%hT=9}iynarFA{danG?cl2ZDl{fWpfi1oRO}M)2 zK-YcQHF7I5_c${D1XptPeYo>lE`JYgbNjU)3m3kEe8M~X&^`Mow(~{y;7!xD-*(^m zbML*s_TBqi@9jT#LP~ez*Ou$Q@3{MCY-I0Dn0XeuNFiKHWu4Hf8x;y8x-gPKJ(Vn7Da2QV^BVT?c`XaVJD z=IB}kwl0yYpJ(lYnyU&%drL=ca6}%Tl19b_{-J7jAII6lb@z%RWBS~pt#KX2cek8z zHg7;ff?EIyZjG}O^=BBG!P%&`bV%HN`pAS4X3X$}Dl{$&PDlge_{vwi2ieX(9$+1b zMN4r@)3haTK4a)S506`B@hKY4ZD&8jpT%|9onF+hK2Og*^$y-JwOur|U2yioVskq* zbT2e=FFp6HboTYo;ZK8Ce;mB_6J*KxQy*YPqifw$7Pm1k^9&wGCho?kp&)$_!=H1H z@h_l>3Kvi2)br5nLkBcG!#BK3??=ykp5OZho%WW?KQ>8U=b4w0)ei$p&wVQ&gie1F-Fg{2`(@_R_ZV?P%3ee(b^nLDy|0t& zpN6L2u@BvKb{|+8&nRHjb@hW$Krjsm6|Sd(Y_1}q{wTYljG`~27$6O;U|1_TZVE5R zsEraxmfE;bTf~ctt7~DXizq$^eLPJg4Ic$_yU5cISude%361d`Jq%MT)zHkgmBfJ| zU3wP%1aI3Jf5 bK6w6AoBO~93`%`jixPP{o|Ga0pYG+gH0aqGz?kbjWqx}lU~9J zi#Y1y71VkzLU0~#`sVJZ*53nmsr%@=o~v&xI^lowU(~gT@w(h-zSTQzp&(?eJ)WiAKJk7lQE++;WcSdI#ovy$y1^8yS}j4Mm=?N_SggKmb9R{IB(7^%B^YV9SixrL!?paH`IE{&(hn3)N7oPqek*|?@p&(wN*A%0^T z8tK|1_CMy#JY1*%ZV+eT(6}}_rAsXU`(wzhYU|bvaO=09^W$wlcEdk?$Gh}6dFDj} z{B(z3HywOkM3d*zYaFr$Z~tNZ(O<{z{;BusPjy?L2WOu8r=UoA0Rv-t=>honR|tq`{~h}II6&L51}vo@0PZ6Fg1Gy zu0$qprk5UPPk)@-dWFijp8uxp;&&Z5&7J?YY3Hl-=4Vkn0xKWHATiy2UD*G=a0Qal zZ|lwx{|H_u@8~^q_c8DnhPovkU=fiCzO@T2h$@U+$+mK`t%~lXas2Gs2&*zRSt9rwkj{Ov}(M)N_V#uEoFPV z05Bq5fg(?lC2{r*9{k5<<5PMtNGH`eK&tM z_VBM`_x{{}{kM&~U&WW6hvwc%FMn7#{dsQnS)vFCW;9`tB|cgFii{BTS7cFt zo}nl*w}A5_v92ZAJ-T3B*b$hRh`(LBC31wq+=$2)P~H*?c7b<;n3H86154b@`Tg+TYkNFOBe*RrG6>n3ichp+iM z_JGH+71nLQl(lSw=Rml{`!0EhuLdSzt9+V2^`dhRU-KU)Z~kHY=CA#ie*?38=G2Gq z-^I2*$?U$WyZ9PccJ~zqpg2%O7M}V>Zd-ef@IZlvf%>E61D_*_{EcxHycmA+qm((0G|uA4I3}=d#}(~gR(ci^>JYB{m}Xc>D^at zH+~*`{I?M(lOO-R^Tw|b!-Q5*kdILRhO@78>z{{baRR#Unz&{gJ#zIQxVtYnI`;rV z^mU&1m(B+}F9b^Gaj5rq>{)T9PA};a^O*8zvc#+(2T8ORy+cPfOfd$p2gdK_mfmaK z`n>njcm0=t=(_lA)44ASo1dgMKZ;}6vG+yc($}beX7^aXw*18YMPrcnP%W(XEYk*Zz^XWuYN$ zVnP!i*QX|(4XY@=Ha5uzvk1j^_Pnh>)<2Hb`ofwO^`E}obo%|`#&bycz*q<^zmqxh zF$ODj=Uyf@KSKRM62Ov!)_U;K-^SnhH(Y&p{tP8R^wh_Y1mrhgHtl`awDWa(`4f1i zT$9(Vqwob_YIe@j1`N>|J76HdQ{+~3Fp{I}$$3R+Lh2jE8ARkA5(Y+Pkx2~@F8%xA zi5rgot8h|7Tn&F&Wb9sc;aS6}4~wTiM)8Z=pBHvMPoMo9=Y`_IxAptqz?7QbhW6=0 z7;wVl_gn)vVEME*qW<$>QsKN`$xo2jVRChpE6&RGEgD;=!rCr{6kprGRp;5tELV}O zR%D2~AR+cYY;l|ekGwL23y%g(5GH{zNe7_70c;~3z`&XyjTfZzgH%Bn7fBeZ6oyE( z5t2AYmV;-TtN`Bzej-ng5)<~!w4;8-l%5m0`?!`4DNwHAv0DEy2tokYV9%ogoUr|D zX#9G1{hU2ZW!=yWqy;PGidUDW-3swdc`OALMqwgmrxY{d}VS|K1O|)a4%& z8=r-jK1i>BhWfYeepk2tDzfm7ckYH`^3c(L!P>E9Xj-=vR*mTeV2h-|QP9JLu6`h} z@Mh+jvAZboY%nSGN&_RB`W5f!mGr{B@Yo$^&sB5VMRPMg+y}nCx%fuZhN<8IG949E zE4HsBs+GcUkcrDlVY~2;XfSm1{Z)bhr8YzX5>pXpsFGF69KO87%sn*)A&{f6j8g;Z zU+eBOre=-V1xa{ZjZ@f3{nhzZG*q!miNQQL3n$|(D?}7S*Zed0W6STQ);@@@eSpOe zc}afntJZ73^xgZ*$diAJKK-|Wdw**``X#;dWn}q9eD&k{?XOyPzb%~p0-O23;%(RT zv2);}rR|KiVO5`5P{*gGfzcDpY!BO1V(40EnkJ^EiK}m|v2+SO1Na^pn@*BdDuujq| z&tp>%W~2Ul@E$7TlR|qp0J9WvmJPAJswgwGqxc4Azsk`KD-dMKJbe+j095K~FfGxh z6UCXlFjIi-Pz)U*e4s%aCUM+V3T|6B6&o~AWdamAdTRfWgV|HmKG+xw_~?{&x3pZo9pdHB)aaSfs^aQ%;s7v7}S zK8-KJjs972>&v>em$9XHy^FW()7KmW7tF2b5iMy_vp6A2PSANmZ$H;s!ik1VG^6Tk z^sQ3&fG#oPs9$sUz~ywDS-PK`c^DkN?diSh?L7((To3dg`+BZ=2&3Qi*xY0Itn1Ex z-gNPG>*4p!hi@A93EWlz@{iT`qf__YgEw5IT~lF678%1MMpqS?z$ocj6;=?i2Q9u) zvu{L;+l^tXwG;9)9wZ;ydIAlBSC9njAD@X3OA=*@BMg+Z+DiiB7^rZX1u)o3GNh!& zD(H0?4m#TnX94kaRC_D=K1ywnrAi4cMF5bo=3UKe;jZmy*S5W|AoCAMJOkjrh1$0x zonUjF)@PwD!90tozqW7+^*42#vjdhgbmRl!y!(o??ZDrA92mV5fw6Z6o5^=z_HW#K z-FftL|E)g`-~Zdt{l5+0|CixA|Jrr*`~2xwvAO5*g%|m?&(aGYhvuF*7jKxSuiE?1 zn_D+jb&HzRj0yxK_`zcn>co^ZFod%tj^wDnz|?MxPY2t#vjh9_iK~&>2u~UOqZ-eU($OP9OUKkEg8fZbPkd5k z2~KU8Rg3zE>EaNb@23Ka!gf%Zb~4>cB7Bsnzkx(H(dae?%ZYzV;krp&cNHJTrLe$M zrww)4Qo~UG`&&fTNVUwP5ZB#E@R^Gx(W4%{A~GMG&k(M*ne*6GP6SeAlKZ^(zk-kX9|ovlM6mj zKr_p(#JmZ|Pv5W#eMm?7Q%@d&Dyjua ziHb@+nn)yynaXsa_!O>(gp2QI$>I`QlQ}-*t($S?mb`T~l%=>9>fVivUGh->nM0#BhE}1uy~fnR)VDIU%{=dbq3LvZ=t`jfGN$LU7l?43e!XJfhCbIa@Y-gO@#{*TC5e1Mbm%+1<4t96qjFdfEc+@ww0P>+kz#?iqRy z^xc=7<2O9hw}D>F;J^Y`I3VFWpJX>aNUY&g^^SMw3f_C###5?>6aQ}l$qY?$Fj3KeP=Ey6z>?Ns%S00-XaeklVk}{d z!4FZn9tzW0NduMIO7Qbp9tzh_t-&rdj+@04XYt=+%L--eU|CJHqBcWTHgHWH%J{Uq z^IUBB5Hm7e;gmeN0LYIvyQTwkxB-krEdC3g{-fZ;?a<<*_{!5PutM1R%s++h1+MD4 z&Cfco{ch;aU;0i=H_*K|T>3t9?km8=;%mUmJOKhLjA~5ZNzB~IEIf!#+;DZDcXsVr z+A*M9Qx+EG=}AFki0AF*JKDGwNF1AZx&jNkYjvR(^9~SwqvO`XinsTIcjVAFbR~*L zT;HLu=W-A#uZ72LJD-%!ziit2Ft+%}IdW_rxZ)VOhRZ#E!;i;pmS~uO$_sA@p20dG z@fW~kJMs_gF#{Ym``i$*vj(r6=(s{H)`q|1OwH@8Yn%}P_V%G{(d zw@J;VT3rj0EI85(taIoKiBx$3kd-I-3zbYqITf)52=8#<5nu@LzDncYWYngrYGP&V zP?Z3Pxio@BxaN{7IOb^Fhz=YiM~?hG7f^o{WIs^y(=_d2ojGJg7_@ZwYV)IHbe zby)M@eZb03&EAboT=#VEy1UR@+tk)COOsQzp@C|5soLHqu($H;P`vkOq0KNfa#i_i zWv*J^h|d#FDDKjZckohRU_XWc2w>lO4*Ua$>FK*In=iV~L-GDmYUwey2hPDmTn^j? zKoJR)jcv2loAa7ri~_ot-;G{Tr~^Ske|2wfQ-9 zW?B^oz!oH7Ou*X!^hTcz9|EPlP2_ zx<0ptkuCHv6{EK{2n@ZPpF_MSaw&t4FeEqnqxFF3m{hK8;dR-U%* ze2lYsbnd=;_?iU(oURMR19%Y|?HU^j+Wj(GFD!GSBj`6)WUpx*$17MOnwOcvIm1;njRh=R_0fII8jvo~$1 zQqw$dAIsX#wzO2+T7}LInWv=icPkz3wYmaR94lkG%c?B!;~BRgR<1 zRcrIWs`FJ15<{!T-l=yXI;UN#EudwM*qyQ}Jyw1NNl#%rxV52LRYt0<<14bju%nw- zt8LV|`fQ;wjjLbp88n3_Y}qA$<3<3Z;r1P3G~9HCz=SqzAZkIKSb(YxswxP3^o?7D zY8q_Gkz-80{7BN7eUx8&o(Ab_?E{EOFad17^daJsBWfh{D0OhF?IiH$1j*T4JI<|F9r_}W;IMb<+YJ`(r zeo>A6OlDq_n$sj^bSQpw3Jn(g@2J3AOU)T_OV;8kdkgNuCb&i#K%^5>;_#3tJR}Yc ziu^r%SBYb8Lid=YNK<4Lc1M|W3(z}Ue#9O?VI`v^{^Yi%nC!YCd_UR{% znWs(+A7`KV=AVY4_?>+SC;{pZR;{jKU7lN30=Ar-m19EZ>}Hsn0k>gl3p7=pBuU_$ zUdD1z1p%QZD>cCVUC))Im_PyJ2`6yfiv44h@MygHT3^eLVtqXN?WYga(Q-iw0(8ZGo(yKijVUUZ#0oraHS6P**tPChceL2lVuT2Tm4fqO^cyW>-Ns`rJ7pj1t z0-Wvk9Z&07poTH?Qif-6DWJTK%qZe>vh=dHeiNK?=Md3?@K4+U;xfHLG=DOuUSu{t zL6a@G^xQu6*f#YT>p!rJ>v?GDS!Cf!aQ0zf{3fyfQGalc(~Gj`l*&I0xvvPmOUR$J z^(;jeu~QXXUm3%OFdeoqq_#F0T_v@(O^80cBvq}b!_>7}Q)J2uELD-`=~JaXobB{o@0D7qY z%%{cem(a7N&b-3-8};`ryqDVgqHgc2?Ab2}MBDPa;d#s)Z@CAq{ImY41#xf;I(GDa zrS4uN;9zajB*}`JKpCX?Ob0e^0Gvv+d4;ivaR!a)AyJ)_nh2R8GKd@^LQ zah#gvu?e(sa60p257~A`ms`;077PWTbs))GhIrnR1KMuhlAJYTo#VyjA0dKr9DO1) zU{hT%Ga_LGm|uH#G1$Bb2(vl2h%h){7F2lu;}P)n3f&Nybc%2b5G-P97iq?Cd(jTNMUI;21b?k z9*(+^EHAKit;+B?=-lzXeShb9bN#v^I*aHfd1xAcQQ$=spO>ZpnLiDx8-R!4Nv2od zD{Ow;hy(uKm#t_sV!#b)@%9(tQy)i86N6V!znZW7rhfO!?D_}9`yaUgz5A%Y9^C27 zk{q3U|BxDuZqy(0OGS<%2$zE{jxHkV&vv1s#o+n5;uyN<=qQ$zLx$^`d6cIl$gTXBiMT$x4_bf4ciKy0)2MgkYBXcE!*psG0_I(AC!0mujo93 zYWIKwAWdUQq;D5!T7;SwDLQYVaYO)k>Q^24B~udGk12h8ToV~lg$5CBqQgNfh#Y}V zj2+p^G^Q;W784iAf{{Js>uA26Twqrsi45OgEp7yH3n<8JvXIb-sK!h=S_`DJt;6K$ zHHRmZh&Ir*a1Cv8&yW@A8>O?}4ornkD^d%!0i<7zNJCSq#DX@1UuRtd!gkA!qxZ58 z@`DBV%U;yO+qg^gcrkM?UHb)RUYL#>_TQw>!D{hE%M}o|e`&_xd-J2<+#}D>RY&Iq zGmzlL4WglxnzzR%48dU~!~-zB*2byTz6t=YX-KTYuY<3c0dG+T-w)C(r3QR3TRFu+ z;{<9%sak1Xps0hcMjjnE*DaYbxhO2V+s?!WE+vP78Q--wpEftF+8S12A;C}&xhjsj zWk+%rAtM?jfH?b9&R(sxM{6i4G_4Xvqexa1tD9xkF1>fi7Mt>97yX45_=D`JX?to4 zmn$>l&dgY#m35SuvQ#+}ya>Ef@IzY58TJZv{u%i3Kq}UkRbu5sxTvKtjAW!`5r$S{ z73z;THnxjaIAxnPQR|1}W7dld?Qe}~8k$+qnoz=nQ zTaSmmyAkGTpbv$PmRz6DNfAoo zZ2D*MO{rN^WI~Ve4eIae$E7lN%GE6*d66fss}|;Jqy?d&P37n{2FGm4S%g3Zi>sl= zwP10@S6FoC=8#E*k$SbZK&g%5B}pL5AeKM?7R!atD+vM>rX6*zf_#*2q%zGEhKWQo zp#J4#Llw;3|E$07ZT%g=A!B4h?&^bfi>YgoxCcyiD?s7|dM>z2yV(B_!ua&EK7R_3 zJ!jiFPuE3a^ADu$#O=WBy)fJaXFh7(|EA;e_g&Y2>A(Ajf%|{yyZblXg7)jbZ$A8~ z@nrFruK%v%@Hfq8U&0<37&(T*!P0sb_170p=~HvY0Nw+AGWd>>Xd{eb|A4?vWHpx4 zpgl7YyyY4XR}!w4#6SbaTm$$cGSgEnh>L17B6*zC_-4|u71RkD9v3eZJSupSR=}F1R1t4!;#ks zG)-bt2V!58?tXJ@!jT5ybJm@mwShY2@0XZcs#STmG|7a{K@i5voGFN~gkdJ)4tah$ z2O|KCU5r)W1wk@RGmt@ZBI*xMpON@9u$&0OXyP{B{K16>p@j$O(;on1*mm$Ol$rha{y6yH zuYGs^+6DRL@$VWBe=1)7O$(?OXntP(spI@txwYrW>x8xk9x=co;5yO9r?mv`tV?WY ztd^xf;K34lTYsdTR?v+kj-4eA3RDTcB8A@$FWB-*GnwJ4;l*UNS*g5$i6nYfw)!<^ z%NcCj;)9p#rf=2F+`RUKcM<*RbUpAcfn zGdx)mPbh;QpmQ8mST-c=f7IZ0S5b8TQ~mKSwfz6;kDZv*)e8kF%h;~KL)WxHG*w11 z&bS7fMtb5_cIs|=>{fi_dUOQmn(KfWB5(moao zLp&eLSx&?HC(>r2x}@^lJY`Ix&x*C65`~FdQ-!CPsJ~pClPQo2*D4B(ob1~-yzOTb zLx+W#JGrTwSVEqzJ!|tO4rr!^bw~3iB*%EQ1`u3Q+%Vz%8yXjT2359Rt*KL?Yp+!{ z@+3IAX6dzQhB!kPXK9i=3*Q$Y*Gw(Ywkc1PJTkcCu=`cyII=W^SR6^B8kP;D?*C5R{R0l@vo2-BL-+V!S+AN^5Jk2L=$3By#r9^(}OS zF-0eBty_VigXkDM?AH_1x3lvPU>3{GK1fa7Nle{IPT!5rKLl70vIhisIi_yAfKp$3 z4~ZeA>pu@cpa1Azx&Sb|`b*u#?^0-cLY%zyvUvWR(&Zm|_rC>yAO{@Tz!f6rE4M0- z%^~VnZfh5rnz4UIkO773L(i&$`1m3&)`*KL@CbA%nYm74Dlnz6NIQtlGty?#!Yo$9d0aW>OdEVIV;$A+1rUMj4e%e zRgRD~?}*acBQ}+))y+&<0rOvyG>cgqTi?vHmY~27Pp%>oifz~`kQpYt`Edav2aXw;2AZD^3U=IrDypuEZo)5!Lm6L|(AruY z!9J+n5RXNNWF3)Ai5YwQwjX`Pp#%RAvVE_EBb}ZiuGGxE?EJ$#s6K1Y(yQ;nKkJyf zV}|o?@^%=>kLSPaf!giyzl=Wld-vVHG#~wpl@IxG{LJUc)1TCx{iI3yh$QJ?)W!6^2X`yY)7Q`qVFTPM{*b+yT|E#}ImsVKoW!56XG%MIZB-x1d z&yOmkS(&21)VA?m!`dWKe_!cBYW!v$sP7ZEkc|Q#oVjJk(7bH{X}o72R#PGLPHW~Nnk~QT{E;0 zHPAxHGst$VV0+MKATI2Ah|6%Y;PKi&xu`nSA2dstILb*H;vdmXh@(Xu^V|B{1HFoq z`ZFNCcJ!)JbGG(vd(W<=1BoQtwyyK8zI`tuV+IaGW7m_Q`k?+uPdN2nY~`tY{(*h! zwi6P>Q|}iqzV5yK>)6wO9eMKi&Rc)PXE(F^I(}0B)W)X;V4&XCALOOA_lU*WeaTvX zS{a)a-&HEpU&j5yqN_sQz4Z=voRJv*BZB*Ci{oJ?(pd3`4aG5_@FqMtBrCL092Z zKr&9C|1dasEz^G`)43OF+^{6)WUc`OiZLJ~H?^V5t&C0>v-9?bWn*p@=igc!yXP>FUMg z(FhSp+ZkzLS(sT6<(HLcjUMbXAtIF%r{716S7hTo|I!oGA9L02 zJHHM+{#*ZpzqVfcEnYr&^TeRQ-+BohCSar;2XA_CI)fDC)cbh^VGJC4@CnE)E09V? zbkv)xRar)DsEUh(;{Q>9eHqv? z6~~X$*lcv1HRYFOu&a3ctKGdd-abKKSPUgVazYv(tqu0q`g+9vUR8KV7aP?^h86x^ zvAdJ2$z!mKEj=bICr`o2XBS`I3P8-HWo2Txw()7e%z}TYxUAKPM|KLxZ;J_UGkUINi6dL1=PZL|8H|)NK!?bkpruPIq-i(jM?EM7X zmmPbcW~mVjXK5kUzZ#%X)E`mHR^kXltbbh@(#F|liqyw5rXd)h$)aTpVEHv=WCNYy z7P5mveuAaztg#OvB3bC4lE)TI#ccrDENy!l5a+5}7y%%m|r ziTcZYy)~vLsxm_ohB0R(_H1wKkJBOr-&q|T^aRJOLV-6w0dzWf|Gcd~78v5NPu@Rm z&QQPF*@f&3F=lG69%FbEIcwt3aJ8$O;p(Xl3`x^-Djb9hYtp(^dEpd1#bDN5io)avmA#BA#oG3|z0w3qEO16_;8)Ar~ zP!5#Q(O1XU83eEZha0IDAT+aCWbcM9Na7vFB|}RMw&nUYW77uIjP}l5SI?!u@Kt=s z@{5o13y<)23Jx5(;0h{&R3hnVyr^ zt;%xC()rOMj6GFGgN z>MtXC$|@Zdl{Q>u6^KH>UesO5_7Z&|y1RnmBUgvn!Zc5k=gSIwZG+U>Mx;f1fNk&L zJG(^w0bP2=)OgC)zJu|A zkP#10Ujm+PY;^gy4z8(%X)E#lgVMybEWZLDD+2QH6>#CR1!}?cz1-qcc)Oa`KSYd$ z4=Br>PeIp&+7s(PvHgW->3t6r{^!1_Kl(j5*!}PQx54-SYyZ3d0A8TD|0Z$jBj>~e zh;xkX7v$MfeE&GxImpm=P$cygHAxC5LS}}@3_p$Or7=7p{Z`VQm|UaNMXK?WxB)cZ zxYA6mvO%hD5~&(%G)1AY6?yRzXRpZCRb%fIc>550s?I~ovSw;LjX@9CyxzWj+=ArP zt;EQ&2ayo<8)#<{S9Vnkt8!t}-LM^O-ix(gOtkI=8@3#&B`t;m?m^H1phh-k=TLt= z9)Z-PCI&=6zxbs7bXkHa3Qz>z3XZLe4zrT3jG`_BEP|{oCxM_VtE8w-9t1@NNr}IZ z0XL%=u@^;Cj?Az!xGpvv_tgPfb&xGiN_0gr;A56HKqk@GMQdFen^fdiFe^c{A12p0 ze4+SATLV4?!pqFulhEQ*KZ4!Qe%5~d=fOvRE#3HCa_f~3R*Q|#3s-&ys}Pp+@z4IB ziBJBou@C?E-go{13|HpNC+?~H&i<>m?kl?DmMApI^Nk_MfNv;OYg)ycMv0~vfnUP{|Z3npy@M`!sdG>A?uMj?~ z#;7Z|sLn5G3#&-C4E7zwai|ELrsK2vBOaT-)g~e&Ya1|GA6Lk1ZM5~#kMdz7- zDB>&p_9C*AH1HHtaX_G2E1?J?L6_)eaRYj5n*y3fX_|}Cys8fHLyitsvLe&c&iD4q zlQWnSnp?M>Z>g%Y_fvBZaV2IR#3t@X#_qbO@4J_uV*R831CRcK^g#6dL#IB@oc|UK zhpCVL&$%!E`_!xd7i{Oz7r?^*NAJBqL4+JYBW~!rqwgv{l!T`&2By}S7`H&*f%*%T zb$kdpAf6Y-stE^58fFtALfbWUVtoSy`51G{^i6zehAD_MWmzz*q0Ho&T8OB0gvOdX z1g>6TXhfEnlqIGKA9QR|m0fbQoeRVJ-*;eZK7(*f^c6+^31xIan_5MNg#{G5{JH~I zYRM3umN@$%N2e(p;D9)(|E#fL0Y*`f!La^isK2X|V{C-ms79V)U~ybDD59wr8jg^{m{gHB+S}#Y0!J7_%smq+-e7X=hz3KV<;i)E^P!)! z@^1Fr%g!6W4Br1Uy3OgWR~P{|UioR{o&T8q`2QY!_P@2=`D^{r&xI>LBFUof=C8d+ zKQ^9ym0NliMaUgC>V?ygc&S1Y66pN(ZQ!m~3zMwsFoWr#;N@RsDz7pSKOQ>0BxuPT z)S3`L;BR? ze>>84<^=8mo}(X*W+HOEX$!gYp5hsMZcQ7SlGyus`VN-11!_QOqQuCsPS0YFhNY;> zFKUugm`H-akDvsgQ2DwhK9pDDG#x>iY+ohQO<}s|EWB7e9IgjpNpyytO0zOqPA=ES zs|j$qemdPlrMlRh5DxD~b4L}-8dZi9r6PvHP5@Zw@YF!x=;<+KX9AsPiC*03QFQcb zXau_Y%P!0%d-i=N*@DD_u=F%~<|7zPx^Mn&@cy6LkA6b^vHlTJ)CH*=F57-qCqt`aLrmggI=65F|P}ZE8RnSdymds(i&TJc>ina zMKWO6BU~hXbN%HMY=`iI#R$X462?JAhWrmB1DY_-l%|=Oz-kH%bpgpiG?+kfrf_x& zJiTm37tPelws)x#Gw4w}8#fe@368a^#@43@Pnq+l98KGf#%*`~h8d3`UP_jp8a+^W z*oSnZA*_f_V7P`k4w3W(MPeFq#Bn?Vh-d){UTADV{keDy`O*KZzY}V67T1g7bE|zk zexQcuXLG!4wucRB78AvHlgUmh&BNuz#0anFc*rzc1;i2*3)(L!!n>o38>d{3dqpb#UWT@9GEM)fdV2j|y9#6wZ9o2psF;)8yE#Q1>NI`>wli%8FjJ zf5_((b{T*cGg<}F9VX)B^& zkzC*%7CZWCZ9O7qztlU7_N*c?jgL4)xkf^f1knjmc(1wS}4v65d#Oh*U zgYBf&cqzO9?0X0Uf|b}98xOZ{Wyg+kqlby%BcgK%-4vpP+jpJam%zD=Ox#SbKg;cY z2HR=(@sESIe^)yC4FIHYL+5s1=P!JlyYOx1;&@r*yWm8X0bz3m!-bb5+Ci9qQ5aUd|7i@1pf(_uMtI08^6U_xXl|hE|C5ST$h^en?n&Dv1|kB}q@`y5X*( z3xZX|$Q6%(5yut^JHX_JQGcc=%n*j@q8J#46k!DRLy&~=TR=yF^mdl6NS3B)h=_G} z1G9|%JVT4XoeUTkmh61A^IWL?98Or6$VfbcAdSEXuL+GSgJYNu)OrSLBjbwnoDT1w zmeZE@GtTxcjF|0>>*n;F!asug^W<54fH1kh*OM5JLgzs2e~csw`p*U~&s{4H@`Zk3 zZ3q`$M@*KNM7APCgG_T_{mV63kvz`k`6(K)=8`qi7*`x&i*P6o()fOuu*wtIQD_*d^=F_(PGL}8hg7$JJlrXBm2qZ}o->?Xe z0|;Os02G!TUFU+MhtY{^iP58Q??p^=Fu_p-#`(q;hA2qp`zkrk3YM*cWvyZw%c+>Q zAVf(;q3bw2yFly~h`hBD1m^{LLLZ%F2Vbs&VxqHMHNp^4f7#pm!@J=ISrKP3DA=Kc zg0o)k>d}TLt?31K(*~kmV*Lkr3UI;y4n9L<^m<_GR&?!2rbItVCNyy7%Q}p7O-o>C^Ci}L<^K;#<`fn_K*oa1A%D3g;pdSDDYST6hML5 zjpJt4MuhqXI99}FxVIXyyDsDS;18|fhiWXK*G}0B%i8!9Hu-El(E1&q&?tRFm=23^ zVN4vG5+`R2&8NeohnWS?^X??z`v9^PozlQawYiflNtd&TX*I@Mh((`gpe+|w% zq7<__NQG5_?x4}ERH_B5g@oS@5^jnS7Aj=&V$uXH6Y38kL)P*G2+2lRhGi;8gHjcu9t$jA)W|tuQoC!_YHDQtxQd^29ZyW z9)QtJ=okAiK&?Ua7`_60>;pA2_gsah)Lk;i9vh zG{UBe`Ui2W#&B6?X;u6BF>a7}`ecD&9rQ@WQxM7HEC2*SVfk@%{+AU&U z&zpBY2WK_C{ye(!e&)>QjTgSlpZ~gW;X8smz5jK7_ho7smXm8pM3+HgKcL*c**ziB{8WwCskzyAm)jqbYTd(5!?t4%+#7ZG=xG#Zdu!z z>N=VtS7QJWpo{R{!uap)7e+>vxp_m|nZVdlcI8oS?P+NGmaF@M0m{k5g48$8G4`;5 zE72wyl0ap(t&FM1RY}*P_!Z!_QsrcZ3Kxm4tfDDMG!=z`Sv>Hqm<}i)&8noDXl#@n zVmT8bji5oP=%C}szz?AQkbLt%`Op{fQ&mG2sII31Yh&rC@eg4?VC&fN4;>|@ZaIe! zH9dQJX!wV(rB>c;I{R6}&S$B$_hYLcVC>j-`8V)ifVS;(z{RchpqN-K_<_r51`^9oe57y-kk4CYC@M;|j|bF_ z27xw3tMycH%w;S?B?D476%pT1B`PP0E2y#ximZ$*L7*o(qLoyFCRYZUVwD=R7}Ou_ zX#C_5$l-S25nxn<`{85Ym@Ej_NRwQ7h9XLkg|Tu$tXz~Ls~eb(ZZPu=jqCQVJ>TGg zbLfh77(_#3t-u zTXz6?h(P}jiAa7?=I&w2GG$yp1#WS=12LCumV?7`@c3R%jSG7TJhOPZNh}*y2$kc8 zubI#ymSL`~slb2(9Yu^h2x6X&49N$@K%tuO1+T(nwgN*~E0yg6$p@ci5K zmMTM$#IQl4$+Ki}5`Wf7d^LZ0>+8H2XhCZ5CO%steU2rGRAG?-(}ac(%1caMkl-UNtCUrcl@(-FS*09n9?6oG1kg_h zh%T|Czyr>4Q(6DK1$YYZEI>Ylvjg!V;P^R$2vZoXs0qS&QpSr^Npo2LqR6*(Ec_3k-`E`wqnTYAuN<^ve7+Rwi#Y zR6MCamIuAsT?HWuw14H=lV_PoX0N~tiln7b^i(P?1C3(DRfR8gnU+j8;TB+LPJB41 z=1P1=q%oE%%~od!T#r11mJ3Uj$0Sr87*K|X(OwXRhb75rSYiW{*CO*smcQX1IWqTx zUv~k+YhTwT54eKyRrE}16mUKU0VOUYVOMY>^~6^I;zO)({J@xnodn8Y{hVN>^)O|Z zR~jnGW*W=Q;RV<{51j*`w;31ekNpNN3QWYr?vCK7p#GKB!7^bS?;ojeP+wT~_3VX) z4%`D59o@TTR1fB<+1uH*cN#XH!+029cqa_5_1t4T0)Slr@>vJv)z0U6a7fO4oLPA{ zGr#*d*4wAMM(OGF;;5#0DPt-%2vE?SyBU%_MFC-v2C)ozAqJtS&7+uZ$Wm z^aDT?0?}3uJ{#uUWFQI=&Q9dBlPP-K0t)_8r6X5rE3wil^r%1Hu7nQ`^~VLF2;Wba zCpemHjlLdT3ltx_Be0STu`zve5^g(Ld|Z~ELH)gBhr#LVzKLVc*s*IA{5m+}2pEwu zwJLH?2+f^RLw$`rMHd9BIIb#=lUUCT{NEX%e4sHAWe5vA);!jR4o@+OVnXw|9KK+( znZY5Vv^fF~oqJM$tbe*04QeXghFgH9Ts2;pLImCVDu5)a36tbmp`#N0{7#Ty@(>Bvg{{w84!*0u1mrle_;CyBPQ8y)13DN^ zpt+lO0v)^l)-&h>pmk3bM$70<)Sra<)2uAI1s9EGLhfAVHv=5`pok?sRS z!=@&_SnC;AxQ8tG1Xw#H_@;nPBTjJnA-p~CxKW6oocI%40%Bp1O%#d+C$Dnob;}GD zl~x8D=Q6|#Iw>rC0x+Y;!(yP&EOfe!$#QY|0kJ$O0`vwAM#y5tNeb+T<`#i}P@P5S z;b~+0mZ^Qq+`VV+yJYIQXzks%_g{u7z%z6M#(!k&hGrjw8`%o#1wv=GKO=(wc3(Aa zewduP17(gC8J+bTuI4k2;u?St0Hz^%%D~)PpQq2sKv8obF+DK>GpdW^j z4X;g{zlcc(dWMylrP`QW{32!=!$6~9foVupYElJpQ7bgG3Jsm4r%^5VA1TKP0%uaF zq`1z?Y8P4HXDSe&Qzv(|%iWz4dz;MJX^xJ1AhInk+w*g(%(N^!r)^xd^q;p3U9=Bh z_Ti+n_yFy9Z_gDyvJ}&6CL}MXmh9d^gQG_U|D&cJP^OyND4h+T0`{3k8slyKvFt%J zw$Z2#)SuY4mFX%ftW0*eR+J?(ZI#6F0g`F#-=I;q(byjJ8wHB2(%h`JcZkjHh`nR$ z8rg&Ih!_jx>8M@^izU3af>z#fSUwhGV z2npzK8ZLYdTxt#^;q@13q~G>l2BsdO9R-x_IC+nbX793BUrCVP|se3^smEBMF~iymb+gQz5UcR8mMP8ZN31 z&qWo%jR!**@-r}O(ZTkzL{VTgq^2fApx+Q0RJywm?PO2Q_?u3-;Qs;vseV-n2vy^0 zHJp9@2Z5>E3BbM<9)?D)JKKrCJ4bOV(0<-q+%ShmGzi4RK2`%vR-D803~)b4@%9 zBKqXqYiJQmCvxb9OW(ydK20t@OV2*W?8eoyD-KMtbtRsnnJa7LNT5H7(|BPT&q-$6 zDi}CRN{9qllCXj-JV~ICR8hqhh{Z$*LX`qfG$u+6mK|sdI)Mu|ts3OIW_x(V5r+$@M-A#--HN|$hoJny z=HCLF>N$1ej;y%t7`%}~w&tnl5kN0H&Vw`WY&{p~*b5?Tr4gIwNm+PMXlrIEAWHPp zST+jXM4=jy*GVTnNmwun?1IYBl%Q$LY5EF=5f?U}Rb+gHu_T4L4Ws*DZ^eLXyI5~Q&TG>{p@ zn+M=xDv8L8Ct+_uQ$hbg$eHN+a$Gd@C{B)zME&*H=YaJGMqU{OINhHT6N^dG~|{-YPE z)|cNz0Un%tg2`hLv&(M0g0^+hIlX&GY3mc|nlOOI`loOpcrcX_d*<4*GJaVZudGsl zC_vP|k|L=f<6NVFuBH;ZO){jdkhxkgPQ~A$af05vyi!(PC9bHFkSG!gRZ6DGNHiIl zjz2XdI^>snY+P}CU<)HeuBfJ7k5IGF5G)nM`mbO01JsWb7SQo6JF1o)ZTp^+a5@v1 zFKExq-55L_W~c8qEIiIl-1N5ZsuI&ePbbIL%2embf>1fmhWOy(orCrQHk{Z7P~K`z z^cAQ)1I33%1t?bodZZ{mHWjq$0EOeLWI$R2;k^q254M=7zu4TSaCRdIUIGG`wG%{c zw9S!|D~}-OWx-lp2gf_ye<_4*&)Ci2=uPjyHPjyzp!mXjITZiwSAd_u1wZ-Xzm326 zZv&724uJ}I{s7+vC+~un66(3)Xx=raS1f^XjdMV(Z-%!KuE46dTTSF0p#J3oqWiM>M^9C0_S`b%dm9p@~q+k{iT>w=+YAAm3Oz*SSv zWh6>F29Hv+_gmKAYg~CJK76Fht=72vSms8Gu22QfCi>nq8${-4uT@lG>x+*O>aU{` z79?yN4F7ZeD+q%Ip~Yegqp-$9|AXTHv;Lw4tXTNwiY;xmXgHYK|G%ov`>XBq-s9R5 z5(0rG1lmY|Km!m6u@PVpQ-DDr_Qn{`V8?NcjcvS*F}A_mjuU4zb(*HhO>Sq}rl;-g zxV=4X)85lR=e{1$OQ@DHrFfd&aJ0_@ipcL6_yhc5cN z*SygqUJ&4c(HwU-L_%45NGL4}{08>lxe`S#_OBxT906snT+Ju25r2uoPN+pwNa{?L zy&`!N7(WG%Ebq0IrBvssG`T7b@wck9cG@qB)DeIIq2kqGCYal}$J&gZlDVXh%GVa2 z40WwW5@!Pte}>lmM0V`yuD!VHy(b}`{sN7C*EyFyQcS)F+8g&9?%qY zNF6N_V~vE_1oIaqCsE)J6`W87;6nj{X30|V7l=yHBlRkDK3)pQ8l*UzIb)9HduWXKrnmglTU7_{x1M;ncm3r)#BB~e3=EyOG%RZaqpG4lji*!Q*efx; zj=umxE1AELbK)aO=I=@6KOPk9S)z(ma~ILG3Q|aBm?H3MGtCVE%n*H*Y0Fgrv8*jd zS4Wn+i=}sVXsm5=bF;+M$jk_7Xk%!M`E_yIk@8pZAHDPnOB_gE^^c$nw9|I-yNSy` zMEPz0`CnE({NLFZe?xeG?8zSn?|j1`CU*K|)4|7O6Pv#H89VQ9c+T!im^^X4r5RCo zi3SvL3cRFpNz-g{tz9^v$xSIMaI;jN$MwSI7e_zA%e6MS&LP)2xq%hB5{;pZ9;09k*_+X%O>?#x%aeXe`{DIcMtkFz zk@jj{eI7gY0cK$syZ4^|boknrBiFt}+C4IP-P&>_D?F1?KABmDuz7!4VYkxSBr`B~ zBZuMfq8aFA_{E|y=U@Uj6e9L)EwKvasb9cgt~Od5jHoH*H7H-jpXt1*KHC+`E$S7M z{lZ>@yBl$Jm1VCi7vbV|d;u8A`30-7va=dJ;tV5LT+G_(vA+b)EVC#MUon zAN~P11ol7fQOT#+#r`(F^>sV#xHF%i$%f9nzwfML@2a(G-sT%Lx_dZu3VwgOYOmv; zFVi^WX*3Mk@PwUQi1?eO3d`&GE1be5nf)(%i6AXqa?$do(@Xr>|NPHA5?Q81Zjh*q zGL1=^W|8p;UdO*!V<^>`B207A5IV3lse#p%Cw(19E7|}2Q7FJ1x*uEn&cLP52CqUb z{0XD&$?cyGT>LD0=z+Iy&D3xJ*DYH!>L_sJXUr9&ppVd2l?d{nUnr%ku_?#LO~jv` z8@G^5!_14#PlJxT$j2-rE3ZDs*^HVit!9Oo3Ze2{i2(s(JNDq94O*5Ty3IgVVV}5y z95Jn@2PrmtWEQ2GvaS==LuZ>Opvhb>MTKu>%Qt$>m%NH;Mc>AkbGyG?#Es&`w@V-V zWAeSfCZ7Cv{LZgBgw^jCt!pn4LP0&gEOF7({WgO3uF?d~=AzLGmzn$L6@HH^ML;MC zDHH~qOhHO-mdLn;@^~6jPXN$9heXQ#W0&Ahq)zqNwN9nhrbxrLnj>S7$aE4}xjuH!GzhL z;1lTFJ$g1jtdN>{U+a;|_^JBjh1RL7)k0coyJGH^Z|s_X^jh7)CxcghwExi`4-owK z|4#BV{rp)f9g^nK%T1*~E-6t)!uR8MCWbjeM1Qa!IQwDJY=;(BOWTR$W%%FypJAu z-GZkY^{tr#*m-*omqI6u9ui_rJtt$+*IEt$CV9Z{t88kka_)B9n;(vBem%SMo9PF? zpL_SO2R{1e+QJ#)~#7g{_niVU;ND;;IK)tY(VDax2nEFF6HvIW@A_{MjP@ z(sZ%p2KK*1NfD99{-+LNM5xLPWZ4?>JbN=e?S>MPAHa&Ue)7+;jqvPd&B9i6^=aGM zN9}7LwVnBH>l*q+?^PYxEgZY-=sg7$B|LMZW%+Ky!mYZAD~$*@bszVFH7y^>aCf9g z3XJ}}1fTRw3I#)So(n{tETExGOK~v4$|1<#3!+A4#6&5q$c`{@ca#p5)K2>lA{M;t z*|OFHRip%+tE|e7H^SW~BJsD%J6G*hv!-AY@to%51rh&44>X`*wfbcKNHwsgJ7;Kdl4;K~k~rytD01NB#bSiezp{Jl%r* zC6^D$X8}(DPZewt1}ka0LY=-)O?cI!wo1jH7uiaxBS7^!sw%MbEXGMZ);9VT5^jEZ zmWaPhFOlkrzf5D4D2!yV%5*3DpX5rJ;WN2foF!;l_5)`2Mi&swcVO7+iP8-wupyG+?mK>~-N*WOSn*igzat;LD!sX@qff zmIk?@90>(Edx@Ey3>FwF5MnT@O7k-05_^n=E*~-r`cj})EVR1`ez0*q+_n;G*^efG zw|2(gv>0kXT-9~FHvU#k{4L^N+IEDnBU6b~CfGc5T54xD!~1u_^S8@sL7;bvz1qdE z#%}(6Z1=asfB%Q#{vUbvKLfkJj$Qp>?b;{RN8Sl9?)WD+OZwOCt*h3W1vjve67K(I za0^n%U)bF6d(yc|F~^BN`(LGTDO3zutRnv62+)YI^V;$W$m-eu+&^;7tN5E=$6uD( z|B`fG;Z*!hRB+04mrO_dE}!`CaYU_!?fI3%@LBAUiR`iwqY`@W-#z@4vfuWw&+~54(+q#9825#nJtESTjmSj$6&M zVv3MnqB+C0PoIiKZ=a^3T$576p90r@J_W&N4s_r@204aOre*MyJ<;-?y@@CEQgO1bR zOJ4senz!Vi%OCum{AcW)KPT@0SMQCVM9+OD1fuaRnz>arwBe4Obk*-K3XeL=hRmKA zNGgt`LLZcC@ty!eR?O09i!>V1Se8R)kXc^GpAVt5GFQc=m%eC<&cIwXRhN+|k*~_A znhg>OPXMRDAlKxinn)Iv-YwUO`i>T#(a~Zphp!hO{HXruv#OOx<%@SK7Piahw-H{hnYr1xc&BCQPCW(?BOA2?YknkZ8y2t{ zfrDTu=+HS^GVD#Dl@Qzp3(eyT@*gW1F?qp0NgDv?rh%{RV*1lT@UaH4`1{>e}`UPv5pd{$>dov6B9pUN9&eaCS?uQZcd`MM` zBZk>-uo;0|LBuH4&M1?`{n;^KmD@xjpudC_p2vv`1{V4 zv>hvLm@A4*I0F599L*YIgysP8rzK9!uGBJ*C{jb4Wynj~|L^$o1Sl{^rX9gUAgHxG z7J_fW1@-Uv^Xy7F0+}3#)QfD!%>8xz=?P?&=Xqi<5KHQ(-8GXS$us?fphLS3?hF8= zIrXAo0uTck%NchSz65=|1~$$LWt^(4Uug>*lub5X8N)9A-r9SOLh%$TW`# zpjlH%PgX(49#4CYGn!$pQ9*d878VV2W-d%80j~zpf6zOcQ4oT}gseRxPJmajECKcm zzu4&Q1;}mi2vUQoWFRjvQh-`c^{f>KtAe=R9Z$~}Qsfro`|1}%gXe3Pb_5+`|AWZf z?W(z*reiOLE`Bw+^P4Hq{ttgY_0FHC-u=tu(?5;u{<`PJPkT{-XFz=DNyE&o(BP%g z&g13Lc{ZUV(3fS8f}2Y5e+7$#mX1I&Ficc?l$5umJ%n9cKB@IO{tUR83y66ueK|4a zCR2S?GRv|!0#bQ4^{-0DdqGpkrb_q7bwbu4-BgwD>kouSOAyv8Ph=G#YdMOtbo|Ku z-V@I|k3DWb{thy&edlqOdD(gPlfLucPh9@N@a4}FSOpz@QayD&IB*6xg#741X9NL( z@!YaeOU0-K_eOue(c5DzM4%W_0B{07Q!SMm*XCk{f<9G=R2x(qn7%b;B4S+Jn~~o} z4lLOd5x_769&_qn4Wq$-n$SH647n;Mi%@9*p(hloQGDvjApV{{W6?fqAPI{<0J|AH z=fZB?{N0*)TD8vy&i){|`SZlqFZW&lI(h$h|QHzNO5^xiPpp_ILoLH=rM-)&;>5FwWL!0&10?>8eD{1zRr7iYW7%82y`l zaRin{?PjQw=qvaNe1bF($nH+|KfJbr$P7~$TiIwP_%wTr_!~U^*@Xk9;vvMl9LjL z*Q@>;nTCyGA=QG;k;;s6RW89#H^2rJRU7e_p=<*i#avfdnjrr0Ju}@gq_>b}YMr>) z2)u3I8Q;K~Z)BqajpgNgCF9q;w6^f7hIO)dr{mbu?xRm2p&*Wg51k^vPvd|H9MAF% zS;CO@rjW+s0x?ik<2soEm3`n3ua5j-@^zdFiaIp{Mr23h5K^-Bl+Q(VADzfIm*Pv%CW1pGfV+) zhsJM~PHfjNKiPZoyL(T68hz_!bnW{s=f8jv-+t}~LJRcJ)5y$rAaSWAcG6aRFsFPh zx40w26=fhx{z=-#{f|5a=(Ti#eDj0kQDOYbAW7-OgqQx0RLRXxYtAAi)z{cSNAs?w ze)2}}OgrQP`($PQC6nhcg-O%rryD?I@l24f7Rku{lwNIim7}Q7hmpEBt_S899IEMi zs~y#y!L#nzYG7bZ_*)5e*~hi0sW09uo!l%QIuDy3$ZHI<2_Ss!tA^mH!qKg=b)`9b zjmY5CU|3E(g zfb60k9rA;gsLs&}5f9xPl&QFU*#FkjB>P|I?82my&2KFo3q%h_2iIGsx1tL>Elay? z2OqZ{cvL-eCpfkhp4q8gc~*1uMR?^|>47KEQEQHWSaGuKzBka(~{q6aW57QIi%%dY3#A49|Kd;Z*;lW+ z?!+IAlbxkhS`^A$4BRz3S9&J#cSB3p=t@NVrG-jenbFqHCqT&uTcZ3>vT^9l-qDR< z$EvMy1*It=O?>E4`>|);r@n)1PVLe?g755l3&-|WNT5@jm@yekC)Cbft)oW|Z4+aN zMwH@~tQE zG6Bz~h)#F50g1^A3>MZ*`K}9nk0Z5PvRza7SgWM>@tX_pChVI{Hr6 z(P!}!AM~!iXu?ltf?McL<>JH8{>Op2dxf(*C5sP2hu*0=^1OWINqBxYJaIEHbjjcO zc7EegNA;{bjM5ao5__|q(HzfSm$%d7>&Y+bu-F^2O<}FBBo%*BAQuZCaMDh(XeKa@ zWUwppIuU;+!l_I{R0=Gm%A!oof7M#2F2lq83;7oW!Gutxk$K$*HDG39r`}WS0%zvY^x7h!F;$JqQcE!_O zaYNxCWDOicilQ)Rh<^`f3b?5{+AdW UZXf9y>gw+cj>fur+e;Kx92a% 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 Fy6>2hnt}iT diff --git a/oa/textures/menu/con_back.tga b/oa/textures/menu/con_back.tga deleted file mode 100644 index 71e74938d4b2e62945497f5f7883513e4181537c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196626 zcmeI!EzTh29z^j!ByfQQG`R+W!Saz11R+Qa`sS_x917R~lCTF9K_YN$0EJ*3um#?X zn9K~O^qF6$ML(S~b?S7|cQ4-K>xFya&Bq512q1s}0tg_0!1G1m<-1q!$$z8gtG>3+ z4}sV39&CT+`uOgDckev&))9dgfd})yy8Gnrl_z?=arfQb?{`1kz3WCGO5lUL&+q=Y z`|;5y@c0XOc>nX=Uw41r{p3a?!LWy%Z)&kz}t5p z-Tij={oQ*{`2XD~YR|3A&dsYl?YyKf%Z{-3A2eR%iT-G85c>4ZR!z?XOL|Em@M z|AoYhCIS98chzbm!2gYtRFeSzo4abY5#ayENvcVJ|IJ;s+6eG}<0RE2!2jm1T5SaQ zzj2ak65xMxSFJVz{NFf9H3{&)xvN$i0se2Cq?!cy-`rKJjR5~QPEt(*{BQ26)kc8- z8z-qI0sc34)oLTa|BaJWlK}slyK1!&;Qz)+s!4$V&0V$H2=IU7B-JFq|K_e*Z3Otg zagu5h;D2*htu_Mu-#AG%3GlzUt5zEU{%@S5ngsaY+*PZM0RJ~mQcVK@PFeZ)g-|G=B`?81o*#k zl4=s*e{)x@HUj+LI7u}L@V~jMRvQ8SZ=9r>1o+?FRjZ8v|2IxjO#=LH?yA*Bfd3mO zsU`vbH+R))Bf$TSlT?!c|C_sNwGrU|#!0G4fd9>1wb}^qf8!+8B*6dXu3Bvb_`h+I zY7*dob62f40{q`NNi_-ZzqzYc8v*`roTQor_}|=BtBnBvH%?Mb0{n08s?|n-{~IT% zCIS98chzbm!2gYtRFeSzo4abY5#ayENvcVJ|IJ;s+6eG}<0RE2!2jm1T5SaQzj2ak z65xMxSFJVz{NFf9H3{&)xvN$i0se2Cq?!cy-`rKJjR5~QPEt(*{BQ26)kc8-8z-qI z0sc34)oLTa|BaJWlK}slyK1!&;Qz)+s!4$V&0V$H2=IU7B-JFq|K_e*Z3Otgagu5h z;D2*htu_Mu-#AG%3GlzUt5zEU{%@S5ngsaY+*PZM0RJ~mQcVK@PFeZ)g-|G=B`?81o*#kl4=s* ze{)x@HUj+LI7u}L@V~jMRvQ8SZ=9r>1o+?FRjZ8v|2IxjO#=LH?yA*Bfd3mOsU`vb zH+R))Bf$TSlT?!c|C_sNwGrU|#!0G4fd9>1wb}^qf8!+8B*6dXu3Bvb_`h+IY7*do zb62f40{q`NNi_-ZzqzYc8v*`roTQor_}|=BtBnBvH%?Mb0{n08s?|n-{~IT%CIS98 zchzbm!2gYtRFeSzo4abY5#ayENvcVJ|IJ;s+6eG}<0RE2!2jm1T5SaQzj2ak65xMx zSFJVz{NFf9H3{&)xvN$i0se2Cq?!cy-`rKJjR5~QPEt(*{BQ26)kc8-8z-qI0sc34 z)oLTa|BaJWlK}slyK1!&;Qz)+s!4$V&0V$H2=IU7B-JFq|K_e*Z3Otgagu5h;D2*h ztu_Mu-#AG%3GlzUt5zEU{%@S5ngsaY+*PZM0RJ~mQcVK@PFeZ)g-|G=B`?81o*#kl4=s*e{)x@ zHUj+LI7u}L@V~jMRvQ8SZ=9r>1o+?FRjZ8v|2IxjO#=LH?yA*Bfd3mOsU`vbH+R)) zBf$TSlT?!c|C_sNwGrU|#!0G4fd9>1wb}^qf8!+8B*6dXu3Bvb_`h+IY7*dob62f4 z0{q`NNi_-ZzqzYc8v*`roTQor_}|=BtBnBvH%?Mb0{n08s?|n-{~IT%CIS98chzbm z!2gYtRFeSzo4abY5#ayENvcVJ|IJ;s+6eG}<0RE2!2jm1T5SaQzj2ak65xMxSFJVz z{NFf9H3{&)xvN$i0se2Cq?!cy-`rKJjR5~QPEt(*{BQ26)kc8-8z-qI0sc34)oLTa z|BaJWlK}slyK1!&;Qz)+s!4$V&0V$H2=IU7B-JFq|K_e*Z3Otgagu5h;D2*htu_Mu z-#AG%3GlzUt5zEU{%@S5ngsaY+*PZM0RJ~mQcVK@PFeZ)g-|G=B`?81o*#kl4=s*e{)x@HUj+L zI7u}L@V~jMRvQ8SZ=9r>1o+?FRjZ8v|2IxjO#=LH?yA*Bfd3mOsU`vbH+R))Bf$TS elT?!c|C_sNwGrU|#!0G4fd9>1wb}?gv={_EB{mqy-W7=m)rEIcABtGlaMm?mV1^G+SP?!J3(W8V3M<0LVu2YxKw(Ar zSS&EZ2PmuvABzQM_yC0!Ux3egh5UrTwmV1^G+SP?!J3(W8V3M<0LVu2YxKw(ArSS&EZ2PmuvABzQM_yC0! z;bXDD3?HDdB77_snBfByR)mkm0yBJo!iw;*SYU<^P*@Q@77NVq0SYU^$6|pQK0skb z_*g73!v`p=2p@|DX7~Vw72#vCzziRtup)dc7MS4!6jp?f#R4;YfWnIKu~=Y!0Y2*$ z@)H8zmH@uXCt^`Li6N6bP*@Q@77NVq0SYU^$6|pQK0skb_*g73!v`p=2p@|DX7~Vw z72#vCzziRtup)dc7MS4!6jp?f#R4;YfWnIKu~=Y+4^UVUJ{Aki@Bs=d!pCBP89qQ^ zMfg}OFvABZtOy^A1!njFg%#mrvA_%;ps*r*EEbsI0~A(-kHrEre1O7=@Ud86h7V9! z5k3|R%mV1^G+ zSP?!J3(W8V3M<0LVu2YxKw(ArSS&EZ2PmuvABzQM_yC0!;bXDD3?HDdB77_snBfBy zR)mkm0`m*-S+9_v5cswP@LfI;i_%F9ndE`Oitw>mV1^G+SP?!J3(W8V3M<0LVu2Yx zKw(ArSS&EZ2PmuvABzQM_yC0!;bXDD3?HDdB77_snBfByR)mkm0(0ZD9)GnTtZK#D z*7}{9d`G7IZ_ejeyZo0Q$7NvqxRc+2Y>(fZ&wBmo=Z~8|)2!3l_5p2=Ys%)#kI9D* z6WH#<#ihJ?{ntUS|M0e|*L*bxC;0)+Dt&W4e*x%!<^ErN-M;z#nZI1W{`afD`hQh& z|8xKUKY=gyeb4>h{tNcSKHu%_^zoa&?~VJ={>8YX^85!*5DFXv+1QTf*XbGY`o%y8hxTi*F6`5D(Q&gbGr)+N`A z4Sy3C#S>Ms6$vn%)a)7s?64;~@Pf9b9yV~{-0gcjsN^%t!nZ! zq8Iu61-SoZFZp2hlg=w|ecyR_?%Q|cb8#()t8PmdmV1^G+SP?!J3(W8V z3M<0LVu2YxKw(ArSS&EZ2PmuvABzQM_yC0!;bXDD`~rN|E955xzAXWKmrul^bP_`* zd7!W&d@L52;R6&_gpb7nGkk!;itw>mV1^G+SP?!J3(W8V3M<0LVu2YxKw(ArSS&EZ z2PmuvABzQM_yC0!;bXDD3?HDdB77_snBfByR)mkm0yBJo!iw;*SYU<^P*@Q@77NVq z0SYU^$6|pQK0skb_*g73!v`p=2p@|DX7~Vw75DfY|DT1#S@-6zbpH2qMgrl3t7XM| z`TT{X<+G-bw^u*1)BJkP?guA!f$|X>#pynO4|#8Xexp_Wdku)U?;|JTXe;jR zqwjllocVvMs6*m}KnR3D2z+4z|NG~k_~*fEqIZd|{UlSpoK)S-htDlARd9^8CfPYm zu0Of)Q|)+Mf(I_$&AjVxWAVsyI*qW3VRH>Hr}DP6nRh2|?H~BaSRRZ$X+O!-(VSF$ zxgNI+VUDpLT2|>Wsh_MmIH;R>*T=w3@SIL>EqFY?%%9wX<32<%mInh*+D|gw(cD|w zCOKvUWp=U7*RCO{_q=nq4S6Q(Er!RF48lv?%~x;kKQrv~3EPv*$^4pQlZQuivCglv zxXOClq`U2WkyxXhXR=0M6DJvNxtp(EyDE=W{W&dq?kf(%VLi;`80)U3%apHOoM){` zI4{QLcCFeEx=b#04%TL&r*KvEyYu`adb)K!r^O!q*kp{Xhk+bp-L-U?^0kZetThSe z#n{}gRr^7Ax1GbRv3v>?mnk2y zB{->7PHvhTw-P^gvAcfF+&+kUWV3U4rKS0F)>{mZoMDZ?AWrgFdzfQO{O&ej&G|S~ zRoH2FO$DM3W@KwFm^WWj~Ox9Rt6Se$i&X1qdGVgG=$|zV5b2z4&8@XD(I-J)G=Sy#S z4X`tWxzx3EKJSS+-EHSv!Fn}z^WWj~OxD$`5Yl=d^tIn`U4LD1pzp%nwe{RpW%fI|$U}JinrMljr$&yj^C7 zKnR3D2!y~n0sfyfRr4IJmctpVwb904Y90YyxgRl+4+3RWkv&?gRxzpe8j9^hNW%nuE{H@=4o0zS$j>;MjoqL^Kdj=j>4G{ zVc-(oO!hfnnyZ`UWvZmk*0LV?2(4~T4ZPf>o7wq%%4J3aorAGmpnSxvV1}h_?A*M& z%-#Iji?wGO2;i z!4X}ce8e`P^wil}P9ETE4|yi97KbB3APf-r>AQwQO@f)`+|bF`|?)^!=!^6L>TRoWgk&nQ%DejB^y zcbP7UmAYPDqlT!XhhC0-(84oW>nL?D^BU+J4DSNvBen^pr_R=L{>Uq_)(KiwXY0BQ zZ29$wmMU$Jnr9TMHNTBr^Sex!#7bQ+uTewP(L*oCK4{^YtaX$+mw63z4u*Gu@)6sF z(o<(^dG@I5@f@wH!}+B(pib9PKJr@(j~$Bg5re?MO(0;!7G94wRwl2+dT3cCK4MOy zdfB1@bueucmq`t%vwaF0P-k0XJt{+WwCjO0FQZj;wnH_b&epOXIRmY+ayk?nd9-8T zCJ?Y<3$I5TE0b4ZJ+!P6A2BCUy=>8dI+(VJ%cKU>***mgsI#rH9+jaw+I8sg0;Rh~ zP0o4D(MFW4(EM_25+(!Lm?Oi2k6^#km9Hvmo9AV0;G@jTx99?$&x>7VIH1~o3K}bi z&+Rl*wZpr{+1Hi2ye1Eq*T(J$_0g*(cJ9K#*d=&Qrz>Ao);7<}*uY1bmv7MpI-eK2 z%y2-py`mZ`htKUaQ?FWWhH_H9Dck=6f-1aqNhCm2}KnVQq1fKnY#a;Y2 z0rrcGI!vsqvagyaK=a?9StGzgXR^ad)|@HLRn}cqeV)k^N)J^ovEGJoY1UigdSs0J zDQi-lll&|5^~7>?=H_gT%w#JKkKDy?%6_%0!(+QD`>J^Y^!A!~M1Y0PWQUWiIa8Xe zth=iEJd-Ds9;#eoy$#{gthdJX$e*lMXXkG3-TZv|d6k)*bai>$w*h^Yi4t} zWh?39t?+6eFzRqPZ|d5{ZjU(qu3#pe=9!!+zZ~9&b(b%nC!c7YwsqCfyucQiCv;Wy z)v1HnpY^ubdeppTHiuibl0M!Ful50>4u|umu5Il0h|}+inTb}_;S+1C%9PLfPVG6SEx`_w7br6;Pd^Esnco_~_W z4m^rA0<$=288F)6ck?{tuy@5)SN-Pp$9m?VRdx7it*Y}%o_nn>j04QO`_w7br6;Pd z^Esnco_~_W4m^rA0<$=288F)6ck?{tuy@5)SN-Pp$9m?VRdx7it*Y~Zd4*O^=dYvR zy3Z%fAC9oERwgrNZCemfj3}wN6@J`~&sQfrb7lfsRfo^jsyZK-SLWce1RsRtTlZNf zzI*;~ggv@UM#0*)AOL7^25~E_bI#jWQrjOpOrX;`yi1nP`8lci>YckVzo4D}UX45% zb0D;;4#IZYvpmmKT{G=*UD&qpZmMkbx!h}QC&0bab4K9@NTMgl;YJ)Il$Wmtbab=w#N*C5D0+~ z2!W3xu>Fzr`dIyQR-Nq>4Y0#u_EmEdT4SA4EnLNrOTk^Lxt*)*mmaEIVy#1#!vWRY z!d3Q5Yn7c@cN6#&p71QMT|Bcip9rmgg0oB~XRrX73m7Q646ZjOK@GP%gJhL>PSXwW?W|qUF zG+?XNMDJGJ9uX^{Rdu=~Ms+O+Y~o|{I!zs3V6Lv@ivev{r}nw)>s!ooy6VZfmFXtv zCY-M--+$;5>o+EJ%M3@~YPl6&hj#hSA6oE^n;1rI$$FggT2+U~&efHCF`(`0%Ih#f68iJJ0^(;k+krVh7#|uL*bahb_G4$r0!IO4dx)?A)3* zueV0c0j-`mw>IRk-KS2h*vaXfVckvO1vI~^e9xgvtl!+ONASSXTb=`3X+3V$?QzR% zRUK}zRcoTFs(4)DWAincPdS;-dEV`Ey~}`}e&X;Bn&+x&&6iWjuG(cz^1OrQR~2`j z^*ioApUxT^S`$?jbKX|j>@*+LW!UfXonO6GsFXEwl5RW;{JSLUv-U7f=_@G0zXSG^uL zlk-dK@>`%DyAy5oRv0_*CU$I@mnDut&nqDYG3T|a4n{38S5E>wO|{Nfr@HR?de%Ir zt9IvpRKDiet8UH8uiv~_X_Q!SjQ!GEb$i_MT2;r6-4#uM_H}y z>Qv)h-yXNjZccZ~yYtv{yY1T}Vi3GoX_Q!KOdZZItpRp8%)V+)LTjvZs->%{k0X}Q zDmz`0{nB06aD)!A4o@z9dE$2HNnVfUb5E*w^STvJ;5XINms8jN^760b;n+1wlbf?` zvQ@W74sWIHk(1C{W_YZYA+VKj#1dO+d+d_zm*&Q;$|crYtb62^(w8T$0C%0_^>m%U z8Lg@_=XEQdP?{$^)^8g7c%L+eKnR3D2s|L5|1oFB4&(sqEzG4^bK`lEyIAuC_DgeB z_3L>(MQ5_3JFvq^oy^J7nt$w^{7v}r@Xu*HVWJG#v3qiW^%myRthw<#$z7~@0{f-8 zs`~Z3o}x3^(H+>~q)z5!Y0baltgpZ;?LWPDX2SGz)w#Ozmw}pj7`q&(bJ&^n$tFDE zS-!eXdQUPRyASVnu3z~h-~+!qA2^ENT?wC8S8{I0sKeOhK%K+RtZNz0U_A(}s)O(n zuT*Q!-3fQ|yzSC;na}Ui-8_za+=vOA`0#->|3#j2`}PVIt{2%#c$^1nRh^Uf!f~6> zY3gvxTs_%jo-kK=lasSn=I$-Jo981|uWncl#;WLA4kv4S9ie_XGvT?qCR_&i+zNl} zKHUPH&-E_JwTu2yo+yi(;&PR?2x+&AsD&YSWWtHQ3qCR*4WbmhCii~Q&I?$G7e zR@FYlR*8@3^6GQfJfExD#ZISrLZ`V`Gh9`DH(wL9>#fe+Yx&|bcaQ771x#C4nyV{+ z8PJ*KcPdm&$3=I(Jn>;CiSqOYt~b-1gms;^GXVZYNSCvt{0 z&t$)}R@LDyt*SHUx%vtE@LD3K;&Mr}49TLTf$C-dMV@o}I%p1PRh^Sb`t*XOaT2*JxbM_6tojooqBqzmwn z+De^g+jet0pHE>u=e4TNJnh|iK7DCiq0R3e@8&V*aU&*d;?}?lZxhy|`gi$bCO4Kw zi3P{lFRfK|xa+*yB|D!_VLj)ys?I#^-FZHJ>07txL0*sBoX3xA^YdQ4=hfT!{3)m& z&gJl7j9W@;qh{FAJUg7!`C9Fqc_w$AC!clk{L(x}wdUb`^8LrTKSk8b7N73s*J8?$ zoniS0F>WcX^EJbc=Goz-&ev+^%rm*`Jo&7P=a=R=sx|*To%8$uJ^AFVL*VNX82+SN zrLXtCd8408p#J>*6?VYi1lB!=UV?Xf{1vFLRsG%uKAy>QHmwKU4Q%;0JznnlrgJaH ze%fNc+WoH=@9zKNwgQ%3HQFjlENYa^+xds)c0|{880*?U%C9v(YMRa&K1U62&bxQp zj{7N(%7@=ttF`3HY}=v>0)cY41rD3YzalXCaLC>K;aHB<5$vcw$!OP!(|v*`z3T@S?LX@`v~R$D=wEIALK37^cLGcV4cm!FS5 ztp2|Df4v~zgkr@`5!n2Cq^(}IbAYv-#^xM;@qY3_Z_@MruOIr3`(HbE zzjbGP3TT0|gyz{=dOz_t|YNmpm^6deDOw9x}J1s)C1DjTT$|UCj5r#rgeTI{+7Jm@I1H z?l+S2fB%PSO~#xO-Bw$8d*mT{B3EZUjQyy_2S+?;nYaBZ)%U%{o9;g-t<9}2Q|}wU zsjUvvR*8?}B>Q{>G9~oHEigO|V~4I)I&VBr;=~6n=>4U{n_lGS-v1)Zw@x*G3V;B? z)zYhE&1%7K%`Ascw}IIlw(1%mv~;7sw*Mwj=lB18c=^_;-p-vbaD`W9>spU!wAIS< p={n)WIXUHUnUmwbRi@Z}?N|P&cN{MHCjh*Bi_5?#Ecv@1@qbbYxFrAp diff --git a/oa/textures/moonc.tga b/oa/textures/moonc.tga deleted file mode 100644 index 02fc9021bcde19442052125667b7597a618aab8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12332 zcmaKzL5^I-5=C3=z%$04!^9i#z#v&dAOS|Kpts<)uv<>%d3h@Ol_3VvH*egy5&5dR zy3E&qdHL?;#K)J9FW*zxJpr!QZ=kl(+5KN&~@hLXYY8EnM{cTZ?fY1<-$)?{VOKli{R|g>G2(YBQ z_`~bN7D3B&g}Tsn)139Mk@oDGWh2K*0tNZgYfNRDuV24X^+nX90i#Y4{SH)B358FS$ptNh^=_5XKuHQJt_1-j!Zzho5+RS>%ZazFWLVdDGyKGToZY4|TSs)S& zZ%OjG1T%L|oDv4?(X4*??r;iuPTw7uGpgF{RXN*po+VAlnK#Q`ofYUT57RTWH@!fy z{*%$)-w3L?sWjWmo*aF@nbSM*vO1eg65CrfCh+VQGc}O%8j?Mt*_Fp9CrcXgEuiw< zyLUHz0(csc8B+$Pu_`S_?*s%eJkRwPjUVTcYUMsUWE;Q)nTCy?SCAyzLP_AuSIf(X z^-atwuW0_jiegLO88XL zbN4;ISmsHU$RR$E56pkY`O}aOpk?fG5IBB{Cr0B+kiJ7adIda<`18lQ zt_gI25s-6Rvi;{>(q+K5r;mB&ZNyMdfg37*&RikG33Pxd?9~%8fPdort^Q9=3Bb+# ztmh#RRC^r(eJp^9>2R}}wqSx07?QmgjKI-bvQng2y_$NRRm%eBrKf~!?|vm^@GY!Q z{Ism z$^Zr$hJxY6nkN(Ba5~m>@!S>}q`mOW^Bw?BhnLyrS6L;VB_MQUG_3>Wjt9^W2z(~#(81z0v7juw?x2+J{ z>;6=mwXAp8Zb=M{Osp-LiS;H^8SjJTh+vw#gG^Q#CRR}61nm#$-SIK%;`od;SLsBV zX+jqQ_!*LV%E#zqsVs1TZ{p1JL8jIJbXjTvj$(QVF%L&ifS)#L=BjG=aPad%2T5?s z`1z_Kn}I*Fm|7$|B5)J(#I`E~xBpGU5eeD-gY|KKtnkFaMugL(JDa0b%FDrN@($4 zh_<)qG@<10$n=NQFr}VeIg%q-F;{Q_tB@Bj8pqkL;T%mh9~ZV7_K05q{LNo;Cu`VC zAnE4jWQ}$!j&#i`3`5C;OPbNR3_RHC5}h}Xf}XSD_E(t+;1*2r`I8Y-wWaCv=o_i^ zvVyVq`3msu4^~O8m*+5db{q^LuBDPo>L5u*HkBQ3f;8P%H~9IA*gj2?LDK8=ncZ0# zL+3G4JtaT_Nw3gFoYETJ!lP~z*Q*s5nLa2JfLWdZT;lTvyX|v3I@C36R6zD<={C2~ zfN**lohQa5jfQ1F`-2Nj=CSqWMG#CSr5O2H%}wBjVsC9PEd*6UOr9lQju@3>t;(7B z>cBgtUv16xAvZ3EfD3q>H~}EHNLQLyn=C+f-8#V=TUt*~yn1+cP4WN-+i<*?~mI=Hi0lZcmotP3H>=noXmUJ9UR+`w$ z`vjny0(r7SXQokS9mvSYY8E)3-0&!2)aP0Id}2C~36;voKIA3dd$vr5wveYGjRczI zcuMqwAt?d;1<_|6&!@@*pYKKaC^q-RXiQMA8h5Zt=Ggv@L$6ZJyn=7PZh_vaKICOJ zHq2-7=XYVD{SB5uhV8daP)%EuJ)9Ppf@M1beKKjq^9mYr1xiMjor_t@8;#YOkHLD= z5{S)cDCGv8TfzId)bG~&-`1t^ZLt5u({4Ol!88{@G*@sts+lq!*2Mh{%_|^?2lxPG z>Rl~6y26}jDW?4~iOdR+2_S)h7TY;$JIyuJN}sT@+A+zYHPm!#CrX-OrUMvWnI#y> zu25r21WYH}IDuQqqtC>Z$WF1{MzU`qO3t!Ttj2bk95hj!A$lV>fY^-wNY+nCvh8B4 zGIRfSNT9wh0Fi8N3(p<-A1AGH)P%fBXC;OjRw)_Yk?fHw?_ms2{qg5uGFaI-S3*EL zrLs(o0J>}xptQQK@b+UtAFCNc!dTM5F4oXIrB%on03_K^|GYodd4(fiKW%a1^sj^) zfsBCEXEKnh@%(#4WriMYgzN}oz|afkHCp&QF#rKWspSD-OJqW^S%&=Z-vxO|ohPF$ zRYw!J!U@J71V1<(q{!D zm{)MRUCru=0dUAlZ2PoQph-Ny>12U2rsNMFxmAyMk^F3&{$i_M0qnNkLfoJUP&O2C z*U^VkS5SuDP?>*U9&A*@TgX|Giph{NZmzQ#UQ&T#^k?jKFOE6`rv7H7n^zE{XH~oA z6*TM?91XevwtxwjhXglz&Xt_Z?z`T)eg@L+{$!PnQ!EK~Nsa(Zv^2dd=*FI|dUNx5 zb-n$Hj`Ivhn9)^0QiTmrU`D4UUW=qMcfLQ`;gLHuRx^&n5k3{18^(&^Zy3;^Y<@5{q^~e&%gcp!{0xD{^h41 GU;YJZ6T{X3 diff --git a/oa/textures/nightSkyc.tga b/oa/textures/nightSkyc.tga deleted file mode 100644 index 43875160789c0a062bac31d21978b62ded7b8e45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12332 zcmds7+ifZ_5M8B$eBNIQNNR|X5(z0vBy#Un`k)P3p#)l>1X`d3auf@%neo_TuOAD1 z7<)XAGsk1Emt+_ohRf$=cp3g&2KVy4+wJZpm5O;Rm&=OY>$~1=xAlXJ5!%qT*=)v; zLN5c!dc78$QE?GgqX_kQfG^5Pk~f-g?l_7Hju(qXl+P$vxd7vKzy^ep9$3Xe8c>i7 zja)L6jZsBCW1FHh}$vn zbz0seG4Aqv_&9;A@q*d?Lz(MCl63x8B9@~i5`&WnZC+EJzh0kZh4%R?xrKsTSCU#UIk0J}(RV>L4XcceYFyfd=vZqkw7?zs~H z;fF$ambmIQl(wWK&%miKn7lgxx8f2DJ1}K++IQ>~6tv&s83NdNuK{wj1uLiJLI6Bo zif2x~RK4Z+SN#|jT$daVpxu-W+KEe`Id!F%#DJ~DJgDGPToPoAPVxhjOQ_8-Xmq%h zv|A-P_u!SJny2cUpn>&*f;6jqAyTR#kY3ZvRXw4m4mCRU5Jo)*e%ZkKN*g)qwwVGz z+QZEaih_q+Dp6Ondmm71{O;E>FBG}CpJ1zkcJmvo7r?})kJo1rA%Nj84nU4}wjiBM z=`{e%13a!+Xy{=AyDm%D&F+@bL;2-l;>~Wjg&6` zWt{P>*W7J1Iu{5{zx8`cuPG!z&uT#}K^(Zxd#fU#pAfZ>suy9@cb-+$ZK}eQE9Dg1 zRGiiH%NKJPs`C#I?LvFEe8veGPR%#lE=OPVDl#vbS&{CLoGcz@YE*8aXPRIuSbx|5 TUjMJYR-YeF-*2n;*XQ8}2Y8JY diff --git a/src/.gitignore b/src/.gitignore deleted file mode 100644 index 2bd1165..0000000 --- a/src/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.o -Makefile -config.h diff --git a/src/EventManager.cpp b/src/EventManager.cpp deleted file mode 100644 index 21ce992..0000000 --- a/src/EventManager.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -/** - * @file EventManager.cpp - * @breif Implementation of the EventManager class - * This file along with EventManager.h implement the EventManager - * class. The EventManager class collects and redistributes events - * in a fashion similar to AWT's EventListeners. - * - * @see EventManager.h - */ -#include "EventManager.h" -#include -#include - -namespace OpenArena -{ - EventManager::EventManager() - { - } - - - void EventManager::SendEvent(Events::Event* event) - { - unsigned int index; - - for(index=0; index < eventHandlers.Length(); index++) - { - Events::Event::EventHandler* handler = eventHandlers[index]; - if(handler->Handles(event->GetEventType())) - { - handler->HandleEvent(event); - } - } - - delete event; - } - - /* - void EventManager::SendEvent(Events::Event event) - { - unsigned int index; - - for(index=0; index < eventHandlers.Length(); index++) - { - Events::Event::EventHandler* handler = eventHandlers[index]; - if(handler->Handles(event.GetEventType())) - { - handler->HandleEvent(event); - } - } - } - */ - - void EventManager::RegisterEventHandler(Events::Event::EventHandler* eventHandler) - { - eventHandlers.Insert(eventHandler); - } -}; diff --git a/src/EventManager.h b/src/EventManager.h deleted file mode 100644 index e1329c7..0000000 --- a/src/EventManager.h +++ /dev/null @@ -1,38 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __OpenArena_EventMangaer_h__ -#define __OpenArena_EventMangaer_h__ - -#include "Events/Event.h" -#include "list.h" - -namespace OpenArena -{ - class EventManager - { - public: - EventManager(); - void SendEvent(Events::Event* event); - void RegisterEventHandler(Events::Event::EventHandler* eventHandler); - private: - list eventHandlers; - }; -} -#endif /*__OpenArena_EventMangaer_h__*/ diff --git a/src/Geometry2D/Point.cpp b/src/Geometry2D/Point.cpp deleted file mode 100644 index 2cfcd1a..0000000 --- a/src/Geometry2D/Point.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "Point.h" diff --git a/src/Geometry2D/Point.h b/src/Geometry2D/Point.h deleted file mode 100644 index 2214592..0000000 --- a/src/Geometry2D/Point.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef __OpenArena_Geometry2D_Point_h__ -#define __OpenArena_Geometry2D_Point_h__ - -namespace OpenArena -{ - namespace Geometry2D - { - class Point - { - - }; - }; -}; - -#endif // __OpenArena_Geometry2D_Point_h__ \ No newline at end of file diff --git a/src/Geometry2D/Rectangle.cpp b/src/Geometry2D/Rectangle.cpp deleted file mode 100644 index 9d6b6b4..0000000 --- a/src/Geometry2D/Rectangle.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "Rectangle.h" diff --git a/src/Logger.h b/src/Logger.h deleted file mode 100644 index e289aa6..0000000 --- a/src/Logger.h +++ /dev/null @@ -1,115 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __Logger_h__ -#define __Logger_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -namespace OpenArena -{ - /*! - * \brief - * Write brief comment for Logger here. - * - * Write detailed description for Logger here. - * - * \remarks - * Write remarks for Logger here. - * - * \see - * Separate items with the '|' character. - */ - class Logger - { - public: - /*! - * \brief - * Write brief comment for MESSAGETYPE_DEBUG here. - */ - enum MessageType{MESSAGETYPE_ALL, MESSAGETYPE_NONE, MESSAGETYPE_INFORMATION, MESSAGETYPE_ERROR, MESSAGETYPE_DEBUG}; - /*! - * \brief - * Write brief comment for ~Logger here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for ~Logger here. - * - * \remarks - * Write remarks for ~Logger here. - * - * \see - * Separate items with the '|' character. - */ - virtual ~Logger(void){} - /*! - * \brief - * Write brief comment for Log here. - * - * \param message - * Description of parameter message. - * - * \param type - * Description of parameter type. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Log here. - * - * \remarks - * Write remarks for Log here. - * - * \see - * Separate items with the '|' character. - */ - virtual void Log(const char* message, MessageType type=MESSAGETYPE_INFORMATION) = 0; - /*! - * \brief - * Write brief comment for Log here. - * - * \param message - * Description of parameter message. - * - * \param classification - * Description of parameter classification. - * - * \param type - * Description of parameter type. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Log here. - * - * \remarks - * Write remarks for Log here. - * - * \see - * Separate items with the '|' character. - */ - virtual void Log(const char* message, const char* classification, MessageType type=MESSAGETYPE_INFORMATION) = 0; - }; -}; - -#endif diff --git a/src/Makefile.linux b/src/Makefile.linux deleted file mode 100644 index 728f178..0000000 --- a/src/Makefile.linux +++ /dev/null @@ -1,99 +0,0 @@ -#Dependencies soooo need to be fixed/finished -CPP = g++ -g -INCLUDES = -I/usr/X11R6/include -LD = g++ -OBJECTS = screen.o bmp.o camera.o ctrls.o level.o mygl.o myglFont.o myglTexture.o player.o -OBJECTS += strmanip.o tga.o vector.o window.o keys.o main.o x11.o EventManager.o Events/DrawEvent.o -OBJECTS += Events/Event.o Object.o Events/KeyPressEvent.o Events/KeyReleaseEvent.o -LIBS = -L/usr/X11R6/lib -lGL -lGLU -lXxf86vm -LIBRARIES = -SO_LIBS = -SO_LIBRARIES = oa_game.so oa_audio.so oa_net.so oa_video.so oa_input.so -CPPFLAGS = -DHAVE_CONFIG_H -LDFLAGS = $(LIBS) - -.Phony: all clean install - -all: ../OpenArena - -clean: - rm -f *.o - rm -f ../OpenArena - -install: - -#Executables -../OpenArena: $(OBJECTS) - $(LD) $(LDFLAGS) -o ../OpenArena $(OBJECTS) - -#Dynamic Libraries -oa_game.so: - -oa_audio.so: - -oa_net.so: - -oa_video.so: - -oa_input.so: - -#Object Files -Events/Event.o: Events/Event.cpp Events/Event.h Object.h - $(CPP) $(CPPFLAGS) -c $(INCLUDE_DIRS) -o Events/Event.o Events/Event.cpp - -Object.o: Object.cpp Object.h - $(CPP) $(CPPFLAGS) -c $(INCLUDE_DIRS) -o Object.o Object.cpp - -Events/KeyPressEvent.o: Events/KeyPressEvent.cpp Events/KeyPressEvent.h Events/Event.h - $(CPP) $(CPPFLAGS) -c $(INCLUDE_DIRS) -o Events/KeyPressEvent.o Events/KeyPressEvent.cpp - -Events/KeyReleaseEvent.o: Events/KeyReleaseEvent.cpp Events/KeyReleaseEvent.h Events/Event.h - $(CPP) $(CPPFLAGS) -c $(INCLUDE_DIRS) -o Events/KeyReleaseEvent.o Events/KeyReleaseEvent.cpp - -Events/DrawEvent.o: Events/DrawEvent.cpp Events/DrawEvent.h Events/Event.h - $(CPP) $(CPPFLAGS) -c $(INCLUDE_DIRS) -o Events/DrawEvent.o Events/DrawEvent.cpp - -screen.o: screen.cpp screen.h config.h - $(CPP) $(CPPFLAGS) -c -o screen.o screen.cpp - -bmp.o: bmp.cpp bmp.h mygl.h datatypes.h texture.h config.h - $(CPP) $(CPPFLAGS) -c -o bmp.o bmp.cpp - -camera.o: camera.cpp camera.h vector.h mygl.h screen.h config.h - $(CPP) $(CPPFLAGS) -c -o camera.o camera.cpp - -ctrls.o: ctrls.cpp ctrls.h keys.h datatypes.h list.h config.h - $(CPP) $(CPPFLAGS) -c -o ctrls.o ctrls.cpp - -level.o: level.cpp level.h version.h config.h - $(CPP) $(CPPFLAGS) -c -o level.o level.cpp - -mygl.o: mygl.cpp mygl.h config.h - $(CPP) $(CPPFLAGS) -c -o mygl.o mygl.cpp - -myglFont.o: myglFont.cpp myglFont.h config.h - $(CPP) $(CPPFLAGS) -c -o myglFont.o myglFont.cpp - -myglTexture.o: myglTexture.cpp myglTexture.h config.h - $(CPP) $(CPPFLAGS) -c -o myglTexture.o myglTexture.cpp - -player.o: player.cpp player.h config.h - $(CPP) $(CPPFLAGS) -c -o player.o player.cpp - -strmanip.o: strmanip.cpp strmanip.h config.h - $(CPP) $(CPPFLAGS) -c -o strmanip.o strmanip.cpp - -tga.o: tga.cpp tga.h config.h - $(CPP) $(CPPFLAGS) -c -o tga.o tga.cpp - -vector.o: vector.cpp vector.h config.h - $(CPP) $(CPPFLAGS) -c -o vector.o vector.cpp - -window.o: window.cpp window.h config.h - $(CPP) $(CPPFLAGS) -c -o window.o window.cpp - -keys.o: keys.cpp keys.h config.h - $(CPP) $(CPPFLAGS) -c -o keys.o keys.cpp - -main.o: linux.cpp main.h config.h - $(CPP) $(CPPFLAGS) -c -o main.o linux.cpp diff --git a/src/Makefile.macosx b/src/Makefile.macosx deleted file mode 100644 index 26cd1d4..0000000 --- a/src/Makefile.macosx +++ /dev/null @@ -1,109 +0,0 @@ -#Dependencies soooo need to be fixed/finished -CPP = g++ -g -INCLUDES = -LD = g++ -X11INCLUDEDIR = /usr/X11R6/include -X11LIBDIR = /usr/X11R6/lib -INCLUDE_DIRS = -I$(X11INCLUDEDIR) -DHAVE_CONFIG_H -LIBRARY_DIRS = -L$(X11LIBDIR) -OBJECTS = screen.o bmp.o camera.o ctrls.o level.o mygl.o myglFont.o myglTexture.o player.o -OBJECTS += strmanip.o tga.o vector.o window.o keys.o main.o x11.o EventManager.o Events/DrawEvent.o -OBJECTS += Events/Event.o Object.o Events/KeyPressEvent.o Events/KeyReleaseEvent.o -LIBS = $(LIBRARY_DIRS) -lGL -lGLU -lXxf86vm -lX11 -LIBRARIES = -SO_LIBS = -SO_LIBRARIES = oa_game.so oa_audio.so oa_net.so oa_video.so oa_input.so -CPPFLAGS = $(INCLUDE_DIRS) -LDFLAGS = $(LIBS) -bind_at_load -framework OpenGL -framework AGL -framework Carbon -.Phony: all clean install - -all: ../OpenArena - -clean: - rm -f *.o - if [ -f ../OpenArena ]; then rm ../OpenArena; fi - rm -f */*.o - -install: - -#Executables -../OpenArena: $(OBJECTS) - $(LD) $(LDFLAGS) $(INCLUDE_DIRS) -o ../OpenArena $(OBJECTS) - -#Dynamic Libraries -oa_game.so: - -oa_audio.so: - -oa_net.so: - -oa_video.so: - -oa_input.so: - -#Object Files -Events/Event.o: Events/Event.cpp Events/Event.h Object.h - $(CPP) -c $(INCLUDE_DIRS) -o Events/Event.o Events/Event.cpp - -Object.o: Object.cpp Object.h - $(CPP) -c $(INCLUDE_DIRS) -o Object.o Object.cpp - -Events/KeyPressEvent.o: Events/KeyPressEvent.cpp Events/KeyPressEvent.h Events/Event.h - $(CPP) -c $(INCLUDE_DIRS) -o Events/KeyPressEvent.o Events/KeyPressEvent.cpp - -Events/KeyReleaseEvent.o: Events/KeyReleaseEvent.cpp Events/KeyReleaseEvent.h Events/Event.h - $(CPP) -c $(INCLUDE_DIRS) -o Events/KeyReleaseEvent.o Events/KeyReleaseEvent.cpp - -Events/DrawEvent.o: Events/DrawEvent.cpp Events/DrawEvent.h Events/Event.h - $(CPP) -c $(INCLUDE_DIRS) -o Events/DrawEvent.o Events/DrawEvent.cpp - -screen.o: screen.cpp screen.h config.h - $(CPP) -c $(INCLUDE_DIRS) -o screen.o screen.cpp - -bmp.o: bmp.cpp bmp.h mygl.h datatypes.h texture.h config.h - $(CPP) -c $(INCLUDE_DIRS) -o bmp.o bmp.cpp - -camera.o: camera.cpp camera.h vector.h mygl.h screen.h config.h - $(CPP) -c $(INCLUDE_DIRS) -o camera.o camera.cpp - -ctrls.o: ctrls.cpp ctrls.h keys.h datatypes.h list.h config.h - $(CPP) -c $(INCLUDE_DIRS) -o ctrls.o ctrls.cpp - -level.o: level.cpp level.h version.h config.h - $(CPP) -c $(INCLUDE_DIRS) -o level.o level.cpp - -mygl.o: mygl.cpp mygl.h config.h - $(CPP) -c $(INCLUDE_DIRS) -o mygl.o mygl.cpp - -myglFont.o: myglFont.cpp myglFont.h config.h - $(CPP) -c $(INCLUDE_DIRS) -o myglFont.o myglFont.cpp - -myglTexture.o: myglTexture.cpp myglTexture.h config.h - $(CPP) -c $(INCLUDE_DIRS) -o myglTexture.o myglTexture.cpp - -player.o: player.cpp player.h config.h - $(CPP) -c $(INCLUDE_DIRS) -o player.o player.cpp - -strmanip.o: strmanip.cpp strmanip.h config.h - $(CPP) -c $(INCLUDE_DIRS) -o strmanip.o strmanip.cpp - -tga.o: tga.cpp tga.h config.h - $(CPP) -c $(INCLUDE_DIRS) -o tga.o tga.cpp - -vector.o: vector.cpp vector.h config.h - $(CPP) -c $(INCLUDE_DIRS) -o vector.o vector.cpp - -window.o: window.cpp window.h config.h - $(CPP) -c $(INCLUDE_DIRS) -o window.o window.cpp - -keys.o: keys.cpp keys.h config.h - $(CPP) -c $(INCLUDE_DIRS) -o keys.o keys.cpp - -main.o: macosx.cpp main.h config.h Events/Event.h Events/DrawEvent.h EventManager.h - $(CPP) -c $(INCLUDE_DIRS) -o main.o macosx.cpp - -x11.o: x11.cpp x11.h EventManager.h main.h mygl.h - $(CPP) -c $(INCLUDE_DIRS) -o x11.o x11.cpp - -EventManager.o: EventManager.cpp EventManager.h Events/Event.h - $(CPP) -c $(INCLUDE_DIRS) -o EventManager.o EventManager.cpp diff --git a/src/Model.cpp b/src/Model.cpp deleted file mode 100644 index ee38a84..0000000 --- a/src/Model.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#include "Model.h" - -namespace OpenArena -{ - -Model::Model() -{ -} - -Model::~Model() -{ -} - -} diff --git a/src/Model.h b/src/Model.h deleted file mode 100644 index 000e3de..0000000 --- a/src/Model.h +++ /dev/null @@ -1,39 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef MODEL_H_ -#define MODEL_H_ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -namespace OpenArena -{ - -class Model -{ -public: - Model(); - virtual ~Model(); -}; - -} - -#endif /*MODEL_H_*/ diff --git a/src/NullVideoPlugin.cpp b/src/NullVideoPlugin.cpp deleted file mode 100644 index 3772fea..0000000 --- a/src/NullVideoPlugin.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#include "NullVideoPlugin.h" -namespace OpenArena -{ - - NullVideoPlugin::NullVideoPlugin(void) - { - } - - NullVideoPlugin::~NullVideoPlugin(void) - { - } - - OpenArena::Window* NullVideoPlugin::CreateNewWindow(uint32 width, uint32 height, uint32 bpp, bool fullscreen, const char* title) - { - return new OpenArena::Window(); - } - -}; \ No newline at end of file diff --git a/src/NullVideoPlugin.h b/src/NullVideoPlugin.h deleted file mode 100644 index 165fc68..0000000 --- a/src/NullVideoPlugin.h +++ /dev/null @@ -1,119 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __NullVideoPlugin_h__ -#define __NullVideoPlugin_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include "VideoPlugin.h" - -namespace OpenArena -{ - - /*! - * \brief - * Write brief comment for NullVideoPlugin here. - * - * Write detailed description for NullVideoPlugin here. - * - * \remarks - * Write remarks for NullVideoPlugin here. - * - * \see - * Separate items with the '|' character. - */ - class NullVideoPlugin : - public OpenArena::VideoPlugin - { - public: - /*! - * \brief - * Write brief comment for NullVideoPlugin here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for NullVideoPlugin here. - * - * \remarks - * Write remarks for NullVideoPlugin here. - * - * \see - * Separate items with the '|' character. - */ - NullVideoPlugin(void); - public: - /*! - * \brief - * Write brief comment for ~NullVideoPlugin here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for ~NullVideoPlugin here. - * - * \remarks - * Write remarks for ~NullVideoPlugin here. - * - * \see - * Separate items with the '|' character. - */ - virtual ~NullVideoPlugin(void); - /*! - * \brief - * Write brief comment for CreateNewWindow here. - * - * \param width - * Description of parameter width. - * - * \param height - * Description of parameter height. - * - * \param bpp - * Description of parameter bpp. - * - * \param fullscreen - * Description of parameter fullscreen. - * - * \param title - * Description of parameter title. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for CreateNewWindow here. - * - * \remarks - * Write remarks for CreateNewWindow here. - * - * \see - * Separate items with the '|' character. - */ - virtual Window* CreateNewWindow(uint32 width, uint32 height, uint32 bpp = 32, bool fullscreen = false, const char* title = NULL); - }; - -}; - -#endif diff --git a/src/Plugin.h b/src/Plugin.h deleted file mode 100644 index b410f5d..0000000 --- a/src/Plugin.h +++ /dev/null @@ -1,70 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __Plugin_h__ -#define __Plugin_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -namespace OpenArena -{ - /*! - * \brief - * Write brief comment for Plugin here. - * - * Write detailed description for Plugin here. - * - * \remarks - * Write remarks for Plugin here. - * - * \see - * Separate items with the '|' character. - */ - class Plugin - { - public: - /*! - * \brief - * Write brief comment for ~Plugin here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for ~Plugin here. - * - * \remarks - * Write remarks for ~Plugin here. - * - * \see - * Separate items with the '|' character. - */ - virtual ~Plugin(void){} - /*! - * \brief - * Write brief comment for InputPlugin here. - */ - enum Type {VideoPlugin, AudioPlugin, InputPlugin}; - }; - - -}; - -#endif diff --git a/src/PluginManager.cpp b/src/PluginManager.cpp deleted file mode 100644 index 23f9df9..0000000 --- a/src/PluginManager.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#include "PluginManager.h" -#include "NullVideoPlugin.h" - -namespace OpenArena -{ - PluginManager::PluginManager(void) - { - } - - PluginManager::~PluginManager(void) - { - } - - list PluginManager::GetPluginsOfType(Plugin::Type type) - { - return list(); - } - VideoPlugin* PluginManager::GetDefaultVideoPlugin(void) - { - return new NullVideoPlugin(); - } - - -}; - diff --git a/src/PluginManager.h b/src/PluginManager.h deleted file mode 100644 index e925422..0000000 --- a/src/PluginManager.h +++ /dev/null @@ -1,133 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __PluginManager_h__ -#define __PluginManager_h___ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include "list.h" -#include "Plugin.h" -#include "VideoPlugin.h" - -namespace OpenArena -{ - /** - * Perhaps this class should be a singleton. - */ - /*! - * \brief - * Write brief comment for PluginManager here. - * - * Write detailed description for PluginManager here. - * - * \remarks - * Write remarks for PluginManager here. - * - * \see - * Separate items with the '|' character. - */ - class PluginManager - { - private: - list _plugins; - public: - /** - * Creates a new PluginManager object - */ - /*! - * \brief - * Write brief comment for PluginManager here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for PluginManager here. - * - * \remarks - * Write remarks for PluginManager here. - * - * \see - * Separate items with the '|' character. - */ - PluginManager(void); - /*! - * \brief - * Write brief comment for ~PluginManager here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for ~PluginManager here. - * - * \remarks - * Write remarks for ~PluginManager here. - * - * \see - * Separate items with the '|' character. - */ - ~PluginManager(void); - - /*! - * \brief - * Write brief comment for GetPluginsOfType here. - * - * \param type - * Description of parameter type. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for GetPluginsOfType here. - * - * \remarks - * Write remarks for GetPluginsOfType here. - * - * \see - * Separate items with the '|' character. - */ - list GetPluginsOfType(Plugin::Type type); - /*! - * \brief - * Write brief comment for GetDefaultVideoPlugin here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for GetDefaultVideoPlugin here. - * - * \remarks - * Write remarks for GetDefaultVideoPlugin here. - * - * \see - * Separate items with the '|' character. - */ - VideoPlugin* GetDefaultVideoPlugin(void); - }; -}; - -#endif diff --git a/src/VideoPlugin.h b/src/VideoPlugin.h deleted file mode 100644 index cdf50af..0000000 --- a/src/VideoPlugin.h +++ /dev/null @@ -1,106 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __VideoPlugin_h__ -#define __VideoPlugin_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include "Plugin.h" -#include "window.h" -#include "datatypes.h" - -namespace OpenArena -{ - /*! - * \brief - * Write brief comment for VideoPlugin here. - * - * Write detailed description for VideoPlugin here. - * - * \remarks - * Write remarks for VideoPlugin here. - * - * \see - * Separate items with the '|' character. - */ - class VideoPlugin :public Plugin - { - public: - public: - /*! - * \brief - * Write brief comment for ~VideoPlugin here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for ~VideoPlugin here. - * - * \remarks - * Write remarks for ~VideoPlugin here. - * - * \see - * Separate items with the '|' character. - */ - virtual ~VideoPlugin(){} - /*! - * \brief - * Write brief comment for CreateNewWindow here. - * - * \param width - * Description of parameter width. - * - * \param height - * Description of parameter height. - * - * \param bpp - * Description of parameter bpp. - * - * \param fullscreen - * Description of parameter fullscreen. - * - * \param title - * Description of parameter title. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for CreateNewWindow here. - * - * \remarks - * Write remarks for CreateNewWindow here. - * - * \see - * Separate items with the '|' character. - */ - virtual Window* CreateNewWindow(uint32 width, - uint32 height, - uint32 bpp = 32, - bool fullscreen = false, - const char* title = NULL) = 0; - }; -}; - -#endif diff --git a/src/WindowsLogger.cpp b/src/WindowsLogger.cpp deleted file mode 100644 index fb3bf08..0000000 --- a/src/WindowsLogger.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifdef WIN32 -#include -#include "WindowsLogger.h" -#include -namespace OpenArena -{ - WindowsLogger::WindowsLogger() - { - _type = MESSAGETYPE_ALL; - } - - WindowsLogger::~WindowsLogger(void) - { - } - - WindowsLogger::WindowsLogger(Logger::MessageType type) - { - _type = type; - } - - void WindowsLogger::Log(const char* message, MessageType type) - { - Log(message, "unspecified", type); - } - - void WindowsLogger::Log(const char* message, const char* classification, MessageType type) - { - if(_type != MESSAGETYPE_NONE || _type == type || _type == MESSAGETYPE_ALL) - { - MessageBox(NULL, message, classification, MB_OK | GetIconFromMessageType(type)); - } - } - - uint32 WindowsLogger::GetIconFromMessageType(MessageType type) - { - switch (type) - { - case MESSAGETYPE_ERROR: - return MB_ICONERROR; - case MESSAGETYPE_INFORMATION: - return MB_ICONINFORMATION; - case MESSAGETYPE_DEBUG: - return MB_ICONWARNING; - default: - return MB_ICONASTERISK; - }; - } -}; -#endif \ No newline at end of file diff --git a/src/WindowsLogger.h b/src/WindowsLogger.h deleted file mode 100644 index 20dfc77..0000000 --- a/src/WindowsLogger.h +++ /dev/null @@ -1,173 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __WindowsLogger_h__ -#define __WindowsLogger_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include "logger.h" -#include "datatypes.h" - -namespace OpenArena -{ - /*! - * \brief - * Write brief comment for WindowsLogger here. - * - * Write detailed description for WindowsLogger here. - * - * \remarks - * Write remarks for WindowsLogger here. - * - * \see - * Separate items with the '|' character. - */ - class WindowsLogger : - public OpenArena::Logger - { - private: - /*! - * \brief - * Write brief comment for GetIconFromMessageType here. - * - * \param type - * Description of parameter type. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for GetIconFromMessageType here. - * - * \remarks - * Write remarks for GetIconFromMessageType here. - * - * \see - * Separate items with the '|' character. - */ - uint32 GetIconFromMessageType(MessageType type); - MessageType _type; - public: - /*! - * \brief - * Write brief comment for WindowsLogger here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for WindowsLogger here. - * - * \remarks - * Write remarks for WindowsLogger here. - * - * \see - * Separate items with the '|' character. - */ - WindowsLogger(); - /*! - * \brief - * Write brief comment for WindowsLogger here. - * - * \param type - * Description of parameter type. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for WindowsLogger here. - * - * \remarks - * Write remarks for WindowsLogger here. - * - * \see - * Separate items with the '|' character. - */ - WindowsLogger(Logger::MessageType type); - /*! - * \brief - * Write brief comment for Log here. - * - * \param message - * Description of parameter message. - * - * \param type - * Description of parameter type. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Log here. - * - * \remarks - * Write remarks for Log here. - * - * \see - * Separate items with the '|' character. - */ - virtual void Log(const char* message, MessageType type=MESSAGETYPE_INFORMATION); - /*! - * \brief - * Write brief comment for Log here. - * - * \param message - * Description of parameter message. - * - * \param classification - * Description of parameter classification. - * - * \param type - * Description of parameter type. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Log here. - * - * \remarks - * Write remarks for Log here. - * - * \see - * Separate items with the '|' character. - */ - virtual void Log(const char* message, const char* classification, MessageType type=MESSAGETYPE_INFORMATION); - /*! - * \brief - * Write brief comment for ~WindowsLogger here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for ~WindowsLogger here. - * - * \remarks - * Write remarks for ~WindowsLogger here. - * - * \see - * Separate items with the '|' character. - */ - virtual ~WindowsLogger(); - }; -}; - -#endif diff --git a/src/bmp.cpp b/src/bmp.cpp deleted file mode 100644 index e16c217..0000000 --- a/src/bmp.cpp +++ /dev/null @@ -1,305 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -//////////////////////////////////////////////////////////////////////////////// -// -// Module: bmp.cpp -// Author: Tom Hicks -// Creation: 09-01-2003 -// LastEdit: 06-20-2005 -// Editors: Tom Hicks -// -// Purpose: -// To implement a wrapper function that will load a 24bit windows bitmap -// file and return a pointer to a TextureImage object containing the image. -// -// Summary of Methods: -// Global -// -LoadBMP -// Loads a 24 bit windows bitmap file specified by fn and returns a -// pointer to a TextureImage object containing the bitmap image. -// -//////////////////////////////////////////////////////////////////////////////// - -#include -#ifdef WIN32 -#include -#endif -#include -#include "bmp.h" -#include "datatypes.h" -#ifdef WIN32 -#pragma warning(disable:4996) -#endif - -namespace OpenArena{ - -#pragma pack(push,1) - struct BITMAP_HEADER - { - uint16 type; - uint32 size; - uint16 reserved1; - uint16 reserved2; - uint32 offset; - }; - - struct BITMAP_INFO - { - uint32 size; - uint32 width; - uint32 height; - uint16 planes; - uint16 bitCount; - uint32 compression; - uint32 sizeImage; - uint32 xPelsPerMeter; - uint32 yPelsPerMeter; - uint32 clrUsed; - uint32 clrImportant; - }; - - struct BITMAP_QUAD - { - uint8 blue; - uint8 green; - uint8 red; - uint8 reserved; - }; -#pragma pack(pop) - -#define BITMAP_MAGIC 19778 - - void PrintBMPHeader(BITMAP_HEADER header) - { - printf("Header\n"); - printf("Type: %X\nSize: %X\nReserved1: %X\nReserved2: %X\nOffset:%X\n", header.type, header.size, header.reserved1, header.reserved2, header.offset); - } - - void PrintBMPInfo(BITMAP_INFO info) - { - printf("Info\n"); - printf("Size: %X\nWidth: %X\nHeight:%X\n", info.size, info.width, info.height); - printf("Planes: %X\nBitCount: %X\nCompression: %X\n", info.planes, info.bitCount, info.compression); - printf("SizeImage: %X\nXPelsPerMeter: %X\nYPelsPerMeter: %X\n", info.sizeImage, info.xPelsPerMeter, info.yPelsPerMeter); - printf("ClrUsed: %X\nClrImportant: %X\n", info.clrUsed, info.clrImportant); - } - - TextureImage* LoadBMP(const char* fn) - { - //If anything is not perfect return NULL after cleaning up our mess - - FILE* f=NULL; //A pointer to our file structure - - //If our filename is null - if(!fn) - { - return NULL; - } - - //Try to open our file and if successfull... - - f=fopen(fn, "rb"); - if(f) - { - BITMAP_HEADER bmpHeader; - BITMAP_INFO bmpInfo; - BITMAP_QUAD* bmpPallette = NULL; - uint32 palletteEntries = 0; - - fread(&bmpHeader, sizeof(bmpHeader), 1, f); - uint8 t[2] = {1,0}; - if( *((short*)t) !=1) - { - //If big endian reorder bytes - bmpHeader.type = ((bmpHeader.type & 0xff00) >> 8) | - ((bmpHeader.type & 0x00ff) << 8); - bmpHeader.size = (bmpHeader.size & 0xff000000) >> 24 | - (bmpHeader.size & 0x00ff0000) >> 8 | - (bmpHeader.size & 0x0000ff00) << 8 | - (bmpHeader.size & 0x000000ff) << 24; - bmpHeader.reserved1 = ((bmpHeader.reserved1 & 0xff00) >> 8) | - ((bmpHeader.reserved1 & 0x00ff) << 8); - bmpHeader.reserved2 = ((bmpHeader.reserved2 & 0xff00) >> 8) | - ((bmpHeader.reserved2 & 0x00ff) << 8); - bmpHeader.offset = (bmpHeader.offset & 0xff000000) >> 24 | - (bmpHeader.offset & 0x00ff0000) >> 8 | - (bmpHeader.offset & 0x0000ff00) << 8 | - (bmpHeader.offset & 0x000000ff) << 24; - } - - fread(&bmpInfo, sizeof(bmpInfo), 1, f); - if( *((short*)t) !=1) - { - //If big endian reorder bytes - bmpInfo.size = (bmpInfo.size & 0xff000000) >> 24 | - (bmpInfo.size & 0x00ff0000) >> 8 | - (bmpInfo.size & 0x0000ff00) << 8 | - (bmpInfo.size & 0x000000ff) << 24; - bmpInfo.width = (bmpInfo.width & 0xff000000) >> 24 | - (bmpInfo.width & 0x00ff0000) >> 8 | - (bmpInfo.width & 0x0000ff00) << 8 | - (bmpInfo.width & 0x000000ff) << 24; - bmpInfo.height = (bmpInfo.height & 0xff000000) >> 24 | - (bmpInfo.height & 0x00ff0000) >> 8 | - (bmpInfo.height & 0x0000ff00) << 8 | - (bmpInfo.height & 0x000000ff) << 24; - bmpInfo.planes = ((bmpInfo.planes & 0xff00) >> 8) | - ((bmpInfo.planes & 0x00ff) << 8); - bmpInfo.bitCount = ((bmpInfo.bitCount & 0xff00) >> 8) | - ((bmpInfo.bitCount & 0x00ff) << 8); - bmpInfo.compression = (bmpInfo.compression & 0xff000000) >> 24 | - (bmpInfo.compression & 0x00ff0000) >> 8 | - (bmpInfo.compression & 0x0000ff00) << 8 | - (bmpInfo.compression & 0x000000ff) << 24; - bmpInfo.sizeImage = (bmpInfo.sizeImage & 0xff000000) >> 24 | - (bmpInfo.sizeImage & 0x00ff0000) >> 8 | - (bmpInfo.sizeImage & 0x0000ff00) << 8 | - (bmpInfo.sizeImage & 0x000000ff) << 24; - bmpInfo.xPelsPerMeter = (bmpInfo.xPelsPerMeter & 0xff000000) >> 24 | - (bmpInfo.xPelsPerMeter & 0x00ff0000) >> 8 | - (bmpInfo.xPelsPerMeter & 0x0000ff00) << 8 | - (bmpInfo.xPelsPerMeter & 0x000000ff) << 24; - bmpInfo.yPelsPerMeter = (bmpInfo.yPelsPerMeter & 0xff000000) >> 24 | - (bmpInfo.yPelsPerMeter & 0x00ff0000) >> 8 | - (bmpInfo.yPelsPerMeter & 0x0000ff00) << 8 | - (bmpInfo.yPelsPerMeter & 0x000000ff) << 24; - bmpInfo.clrUsed = (bmpInfo.clrUsed & 0xff000000) >> 24 | - (bmpInfo.clrUsed & 0x00ff0000) >> 8 | - (bmpInfo.clrUsed & 0x0000ff00) << 8 | - (bmpInfo.clrUsed & 0x000000ff) << 24; - bmpInfo.clrImportant = (bmpInfo.clrImportant & 0xff000000) >> 24 | - (bmpInfo.clrImportant & 0x00ff0000) >> 8 | - (bmpInfo.clrImportant & 0x0000ff00) << 8 | - (bmpInfo.clrImportant & 0x000000ff) << 24; - } - - if(bmpInfo.width < 0) - { - //This needs to be abstracted somehow -#ifdef WIN32 - MessageBox(NULL, "Image width is negative", "ERROR", MB_OK); -#endif - fclose(f); - return NULL; - } - - if(bmpInfo.width % 4 != 0) - { - //This needs to be abstracted somehow -#ifdef WIN32 - MessageBox(NULL, "Image width must be a multiple of 8", "ERROR", MB_OK); -#endif - fclose(f); - return NULL; - } - - if(bmpInfo.height < 0) - { - //This needs to be abstracted somehow -#ifdef WIN32 - MessageBox(NULL, "Image height is negative", "ERROR", MB_OK); -#endif - fclose(f); - return NULL; - } - - if(bmpInfo.height % 4 != 0) - { - //This needs to be abstracted somehow -#ifdef WIN32 - MessageBox(NULL, "Image height must be a multiple of 8", "ERROR", MB_OK); -#endif - fclose(f); - return NULL; - } - - if((bmpInfo.bitCount != 8 && bmpInfo.bitCount != 24) || bmpInfo.compression != 0) - { - //This needs to be abstracted somehow -#ifdef WIN32 - MessageBox(NULL, "Only 8 and 24 bit uncompressed windows bmp files are currently supported", "ERROR", MB_OK); -#endif - fclose(f); - return NULL; - } - - //Allocate memory for a TextureImage structure - TextureImage* tex = new TextureImage; - tex->sizeX = bmpInfo.width; - tex->sizeY = bmpInfo.height; - if(bmpInfo.bitCount >= 8) - { - tex->bpp = bmpInfo.bitCount >> 3; - } - tex->type = GL_RGB; - uint32 pixels = tex->sizeX * tex->sizeY; - uint32 bytes = pixels * tex->bpp; - tex->data = new uint8[bytes]; - - if(bmpInfo.bitCount == 8) - { - //Load the pallette - palletteEntries = bmpInfo.bitCount << 8; - bmpPallette = new BITMAP_QUAD[palletteEntries]; - fread(bmpPallette, sizeof(BITMAP_QUAD), palletteEntries, f); - } - - fseek(f, bmpHeader.offset, SEEK_SET); - fread(tex->data, bytes, 1, f); - - if(bmpInfo.bitCount == 8) - { - //Apply the pallette - uint8* image = tex->data; - tex->bpp = 24; - bytes = pixels * tex->bpp; - tex->data = new uint8[bytes]; - - uint32 i; - uint32 i2; - for(i=0; idata[i2] = bmpPallette[image[i]].red; - tex->data[i2 + 1] = bmpPallette[image[i]].blue; - tex->data[i2 + 2] = bmpPallette[image[i]].green; - } - - delete [] image; - image = NULL; - } - else if(bmpInfo.bitCount == 24) - { - uint32 i; - uint8 t; - - for(i=0; idata[i]; - tex->data[i] = tex->data[i+2]; - tex->data[i+2] = t; - } - } - return tex; - } - return NULL; - } -}; diff --git a/src/bmp.h b/src/bmp.h deleted file mode 100644 index 5f17327..0000000 --- a/src/bmp.h +++ /dev/null @@ -1,48 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __bmp_h__ -#define __bmp_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include "texture.h" - -namespace OpenArena{ - /** - * \brief - * Loads a bitmap (*.bmp) file and returns a pointer to a TextureImage object. - * - * \param filename - * The path to the file to open. - * - * \returns - * A pointer to the created TextureImage object. - * - * \remarks - * Will be replaced with an actual class soon - * - * \see - */ - TextureImage* LoadBMP(const char* Filename); -}; - -#endif diff --git a/src/camera.cpp b/src/camera.cpp deleted file mode 100644 index d0b7fc9..0000000 --- a/src/camera.cpp +++ /dev/null @@ -1,232 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -//////////////////////////////////////////////////////////////////////////////// -// -// Module: camera.cpp -// Author: Tom Hicks -// Creation: 09-01-2003 -// LastEdit: 10-09-2003 -// Editors: Tom Hicks -// -// Purpose: -// To implement an OpenGL Camera -// -// Summary of Methods: -// Camera -// -Camera(); -// Initalize PDM's. Sets position to 0,0,0 up to 0,1,0 and view to 0,0,-1 -// -Vec3f Position(); -// Returns a copy of the position vector. -// -Vec3f View(); -// Returns a copy of the view vector. -// -Vec3f UpVector(); -// Returns a copy of the up vector. -// -Vec3f Strafe(); -// Returns a copy of the strafe vector. -// -void PositionCamera(double xpos, double ypos, double zpos, -// double xview, double yview, double zview, -// double xup, double yup, double zup); -// Sets the position, up, and view vectors to those created from the respective input values. -// -void PositionCamera(Vec3f pos, Vec3f view, Vec3f up); -// Sets the position, up, and view vectors to those passed in. -// -void RotateView(double angle, double X, double Y, double Z); -// Rotates the view angle degrees on the axis specified by X, Y, and Z. -// -void SetViewByMouse(Screen g_Screen); -// Rotates the pitch and yaw of the view based on the mouse. -// -void RotateAroundPoint(double angle, double X, double Y, double Z, Vec3f vCenter); -// Rotates the view angle degrees around a point vCenter on the axis specified by X, Y, Z. -// -void StrafeCamera(double speed); -// Moves the camera along an axis perpendicular to the plane specified by the up and view vectors a distance specified by speed. -// -void MoveCamera(double speed); -// Moves the camera along the axis specified by it's view vector a distance equal to speed. -// -void Update(); -// Update the internal strafe vector. -// -void Look(); -// Positions the current viewport at point of the camera and facing the same direction. -// -//////////////////////////////////////////////////////////////////////////////// - -#include "camera.h" - -namespace OpenArena -{ - Camera::Camera() - { - _position = Vec3f(0,0,0); - _heading = Vec3f(0,0,-1); - _up = Vec3f(0,1,0); - } - - void Camera::PositionCamera(double xpos, double ypos, double zpos, - double xview, double yview, double zview, - double xup, double yup, double zup) - { - _position = Vec3f(xpos, ypos, zpos); - _heading = Vec3f(xview-xpos, yview-ypos, zview-zpos); - _up = Vec3f(xup, yup, zup).normalized(); - UpdateVectors(); - } - - void Camera::PositionCamera(Vec3f pos, Vec3f view, Vec3f up) - { - _position = pos; - _heading = view-pos; - _up = up; - UpdateVectors(); - } - - void Camera::SetViewByMouse(Window window) - { - static double currentRotX = 0.0f; - Vec2i pos; - Vec2i middle; - double angleZ; - - middle.x = window.GetWidth()/2; - middle.y = window.GetHeight()/2; - pos = window.GetMousePosition(); - if(pos != middle) - { - window.SetMousePosition(middle); - angleZ = (middle.y - pos.y)/1000.0; - currentRotX-=angleZ; - if(currentRotX >1.0) - { - currentRotX = 1.0; - } - else if(currentRotX < -1.0) - { - currentRotX = -1.0; - } - else - { - Vec3d axis = (_heading).cross(_up); - axis.normalize(); - RotateView(angleZ, axis.x, axis.y, axis.z); - RotateView((middle.x-pos.x)/1000.0, 0, 1, 0); - //RotateView((middle.x-pos.x)/1000.0, m_vUpVector.x, m_vUpVector.y, m_vUpVector.z); - } - } - } - - void Camera::MoveCamera(double speed) - { - _position = _position + _heading * speed; - UpdateVectors(); - } - - void Camera::RotateView(double angle, Vec3d axis) - { - //Maybe make this not call the other RotateView later - axis.normalize(); - RotateView(angle, axis.x, axis.y, axis.z); - } - - void Camera::RotateView(double angle, double x, double y, double z) - { - double cosTheta = cos(angle); - double sinTheta = sin(angle); - - double newX = (cosTheta + (1 - cosTheta) * x * x) * _heading.x + - ((1 - cosTheta) * x * y - z * sinTheta) * _heading.y + - ((1 - cosTheta) * x * z + y * sinTheta) * _heading.z; - - double newY = (cosTheta + (1 - cosTheta) * y * y) * _heading.y + - ((1 - cosTheta) * x * y + z * sinTheta) * _heading.x + - ((1 - cosTheta) * y * z - x * sinTheta) * _heading.z; - - double newZ = (cosTheta + (1 - cosTheta) * z * z) * _heading.z + - ((1 - cosTheta) * x * z - y * sinTheta) * _heading.x + - ((1 - cosTheta) * y * z + x * sinTheta) * _heading.y; - - _heading.x = newX; - _heading.y = newY; - _heading.z = newZ; - } - - void Camera::StrafeCamera(double speed) - { - _position = _position + _strafe * speed; - } - - - - void Camera::Update() - { - _strafe = ((_heading).cross(_up)).normalized(); - } - - void Camera::Look() - { - Vec3f view = _position + _heading; - gluLookAt(_position.x, _position.y, _position.z, - view.x, view.y, view.z, - _up.x, _up.y, _up.z); - } - - Vec3f Camera::Position() - { - return _position; - } - - Vec3f Camera::Strafe() - { - return _strafe; - } - - Vec3f Camera::UpVector() - { - return _up; - } - - Vec3f Camera::View() - { - return _heading + _position; - } - - void Camera::RotateHorizontal(float angle) - { - RotateView(angle, GetUpVector()); - } - - void Camera::RotateVertical(float angle) - { - RotateView(angle, GetRightVector()); - } - - Vec3f Camera::GetUpVector() - { - return _up; - } - - Vec3f Camera::GetRightVector() - { - return _strafe; - } - - Vec3f Camera::GetForwardVector() - { - return _heading; - } - - void Camera::UpdateVectors() - { - } -}; diff --git a/src/camera.h b/src/camera.h deleted file mode 100644 index 7e41494..0000000 --- a/src/camera.h +++ /dev/null @@ -1,384 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -/*! - * - * - * Copyright (c) 2005 by Tom Hicks tomhicks@olympusonline.net - */ -#ifndef __camera_h__ -#define __camera_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#ifdef WIN32 -#include //Currently used for mouse stuff this should be replaced by oa_input -#endif -#include "vector.h" -#include "mygl.h" -#include "screen.h" - -namespace OpenArena -{ - /*! - * \brief - * The Camera class represents a camera or view in 3-dimensional space. - * - * The Camera class maintains location, view, and orientation (up view) vectors. The Camera can be moved and rotated in any direction. It includes a wrapper, Look(), for gluLookAt. - * - * \remarks - * - * \see - */ - class Camera - { - public: - /*! - * \brief - * Creates a new Camera object. - * - * Creates a new Camera object located at the origin, pointing at the negative z-axis with up being the positive y-axis. - * - */ - Camera(); //Default Constructor - - //Camera(const Camera&); //Copy Constructor - - /*! - * \brief - * Returns this Camera's position. - * - * \returns - * This Camera's position as a Vec3d vector. - * - * Returns this Camera's position. - * - */ - Vec3f Position(); - - /*! - * \brief - * Returns the view vector of this camera. - * - * \returns - * The view vector of this camera. - * - * \remarks - * - * \see - */ - Vec3d View(); - - /*! - * \brief - * Returns a vector pointing up with respect to the view. - * - * \returns - * A vector pointing up with respect to the view. - * - * \remarks - * - * \see - */ - Vec3d UpVector(); - - /*! - * \brief - * Returns this Camera's strafe vector. - * - * The strafe axis is an axis perpendicular to both the up vector and the view vector. - * - * \returns - * This Camera's strafe vector. - * - * \remarks - * - * \see - */ - Vec3d Strafe(); - - /*! - * \brief - * Relocates and reorients this Camera. - * - * \param xpos - * The x-coordinate of the new position vector. - * - * \param ypos - * The y-coordinate of the new position vector. - * - * \param zpos - * The z-coordinate of the new position vector. - * - * \param xview - * The x-coordinate of the new view vector. - * - * \param yview - * The y-coordinate of the new view vector. - * - * \param zview - * The z-coordinate of the new view vector. - * - * \param xup - * The x-coordinate of the new up vector. - * - * \param yup - * The y-coordinate of the new up vector. - * - * \param zup - * The z-coordinate of the new up vector. - * - * \remarks - * - * \see - */ - void PositionCamera(double xpos, double ypos, double zpos, - double xview, double yview, double zview, - double xup, double yup, double zup); - - /*! - * \brief - * Relocates and reorients this Camera. - * - * \param pos - * The new position vector. - * - * \param view - * The new view vector. - * - * \param up - * The new up vector. - * - * \remarks - * - * \see - */ - void PositionCamera(Vec3d pos, Vec3d view, Vec3d up); - - /*! - * \brief - * Rotates the camera a given ammount around a given axis. - * - * \param angle - * The number of degrees to rotate. - * - * \param axis - * A vector representing the axis to rotate around. - * - * This method passes the arguments to glRotatef() - - * \remarks - * - * \see - */ - void RotateView(double angle, Vec3d axis); - - /*! - * \brief - * Rotates the camera a given ammount around a given axis. - * - * \param angle - * The number of degrees to rotate. - * - * \param X - * The x component of the vector representing the axis to rotate around - * - * \param Y - * The y component of the vector representing the axis to rotate around - * - * \param Z - * The z component of the vector representing the axis to rotate around - * - * \remarks - * The vector should be normalized as the values get passed directly to glRotatef(). - * - * \see - */ - void RotateView(double angle, double X, double Y, double Z); - - /*! - * \brief - * Updates the view and up vectors based on mouse movement. - * - * \param window - * The Window used to get the mouse coordinates. - * - * \remarks - * This will be removed in favor of some sort of event trigger. - * - * \see - */ - void SetViewByMouse(Window window); - - /*! - * \brief - * Moves the camera along its strafe axis a given distance. - * - * \param speed - * The distance to move. - * - * \remarks - * - * \see - */ - void StrafeCamera(double speed); - //Purpose: - // Moves the camera along it's strafe vector speed units. - - /*! - * \brief - * Moves the camera along its view vector a given number of units. - * - * \param speed - * The distance to move the camera. - * - * \remarks - * - * \see - */ - void MoveCamera(double speed); - - /*! - * \brief - * Recalculates the strafe vector. - * - * \remarks - * - * \see - */ - void Update(); - - /*! - * \brief - * Calls gluLookAt to tell OpenGL where to render from. - * - * \remarks - * Uses the position, view, and up vectors. - * - * \see - */ - void Look(); - - /*! - * \brief - * Write brief comment for RotateHorizontal here. - * - * \param angle - * Description of parameter angle. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for RotateHorizontal here. - * - * \remarks - * Write remarks for RotateHorizontal here. - * - * \see - * Separate items with the '|' character. - */ - void RotateHorizontal(float angle); - - /*! - * \brief - * Write brief comment for RotateVertical here. - * - * \param angle - * Description of parameter angle. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for RotateVertical here. - * - * \remarks - * Write remarks for RotateVertical here. - * - * \see - * Separate items with the '|' character. - */ - void RotateVertical(float angle); - - private: - /*! - * \brief - * Write brief comment for GetUpVector here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for GetUpVector here. - * - * \remarks - * Write remarks for GetUpVector here. - * - * \see - * Separate items with the '|' character. - */ - Vec3f GetUpVector(); - - /*! - * \brief - * Returns a unit vector pointing to the immediate right of the current view. - * - * - * \returns - * A unit vector pointing to the immediate right of the current view. - * - * Returns a unit vector pointing to the immediate right of the current view. - * This is the direction of a positive strafe movement. - * - * \remarks - * - * \see - */ - Vec3f GetRightVector(); - - /*! - * \brief - * Returns a unit vector pointing directly into the current view. - * - * \returns - * A unit vector pointing directly into the current view. - * - * Returns a unit vector pointing directly into the current view. This is the direction of positive movement. - * - * \remarks - * - * \see - */ - Vec3f GetForwardVector(); - - void UpdateVectors(); - - private: - Vec3f _heading; - Vec3f _position; - Vec3f _up; - Vec3f _strafe; - }; -}; - -#endif diff --git a/src/carbon.h b/src/carbon.h deleted file mode 100644 index c57332d..0000000 --- a/src/carbon.h +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef __carbon_h__ -#define __carbon_h__ - -#endif /*__carbon_h__*/ diff --git a/src/ctrls.cpp b/src/ctrls.cpp deleted file mode 100644 index ba0ee9f..0000000 --- a/src/ctrls.cpp +++ /dev/null @@ -1,224 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -//////////////////////////////////////////////////////////////////////////////// -// -// Module: ctrls.cpp -// Author: Tom Hicks -// Creation: 09-01-2003 -// LastEdit: 06-19-2005 -// Editors: Tom Hicks -// -// Purpose: -// To implement a system for managing a bindable control scheme. -// -// Summary of Methods: -// ControlScheme -// void LoadDefaultControlScheme(); -// -Loads the default control scheme -// void ClearControlScheme(); -// -Clears the control scheme -// void Unbind(uint8 key); -// -Removes key from all control lists. -// -// Summary of Properties: -// ControlScheme -// -//////////////////////////////////////////////////////////////////////////////// - -#include "ctrls.h" -#include "strmanip.h" -using std::string; -using std::ostream; -using std::endl; - -namespace OpenArena{ - void ControlScheme::LoadDefaultControlScheme() - { - Bind(OpenArena::KEY_LBUTTON, ACTION_FORWARD); - Bind(OpenArena::KEY_RBUTTON, ACTION_BACKWARD); - Bind(OpenArena::KEY_LEFT, ACTION_LOOKLEFT); - Bind(OpenArena::KEY_RIGHT, ACTION_LOOKRIGHT); - Bind(OpenArena::KEY_UP, ACTION_LOOKUP); - Bind(OpenArena::KEY_DOWN, ACTION_LOOKDOWN); - Bind(OpenArena::KEY_S, ACTION_MOVELEFT); - Bind(OpenArena::KEY_D, ACTION_MOVERIGHT); - Bind(OpenArena::KEY_SPACE, ACTION_MOVEUP); - Bind(OpenArena::KEY_A, ACTION_MOVEDOWN); - Bind(OpenArena::KEY_F, ACTION_FIREPRIMARY); - Bind(OpenArena::KEY_G, ACTION_FIRESECONDARY); - Bind(OpenArena::KEY_T, ACTION_WEAPONNEXT); - Bind(OpenArena::KEY_R, ACTION_WEAPONPREV); - Bind(OpenArena::KEY_L, ACTION_TOGGLE_LIGHTS); - Bind(OpenArena::KEY_P, ACTION_TOGGLE_FPS); - Bind(OpenArena::KEY_OEM_3, ACTION_TOGGLE_CONSOLE); - Bind(OpenArena::KEY_M, ACTION_TOGGLE_MOUSELOOK); - Bind(OpenArena::KEY_Q, ACTION_QUICKMOUSELOOK); - Bind(OpenArena::KEY_W, ACTION_ROLLLEFT); - Bind(OpenArena::KEY_E, ACTION_ROLLRIGHT); - } - void ControlScheme::UnBindAll() - { - OpenArena::Keys key; - for(key=(OpenArena::Keys)0; key<(OpenArena::Keys)256; key = (OpenArena::Keys)(key+1)) - { - UnBind(key); - } - } - - void ControlScheme::UnBind(OpenArena::Keys key) - { - keyActions[key] = ACTION_NONE; - } - - void ControlScheme::Bind(OpenArena::Keys key, Action action) - { - keyActions[key] = action; - } - - void ControlScheme::WriteToStream(std::ostream& output) - { - //output << " bind " << action << keyname << endl; - OpenArena::Keys key; - for(key=(OpenArena::Keys)0; key<(OpenArena::Keys)256; key = (OpenArena::Keys)(key+1)) - { - if(keyActions[key] != ACTION_NONE) - { - output << " bind " << ActionName(keyActions[key]) << GetKeyName(key) << endl; - } - } - } - - ControlScheme::Action ControlScheme::GetAction(const char* actionName) - { - string str = actionName; - str = tolower(str); - if(str == "none"){ - return ACTION_NONE; - }else if(str == "forward"){ - return ACTION_FORWARD; - }else if(str == "backward"){ - return ACTION_BACKWARD; - }else if(str == "lookleft"){ - return ACTION_LOOKLEFT; - }else if(str == "lookright"){ - return ACTION_LOOKRIGHT; - }else if(str == "lookup"){ - return ACTION_LOOKUP; - }else if(str == "lookdown"){ - return ACTION_LOOKDOWN; - }else if(str == "moveleft"){ - return ACTION_MOVELEFT; - }else if(str == "moveright"){ - return ACTION_MOVERIGHT; - }else if(str == "moveup"){ - return ACTION_MOVEUP; - }else if(str == "movedown"){ - return ACTION_MOVEDOWN; - }else if(str == "rollleft"){ - return ACTION_ROLLLEFT; - }else if(str == "rollright"){ - return ACTION_ROLLRIGHT; - }else if(str == "fireprimary"){ - return ACTION_FIREPRIMARY; - }else if(str == "firesecondary"){ - return ACTION_FIRESECONDARY; - }else if(str == "weaponnext"){ - return ACTION_WEAPONNEXT; - }else if(str == "weaponprev"){ - return ACTION_WEAPONPREV; - }else if(str == "togglelights"){ - return ACTION_TOGGLE_LIGHTS; - }else if(str == "togglefps"){ - return ACTION_TOGGLE_FPS; - }else if(str == "toggleconsole"){ - return ACTION_TOGGLE_CONSOLE; - }else if(str == "togglemouselook"){ - return ACTION_TOGGLE_MOUSELOOK; - }else if(str == "quickmouselook"){ - return ACTION_QUICKMOUSELOOK; - }else{ - return ACTION_NONE; - } - } - - string ControlScheme::ActionName(Action action) - { - switch(action) - { - case ACTION_NONE: - return "none"; - case ACTION_FORWARD: - return "forward"; - case ACTION_BACKWARD: - return "backward"; - case ACTION_LOOKLEFT: - return "lookleft"; - case ACTION_LOOKRIGHT: - return "lookright"; - case ACTION_LOOKUP: - return "lookup"; - case ACTION_LOOKDOWN: - return "lookdown"; - case ACTION_MOVELEFT: - return "moveleft"; - case ACTION_MOVERIGHT: - return "moveright"; - case ACTION_MOVEUP: - return "moveup"; - case ACTION_MOVEDOWN: - return "movedown"; - case ACTION_ROLLLEFT: - return "rollleft"; - case ACTION_ROLLRIGHT: - return "rollright"; - case ACTION_FIREPRIMARY: - return "fireprimary"; - case ACTION_FIRESECONDARY: - return "firesecondary"; - case ACTION_WEAPONNEXT: - return "weaponnext"; - case ACTION_WEAPONPREV: - return "weaponprev"; - case ACTION_TOGGLE_LIGHTS: - return "togglelights"; - case ACTION_TOGGLE_FPS: - return "togglefps"; - case ACTION_TOGGLE_CONSOLE: - return "toggleconsole"; - case ACTION_TOGGLE_MOUSELOOK: - return "togglemouselook"; - case ACTION_QUICKMOUSELOOK: - return "quickmouselook"; - default: - return "unknown"; - }; - } - - bool ControlScheme::IsBound(OpenArena::Keys key, Action action) - { - if(keyActions[key] == action) - { - return true; - } - - return false; - } -}; - diff --git a/src/ctrls.h b/src/ctrls.h deleted file mode 100644 index f333d3f..0000000 --- a/src/ctrls.h +++ /dev/null @@ -1,76 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __ctrls_h__ -#define __ctrls_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif -#include -#include -#include "keys.h" -#include "datatypes.h" - -namespace OpenArena{ - class ControlScheme - { - public: - enum Action - { - ACTION_NONE = 0, - ACTION_FORWARD, - ACTION_BACKWARD, - ACTION_LOOKLEFT, - ACTION_LOOKRIGHT, - ACTION_LOOKUP, - ACTION_LOOKDOWN, - ACTION_MOVELEFT, - ACTION_MOVERIGHT, - ACTION_MOVEUP, - ACTION_MOVEDOWN, - ACTION_ROLLLEFT, - ACTION_ROLLRIGHT, - ACTION_FIREPRIMARY, - ACTION_FIRESECONDARY, - ACTION_WEAPONNEXT, - ACTION_WEAPONPREV, - ACTION_TOGGLE_LIGHTS, - ACTION_TOGGLE_FPS, - ACTION_TOGGLE_CONSOLE, - ACTION_TOGGLE_MOUSELOOK, - ACTION_QUICKMOUSELOOK, - NUM_ACTIONS - }; - - void LoadDefaultControlScheme(); - void UnBindAll(); - void UnBind(OpenArena::Keys key); - void Bind(OpenArena::Keys key, Action action); - void WriteToStream(std::ostream& output); - static Action GetAction(const char* actionName); - static const char* GetActionName(Action action); - bool IsBound(OpenArena::Keys key, Action action); - private: - std::string ActionName(Action action); - Action keyActions[256]; - }; -}; - -#endif diff --git a/src/datatypes.h b/src/datatypes.h deleted file mode 100644 index f186be8..0000000 --- a/src/datatypes.h +++ /dev/null @@ -1,81 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __datatypes_h__ -#define __datatypes_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#ifdef WIN32 //Make this MSVC something -typedef unsigned __int8 uint8; -typedef unsigned __int16 uint16; -typedef unsigned __int32 uint32; -typedef unsigned __int64 uint64; -typedef __int8 int8; -typedef __int16 int16; -typedef __int32 int32; -typedef __int64 int64; -typedef signed __int8 sint8; -typedef signed __int16 sint16; -typedef signed __int32 sint32; -typedef signed __int64 sint64; - -/* -typedef unsigned __int8 byte; -typedef unsigned __int16 word; -typedef unsigned __int32 dword; -typedef unsigned __int64 qword; - -typedef byte db; -typedef word dw; -typedef dword dd; -typedef qword dq; -*/ -#endif - -#ifdef __GNUC__ //ie if we are using GCC //used to be __linux -typedef unsigned char uint8; -typedef unsigned short uint16; -typedef unsigned long uint32; -typedef unsigned long long uint64; -typedef char int8; -typedef short int16; -typedef long int32; -typedef long long int64; -typedef signed char sint8; -typedef signed short sint16; -typedef signed long sint32; -typedef signed long long sint64; - -/* -typedef unsigned char byte; -typedef unsigned short word; -typedef unsigned long dword; -typedef unsigned long long qword; - -typedef byte db; -typedef word dw; -typedef dword dd; -typedef qword dq; -*/ -#endif - -#endif diff --git a/src/geometry.h b/src/geometry.h deleted file mode 100644 index b188f4b..0000000 --- a/src/geometry.h +++ /dev/null @@ -1,64 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __geometry_h__ -#define __geometry_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include "vector.h" -#include "myglTexture.h" - -namespace OpenArena -{ - class Vertex - { - public: - Vec3f coordinates; - Vec2f textureCoordinates; - }; - - /*! - * \brief - * Write brief comment for Triangle here. - * - * Write detailed description for Triangle here. - * - * \remarks - * Write remarks for Triangle here. - * - * \see - * Separate items with the '|' character. - */ - class Triangle - { - public: - Texture texture; - uint32 texID; - Vertex vertecies[3]; -// Vec3f vertecies[3]; -// Vec2f texCoords[3]; - Vec3f normal; - }; - -}; - -#endif diff --git a/src/image.h b/src/image.h deleted file mode 100644 index 6a6c856..0000000 --- a/src/image.h +++ /dev/null @@ -1,181 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __image_h__ -#define __image_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include "datatypes.h" - -namespace OpenArena -{ - /*! - * \brief - * Write brief comment for Image here. - * - * Write detailed description for Image here. - * - * \remarks - * Write remarks for Image here. - * - * \see - * Separate items with the '|' character. - */ - class Image - { - public: - //RGB should equal GL_RGB; - enum Type{Type_RGB}; - /*! - * \brief - * Write brief comment for GetImageData here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for GetImageData here. - * - * \remarks - * Write remarks for GetImageData here. - * - * \see - * Separate items with the '|' character. - */ - virtual uint8 * GetImageData() const = 0; - /*! - * \brief - * Write brief comment for GetBitsPerPixel here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for GetBitsPerPixel here. - * - * \remarks - * Write remarks for GetBitsPerPixel here. - * - * \see - * Separate items with the '|' character. - */ - virtual uint32 GetBitsPerPixel() const = 0; - /*! - * \brief - * Write brief comment for GetBytesPerPixel here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for GetBytesPerPixel here. - * - * \remarks - * Write remarks for GetBytesPerPixel here. - * - * \see - * Separate items with the '|' character. - */ - virtual uint32 GetBytesPerPixel() const = 0; - /*! - * \brief - * Write brief comment for GetWidth here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for GetWidth here. - * - * \remarks - * Write remarks for GetWidth here. - * - * \see - * Separate items with the '|' character. - */ - virtual uint32 GetWidth() const = 0; - /*! - * \brief - * Write brief comment for GetHeight here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for GetHeight here. - * - * \remarks - * Write remarks for GetHeight here. - * - * \see - * Separate items with the '|' character. - */ - virtual uint32 GetHeight() const = 0; - /*! - * \brief - * Write brief comment for GetType here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for GetType here. - * - * \remarks - * Write remarks for GetType here. - * - * \see - * Separate items with the '|' character. - */ - virtual Image::Type GetType() const = 0; - /*! - * \brief - * Write brief comment for ~Image here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for ~Image here. - * - * \remarks - * Write remarks for ~Image here. - * - * \see - * Separate items with the '|' character. - */ - virtual ~Image(void){} - }; -}; - -#endif diff --git a/src/keys.cpp b/src/keys.cpp deleted file mode 100644 index b30dc66..0000000 --- a/src/keys.cpp +++ /dev/null @@ -1,572 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#include "keys.h" - -#include - -using std::string; - -char OpenArena::KeyToASCII(Keys key, bool shift) -{ - if(key == KEY_UNKNOWN) - { - return '\0'; - } - else - { - switch(key) - { - case KEY_OEM_1: - if(shift) - { - return ':'; - } - else - { - return ';'; - } - case KEY_OEM_2: - if(shift) - { - return '?'; - } - else - { - return '/'; - } - case KEY_OEM_3: - if(shift) - { - return '~'; - } - else - { - return '`'; - } - case KEY_OEM_4: - if(shift) - { - return '{'; - } - else - { - return '['; - } - case KEY_OEM_5: - if(shift) - { - return '|'; - } - else - { - return '\\'; - } - case KEY_OEM_6: - if(shift) - { - return '}'; - } - else - { - return ']'; - } - case KEY_OEM_7: - if(shift) - { - return '\''; - } - else - { - return '"'; - } - case KEY_OEM_PERIOD: - if(shift) - { - return '>'; - } - else - { - return '.'; - } - case KEY_OEM_PLUS: - if(shift) - { - return '+'; - } - else - { - return '='; - } - case KEY_OEM_COMMA: - if(shift) - { - return '<'; - } - else - { - return ','; - } - case KEY_OEM_MINUS: - if(shift) - { - return '_'; - } - else - { - return '-'; - } - default: - if(key >= KEY_A && key <= KEY_Z) - { - if(shift) - { - return key - KEY_A + 'A'; - } - else - { - return key - KEY_A + 'a'; - } - } - else if(key >= KEY_0 && key <= KEY_9) - { - if(shift) - { - switch(key - KEY_0) - { - case 0: - return ')'; - case 1: - return '!'; - case 2: - return '@'; - case 3: - return '#'; - case 4: - return '$'; - case 5: - return '%'; - case 6: - return '^'; - case 7: - return '&'; - case 8: - return '*'; - case 9: - return '('; - } - } - else - { - return key - KEY_0 + '0'; - } - } - else - { - return '\0'; - } - } - } - return '\0'; -} - -const char* OpenArena::GetKeyName(Keys key) -{ - switch(key) - { - case KEY_UNKNOWN: - return "unknown"; - case KEY_BUTTON0: - return "button0"; - case KEY_BUTTON1: - return "button1"; - case KEY_BUTTON2: - return "button2"; - case KEY_BUTTON3: - return "button3"; - case KEY_BUTTON4: - return "button4"; - case KEY_LEFT: - return "left"; - case KEY_RIGHT: - return "right"; - case KEY_UP: - return "up"; - case KEY_DOWN: - return "down"; - case KEY_SPACE: - return "space"; - case KEY_RETURN: - return "return"; - case KEY_SHIFT: - return "shift"; - case KEY_PAUSE: - return "pause"; - case KEY_CONTROL: - return "ctrl"; - case KEY_CAPITAL: - return "caps"; - case KEY_ESCAPE: - return "esc"; - case KEY_PRIOR: - return "pgup"; - case KEY_NEXT: - return "pgdn"; - case KEY_END: - return "end"; - case KEY_HOME: - return "home"; - case KEY_INSERT: - return "insert"; - case KEY_DELETE: - return "del"; - case KEY_LWIN: - return "leftwin"; - case KEY_RWIN: - return "rightwin"; - case KEY_APPS: - return "apps"; - case KEY_NUMPAD0: - return "kp0"; - case KEY_NUMPAD1: - return "kp1"; - case KEY_NUMPAD2: - return "kp2"; - case KEY_NUMPAD3: - return "kp3"; - case KEY_NUMPAD4: - return "kp4"; - case KEY_NUMPAD5: - return "kp5"; - case KEY_NUMPAD6: - return "kp6"; - case KEY_NUMPAD7: - return "kp7"; - case KEY_NUMPAD8: - return "kp8"; - case KEY_NUMPAD9: - return "kp9"; - case KEY_MULTIPLY: - return "multiply"; - case KEY_ADD: - return "plus"; - case KEY_SUBTRACT: - return "minus"; - case KEY_DIVIDE: - return "divide"; - case KEY_F1: - return "f1"; - case KEY_F2: - return "f2"; - case KEY_F3: - return "f3"; - case KEY_F4: - return "f4"; - case KEY_F5: - return "f5"; - case KEY_F6: - return "f6"; - case KEY_F7: - return "f7"; - case KEY_F8: - return "f8"; - case KEY_F9: - return "f9"; - case KEY_F10: - return "f10"; - case KEY_F11: - return "f11"; - case KEY_F12: - return "f12"; - case KEY_NUMLOCK: - return "numlock"; - case KEY_SCROLL: - return "scrolllock"; - case KEY_SEPARATOR: - return "_separator"; - case KEY_OEM_1: - return "semicolon"; - case KEY_OEM_2: - return "slash"; - case KEY_OEM_3: - return "tilde"; - case KEY_OEM_4: - return "leftbracket"; - case KEY_OEM_5: - return "backslash"; - case KEY_OEM_6: - return "rightbracket"; - case KEY_OEM_7: - return "quote"; - case KEY_OEM_PERIOD: - return "period"; - case KEY_OEM_PLUS: - return "equals"; - case KEY_OEM_MINUS: - return "minus"; - case KEY_OEM_COMMA: - return "comma"; - case KEY_BACK: - return "backspace"; - case KEY_TAB: - return "tab"; - case KEY_0: - return "0"; - case KEY_1: - return "1"; - case KEY_2: - return "2"; - case KEY_3: - return "3"; - case KEY_4: - return "4"; - case KEY_5: - return "5"; - case KEY_6: - return "6"; - case KEY_7: - return "7"; - case KEY_8: - return "8"; - case KEY_9: - return "9"; - case KEY_A: - return "a"; - case KEY_B: - return "b"; - case KEY_C: - return "c"; - case KEY_D: - return "d"; - case KEY_E: - return "e"; - case KEY_F: - return "f"; - case KEY_G: - return "g"; - case KEY_H: - return "h"; - case KEY_I: - return "i"; - case KEY_J: - return "j"; - case KEY_K: - return "k"; - case KEY_L: - return "l"; - case KEY_M: - return "m"; - case KEY_N: - return "n"; - case KEY_O: - return "o"; - case KEY_P: - return "p"; - case KEY_Q: - return "q"; - case KEY_R: - return "r"; - case KEY_S: - return "s"; - case KEY_T: - return "t"; - case KEY_U: - return "u"; - case KEY_V: - return "v"; - case KEY_W: - return "w"; - case KEY_X: - return "x"; - case KEY_Y: - return "y"; - case KEY_Z: - return "z"; - case KEY_ALT_L: - return "leftalt"; - case KEY_ALT_R: - return "rightalt"; - case KEY_COMMAND: - return "command"; - case KEY_ENTER: - return "enter"; - case KEY_OPTION: - return "option"; - } - - return "invalid"; -} - -OpenArena::Keys OpenArena::GetKey(const char* keyName) -{ - string str = keyName; - if (str.length() > 1) - { - if (str.substr(0,2) == "up") - return OpenArena::KEY_UP; - else if (str.substr(0,4) == "down") - return OpenArena::KEY_DOWN; - else if (str.substr(0,3) == "esc") - return OpenArena::KEY_ESCAPE; - else if (str.substr(0,6) == "pageup") - return OpenArena::KEY_PRIOR; - else if (str.substr(0,8) == "pagedown") - return OpenArena::KEY_NEXT; - else if (str.substr(0,5) == "right") - return OpenArena::KEY_RIGHT; - else if (str.substr(0,4) == "left") - return OpenArena::KEY_LEFT; - else if (str.substr(0,5) == "space") - return OpenArena::KEY_SPACE; - else if (str.substr(0,6) == "mouse1") - return OpenArena::KEY_LBUTTON; - else if (str.substr(0,6) == "mouse2") - return OpenArena::KEY_RBUTTON; - else if (str.substr(0,6) == "mouse3") - return OpenArena::KEY_MBUTTON; - else if (str.substr(0,4) == "home") - return OpenArena::KEY_HOME; - else if (str.substr(0,3) == "end") - return OpenArena::KEY_END; - else if (str.substr(0,3) == "tab") - return OpenArena::KEY_TAB; - else if (str.substr(0,5) == "enter") - return OpenArena::KEY_RETURN; - else if (str.substr(0,6) == "insert") - return OpenArena::KEY_INSERT; - else if (str.substr(0,6) == "delete") - return OpenArena::KEY_DELETE; - else if (str.substr(0,7) == "control") - return OpenArena::KEY_CONTROL; - else if (str.substr(0,5) == "shift") - return OpenArena::KEY_SHIFT; - else if (str.substr(0,7) == "numpad0") - return OpenArena::KEY_NUMPAD0; - else if (str.substr(0,7) == "numpad1") - return OpenArena::KEY_NUMPAD1; - else if (str.substr(0,7) == "numpad2") - return OpenArena::KEY_NUMPAD2; - else if (str.substr(0,7) == "numpad3") - return OpenArena::KEY_NUMPAD3; - else if (str.substr(0,7) == "numpad4") - return OpenArena::KEY_NUMPAD4; - else if (str.substr(0,7) == "numpad5") - return OpenArena::KEY_NUMPAD5; - else if (str.substr(0,7) == "numpad6") - return OpenArena::KEY_NUMPAD6; - else if (str.substr(0,7) == "numpad7") - return OpenArena::KEY_NUMPAD7; - else if (str.substr(0,7) == "numpad8") - return OpenArena::KEY_NUMPAD8; - else if (str.substr(0,7) == "numpad9") - return OpenArena::KEY_NUMPAD9; - else if (str.substr(0,9) == "separator") - return OpenArena::KEY_SEPARATOR; - else if (str.substr(0,4) == "lwin") - return OpenArena::KEY_LWIN; - else if (str.substr(0,4) == "rwin") - return OpenArena::KEY_RWIN; - else if (str.substr(0,4) == "apps") - return OpenArena::KEY_APPS; - else if (str.substr(0,7) == "numpad*") - return OpenArena::KEY_MULTIPLY; - else if (str.substr(0,7) == "numpad+") - return OpenArena::KEY_ADD; - else if (str.substr(0,7) == "numpad/") - return OpenArena::KEY_DIVIDE; - else if (str.substr(0,7) == "numpad-") - return OpenArena::KEY_SUBTRACT; - else if (str.substr(0,6) == "scroll") - return OpenArena::KEY_SCROLL; - else if (str.substr(0,7) == "numlock") - return OpenArena::KEY_NUMLOCK; - else if (str.substr(0,5) == "pause") - return OpenArena::KEY_PAUSE; - else if (str.substr(0,8) == "capslock") - return OpenArena::KEY_CAPITAL; - - - - /*uncomment this to enable f1 as a mappable key - else if(str.substr(0,2) == "f1") - return OpenArena::KEY_F1; - */ - - else if (str.substr(0,2) == "f2") - return OpenArena::KEY_F2; - else if (str.substr(0,2) == "f3") - return OpenArena::KEY_F3; - else if (str.substr(0,2) == "f4") - return OpenArena::KEY_F4; - else if (str.substr(0,2) == "f5") - return OpenArena::KEY_F5; - else if (str.substr(0,2) == "f6") - return OpenArena::KEY_F6; - else if (str.substr(0,2) == "f7") - return OpenArena::KEY_F7; - else if (str.substr(0,2) == "f8") - return OpenArena::KEY_F8; - else if (str.substr(0,2) == "f9") - return OpenArena::KEY_F9; - else if (str.substr(0,2) == "f10") - return OpenArena::KEY_F10; - else if (str.substr(0,2) == "f11") - return OpenArena::KEY_F11; - else if (str.substr(0,2) == "f12") - return OpenArena::KEY_F12; - //Add Game specific keys here and e-mail headhunter45@hotmail.com subject OpenArena keys so I can add them please - else if (str.substr(0,4) == "null") - return OpenArena::KEY_UNKNOWN; - else - return OpenArena::KEY_UNKNOWN; - } - else - { - if(str[0] == '~' || str[0] == '`') - return OpenArena::KEY_OEM_3; - else if (str[0] == '?' || str[0] == '/') - return OpenArena::KEY_OEM_2; - else if (str[0] == '.' || str[0] == '>') - return OpenArena::KEY_OEM_PERIOD; - else if (str[0] == '+' || str[0] == '=') - return OpenArena::KEY_OEM_PLUS; - else if (str[0] == ';' || str[0] == ':') - return OpenArena::KEY_OEM_1; - else if (str[0] == ',' || str[0] == '<') - return OpenArena::KEY_OEM_COMMA; - else if (str[0] == '-' || str[0] == '_') - return OpenArena::KEY_OEM_MINUS; - else if (str[0] == '[' || str[0] == '{') - return OpenArena::KEY_OEM_4; - else if (str[0] == ']' || str[0] == '}') - return OpenArena::KEY_OEM_6; - else if (str[0] == '\\' || str[0] == '|') - return OpenArena::KEY_OEM_5; - else if (str[0] == '\'' || str[0] == '"') - return OpenArena::KEY_OEM_7; - else if (isalpha(str[0])) - return (OpenArena::Keys)(toupper(str[0]) - 'A' + OpenArena::KEY_A); - else if(isdigit(str[0])) - return (OpenArena::Keys)(str[0] - '0' + OpenArena::KEY_0); - else - return OpenArena::KEY_UNKNOWN; - } -} - - diff --git a/src/keys.h b/src/keys.h deleted file mode 100644 index c66eaad..0000000 --- a/src/keys.h +++ /dev/null @@ -1,220 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __keys_h__ -#define __keys_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -namespace OpenArena -{ - /*! - * \brief - * Write brief comment for Keys here. - * - * Write detailed description for Keys here. - * - * \remarks - * Write remarks for Keys here. - * - * \see - * Separate items with the '|' character. - */ - enum Keys{ - KEY_UNKNOWN = 0, - KEY_BUTTON0, - KEY_BUTTON1, - KEY_BUTTON2, - KEY_BUTTON3, - KEY_BUTTON4, - KEY_LEFT, - KEY_RIGHT, - KEY_UP, - KEY_DOWN, - KEY_SPACE, - KEY_RETURN, - KEY_SHIFT, - KEY_PAUSE, - KEY_CONTROL, - KEY_CAPITAL, - KEY_ESCAPE, - KEY_PRIOR, - KEY_NEXT, - KEY_END, - KEY_HOME, - KEY_INSERT, - KEY_DELETE, - KEY_LWIN, - KEY_RWIN, - KEY_APPS, - KEY_NUMPAD0, - KEY_NUMPAD1, - KEY_NUMPAD2, - KEY_NUMPAD3, - KEY_NUMPAD4, - KEY_NUMPAD5, - KEY_NUMPAD6, - KEY_NUMPAD7, - KEY_NUMPAD8, - KEY_NUMPAD9, - KEY_MULTIPLY, - KEY_ADD, - KEY_SUBTRACT, - KEY_DIVIDE, - KEY_F1, - KEY_F2, - KEY_F3, - KEY_F4, - KEY_F5, - KEY_F6, - KEY_F7, - KEY_F8, - KEY_F9, - KEY_F10, - KEY_F11, - KEY_F12, - KEY_NUMLOCK, - KEY_SCROLL, - KEY_SEPARATOR, - KEY_OEM_1, - KEY_OEM_2, - KEY_OEM_3, - KEY_OEM_4, - KEY_OEM_5, - KEY_OEM_6, - KEY_OEM_7, - KEY_OEM_PERIOD, - KEY_OEM_PLUS, - KEY_OEM_MINUS, - KEY_OEM_COMMA, - KEY_BACK, - KEY_TAB, - KEY_0, - KEY_1, - KEY_2, - KEY_3, - KEY_4, - KEY_5, - KEY_6, - KEY_7, - KEY_8, - KEY_9, - KEY_A, - KEY_B, - KEY_C, - KEY_D, - KEY_E, - KEY_F, - KEY_G, - KEY_H, - KEY_I, - KEY_J, - KEY_K, - KEY_L, - KEY_M, - KEY_N, - KEY_O, - KEY_P, - KEY_Q, - KEY_R, - KEY_S, - KEY_T, - KEY_U, - KEY_V, - KEY_W, - KEY_X, - KEY_Y, - KEY_Z, - KEY_ALT_L, - KEY_ALT_R, - KEY_ENTER, - KEY_COMMAND, - KEY_OPTION - }; - /*! - * \brief - * Write brief comment for KEY_LBUTTON here. - * - * Write detailed description for KEY_LBUTTON here. - * - * \remarks - * Write remarks for KEY_LBUTTON here. - * - * \see - * Separate items with the '|' character. - */ - const Keys KEY_LBUTTON = KEY_BUTTON0; - /*! - * \brief - * Write brief comment for KEY_RBUTTON here. - * - * Write detailed description for KEY_RBUTTON here. - * - * \remarks - * Write remarks for KEY_RBUTTON here. - * - * \see - * Separate items with the '|' character. - */ - const Keys KEY_RBUTTON = KEY_BUTTON1; - /*! - * \brief - * Write brief comment for KEY_MBUTTON here. - * - * Write detailed description for KEY_MBUTTON here. - * - * \remarks - * Write remarks for KEY_MBUTTON here. - * - * \see - * Separate items with the '|' character. - */ - const Keys KEY_MBUTTON = KEY_BUTTON2; - /*! - * \brief - * Write brief comment for KeyToASCII here. - * - * \param key - * Description of parameter key. - * - * \param shift - * Description of parameter shift. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for KeyToASCII here. - * - * \remarks - * Write remarks for KeyToASCII here. - * - * \see - * Separate items with the '|' character. - */ - char KeyToASCII(Keys key, bool shift); - const char* GetKeyName(Keys key); - OpenArena::Keys GetKey(const char* keyName); - -}; -#endif diff --git a/src/level.cpp b/src/level.cpp deleted file mode 100644 index b4679d6..0000000 --- a/src/level.cpp +++ /dev/null @@ -1,956 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -//////////////////////////////////////////////////////////////////////////////// -// -// Module: level.cpp -// Author: Tom Hicks -// Creation: 09-01-2003 -// LastEdit: 06-20-2005 -// Editors: Tom Hicks -// -// Purpose: -// To implement the world or at least a reasonable copy. -// -// Summary of Methods: -// Global -// -function name -// description -// blahClass -// -function name -// description -// -// Summary of Properties: -// blahClass -// -property name -// description -// -//////////////////////////////////////////////////////////////////////////////// - -#include "level.h" -#include "version.h" - -#pragma comment(lib, "bass.lib") -#ifdef WIN32 -#pragma warning(disable:4996) -#endif -using namespace std; - -namespace OpenArena -{ - Level::Level(EventManager* eventManager) - { - _eventManager = eventManager; - _window = NULL; - textureNames = NULL; - numTextures = 0; - - screen.SetName(OPENARENA_VERSION); - - showFPS = false; - showConsole = false; - - nextLevel = "intro.map"; - gamedir = "oa/"; - sound = true; - - defaultPlayer = new Player; - - numTriangles = 0; - triangles = NULL; - /* - for(int x=0; x<4; x++) - LightAmbient[x] = 5; - */ - //Player Stuff - mouseSpeed = 5; - turnSpeed = 1.0f; - moveSpeed = 0.2f; - mlook = true; - } - - Level::~Level() - { - if(defaultPlayer) - { - delete defaultPlayer; - defaultPlayer = NULL; - } - } - - bool Level::LoadMap(string mapname) - { - ifstream input; - string readBuffer; - - //players.Insert(*defaultPlayer); - - mapname = gamedir + "maps/" + mapname; - - if(tolower(Right(mapname, 4)) != ".map") - mapname = mapname + ".map"; - - input.open(mapname.c_str()); - - if(!input) - { - char* tmpChar = new char[mapname.length() + 41]; - strcpy(tmpChar, "Unable to load level file "); - strcat(tmpChar, mapname.c_str()); - strcat(tmpChar, " doesn't exist."); - - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL,tmpChar,"ERROR",MB_OK|MB_ICONEXCLAMATION); - #endif - delete [] tmpChar; - return false; - } - else - { - ConsolePrint("map file \"" + mapname + "\" opened successfully"); - } - - //Gravity - input >> readBuffer; - gravity = (float)atof(readBuffer.c_str()); - - //Number of triangles - input >> readBuffer; - numTriangles = Integer(readBuffer); - - //Triangle Data - triangles = new Triangle[numTriangles]; - for(unsigned int i=0; i> readBuffer; - triangles[i].texID = Integer(readBuffer); - - for(unsigned int i2=0; i2<3; i2++) - { - //Vertex Data - input >> readBuffer; - triangles[i].vertecies[i2].coordinates.x = atof(readBuffer.c_str()); - input >> readBuffer; - triangles[i].vertecies[i2].coordinates.y = atof(readBuffer.c_str()); - input >> readBuffer; - triangles[i].vertecies[i2].coordinates.z = atof(readBuffer.c_str()); - input >> readBuffer; - triangles[i].vertecies[i2].textureCoordinates.x = (float)atof(readBuffer.c_str()); - input >> readBuffer; - triangles[i].vertecies[i2].textureCoordinates.y = (float)atof(readBuffer.c_str()); - } - - //Normal - input >> readBuffer; - - triangles[i].normal.x = atof(readBuffer.c_str()); - input >> readBuffer; - triangles[i].normal.y = atof(readBuffer.c_str()); - input >> readBuffer; - triangles[i].normal.z = atof(readBuffer.c_str()); - } - char lpszNumTriangles[6]; - sprintf(lpszNumTriangles, "%d", numTriangles); - ConsolePrint(lpszNumTriangles + string(" triangles successfully read")); - - //Number of textures; - input >> readBuffer; - numTextures = Integer(readBuffer); - - //Texture data - textureNames = new string[numTextures]; - for(unsigned int i=0; i> textureNames[i]; - } - LoadGLTextures(); - char lpszNumTextures[6]; - sprintf(lpszNumTextures, "%d", numTextures); - ConsolePrint(lpszNumTextures + string(" textures successfully read")); - - //BGM - input >> bgm; - - //Build display list - - //Sound - if (sound) - { - ConsolePrint("Starting sound"); - - //This needs to be abstracted somehow - #ifdef WIN32 - BASS_Init(-1, 44100, BASS_DEVICE_LEAVEVOL, g_hWnd); - BASS_Start(); - BASS_CDInit(NULL, BASS_DEVICE_LEAVEVOL); - #endif - - if(bgm.length()>=4) - { - if( toupper(bgm[0]) == 'C' && - toupper(bgm[1]) == 'D' && - toupper(bgm[2]) == 'A') - { - bgmCDA = Integer(bgm.substr(3,bgm.length())); - //This needs to be abstracted somehow - #ifdef WIN32 - BASS_CDPlay(bgmCDA, 1, 0); - #endif - } - else - { - bgmCDA=0; - string tmpstr = gamedir + "music/bgm/" + bgm; - //This needs to be abstracted somehow - #ifdef WIN32 - bgmStream = BASS_StreamCreateFile(0, (void*)tmpstr.c_str(), 0, 0, BASS_STREAM_AUTOFREE); - BASS_StreamPlay(bgmStream, 1, BASS_SAMPLE_LOOP); - #endif - } - } - - ConsolePrint("Sound init complete"); - } - else - { - ConsolePrint("Sound disabled"); - } - - return true; - } - bool Level::LoadMap() - { - return LoadMap(nextLevel); - } - - void Level::SaveMap(string mapname) - { - ofstream output; - - mapname = gamedir + "maps/" + mapname; - - if(tolower(Right(mapname, 4)) != ".map") - mapname = mapname + ".map"; - - output.open(mapname.c_str()); - - if(!output) - { - char* tmpChar = new char[mapname.length() + 42]; - strcpy(tmpChar, "Unable to save level file "); - strcat(tmpChar, mapname.c_str()); - strcat(tmpChar, " already exists."); - - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL,tmpChar,"ERROR",MB_OK|MB_ICONEXCLAMATION); - #endif - delete [] tmpChar; - return; - } - - //Gravity - output << gravity << endl; - - //Number of triangles - output << numTriangles << endl; - - //Triangle Data - for(unsigned int i=0; icamera.Look(); - - for (uint32 i=0; iID());//Bind this triangle's texture - glBegin(GL_TRIANGLES); - // glNormal3f((GLfloat)triangles[i].normal.x, (GLfloat)triangles[i].normal.y, (GLfloat)triangles[i].normal.z); - for (uint32 i2=0; i2<3; i2++) - { - glTexCoord2f(triangles[i].vertecies[i2].textureCoordinates.x, - triangles[i].vertecies[i2].textureCoordinates.y); - glVertex3f((GLfloat)triangles[i].vertecies[i2].coordinates.x, - (GLfloat)triangles[i].vertecies[i2].coordinates.y, - (GLfloat)triangles[i].vertecies[i2].coordinates.z); - } - glEnd(); - } - glPopMatrix(); - - //Draw HUD - //ummm nothing here yet - - - - //Draw FPS - //This may not work yet - if (showFPS) - { - char fps[20]; - sprintf(fps, "fps %d", FPS()); - glPushMatrix(); - glLoadIdentity(); - glColor3f(1,1,1); - glDisable(GL_DEPTH_TEST); - glEnable(GL_BLEND); - glFont.Print(glFont.ScreenWidth() - 120, glFont.ScreenHeight() - 30, fps, 0); - glDisable(GL_BLEND); - glEnable(GL_DEPTH_TEST); - glPopMatrix(); - } - - if(showConsole) - { - glPushMatrix(); - glLoadIdentity(); - glColor3f(1,1,1); - - //disable lighting and depth testing - glDisable(GL_DEPTH_TEST); - - glBindTexture(GL_TEXTURE_2D, menuTextures[GL_MY_TEXTURE_CONSOLEBACKGROUND].ID()); - //glBindTexture(GL_TEXTURE_2D, 4); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(0, screen.GetWidth(), 0, screen.GetHeight(), -1, 1); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - - glBegin(GL_QUADS); - glTexCoord2f(0,0); - glVertex2i(0,screen.GetHeight()/2); - glTexCoord2f(0,1); - glVertex2i(0,screen.GetHeight()); - glTexCoord2f(1,1); - glVertex2i(screen.GetWidth(),screen.GetHeight()); - glTexCoord2f(1,0); - glVertex2i(screen.GetWidth(),screen.GetHeight()/2); - glEnd(); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - - glDisable(GL_LIGHTING); - - //enable blending - glEnable(GL_BLEND); - - //render the console background - //render the console output text - unsigned int i; - for(i=0; iLoad(gamedir + "textures/" + textureNames[i])) - texture->Load(DEFAULT_TEXTURE_NAME); - textures[i] = texture; - } - - if(!glFont.BuildFont((gamedir + "textures/menu/font.bmp").c_str())) - glFont.BuildFont("oa/textures/menu/font.bmp"); - - //Load the console background image - if(!menuTextures[GL_MY_TEXTURE_CONSOLEBACKGROUND].Load(gamedir + "textures/menu/con_back.tga")) - { - menuTextures[GL_MY_TEXTURE_CONSOLEBACKGROUND].Load("oa/textures/menu/con_back.bmp"); - } - } - } - - uint32 Level::FPS() - { - static uint32 fps=0; - static uint32 fps2=0; - static float last=0.0f; // might need to change to double - - //hmmm what the hell is this called in linux I should possibly abstract this - #ifdef WIN32 - float time=GetTickCount()*.001f; - #else - float time = 0; - #endif - - ++fps; - - if(time>last+1) - { - last=time; - fps2 = fps; - fps=0; - } - return fps2; - } - - void Level::Execute(string cmd) - { - string command; - - uint32 i=0xFFFFFFFF; - while(word(cmd, ++i) != "") - { - command = tolower(word(cmd, i)); - - if(command == "set") - { - command = tolower(word(cmd, ++i)); - - if(command == "turnspeed") - { - turnSpeed = (float)atof(word(cmd, ++i).c_str());//Floating(word(cmd, ++i)); - } - else if(command == "movespeed") - { - moveSpeed = (float)atof(word(cmd, ++i).c_str());//FLoating(word(cmd, ++i)); - } - else if(command == "mousespeed") - { - mouseSpeed = (float)atof(word(cmd, ++i).c_str()); - } - else if(command == "mouselook") - { - mlook = Truth(word(cmd, ++i)); - } - else if(command == "maxfps") - { - maxFPS = Integer(word(cmd, ++i)); - } - else if(command == "sound") - { - sound = Truth(word(cmd, ++i)); - } - else if(command == "game") - { - gamedir= word(cmd, ++i); - } - else if(command == "screenwidth") - { - screen.SetWidth(Integer(word(cmd, ++i))); - } - else if(command == "screenheight") - { - screen.SetHeight(Integer(word(cmd, ++i))); - } - else if(command == "fullscreen") - { - screen.SetFullscreen(Truth(word(cmd, ++i))); - } - else if(command == "colordepth") - { - screen.SetColorDepth(Integer(word(cmd, ++i))); - } - else - { - ConsolePrint("Variable " + command + " doesn't exist"); - } - } - else if(command == "bind") - { - command = tolower(word(cmd, ++i)); - string key = tolower(word(cmd, ++i)); - if(ControlScheme::GetAction(command.c_str())==OpenArena::ControlScheme::ACTION_NONE) - { - ConsolePrint("No action identified by " + command); - } - else if (GetKey(key.c_str()) == OpenArena::KEY_UNKNOWN) - { - ConsolePrint("No key identified by " + key); - } - else - { - defaultPlayer[0].controls.Bind(GetKey(key.c_str()), ControlScheme::GetAction(command.c_str())); - } - } - else if(command == "map" || command == "map_load") - { - nextLevel = word(cmd, ++i); - UnloadMap(); - if(!LoadMap()) - { - ConsolePrint("Unable to load level " + command); - nextLevel = "intro.map"; - LoadMap(); - } - } - else if(command == "unbind") - { - command = tolower(word(cmd, ++i)); - - if(command == "all") - { - defaultPlayer[0].controls.UnBindAll(); - } - else - { - defaultPlayer[0].controls.UnBind(GetKey(command.c_str())); - } - } - else if(command == "exec" || command == "config_load") - { - command = tolower(word(cmd, ++i)); - if(!LoadConfig(command)) - { - ConsolePrint("Unable to load config file " + word(cmd, i)); - } - } - else if(command == "map_save") - { - command = tolower(word(cmd, ++i)); - SaveMap(command); - } - else if(command == "config_save") - { - command = tolower(word(cmd, ++i)); - SaveConfig(command); - } - /* - else if(command == "map_add_triangle") - { - if(triangles != NULL) - { - TRIANGLE* temp = triangles; - triangles = new TRIANGLE[numTriangles + 1]; - for(int i=0; icontrols.WriteToStream(output); - } - - void Level::Print(int x, int y, const char* str, unsigned int set) - { - glFont.Print(x,y,str, set); - } - - void Level::UpdateConsole(char newChar) - { - if(newChar == '\n') - { - for (int i=MAX_CONSOLE_HISTORY_LINES - 1; i>0; i--) - { - consoleHistory[i] = consoleHistory[i-1]; - } - consoleHistory[0] = ""; - ConsolePrint(consoleHistory[1]); - Execute(tolower(consoleHistory[1])); - - } - else if(newChar == OpenArena::KEY_BACK) - { - consoleHistory[0] = Left(consoleHistory[0], consoleHistory[0].length()-1); - } - else if(!(defaultPlayer->controls.IsBound(GetKey(&newChar), ControlScheme::ACTION_TOGGLE_CONSOLE))) - { - consoleHistory[0] = consoleHistory[0] + newChar; - /* - char errmsg[256]; - sprintf(errmsg, "Unhangled keypress: %d", newChar); - MessageBox(NULL, errmsg, "Balls", MB_OK); - */ - } - } - - void Level::ConsolePrint(string line) - { - for (int i=MAX_CONSOLE_OUTPUT_LINES - 1; i>0; i--) - { - consoleOutput[i] = consoleOutput[i-1]; - } - consoleOutput[0] = line; - } - - void Level::SetWindow(Window* window) - { - _window = window; - } - - Window* Level::GetWindow() - { - return _window; - } -}; diff --git a/src/level.h b/src/level.h deleted file mode 100644 index b2ba69e..0000000 --- a/src/level.h +++ /dev/null @@ -1,143 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __LEVEL_H__ -#define __LEVEL_H__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include -#include -#include - -#if defined USE_GLX -#include -#elif defined USE_AGL -#include -#elif defined USE_CGL -#include -#elif defined USE_WGL -#include -#include -#endif - -#include //for file I/O - -#include "mydefs.h" -#include "bmp.h" -#include "tga.h" -#include "list.h" -#ifdef WIN32 -#include "../lib/bass.h" //for audio in windows only this should be replaced by oa_audio -#endif -#include "vector.h" -#include "camera.h" -#include "geometry.h" -#include "myglFont.h" -#include "myglTexture.h" -#include "player.h" -#include "strmanip.h" -#include "keys.h" -#include "EventManager.h" - -using namespace std; -using OpenArena::Triangle; - -namespace OpenArena -{ - const float piover180 = 0.0174532925f; - const string DEFAULT_TEXTURE_NAME = "oa/textures/default.bmp"; - const unsigned int MAX_CONSOLE_LINES = 30; //The max number of lines to be displayed in the console - const unsigned int MAX_CONSOLE_HISTORY_LINES = MAX_CONSOLE_LINES + 20; //The max number of console lines to store in the history - const unsigned int MAX_CONSOLE_OUTPUT_LINES = MAX_CONSOLE_LINES; - const unsigned int MAX_OUTPUT_TEXT_LINES = 4; //The max number of output lines to be displayed on the screen - - enum {GL_MY_TEXTURE_CONSOLEBACKGROUND=0, NUM_MENU_TEXTURES}; - - class Level - { - public: - Level(EventManager* eventManager); - ~Level(); - bool LoadMap(string mapname); - bool LoadMap(); - void SaveMap(string mapname); - bool LoadConfig(string cfgname); - void LoadConfig(); - void SaveConfig(string cfgname); - void Execute(string cmd); - void LoadGLTextures(); - void Render(); - void UnloadMap(); - void UpdateConsole(char); - uint32 FPS(); - void ParseCmds(const char*); - void Print(int x, int y, const char* string, unsigned int set); - void SetWindow(Window*); - Window* GetWindow(); - - /*Not Yet Implemented - void PlayerConnect(); // implement later - void PlayerDisconnect(); // implement later - */ - Screen screen; - Font glFont; - string nextLevel; - Player* defaultPlayer; - uint32 numTextures; - string* textureNames; - - string bgm; - #ifdef WIN32 - HSTREAM bgmStream; - #endif - unsigned char bgmCDA; - string gamedir; - float gravity; - bool mlook; - bool showFPS; - bool showConsole; - bool sound; - float turnSpeed; - float moveSpeed; - float mouseSpeed; - unsigned char maxFPS; - //Map - Triangle* triangles; - uint32 numTriangles; - list players; -// list ents; - list textures; - Texture menuTextures[NUM_MENU_TEXTURES]; - Window* _window; - -// private: - void ConsolePrint(string); - private: - EventManager* _eventManager; - string consoleHistory[MAX_CONSOLE_HISTORY_LINES]; - string consoleOutput[MAX_CONSOLE_OUTPUT_LINES]; - string outputText[MAX_OUTPUT_TEXT_LINES]; - }; -}; -#endif diff --git a/src/linux.cpp b/src/linux.cpp deleted file mode 100644 index d8f1240..0000000 --- a/src/linux.cpp +++ /dev/null @@ -1,254 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -//////////////////////////////////////////////////////////////////////////////// -// -// Module: linux.cpp -// Author: Tom Hicks -// Creation: 09-01-2003 -// LastEdit: 06-19-2005 -// Editors: Tom Hicks -// -// Purpose: -// To implement the OpenArena SDK. -// -// Summary of Methods: -// Global -// -InitControls() -// Loads the defaultPlayer's configuration. -// -InitGL() -// Initializes OpenGL and is responsible for loading textures. -// -ResizeGLScene(GLsizei width, GLsizei height) -// Resizes the viewport to the current size of the visible area of the window specified by width and height. -// -KillGLWindow() -// Closes the window. -// -CreateGLWindow(string title, int width, int height, int bits, bool fullscreenflag) -// Creates the window with the specified parameters. -// -WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) -// Main procedure. -// -WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -// Window Procedure for the OpenGL window. -// -//////////////////////////////////////////////////////////////////////////////// -#ifdef __linux - -//include necessary header files -#include "main.h" -#include "version.h" -#include "x11.h" -using namespace std; - -void InitControls(); - -////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Function Definitions - -int DrawGLScene(OpenArena::Level* level) -{ - level->Render(); - - g_Screen->SwapBuffers(); - - return true; -} - -// -//void InitControls() -// Purpose: -// Initializes controls by loading the default control config file "my.cfg". -void InitControls(OpenArena::Level* level) -{ - if (!level->LoadConfig("my.cfg")) - level->LoadConfig(); -} - -int main(int argc, char** argv) -{ - OpenArena::EventManager* em = new OpenArena::EventManager(); - OpenArena::Level* level = new OpenArena::Level(em); - XEvent event; - bool done = false; - - string commandLine = ""; - int i; - for(i=1; iParseCmds(commandLine.c_str()); - - InitControls(level); - - level->glFont.SetScreenDimensions(level->screen.GetWidth()*2, level->screen.GetHeight()*2); - - //Hack for now - if(level->screen.GetColorDepth() == 32) - { - level->screen.SetColorDepth(24); - } - -// g_Screen.SetOnInit(InitGL); -// g_Screen.SetOnResize(ResizeGLScene); - - if(!g_Screen->Open(OPENARENA_VERSION, level->screen.GetWidth(), level->screen.GetHeight(), level->screen.GetColorDepth(), level->screen.GetFullscreen())) - { - return 1; - } - - level->SetWindow(g_Screen); - - if(level->nextLevel == "") - { - level->LoadMap("intro.map"); - } - else - { - level->LoadMap(); - } - - while(!done) - { - while(XPending(g_Screen->GetDisplay()) > 0) - { - //Equivalent of WNDPROC - XNextEvent(g_Screen->GetDisplay(), &event); - switch(event.type) - { - case Expose: - if(event.xexpose.count != 0) - { - break; - } - DrawGLScene(level); - break; - case ConfigureNotify: - if((event.xconfigure.width != g_Screen->GetWidth()) || (event.xconfigure.height != g_Screen->GetHeight())) - { - g_Screen->SetWidth(event.xconfigure.width); - g_Screen->SetHeight(event.xconfigure.height); - ResizeGLScene(event.xconfigure.width, event.xconfigure.height); - } - break; - case ButtonPress: - keys[TranslateButton(event.xbutton.button)] = true; - break; - case ButtonRelease: - keys[TranslateButton(event.xbutton.button)] = false; - keys2[TranslateButton(event.xbutton.button)] = false; - break; - case KeyPress: - if(level->showConsole) - { - HandleConsoleKeyPress((OpenArena::Keys)TranslateKey(XLookupKeysym(&event.xkey, 0)), level); - } - else - { - keys[TranslateKey(XLookupKeysym(&event.xkey, 0))] = true; - } - break; - case KeyRelease: - keys[TranslateKey(XLookupKeysym(&event.xkey, 0))] = false; - keys2[TranslateKey(XLookupKeysym(&event.xkey, 0))] = false; - break; - case ClientMessage: - if(*XGetAtomName(g_Screen->GetDisplay(), event.xclient.message_type) == *"WM_PROTOCOLS") - { - printf("Exiting sanely...\n"); - done = true; - } - break; - default: - break; - } - } //End Equivalent of WNDPROC - - if(active) - { - if(keys[OpenArena::KEY_ESCAPE]) - { - done = true; - } - else if(keys[OpenArena::KEY_F1]) - { - g_Screen->Close(); - g_Screen->ToggleFullscreen(); - g_Screen->Open(); - } - else - { - level->defaultPlayer[0].camera.Update(); - if(!level->showConsole) - { - if(level->mlook) - { - using OpenArena::Vec2i; - Vec2i middleOfScreen = Vec2i(g_Screen->GetWidth()/2, g_Screen->GetHeight()/2); - Vec2i mousePosition = g_Screen->GetMousePosition(); - if(mousePosition != middleOfScreen) - { - //Vec2i mouseDelta = mousePosition - middleOfScreen; - Vec2i mouseDelta = middleOfScreen - mousePosition; - g_Screen->SetMousePosition(middleOfScreen); - const float MOUSE_SENSITIVITY_HORIZONTAL = 0.005; - const float MOUSE_SENSITIVITY_VERTICAL = 0.005; - float horizontalAngle = mouseDelta.x * MOUSE_SENSITIVITY_HORIZONTAL; - float verticalAngle = mouseDelta.y * MOUSE_SENSITIVITY_VERTICAL; - level->defaultPlayer[0].camera.RotateHorizontal(horizontalAngle); - level->defaultPlayer[0].camera.RotateVertical(verticalAngle); - } - } - else - { -#ifdef WIN32 - SetCursorPos(g_Screen->width/2, g_Screen->height/2);//Shit this may be windows specific -#endif - } - } - } - } - - DrawGLScene(level); - - if(keys[OpenArena::KEY_F1]) - { - keys[OpenArena::KEY_F1] = false; - g_Screen->Close(); - g_Screen->ToggleFullscreen(); - if(!g_Screen->Open(OPENARENA_VERSION, level->screen.GetWidth(), level->screen.GetHeight(), level->screen.GetColorDepth(), level->screen.GetFullscreen())) - { - return 1; - } - } - - } - level->UnloadMap(); - g_Screen->Close(); - exit(0); -} - -bool keys[256]; -bool keys2[256]; -bool active; -bool fullscreen; -//bool showConsole = false; -OpenArena::Vec2i g_mousePosition; -float lastTime; -float currentTime; - -#endif diff --git a/src/list.h b/src/list.h deleted file mode 100644 index 269a8fa..0000000 --- a/src/list.h +++ /dev/null @@ -1,817 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __list_h__ -#define __list_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include - -#pragma warning(disable:4715) - -namespace OpenArena{ - typedef unsigned int LIST_ARRAY_INDEX_TYPE; - - /*! - * \brief - * Write brief comment for listNode here. - * - * \param ItemType - * Description of parameter ItemType. - * - * Write detailed description for listNode here. - * - * \remarks - * Write remarks for listNode here. - * - * \see - * Separate items with the '|' character. - */ - template - class listNode - { - public: - /*! - * \brief - * Write brief comment for listNode here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for listNode here. - * - * \remarks - * Write remarks for listNode here. - * - * \see - * Separate items with the '|' character. - */ - listNode(); - ItemType data; - listNode* next; - }; - - /*! - * \brief - * Write brief comment for list here. - * - * \param ItemType - * Description of parameter ItemType. - * - * Write detailed description for list here. - * - * \remarks - * Write remarks for list here. - * - * \see - * Separate items with the '|' character. - */ - template - class list - { - public: - /*! - * \brief - * Write brief comment for list here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for list here. - * - * \remarks - * Write remarks for list here. - * - * \see - * Separate items with the '|' character. - */ - list(); - /*! - * \brief - * Write brief comment for ~list here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for ~list here. - * - * \remarks - * Write remarks for ~list here. - * - * \see - * Separate items with the '|' character. - */ - ~list(); - /*! - * \brief - * Write brief comment for list here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for list here. - * - * \remarks - * Write remarks for list here. - * - * \see - * Separate items with the '|' character. - */ - list(const list&); - - /*! - * \brief - * Write brief comment for IsEmpty here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for IsEmpty here. - * - * \remarks - * Write remarks for IsEmpty here. - * - * \see - * Separate items with the '|' character. - */ - bool IsEmpty() const; - /*! - * \brief - * Write brief comment for IsFull here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for IsFull here. - * - * \remarks - * Write remarks for IsFull here. - * - * \see - * Separate items with the '|' character. - */ - bool IsFull() const; - /*! - * \brief - * Write brief comment for Insert here. - * - * \param newItem - * Description of parameter newItem. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Insert here. - * - * \remarks - * Write remarks for Insert here. - * - * \see - * Separate items with the '|' character. - */ - void Insert(ItemType newItem); - /*! - * \brief - * Write brief comment for Remove here. - * - * \param target - * Description of parameter target. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Remove here. - * - * \remarks - * Write remarks for Remove here. - * - * \see - * Separate items with the '|' character. - */ - void Remove(ItemType target); - /*! - * \brief - * Write brief comment for Remove here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Remove here. - * - * \remarks - * Write remarks for Remove here. - * - * \see - * Separate items with the '|' character. - */ - void Remove(); - /*! - * \brief - * Write brief comment for Retrieve here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Retrieve here. - * - * \remarks - * Write remarks for Retrieve here. - * - * \see - * Separate items with the '|' character. - */ - ItemType Retrieve() const; - /*! - * \brief - * Write brief comment for PrevPosition here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for PrevPosition here. - * - * \remarks - * Write remarks for PrevPosition here. - * - * \see - * Separate items with the '|' character. - */ - bool PrevPosition(); - /*! - * \brief - * Write brief comment for NextPosition here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for NextPosition here. - * - * \remarks - * Write remarks for NextPosition here. - * - * \see - * Separate items with the '|' character. - */ - bool NextPosition(); - /*! - * \brief - * Write brief comment for IsFirstPosition here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for IsFirstPosition here. - * - * \remarks - * Write remarks for IsFirstPosition here. - * - * \see - * Separate items with the '|' character. - */ - bool IsFirstPosition() const; - /*! - * \brief - * Write brief comment for IsLastPosition here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for IsLastPosition here. - * - * \remarks - * Write remarks for IsLastPosition here. - * - * \see - * Separate items with the '|' character. - */ - bool IsLastPosition() const; - /*! - * \brief - * Write brief comment for FirstPosition here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for FirstPosition here. - * - * \remarks - * Write remarks for FirstPosition here. - * - * \see - * Separate items with the '|' character. - */ - void FirstPosition(); - /*! - * \brief - * Write brief comment for LastPosition here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for LastPosition here. - * - * \remarks - * Write remarks for LastPosition here. - * - * \see - * Separate items with the '|' character. - */ - void LastPosition(); - /*! - * \brief - * Write brief comment for Clear here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Clear here. - * - * \remarks - * Write remarks for Clear here. - * - * \see - * Separate items with the '|' character. - */ - void Clear(); - /*! - * \brief - * Write brief comment for Contains here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Contains here. - * - * \remarks - * Write remarks for Contains here. - * - * \see - * Separate items with the '|' character. - */ - bool Contains(ItemType) const; - /*! - * \brief - * Write brief comment for Length here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Length here. - * - * \remarks - * Write remarks for Length here. - * - * \see - * Separate items with the '|' character. - */ - unsigned int Length(); - /*! - * \brief - * Write brief comment for operator = here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator = here. - * - * \remarks - * Write remarks for operator = here. - * - * \see - * Separate items with the '|' character. - */ - void operator=(const list&); - /*! - * \brief - * Write brief comment for operator [] here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator [] here. - * - * \remarks - * Write remarks for operator [] here. - * - * \see - * Separate items with the '|' character. - */ - ItemType operator[](LIST_ARRAY_INDEX_TYPE) const; - /*! - * \brief - * Write brief comment for operator [] here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator [] here. - * - * \remarks - * Write remarks for operator [] here. - * - * \see - * Separate items with the '|' character. - */ - ItemType& operator[](LIST_ARRAY_INDEX_TYPE); - - private: - listNode* head; - listNode* tail; - listNode* currPos; - }; - - template - listNode::listNode() - { - next = NULL; - } - - template - list::list() - { - head = NULL; - tail = NULL; - currPos = NULL; - } - - template - list::~list() - { - currPos = NULL; - while(head != NULL) - { - tail = head; - head = head->next; - delete tail; - tail = NULL; - } - } - - template - list::list(const list& rtOp) - { - head = NULL; - tail = NULL; - currPos = NULL; - - operator=(rtOp); - } - - template - void list::Clear() - { - while(head) - Remove(head->data); - } - - template - void list::operator=(const list& rtOp) - { - Clear(); - - if(!rtOp.IsEmpty()) - { - listNode* temp = rtOp.head->next; - listNode* temp2 = NULL; - - if(temp != NULL) - { - head = new listNode; - head->data = rtOp.head->data; - tail = head; - temp2 = head; - } - - while (temp != NULL) - { - temp2->next = new listNode; - temp2 = temp2->next; - temp2->data = temp->data; - temp = temp->next; - } - - tail = temp2; - } - } - - template - bool list::IsEmpty() const - { - return head == NULL; - } - - template - bool list::IsFull() const - { - return false; - } - - template - void list::Insert(ItemType newItem) - { - listNode* temp = head; - listNode* temp2 = NULL; - - if(head == NULL) - { - temp = tail = head = new listNode; - } - else - { - if(newItem < head->data) - { - temp2 = head; - temp = head = new listNode; - head->next = temp2; - temp2 = NULL; - } - else - { - //temp = head; - while(temp->next != NULL && newItem > temp->next->data) - { - temp = temp->next; - } - temp2 = temp->next; - temp = temp->next = new listNode; - temp->next = temp2; - temp2 = NULL; - } - } - - temp->data = newItem; - - if(temp->next == NULL) - { - tail = temp; - } - } - - template - void list::Remove(ItemType target) - { - if(head != NULL) - { - listNode* temp = head; - listNode* temp2 = head; - - while(temp->next != NULL && temp->data != target) - { - temp2 = temp; - temp = temp->next; - } - - if(temp->data == target) - { - if(temp != head) - { - temp2->next = temp->next; - delete temp; - } - else - { - if(tail == head) - tail = NULL; - head = head->next; - delete temp2; - } - } - } - } - - template - bool list::PrevPosition() - { - if(currPos != head) - { - tail->next = currPos; - currPos = head; - - if(currPos != tail->next) - { - while(currPos->next != tail->next) - { - currPos = currPos->next; - } - } - - tail->next = NULL; - - return true; - } - else - { - return false; - } - } - - template - bool list::NextPosition() - { - if(currPos != tail) - { - currPos = currPos->next; - return true; - } - else - { - return false; - } - } - - template - void list::Remove() - { - if(currPos != NULL) - { - tail->next = currPos; - currPos = currPos->next; - delete tail->next; - tail->next = NULL; - } - - } - - template - ItemType list::Retrieve() const - { - if(currPos != NULL) - return currPos->data; - } - - template - bool list::IsFirstPosition() const - { - return currPos == head; - } - - template - bool list::IsLastPosition() const - { - return currPos == tail; - } - - template - void list::FirstPosition() - { - currPos = head; - } - - template - void list::LastPosition() - { - currPos = tail; - } - - template - ItemType list::operator[](LIST_ARRAY_INDEX_TYPE index) const - { - if(head == NULL) - { - //We should throw an exception here but instead I'll just return shit guess for now if somebody does this they're just fucked. - } - else - { - listNode* temp = head; - LIST_ARRAY_INDEX_TYPE current; - - for(current=0;current next == NULL) - { - temp->next = new listNode; - } - temp = temp->next; - } - return temp->data; - } - } - - template - ItemType& list::operator[](LIST_ARRAY_INDEX_TYPE index) - { - if(head == NULL) - { - tail = currPos = head = new listNode; - return (ItemType&)(head->data); - } - else - { - listNode* temp = head; - LIST_ARRAY_INDEX_TYPE current; - - for(current=0;current next == NULL) - { - temp->next = new listNode; - } - temp = temp->next; - } - return (ItemType&)(temp->data); - } - } - - template - unsigned int list::Length() - { - if (head == NULL) - { - return 0; - } - else - { - int len = 1; - listNode* temp = head->next; - while (temp != NULL) - { - temp = temp->next; - len++; - } - return len; - } - } - - template - bool list::Contains(ItemType value) const - { - listNode* temp = head; - while(temp != NULL) - { - if(temp->data == value) - { - return true; - } - temp = temp->next; - } - return false; - } -}; -#endif diff --git a/src/macosx.cpp b/src/macosx.cpp deleted file mode 100644 index 5a895a8..0000000 --- a/src/macosx.cpp +++ /dev/null @@ -1,318 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -//////////////////////////////////////////////////////////////////////////////// -// -// Module: macosx.cpp -// Author: Tom Hicks -// Creation: 03-11-2006 -// LastEdit: 03-11-2006 -// Editors: Tom Hicks -// -// Purpose: -// To implement the OpenArena SDK. -// -// Summary of Methods: -// Global -// -InitControls() -// Loads the defaultPlayer's configuration. -// -InitGL() -// Initializes OpenGL and is responsible for loading textures. -// -ResizeGLScene(GLsizei width, GLsizei height) -// Resizes the viewport to the current size of the visible area of the window specified by width and height. -// -KillGLWindow() -// Closes the window. -// -CreateGLWindow(string title, int width, int height, int bits, bool fullscreenflag) -// Creates the window with the specified parameters. -// -WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) -// Main procedure. -// -WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -// Window Procedure for the OpenGL window. -// -//////////////////////////////////////////////////////////////////////////////// -#ifdef __APPLE__ -#include "main.h" -#include "version.h" -#include "EventManager.h" -#include "Events/DrawEvent.h" -#include "Events/KeyPressEvent.h" -#include "Events/KeyReleaseEvent.h" -#include "x11.h" -//include necessary header files -using namespace std; - -bool g_done = false; -class KeyPressEventHandler: public OpenArena::Events::KeyPressEvent::KeyPressEventHandler -{ -private: -public: - KeyPressEventHandler() - { - } - - virtual void HandleEvent(OpenArena::Events::Event* event) - { - OpenArena::Events::KeyPressEvent* ev = (OpenArena::Events::KeyPressEvent*) event; - switch (ev->GetKey()) - { - case OpenArena::KEY_ESCAPE: - g_done = true; - break; - - default: - break; - }; - } -}; - -int DrawGLScene(OpenArena::Level* level) -{ - //The context is somehow different if this call is inside the RT function - level->Render(); - - g_Screen->SwapBuffers(); - - return true; -} - -#if defined USE_GLX -//void InitControls(); -void HandleConsoleKeyPress(OpenArena::Keys key); - -////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Function Definitions - -void ProcessCommandLineArgs(int argc, char** argv, OpenArena::Level* level) -{ - string commandLine = ""; - int i; - for(i=1; iParseCmds(commandLine.c_str()); -} - -int main(int argc, char** argv) -{ - g_Screen = new OpenArena::Window(); - OpenArena::EventManager* em = new OpenArena::EventManager(); - OpenArena::Level* level = new OpenArena::Level(em); - OpenArena::Events::DrawEvent::DrawEventHandler* _drawEventHandler = new OpenArena::Events::DrawEvent::DrawEventHandler(level); - KeyPressEventHandler* _keyPressEventHandler = new KeyPressEventHandler(); - OpenArena::Events::KeyReleaseEvent::KeyReleaseEventHandler* _keyReleaseEventHandler = new OpenArena::Events::KeyReleaseEvent::KeyReleaseEventHandler(); - em->RegisterEventHandler(_drawEventHandler); - em->RegisterEventHandler(_keyPressEventHandler); - em->RegisterEventHandler(_keyReleaseEventHandler); - - XEvent event; - OpenArena::Events::Event* ev; - - ProcessCommandLineArgs(argc, argv, level); - - if (!level->LoadConfig("my.cfg")) - level->LoadConfig(); - - level->glFont.SetScreenDimensions(level->screen.GetWidth()*2, level->screen.GetHeight()*2); - - if(level->nextLevel == "") - { - level->LoadMap("intro.map"); - } - else - { - level->LoadMap(); - } - - //Hack for now X11 no like 32 bit depth - if(level->screen.GetColorDepth() == 32) - { - level->screen.SetColorDepth(24); - } - - if(!g_Screen->Open(OPENARENA_VERSION, level->screen.GetWidth(), level->screen.GetHeight(), level->screen.GetColorDepth(), level->screen.GetFullscreen())) - { - return 1; - } - - level->SetWindow(g_Screen); - - level->LoadGLTextures(); - - while(!g_done) - { - while(XPending(g_Screen->GetDisplay()) > 0) - { - OpenArena::Events::Event* ev = 0x0; - //Equivalent of WNDPROC - XNextEvent(g_Screen->GetDisplay(), &event); - switch(event.type) - { - case Expose: - if(event.xexpose.count != 0) - { - break; - } - - em->SendEvent(new OpenArena::Events::DrawEvent()); - break; - case ConfigureNotify: - if((event.xconfigure.width != g_Screen->GetWidth()) || (event.xconfigure.height != g_Screen->GetHeight())) - { - g_Screen->SetWidth(event.xconfigure.width); - g_Screen->SetHeight(event.xconfigure.height); - ResizeGLScene(event.xconfigure.width, event.xconfigure.height); - - //em->SendEvent(new ResizeWindowEvent(event.xconfigure.width, event.xconfigure.width); - } - break; - case ButtonPress: - em->SendEvent(new OpenArena::Events::KeyPressEvent(TranslateButton(event.xbutton.button))); - break; - case ButtonRelease: - em->SendEvent(new OpenArena::Events::KeyReleaseEvent(TranslateButton(event.xbutton.button))); - break; - case KeyPress: - em->SendEvent(new OpenArena::Events::KeyPressEvent((OpenArena::Keys)TranslateKey(XLookupKeysym(&event.xkey, 0)))); - /* - if(level->showConsole) - { - HandleConsoleKeyPress((OpenArena::Keys)TranslateKey(XLookupKeysym(&event.xkey, 0))); - } - else - { - keys[TranslateKey(XLookupKeysym(&event.xkey, 0))] = true; - } - */ - break; - case KeyRelease: - em->SendEvent(new OpenArena::Events::KeyReleaseEvent((OpenArena::Keys)TranslateKey(XLookupKeysym(&event.xkey, 0)))); -// keys[TranslateKey(XLookupKeysym(&event.xkey, 0))] = false; -// keys2[TranslateKey(XLookupKeysym(&event.xkey, 0))] = false; - break; - case ClientMessage: - if(*XGetAtomName(g_Screen->GetDisplay(), event.xclient.message_type) == *"WM_PROTOCOLS") - { - printf("Exiting sanely...\n"); - g_done = true; - } - break; - default: - break; - } - } //End Equivalent of WNDPROC - - /* - if(active) - { - if(keys[OpenArena::KEY_ESCAPE]) - { - g_done = true; - } - else if(keys[OpenArena::KEY_F1]) - { - g_Screen->Close(); - g_Screen->ToggleFullscreen(); - g_Screen->Open(); - } - else - { - level->defaultPlayer[0].camera.Update(); - } - } - */ - - em->SendEvent(new OpenArena::Events::DrawEvent()); - - if(keys[OpenArena::KEY_F1]) - { - keys[OpenArena::KEY_F1] = false; - g_Screen->Close(); - g_Screen->ToggleFullscreen(); - if(!g_Screen->Open(OPENARENA_VERSION, level->screen.GetWidth(), level->screen.GetHeight(), level->screen.GetColorDepth(), level->screen.GetFullscreen())) - { - return 1; - } - } - } - level->UnloadMap(); - g_Screen->Close(); - exit(0); -} - -#elif defined USE_AGL -int main(int argc, char** argv) -{ - g_Screen = new OpenArena::Window(); - OpenArena::Events::DrawEvent::DrawEventHandler* _drawEventHandler = new OpenArena::Events::DrawEvent::DrawEventHandler(); - OpenArena::Events::KeyPressEvent::KeyPressEventHandler* _keyPressEventHandler = new OpenArena::Events::KeyPressEvent::KeyPressEventHandler(); - OpenArena::Events::KeyReleaseEvent::KeyReleaseEventHandler* _keyReleaseEventHandler = new OpenArena::Events::KeyReleaseEvent::KeyReleaseEventHandler(); - OpenArena::EventManager* em = new OpenArena::EventManager(); - em->RegisterEventHandler(_drawEventHandler); - em->RegisterEventHandler(_keyPressEventHandler); - em->RegisterEventHandler(_keyReleaseEventHandler); - -// ProcessCommandLineArgs(argc, argv); - -// InitControls(); - - level->glFont.SetScreenDimensions(level->screen.GetWidth()*2, level->screen.GetHeight()*2); - - if(level->nextLevel == "") - { - level->LoadMap("intro.map"); - } - else - { - level->LoadMap(); - } - - //Hack for now X11 no like 32 bit depth - if(level->screen.GetColorDepth() == 32) - { - level->screen.SetColorDepth(24); - } - - if(!g_Screen->Open(OPENARENA_VERSION, level->screen.GetWidth(), level->screen.GetHeight(), level->screen.GetColorDepth(), level->screen.GetFullscreen())) - { - return 1; - } - - level->SetWindow(g_Screen); - - level->LoadGLTextures(); - - RunApplicationEventLoop(); - -} -#elif defined USE_CGL -#error -#endif - -bool keys[256] = {0}; // Array for which keys are down now -bool keys2[256] = {0}; // Array for which keys are were down already -bool active = true; // Is window active flag -bool fullscreen = false; // Is window fullscreen flag -//bool showConsole = false;// Do we need to draw the console -OpenArena::Vec2i g_mousePosition; -float lastTime = 0.0f; // This will hold the time from the last frame -float currentTime; - -#endif - diff --git a/src/main.cpp b/src/main.cpp deleted file mode 100644 index a499da4..0000000 --- a/src/main.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#if defined __APPLE__ -#include -#include -#include - -/* -OSStatus main(int argc, char** argv) -{ - -} -*/ - -#endif \ No newline at end of file diff --git a/src/main.h b/src/main.h deleted file mode 100644 index 49b529a..0000000 --- a/src/main.h +++ /dev/null @@ -1,135 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __main_h__ -#define __main_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#if defined USE_GLX -#include // Header file for OpenGL32 library -#include // Header file for Glu32 library -#elif defined USE_AGL -#include "mygl.h" -#elif defined USE_CGL -#error unimplemented method -#elif defined USE_WGL -#include -#include // Header file for OpenGL32 library -#include // Header file for Glu32 library -#endif - -#include // Header file for standard input/output -#include - -#include "camera.h" -#include "level.h" -#include "mygl.h" -#include "worlddefs.h" -#include "mydefs.h" -#include "screen.h" -#include "window.h" -#include "vector.h" -#pragma warning(disable: 4786) - -////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Variables - -extern bool keys[256]; // Array for which keys are down now -extern bool keys2[256]; // Array for which keys are were down already -extern bool active; // Is window active flag -extern bool fullscreen; // Is window fullscreen flag -//extern bool showConsole = false;// Do we need to draw the console -extern OpenArena::Vec2i g_mousePosition; - - -#ifdef WIN32 -extern POINT mpos; -#endif -extern float lastTime; // This will hold the time from the last frame -extern float currentTime; - -////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Function Declarations - -//This shouldn't need to be here -//LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // Declaration for WndProc - -/*! - * \brief - * Write brief comment for InitControls here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for InitControls here. - * - * \remarks - * Write remarks for InitControls here. - * - * \see - * Separate items with the '|' character. - */ -void InitControls(); // Sets up player controls -/*! - * \brief - * Write brief comment for InitGL here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for InitGL here. - * - * \remarks - * Write remarks for InitGL here. - * - * \see - * Separate items with the '|' character. - */ -int InitGL(); // All setup for OpenGL goes here -/*! - * \brief - * Write brief comment for ReSizeGLScene here. - * - * \param width - * Description of parameter width. - * - * \param height - * Description of parameter height. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for ReSizeGLScene here. - * - * \remarks - * Write remarks for ReSizeGLScene here. - * - * \see - * Separate items with the '|' character. - */ -void ReSizeGLScene(GLsizei width, GLsizei height); // Resize and initialize the GL window -int DrawGLScene(OpenArena::Level* level); - -#endif diff --git a/src/mydefs.h b/src/mydefs.h deleted file mode 100644 index d289aab..0000000 --- a/src/mydefs.h +++ /dev/null @@ -1,32 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __mydefs_h__ -#define __mydefs_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#ifdef WIN32 //This whole file is windows specific right now -#include -static HWND g_hWnd = NULL; -#endif - -#endif diff --git a/src/mygl.cpp b/src/mygl.cpp deleted file mode 100644 index 33327e9..0000000 --- a/src/mygl.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#include "mygl.h" -namespace OpenArena -{ - void FreeGLTexture(GLuint& texture) - { - glDeleteTextures(1, &texture); - } - - bool LoadGLTexture(string fn, GLuint& texture, GLuint mag, GLuint min) - { - if(Right(tolower(fn), 4) == ".bmp") - { - TextureImage* texImage = NULL; - if(texImage = LoadBMP(fn.c_str())) - { - glGenTextures(1, &texture); - glBindTexture(GL_TEXTURE_2D, texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, 3, texImage->sizeX, texImage->sizeY, 0, texImage->type, GL_UNSIGNED_BYTE, texImage->data); - - if(texImage) //Just in case somehow the file was empty or unloadable - { - if(texImage->data) - free(texImage->data); - free(texImage); - } - return true; - } - else - { - return false; - } - } - else if(Right(tolower(fn), 4) == ".tga") - { - TextureImage* texImage = NULL; - if(texImage = LoadTGA(fn.c_str())) - { - glGenTextures(1, &texture); - glBindTexture(GL_TEXTURE_2D, texture); - glTexImage2D(GL_TEXTURE_2D, 0, 3, texImage->sizeX, texImage->sizeY, 0, texImage->type, GL_UNSIGNED_BYTE, texImage->data); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - if(texImage) //Just in case somehow the file was empty or unloadable - { - if(texImage->data) - free(texImage->data); - free(texImage); - } - return true; - } - else - { - return false; - } - } - else - { - return false; - } - } -}; - -OpenArena::Window* g_Screen = new OpenArena::Window(); diff --git a/src/mygl.h b/src/mygl.h deleted file mode 100644 index a99bd2c..0000000 --- a/src/mygl.h +++ /dev/null @@ -1,113 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __MYGL_H__ -#define __MYGL_H__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#if defined USE_GLX -#include -#include -#elif defined USE_AGL -#include -#include -#include -//#error unimplemented method -#elif defined USE_CGL -#error unimplemented method -#elif defined USE_WGL -#include -#include -#include -#endif - -#include -#include "datatypes.h" -#include "screen.h" -#include "tga.h" -#include "bmp.h" -#include "strmanip.h" -#include "window.h" - -using namespace std; - -#ifdef WIN32 -//These this is windows specific -static HINSTANCE hInstance; // Application instance -#endif -extern OpenArena::Window* g_Screen; -//This doesn't need to be here I think -//int InitGL(GLvoid); -namespace OpenArena -{ - /*! - * \brief - * Write brief comment for LoadGLTexture here. - * - * \param - * Description of parameter . - * - * \param - * Description of parameter . - * - * \param - * Description of parameter . - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for LoadGLTexture here. - * - * \remarks - * Write remarks for LoadGLTexture here. - * - * \see - * Separate items with the '|' character. - */ - bool LoadGLTexture(string , GLuint&, GLuint = GL_LINEAR, GLuint = GL_LINEAR); - /*! - * \brief - * Write brief comment for FreeGLTexture here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for FreeGLTexture here. - * - * \remarks - * Write remarks for FreeGLTexture here. - * - * \see - * Separate items with the '|' character. - */ - void FreeGLTexture(GLuint&); -}; -#endif diff --git a/src/myglFont.cpp b/src/myglFont.cpp deleted file mode 100644 index 2b80397..0000000 --- a/src/myglFont.cpp +++ /dev/null @@ -1,164 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -//////////////////////////////////////////////////////////////////////////////// -// -// Module: myglFont.cpp -// Author: Tom Hicks -// Creation: 09-01-2003 -// LastEdit: 06-19-2005 -// Editors: None -// -// Purpose: -// -// Summary of Methods: -// Global -// -function name -// description -// blahClass -// -function name -// description -// -// Summary of Properties: -// blahClass -// -property name -// description -// -//////////////////////////////////////////////////////////////////////////////// - -#include "myglFont.h" - -namespace OpenArena -{ - Font::Font() - { - status = 0; - base = 0; - texture = 0; - screenWidth = 1; - screenHeight = 1; - } - - Font::~Font() - { - FreeFont(); - } - - bool Font::BuildFont(const char* texName) - { - FreeFont(); - - if(LoadGLTexture(texName, texture, GL_NEAREST, GL_NEAREST)) - { - float x, y; - base = glGenLists(256); - glBindTexture(GL_TEXTURE_2D, texture); - for(short i = 0; i<256; i++) - { - x = i%16/16.0f; - y = i/16/16.0f; - glNewList(base+i, GL_COMPILE); - glBegin(GL_QUADS); - glTexCoord2f(x, 1-y-0.0625f); - glVertex2i(0,0); - glTexCoord2f(x+0.0625f, 1-y-0.0625f); - glVertex2i(16,0); - glTexCoord2f(x+0.0625f, 1-y); - glVertex2i(16,16); - glTexCoord2f(x, 1-y); - glVertex2i(0,16); - glEnd(); - glTranslated(16,0,0); - glEndList(); - } - status = true; - } - return status; - } - - bool Font::FreeFont() - { - if(status) - { - glDeleteLists(base, 256); - status = false; - } - return status; - } - - void Font::Print(int x, int y, const char* str, unsigned int set) - { - if(status) - { - if(set>1) - set = 1; - - glBindTexture(GL_TEXTURE_2D, texture); - //glDisable(GL_DEPTH_TEST); - //glEnable(GL_BLEND); - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(0,screenWidth,0,screenHeight,-1,1); - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - glTranslated(x, y, 0); - glListBase(base-32+(128*set)); - glCallLists(strlen(str), GL_BYTE, str); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - //glDisable(GL_BLEND); - //glEnable(GL_DEPTH_TEST); - } - } - - bool Font::Loaded() - { - return status; - } - - void Font::SetScreenDimensions(short x, short y) - { - screenWidth = x; - screenHeight = y; - } - - void Font::SetScreenWidth(short x) - { - screenWidth = x; - } - - void Font::SetScreenHeight(short y) - { - screenHeight = y; - } - - short Font::ScreenWidth() - { - return screenWidth; - } - - short Font::ScreenHeight() - { - return screenHeight; - } -}; diff --git a/src/myglFont.h b/src/myglFont.h deleted file mode 100644 index 51e60fc..0000000 --- a/src/myglFont.h +++ /dev/null @@ -1,273 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __glPrint_h__ -#define __glPrint_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include "mygl.h" - -namespace OpenArena -{ - /*! - * \brief - * Write brief comment for Font here. - * - * Write detailed description for Font here. - * - * \remarks - * Write remarks for Font here. - * - * \see - * Separate items with the '|' character. - */ - class Font - { - private: - short screenWidth; - short screenHeight; - unsigned int base; - GLuint texture; - bool status; - - public: - /*! - * \brief - * Write brief comment for Font here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Font here. - * - * \remarks - * Write remarks for Font here. - * - * \see - * Separate items with the '|' character. - */ - Font(); - /*! - * \brief - * Write brief comment for ~Font here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for ~Font here. - * - * \remarks - * Write remarks for ~Font here. - * - * \see - * Separate items with the '|' character. - */ - ~Font(); - /*! - * \brief - * Write brief comment for BuildFont here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for BuildFont here. - * - * \remarks - * Write remarks for BuildFont here. - * - * \see - * Separate items with the '|' character. - */ - bool BuildFont(const char*); - /*! - * \brief - * Write brief comment for FreeFont here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for FreeFont here. - * - * \remarks - * Write remarks for FreeFont here. - * - * \see - * Separate items with the '|' character. - */ - bool FreeFont(); - /*! - * \brief - * Write brief comment for Print here. - * - * \param - * Description of parameter . - * - * \param - * Description of parameter . - * - * \param - * Description of parameter . - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Print here. - * - * \remarks - * Write remarks for Print here. - * - * \see - * Separate items with the '|' character. - */ - void Print(int, int, const char*, unsigned int = 0); - /*! - * \brief - * Write brief comment for Loaded here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Loaded here. - * - * \remarks - * Write remarks for Loaded here. - * - * \see - * Separate items with the '|' character. - */ - bool Loaded(); - /*! - * \brief - * Write brief comment for SetScreenDimensions here. - * - * \param - * Description of parameter . - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for SetScreenDimensions here. - * - * \remarks - * Write remarks for SetScreenDimensions here. - * - * \see - * Separate items with the '|' character. - */ - void SetScreenDimensions(short, short); - /*! - * \brief - * Write brief comment for SetScreenWidth here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for SetScreenWidth here. - * - * \remarks - * Write remarks for SetScreenWidth here. - * - * \see - * Separate items with the '|' character. - */ - void SetScreenWidth(short); - /*! - * \brief - * Write brief comment for SetScreenHeight here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for SetScreenHeight here. - * - * \remarks - * Write remarks for SetScreenHeight here. - * - * \see - * Separate items with the '|' character. - */ - void SetScreenHeight(short); - /*! - * \brief - * Write brief comment for ScreenWidth here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for ScreenWidth here. - * - * \remarks - * Write remarks for ScreenWidth here. - * - * \see - * Separate items with the '|' character. - */ - short ScreenWidth(); - /*! - * \brief - * Write brief comment for ScreenHeight here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for ScreenHeight here. - * - * \remarks - * Write remarks for ScreenHeight here. - * - * \see - * Separate items with the '|' character. - */ - short ScreenHeight(); - }; -}; -#endif diff --git a/src/myglTexture.cpp b/src/myglTexture.cpp deleted file mode 100644 index 2ba1a2c..0000000 --- a/src/myglTexture.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#include "myglTexture.h" -using namespace OpenArena; - -namespace OpenArena -{ - Texture::Texture() - { - id=0xFFFFFFFF; - filename = ""; - minFilter = GL_LINEAR; - magFilter = GL_LINEAR; - } - - Texture::~Texture() - { - Free(); - } - - string Texture::Filename() - { - return filename; - } - - GLuint Texture::ID() - { - return id; - } - - bool Texture::Loaded() - { - return filename != ""; - } - - bool Texture::Load(string fn) - { - if(Loaded()) - Free(); - - if(LoadGLTexture(fn.c_str(), id, minFilter, magFilter)) - { - filename = fn; - return true; - } - else - { - id = 0xFFFFFFFF; - return false; - } - } - - bool Texture::Load(string fn, GLuint min, GLuint mag) - { - if(Loaded()) - Free(); - - if(LoadGLTexture(fn.c_str(), id, min, mag)) - { - filename = fn; - minFilter = min; - magFilter = mag; - return true; - } - else - { - id=0xFFFFFFFF; - return false; - } - } - - void Texture::Free() - { - if(Loaded()) - { - //This is only temporarily removed for mac os x - //TODO make this work on all operating systems - //FreeGLTexture(id); - minFilter = GL_LINEAR; - magFilter = GL_LINEAR; - filename = ""; - id = 0xFFFFFFFF; - } - } - - bool Texture::operator<(const Texture& rtOp) - { - return id < rtOp.id; - } - - bool Texture::operator<=(const Texture& rtOp) - { - return id<= rtOp.id; - } - - bool Texture::operator==(const Texture& rtOp) - { - return id== rtOp.id; - } - - bool Texture::operator!=(const Texture& rtOp) - { - return id!= rtOp.id; - } - - bool Texture::operator>=(const Texture& rtOp) - { - return id>= rtOp.id; - } - - bool Texture::operator>(const Texture& rtOp) - { - return id> rtOp.id; - } -}; diff --git a/src/myglTexture.h b/src/myglTexture.h deleted file mode 100644 index 60369c8..0000000 --- a/src/myglTexture.h +++ /dev/null @@ -1,345 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __myglTexture_h__ -#define __myglTexture_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include "datatypes.h" -#include "mygl.h" - -using namespace std; - -namespace OpenArena -{ - /*! - * \brief - * Write brief comment for Texture here. - * - * Write detailed description for Texture here. - * - * \remarks - * Write remarks for Texture here. - * - * \see - * Separate items with the '|' character. - */ - class Texture - { - public: - /*! - * \brief - * Write brief comment for Texture here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Texture here. - * - * \remarks - * Write remarks for Texture here. - * - * \see - * Separate items with the '|' character. - */ - Texture(); - /*! - * \brief - * Write brief comment for ~Texture here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for ~Texture here. - * - * \remarks - * Write remarks for ~Texture here. - * - * \see - * Separate items with the '|' character. - */ - ~Texture(); - /*! - * \brief - * Write brief comment for Filename here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Filename here. - * - * \remarks - * Write remarks for Filename here. - * - * \see - * Separate items with the '|' character. - */ - string Filename(); - /*! - * \brief - * Write brief comment for ID here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for ID here. - * - * \remarks - * Write remarks for ID here. - * - * \see - * Separate items with the '|' character. - */ - GLuint ID(); - /*! - * \brief - * Write brief comment for Load here. - * - * \param filename - * Description of parameter filename. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Load here. - * - * \remarks - * Write remarks for Load here. - * - * \see - * Separate items with the '|' character. - */ - bool Load(string filename); - /*! - * \brief - * Write brief comment for Load here. - * - * \param filename - * Description of parameter filename. - * - * \param min - * Description of parameter min. - * - * \param mag - * Description of parameter mag. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Load here. - * - * \remarks - * Write remarks for Load here. - * - * \see - * Separate items with the '|' character. - */ - bool Load(string filename, GLuint min, GLuint mag); - /*! - * \brief - * Write brief comment for Free here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Free here. - * - * \remarks - * Write remarks for Free here. - * - * \see - * Separate items with the '|' character. - */ - void Free(); - /*! - * \brief - * Write brief comment for Loaded here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Loaded here. - * - * \remarks - * Write remarks for Loaded here. - * - * \see - * Separate items with the '|' character. - */ - bool Loaded(); - /*! - * \brief - * Write brief comment for operator < here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator < here. - * - * \remarks - * Write remarks for operator < here. - * - * \see - * Separate items with the '|' character. - */ - bool operator<(const Texture&); - /*! - * \brief - * Write brief comment for operator <= here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator <= here. - * - * \remarks - * Write remarks for operator <= here. - * - * \see - * Separate items with the '|' character. - */ - bool operator<=(const Texture&); - /*! - * \brief - * Write brief comment for operator == here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator == here. - * - * \remarks - * Write remarks for operator == here. - * - * \see - * Separate items with the '|' character. - */ - bool operator==(const Texture&); - /*! - * \brief - * Write brief comment for operator != here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator != here. - * - * \remarks - * Write remarks for operator != here. - * - * \see - * Separate items with the '|' character. - */ - bool operator!=(const Texture&); - /*! - * \brief - * Write brief comment for operator >= here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator >= here. - * - * \remarks - * Write remarks for operator >= here. - * - * \see - * Separate items with the '|' character. - */ - bool operator>=(const Texture&); - /*! - * \brief - * Write brief comment for operator > here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator > here. - * - * \remarks - * Write remarks for operator > here. - * - * \see - * Separate items with the '|' character. - */ - bool operator>(const Texture&); - - private: - GLuint minFilter; - GLuint magFilter; - string filename; - GLuint id; - }; -}; -#endif diff --git a/src/player.cpp b/src/player.cpp deleted file mode 100644 index 775569e..0000000 --- a/src/player.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#include "player.h" - -namespace OpenArena -{ - void Player::Load() - { - } - - void Player::Save() - { - } - - void Player::AddItem(unsigned int item) - { - // inventory = inventory | item; - } - - void Player::RemoveItem(unsigned int item) - { - // inventory = inventory & ~item; - } - - void Player::CreateCharacter() - { - } -}; diff --git a/src/player.h b/src/player.h deleted file mode 100644 index bf81130..0000000 --- a/src/player.h +++ /dev/null @@ -1,57 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __PLAYER_H__ -#define __PLAYER_H__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include "EventManager.h" -#include "camera.h" -#include "ctrls.h" - -namespace OpenArena -{ - class Player - { - public: - void Load(); - void Save(); - void CreateCharacter(); - void AddItem(unsigned int item); - void RemoveItem(unsigned int item); - - ControlScheme controls; - Camera camera; - EventManager* eventManager; - - class EventHandler - { - public: - - private: - - }; - - private: - }; -}; -#endif diff --git a/src/screen.cpp b/src/screen.cpp deleted file mode 100644 index 69c9f64..0000000 --- a/src/screen.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#include "screen.h" - -namespace OpenArena -{ - Screen::Screen() - { - _width=640; - _height=480; - _colorDepth=16; - _fullscreen=false; - _name = ""; - } - - int Screen::GetWidth() - { - return _width; - } - - int Screen::GetHeight() - { - return _height; - } - - int Screen::GetColorDepth() - { - return _colorDepth; - } - - bool Screen::GetFullscreen() - { - return _fullscreen; - } - - const char* Screen::GetName() - { - return _name.c_str(); - } - - void Screen::SetWidth(int width) - { - _width = width; - } - - void Screen::SetHeight(int height) - { - _height = height; - } - - void Screen::Resize(int width, int height) - { - _width = width; - _height = height; - } - - void Screen::SetColorDepth(int colorDepth) - { - _colorDepth = colorDepth; - } - - void Screen::SetFullscreen(bool status) - { - _fullscreen = status; - } - - void Screen::ToggleFullscreen() - { - _fullscreen = !_fullscreen; - } - - void Screen::SetName(const char* name) - { - _name = name; - } - - void Screen::SetName(string name) - { - _name = name; - } -}; diff --git a/src/screen.h b/src/screen.h deleted file mode 100644 index 65705eb..0000000 --- a/src/screen.h +++ /dev/null @@ -1,318 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __screen_h__ -#define __screen_h__ -#include - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -using namespace std; -namespace OpenArena -{ - /*! - * \brief - * Write brief comment for Screen here. - * - * Write detailed description for Screen here. - * - * \remarks - * Write remarks for Screen here. - * - * \see - * Separate items with the '|' character. - */ - class Screen - { - public: - /*! - * \brief - * Write brief comment for Screen here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Screen here. - * - * \remarks - * Write remarks for Screen here. - * - * \see - * Separate items with the '|' character. - */ - Screen(); - /*! - * \brief - * Write brief comment for GetWidth here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for GetWidth here. - * - * \remarks - * Write remarks for GetWidth here. - * - * \see - * Separate items with the '|' character. - */ - int GetWidth(); - /*! - * \brief - * Write brief comment for GetHeight here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for GetHeight here. - * - * \remarks - * Write remarks for GetHeight here. - * - * \see - * Separate items with the '|' character. - */ - int GetHeight(); - /*! - * \brief - * Write brief comment for GetColorDepth here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for GetColorDepth here. - * - * \remarks - * Write remarks for GetColorDepth here. - * - * \see - * Separate items with the '|' character. - */ - int GetColorDepth(); - /*! - * \brief - * Write brief comment for GetFullscreen here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for GetFullscreen here. - * - * \remarks - * Write remarks for GetFullscreen here. - * - * \see - * Separate items with the '|' character. - */ - bool GetFullscreen(); - /*! - * \brief - * Write brief comment for GetName here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for GetName here. - * - * \remarks - * Write remarks for GetName here. - * - * \see - * Separate items with the '|' character. - */ - const char* GetName(); - /*! - * \brief - * Write brief comment for SetWidth here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for SetWidth here. - * - * \remarks - * Write remarks for SetWidth here. - * - * \see - * Separate items with the '|' character. - */ - void SetWidth(int); - /*! - * \brief - * Write brief comment for SetHeight here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for SetHeight here. - * - * \remarks - * Write remarks for SetHeight here. - * - * \see - * Separate items with the '|' character. - */ - void SetHeight(int); - /*! - * \brief - * Write brief comment for Resize here. - * - * \param - * Description of parameter . - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Resize here. - * - * \remarks - * Write remarks for Resize here. - * - * \see - * Separate items with the '|' character. - */ - void Resize(int, int); - /*! - * \brief - * Write brief comment for SetColorDepth here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for SetColorDepth here. - * - * \remarks - * Write remarks for SetColorDepth here. - * - * \see - * Separate items with the '|' character. - */ - void SetColorDepth(int); - /*! - * \brief - * Write brief comment for SetFullscreen here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for SetFullscreen here. - * - * \remarks - * Write remarks for SetFullscreen here. - * - * \see - * Separate items with the '|' character. - */ - void SetFullscreen(bool); - /*! - * \brief - * Write brief comment for ToggleFullscreen here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for ToggleFullscreen here. - * - * \remarks - * Write remarks for ToggleFullscreen here. - * - * \see - * Separate items with the '|' character. - */ - void ToggleFullscreen(); - /*! - * \brief - * Write brief comment for SetName here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for SetName here. - * - * \remarks - * Write remarks for SetName here. - * - * \see - * Separate items with the '|' character. - */ - void SetName(const char*); - /*! - * \brief - * Write brief comment for SetName here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for SetName here. - * - * \remarks - * Write remarks for SetName here. - * - * \see - * Separate items with the '|' character. - */ - void SetName(string); - protected: - short _width; - short _height; - char _colorDepth; - bool _fullscreen; -// public: - string _name; - }; -}; -#endif diff --git a/src/strmanip.cpp b/src/strmanip.cpp deleted file mode 100644 index 11ab731..0000000 --- a/src/strmanip.cpp +++ /dev/null @@ -1,320 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#include -#include "strmanip.h" - -bool Truth(std::string str) -{ - if (toupper(str[0]) == 'T' || str[0] == '1') - return true; - else - return false; -} - -int Integer(std::string str) -{ - int last = str.length() - 1; - int number = 0; - - for (int x = last; x>=0; x--) - { - switch(str[x]) - { - case '1': - number += (int)pow(10.0, last-x); - break; - case '2': - number += 2 * (int)pow(10.0, last-x); - break; - case '3': - number += 3 * (int)pow(10.0, last-x); - break; - case '4': - number += 4 * (int)pow(10.0, last-x); - break; - case '5': - number += 5 * (int)pow(10.0, last-x); - break; - case '6': - number += 6 * (int)pow(10.0, last-x); - break; - case '7': - number += 7 * (int)pow(10.0, last-x); - break; - case '8': - number += 8 * (int)pow(10.0, last-x); - break; - case '9': - number += 9 * (int)pow(10.0, last-x); - } - } - return number; -} - -float Floating(std::string str) -{ - //this doesn't work right yet so use atof for now - - int last = str.length() - 1; - float number = 0.0f; - bool period = false; - - for (int x = last; x>=0; x--) - { - switch(str[x]) - { - case '1': - number += (float)pow(10.0, last-x); - break; - case '2': - number += 2 * (float)pow(10.0, last-x); - break; - case '3': - number += 3 * (float)pow(10.0, last-x); - break; - case '4': - number += 4 * (float)pow(10.0, last-x); - break; - case '5': - number += 5 * (float)pow(10.0, last-x); - break; - case '6': - number += 6 * (float)pow(10.0, last-x); - break; - case '7': - number += 7 * (float)pow(10.0, last-x); - break; - case '8': - number += 8 * (float)pow(10.0, last-x); - break; - case '9': - number += 9 * (float)pow(10.0, last-x); - break; - case '.': - if (!period) - { - number *= (float)pow(10.0, -(last-x)); - last -= (x+1); - period = true; - } - else - return number; - - } - } - - if(str[0] =='-') - return -number; - else - return number; -} - -string KeyString(uint8 key) -{ - switch (key) - { - case OpenArena::KEY_LBUTTON: - return "mouse1"; - case OpenArena::KEY_RBUTTON: - return "mouse2"; - case OpenArena::KEY_MBUTTON: - return "mouse3"; - case OpenArena::KEY_TAB: - return "tab"; - case OpenArena::KEY_RETURN: - return "enter"; - case OpenArena::KEY_SHIFT: - return "shift"; - case OpenArena::KEY_CONTROL: - return "control"; - case OpenArena::KEY_PAUSE: - return "pause"; - case OpenArena::KEY_CAPITAL: - return "capslock"; - case OpenArena::KEY_ESCAPE: - return "esc"; - case OpenArena::KEY_SPACE: - return "space"; - case OpenArena::KEY_PRIOR: - return "pageup"; - case OpenArena::KEY_NEXT: - return "pagedown"; - case OpenArena::KEY_END: - return "end"; - case OpenArena::KEY_HOME: - return "home"; - case OpenArena::KEY_LEFT: - return "left"; - case OpenArena::KEY_UP: - return "up"; - case OpenArena::KEY_RIGHT: - return "right"; - case OpenArena::KEY_DOWN: - return "down"; - case OpenArena::KEY_INSERT: - return "insert"; - case OpenArena::KEY_DELETE: - return "delete"; - case OpenArena::KEY_LWIN: - return "lwin"; - case OpenArena::KEY_RWIN: - return "rwin"; - case OpenArena::KEY_APPS: - return "apps"; - case OpenArena::KEY_NUMPAD0: - return "numpad0"; - case OpenArena::KEY_NUMPAD1: - return "numpad1"; - case OpenArena::KEY_NUMPAD2: - return "numpad2"; - case OpenArena::KEY_NUMPAD3: - return "numpad3"; - case OpenArena::KEY_NUMPAD4: - return "numpad4"; - case OpenArena::KEY_NUMPAD5: - return "numpad5"; - case OpenArena::KEY_NUMPAD6: - return "numpad6"; - case OpenArena::KEY_NUMPAD7: - return "numpad7"; - case OpenArena::KEY_NUMPAD8: - return "numpad8"; - case OpenArena::KEY_NUMPAD9: - return "numpad9"; - case OpenArena::KEY_MULTIPLY: - return "numpad*"; - case OpenArena::KEY_ADD: - return "numpad+"; - case OpenArena::KEY_SUBTRACT: - return "numpad-"; - case OpenArena::KEY_DIVIDE: - return "numpad/"; - case OpenArena::KEY_F1: - return "f1"; - case OpenArena::KEY_F2: - return "f2"; - case OpenArena::KEY_F3: - return "f3"; - case OpenArena::KEY_F4: - return "f4"; - case OpenArena::KEY_F5: - return "f5"; - case OpenArena::KEY_F6: - return "f6"; - case OpenArena::KEY_F7: - return "f7"; - case OpenArena::KEY_F8: - return "f8"; - case OpenArena::KEY_F9: - return "f9"; - case OpenArena::KEY_F10: - return "f10"; - case OpenArena::KEY_F11: - return "f11"; - case OpenArena::KEY_F12: - return "f2"; - case OpenArena::KEY_NUMLOCK: - return "numlock"; - case OpenArena::KEY_SCROLL: - return "scroll"; - case OpenArena::KEY_SEPARATOR: - return "separator"; - default: - return "null"; - }; -} - -string Right(string str, uint32 len) -{ - return str.substr(str.length()-len, len); -} - -string Left(string str, uint32 len) -{ - return str.substr(0, len); -} - -string tolower(string str) -{ - for(uint32 i=0; i 0) - { - if(wordNum < 1) - { - while(isspace(str[start])) - ++start; - - while (!isspace(str[++length]) && length < maxLength); - - if(length < maxLength || isspace(str[length])){ - if(length >0) - { - length--; - } - } - return str.substr(start, length); - } - else - { - while(isspace(str[start])) - ++start; - - for(uint32 i=0; i -#include -#include "keys.h" -#include "datatypes.h" - -using namespace std; - -/*! - * \brief - * Write brief comment for Truth here. - * - * \param str - * Description of parameter str. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Truth here. - * - * \remarks - * Write remarks for Truth here. - * - * \see - * Separate items with the '|' character. - */ -bool Truth(string str); -/*! - * \brief - * Write brief comment for Integer here. - * - * \param str - * Description of parameter str. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Integer here. - * - * \remarks - * Write remarks for Integer here. - * - * \see - * Separate items with the '|' character. - */ -int Integer(string str); -/*! - * \brief - * Write brief comment for Floating here. - * - * \param str - * Description of parameter str. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Floating here. - * - * \remarks - * Write remarks for Floating here. - * - * \see - * Separate items with the '|' character. - */ -float Floating(string str); - -/** - * @brief - * Write brief comment for KeyString here. - * - * @param keyCode - Description of parameter . - * - * @returns - * Write description of return value here. - * - * Write detailed description for KeyString here. - * - * @remarks - * Write remarks for KeyString here. - * - * @see - * Separate items with the '|' character. - */ -string KeyString(uint8 keyCode); -/*! - * @brief - * Write brief comment for Right here. - * - * @param - * Description of parameter . - * - * @param - * Description of parameter . - * - * @returns - * Write description of return value here. - * - * @throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Right here. - * - * @remarks - * Write remarks for Right here. - * - * @see - * Separate items with the '|' character. - */ -string Right(string, uint32); -/*! - * @brief - * Write brief comment for Left here. - * - * @param - * Description of parameter . - * - * @param - * Description of parameter . - * - * @returns - * Write description of return value here. - * - * @throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Left here. - * - * @remarks - * Write remarks for Left here. - * - * @see - * Separate items with the '|' character. - */ -string Left(string, uint32); -/*! - * \brief - * Write brief comment for tolower here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for tolower here. - * - * \remarks - * Write remarks for tolower here. - * - * \see - * Separate items with the '|' character. - */ -string tolower(string); -/*! - * \brief - * Write brief comment for toupper here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for toupper here. - * - * \remarks - * Write remarks for toupper here. - * - * \see - * Separate items with the '|' character. - */ -string toupper(string); -/*! - * \brief - * Write brief comment for word here. - * - * \param - * Description of parameter . - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for word here. - * - * \remarks - * Write remarks for word here. - * - * \see - * Separate items with the '|' character. - */ -string word(string, uint32); - -#endif diff --git a/src/texture.h b/src/texture.h deleted file mode 100644 index e098c5c..0000000 --- a/src/texture.h +++ /dev/null @@ -1,51 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __texture_h__ -#define __texture_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -namespace OpenArena -{ - /*! - * \brief - * Write brief comment for TextureImage here. - * - * Write detailed description for TextureImage here. - * - * \remarks - * Write remarks for TextureImage here. - * - * \see - * Separate items with the '|' character. - */ - class TextureImage - { - public: - unsigned char* data; - unsigned int bpp; - unsigned int sizeX; - unsigned int sizeY; - unsigned int type; - }; -}; -#endif diff --git a/src/tga.cpp b/src/tga.cpp deleted file mode 100644 index b91b8dd..0000000 --- a/src/tga.cpp +++ /dev/null @@ -1,688 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#include "tga.h" -#include "datatypes.h" -#ifdef WIN32 -#pragma warning(disable:4996) -#endif - -namespace OpenArena{ -TextureImage* LoadTGA(const char * filename) -{ - TGAHeader tgaheader; - TextureImage* image; - std::string errmsg; - FILE* file = fopen(filename, "rb"); - - if(file == NULL) - { - errmsg = "Could not open texture file "; - errmsg = errmsg + filename; - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL, errmsg.c_str(), "ERROR", MB_OK); - #endif - return NULL; - } - - if(fread(&tgaheader, sizeof(TGAHeader), 1, file) == 0) - { - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL, "Could not read file header", "ERROR", MB_OK); - #endif - if(file != NULL) - fclose(file); - return NULL; - } - - if(memcmp(uTGAcompare, &tgaheader, sizeof(tgaheader)) == 0) - image = LoadUncompressedTGA(file); - else if(memcmp(cTGAcompare, &tgaheader, sizeof(tgaheader)) == 0) - image = LoadCompressedTGA(file); - else - { - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL, "TGA file must be type 2 or type 10 ", "Invalid Image", MB_OK); - #endif - fclose(file); - return NULL; - } - return image; -} - -TextureImage* LoadUncompressedTGA(FILE * fTGA) -{ - TGA tga; - TextureImage* image = new TextureImage; - - if(fread(tga.header, sizeof(tga.header), 1, fTGA) == 0) - { - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL, "Could not read info header", "ERROR", MB_OK); - #endif - if(fTGA != NULL) - { - fclose(fTGA); - } - return NULL; - } - - image->sizeY = tga.header[1] * 256 + tga.header[0]; - image->sizeX = tga.header[3] * 256 + tga.header[2]; - image->bpp = tga.header[4]; - tga.Width = image->sizeX; - tga.Height = image->sizeY; - tga.Bpp = image->bpp; - - if((image->sizeX <= 0) || (image->sizeY <= 0) || ((image->bpp != 24) && (image->bpp !=32))) - { - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL, "Invalid texture information", "ERROR", MB_OK); - #endif - if(fTGA != NULL) - { - fclose(fTGA); - } - return NULL; - } - - if(image->bpp == 24) - { - image->type = GL_RGB; - } - else - { - image->type = GL_RGBA; - } - - tga.bytesPerPixel = (tga.Bpp / 8); - tga.imageSize = (tga.bytesPerPixel * tga.Width * tga.Height); - image->data = (GLubyte *)malloc(tga.imageSize); - - if(image->data == NULL) - { - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL, "Could not allocate memory for image", "ERROR", MB_OK); - #endif - fclose(fTGA); - return NULL; - } - - if(fread(image->data, 1, tga.imageSize, fTGA) != tga.imageSize) - { - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL, "Could not read image data", "ERROR", MB_OK); - #endif - if(image->data != NULL) - { - free(image->data); - } - fclose(fTGA); - return NULL; - } - - - for(GLuint cswap = 0; cswap < (int)tga.imageSize; cswap += tga.bytesPerPixel) - { - image->data[cswap] ^= image->data[cswap+2] ^= - image->data[cswap] ^= image->data[cswap+2]; - } - - fclose(fTGA); - return image; -} - -TextureImage* LoadCompressedTGA(FILE * fTGA) -{ - TextureImage* image = new TextureImage; - TGA tga; - - if(fread(tga.header, sizeof(tga.header), 1, fTGA) == 0) - { - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL, "Could not read info header", "ERROR", MB_OK); - #endif - if(fTGA != NULL) - { - fclose(fTGA); - } - return NULL; - } - - image->sizeX = tga.header[1] * 256 + tga.header[0]; - image->sizeY = tga.header[3] * 256 + tga.header[2]; - image->bpp = tga.header[4]; - tga.Width = image->sizeX; - tga.Height = image->sizeY; - tga.Bpp = image->bpp; - - if((image->sizeX <= 0) || (image->sizeY <= 0) || ((image->bpp != 24) && (image->bpp !=32))) - { - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL, "Invalid texture information", "ERROR", MB_OK); - #endif - if(fTGA != NULL) - { - fclose(fTGA); - } - return NULL; - } - - tga.bytesPerPixel = (tga.Bpp / 8); - tga.imageSize = (tga.bytesPerPixel * tga.Width * tga.Height); - image->data = (GLubyte *)malloc(tga.imageSize); - - if(image->data == NULL) - { - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL, "Could not allocate memory for image", "ERROR", MB_OK); - #endif - fclose(fTGA); - return NULL; - } - - GLuint pixelcount = tga.Height * tga.Width; - GLuint currentpixel = 0; - GLuint currentbyte = 0; - GLubyte * colorbuffer = (GLubyte *)malloc(tga.bytesPerPixel); - - do - { - GLubyte chunkheader = 0; - - if(fread(&chunkheader, sizeof(GLubyte), 1, fTGA) == 0) - { - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL, "Could not read RLE header", "ERROR", MB_OK); - #endif - if(fTGA != NULL) - { - fclose(fTGA); - } - if(image->data != NULL) - { - free(image->data); - } - return NULL; - } - - if(chunkheader < 128) - { - chunkheader++; - for(short counter = 0; counter < chunkheader; counter++) - { - if(fread(colorbuffer, 1, tga.bytesPerPixel, fTGA) != tga.bytesPerPixel) - { - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL, "Could not read image data", "ERROR", MB_OK); - #endif - - if(fTGA != NULL) - { - fclose(fTGA); - } - - if(colorbuffer != NULL) - { - free(colorbuffer); - } - - if(image->data != NULL) - { - free(image->data); - } - - return NULL; - } - - image->data[currentbyte ] = colorbuffer[2]; - image->data[currentbyte + 1 ] = colorbuffer[1]; - image->data[currentbyte + 2 ] = colorbuffer[0]; - - if(tga.bytesPerPixel == 4) - { - image->data[currentbyte + 3] = colorbuffer[3]; - } - - currentbyte += tga.bytesPerPixel; - currentpixel++; - - if(currentpixel > pixelcount) - { - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL, "Too many pixels read", "ERROR", NULL); - #endif - - if(fTGA != NULL) - { - fclose(fTGA); - } - - if(colorbuffer != NULL) - { - free(colorbuffer); - } - - if(image->data != NULL) - { - free(image->data); - } - - return NULL; - } - } - } - else - { - chunkheader -= 127; - if(fread(colorbuffer, 1, tga.bytesPerPixel, fTGA) != tga.bytesPerPixel) - { - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL, "Could not read from file", "ERROR", MB_OK); - #endif - - if(fTGA != NULL) - { - fclose(fTGA); - } - - if(colorbuffer != NULL) - { - free(colorbuffer); - } - - if(image->data != NULL) - { - free(image->data); - } - - return NULL; - } - - for(short counter = 0; counter < chunkheader; counter++) - { - image->data[currentbyte ] = colorbuffer[2]; - image->data[currentbyte + 1 ] = colorbuffer[1]; - image->data[currentbyte + 2 ] = colorbuffer[0]; - - if(tga.bytesPerPixel == 4) - { - image->data[currentbyte + 3] = colorbuffer[3]; - } - - currentbyte += tga.bytesPerPixel; - currentpixel++; - - if(currentpixel > pixelcount) - { - //This needs to be abstracted somehow - #ifdef WIN32 - MessageBox(NULL, "Too many pixels read", "ERROR", NULL); - #endif - - if(fTGA != NULL) - { - fclose(fTGA); - } - - if(colorbuffer != NULL) - { - free(colorbuffer); - } - - if(image->data != NULL) - { - free(image->data); - } - - return NULL; - } - } - } - } - - while(currentpixel < pixelcount); - fclose(fTGA); - return image; -} - - -/* -TextureImage* LoadTGA(const char * filename) -{ - TGAHeader tgaheader; - TextureImage* image; - std::string errmsg; - FILE* file = fopen(filename, "rb"); - - if(file == NULL) - { - errmsg = "Could not open texture file "; - errmsg = errmsg + filename; - MessageBox(NULL, errmsg.c_str(), "ERROR", MB_OK); - return NULL; - } - - if(fread(&tgaheader, sizeof(TGAHeader), 1, file) == 0) - { - MessageBox(NULL, "Could not read file header", "ERROR", MB_OK); - if(file != NULL) - fclose(file); - return NULL; - } - - if(memcmp(uTGAcompare, &tgaheader, sizeof(tgaheader)) == 0) - image = LoadUncompressedTGA(file); - else if(memcmp(cTGAcompare, &tgaheader, sizeof(tgaheader)) == 0) - image = LoadCompressedTGA(file); - else - { - MessageBox(NULL, "TGA file must be type 2 or type 10 ", "Invalid Image", MB_OK); - fclose(file); - return NULL; - } - return image; -} - -TextureImage* LoadUncompressedTGA(FILE * fTGA) -{ - TGA tga; - TextureImage* image = new TextureImage; - - if(fread(tga.header, sizeof(tga.header), 1, fTGA) == 0) - { - MessageBox(NULL, "Could not read info header", "ERROR", MB_OK); - if(fTGA != NULL) - { - fclose(fTGA); - } - return NULL; - } - - image->sizeY = tga.header[1] * 256 + tga.header[0]; - image->sizeX = tga.header[3] * 256 + tga.header[2]; - image->bpp = tga.header[4]; - tga.Width = image->sizeX; - tga.Height = image->sizeY; - tga.Bpp = image->bpp; - - if((image->sizeX <= 0) || (image->sizeY <= 0) || ((image->bpp != 24) && (image->bpp !=32))) - { - MessageBox(NULL, "Invalid texture information", "ERROR", MB_OK); - if(fTGA != NULL) - { - fclose(fTGA); - } - return NULL; - } - - if(image->bpp == 24) - { - image->type = GL_RGB; - } - else - { - image->type = GL_RGBA; - } - - tga.bytesPerPixel = (tga.Bpp / 8); - tga.imageSize = (tga.bytesPerPixel * tga.Width * tga.Height); - image->data = (GLubyte *)malloc(tga.imageSize); - - if(image->data == NULL) - { - MessageBox(NULL, "Could not allocate memory for image", "ERROR", MB_OK); - fclose(fTGA); - return NULL; - } - - if(fread(image->data, 1, tga.imageSize, fTGA) != tga.imageSize) - { - MessageBox(NULL, "Could not read image data", "ERROR", MB_OK); - if(image->data != NULL) - { - free(image->data); - } - fclose(fTGA); - return NULL; - } - - - for(GLuint cswap = 0; cswap < (int)tga.imageSize; cswap += tga.bytesPerPixel) - { - image->data[cswap] ^= image->data[cswap+2] ^= - image->data[cswap] ^= image->data[cswap+2]; - } - - fclose(fTGA); - return image; -} - -TextureImage* LoadCompressedTGA(FILE * fTGA) -{ - TextureImage* image = new TextureImage; - TGA tga; - - if(fread(tga.header, sizeof(tga.header), 1, fTGA) == 0) - { - MessageBox(NULL, "Could not read info header", "ERROR", MB_OK); - if(fTGA != NULL) - { - fclose(fTGA); - } - return NULL; - } - - image->sizeX = tga.header[1] * 256 + tga.header[0]; - image->sizeY = tga.header[3] * 256 + tga.header[2]; - image->bpp = tga.header[4]; - tga.Width = image->sizeX; - tga.Height = image->sizeY; - tga.Bpp = image->bpp; - - if((image->sizeX <= 0) || (image->sizeY <= 0) || ((image->bpp != 24) && (image->bpp !=32))) - { - MessageBox(NULL, "Invalid texture information", "ERROR", MB_OK); - if(fTGA != NULL) - { - fclose(fTGA); - } - return NULL; - } - - tga.bytesPerPixel = (tga.Bpp / 8); - tga.imageSize = (tga.bytesPerPixel * tga.Width * tga.Height); - image->data = (GLubyte *)malloc(tga.imageSize); - - if(image->data == NULL) - { - MessageBox(NULL, "Could not allocate memory for image", "ERROR", MB_OK); - fclose(fTGA); - return NULL; - } - - GLuint pixelcount = tga.Height * tga.Width; - GLuint currentpixel = 0; - GLuint currentbyte = 0; - GLubyte * colorbuffer = (GLubyte *)malloc(tga.bytesPerPixel); - - do - { - GLubyte chunkheader = 0; - - if(fread(&chunkheader, sizeof(GLubyte), 1, fTGA) == 0) - { - MessageBox(NULL, "Could not read RLE header", "ERROR", MB_OK); - if(fTGA != NULL) - { - fclose(fTGA); - } - if(image->data != NULL) - { - free(image->data); - } - return NULL; - } - - if(chunkheader < 128) - { - chunkheader++; - for(short counter = 0; counter < chunkheader; counter++) - { - if(fread(colorbuffer, 1, tga.bytesPerPixel, fTGA) != tga.bytesPerPixel) - { - MessageBox(NULL, "Could not read image data", "ERROR", MB_OK); - - if(fTGA != NULL) - { - fclose(fTGA); - } - - if(colorbuffer != NULL) - { - free(colorbuffer); - } - - if(image->data != NULL) - { - free(image->data); - } - - return NULL; - } - - image->data[currentbyte ] = colorbuffer[2]; - image->data[currentbyte + 1 ] = colorbuffer[1]; - image->data[currentbyte + 2 ] = colorbuffer[0]; - - if(tga.bytesPerPixel == 4) - { - image->data[currentbyte + 3] = colorbuffer[3]; - } - - currentbyte += tga.bytesPerPixel; - currentpixel++; - - if(currentpixel > pixelcount) - { - MessageBox(NULL, "Too many pixels read", "ERROR", NULL); - - if(fTGA != NULL) - { - fclose(fTGA); - } - - if(colorbuffer != NULL) - { - free(colorbuffer); - } - - if(image->data != NULL) - { - free(image->data); - } - - return NULL; - } - } - } - else - { - chunkheader -= 127; - if(fread(colorbuffer, 1, tga.bytesPerPixel, fTGA) != tga.bytesPerPixel) - { - MessageBox(NULL, "Could not read from file", "ERROR", MB_OK); - - if(fTGA != NULL) - { - fclose(fTGA); - } - - if(colorbuffer != NULL) - { - free(colorbuffer); - } - - if(image->data != NULL) - { - free(image->data); - } - - return NULL; - } - - for(short counter = 0; counter < chunkheader; counter++) - { - image->data[currentbyte ] = colorbuffer[2]; - image->data[currentbyte + 1 ] = colorbuffer[1]; - image->data[currentbyte + 2 ] = colorbuffer[0]; - - if(tga.bytesPerPixel == 4) - { - image->data[currentbyte + 3] = colorbuffer[3]; - } - - currentbyte += tga.bytesPerPixel; - currentpixel++; - - if(currentpixel > pixelcount) - { - MessageBox(NULL, "Too many pixels read", "ERROR", NULL); - - if(fTGA != NULL) - { - fclose(fTGA); - } - - if(colorbuffer != NULL) - { - free(colorbuffer); - } - - if(image->data != NULL) - { - free(image->data); - } - - return NULL; - } - } - } - } - - while(currentpixel < pixelcount); - fclose(fTGA); - return image; -} -*/ -}; diff --git a/src/tga.h b/src/tga.h deleted file mode 100644 index 66ebba0..0000000 --- a/src/tga.h +++ /dev/null @@ -1,101 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __TGA_H__ -#define __TGA_H__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include "mygl.h" -#include -#include -#include "texture.h" - -namespace OpenArena{ - /*! - * \brief - * Write brief comment for TGAHeader here. - * - * Write detailed description for TGAHeader here. - * - * \remarks - * Write remarks for TGAHeader here. - * - * \see - * Separate items with the '|' character. - */ - struct TGAHeader - { - GLubyte Header[12]; // File Header To Determine File Type - }; - - /*! - * \brief - * Write brief comment for TGA here. - * - * Write detailed description for TGA here. - * - * \remarks - * Write remarks for TGA here. - * - * \see - * Separate items with the '|' character. - */ - struct TGA - { - GLubyte header[6]; // Holds The First 6 Useful Bytes Of The File - GLuint bytesPerPixel; // Number Of BYTES Per Pixel (3 Or 4) - GLuint imageSize; // Amount Of Memory Needed To Hold The Image - GLuint type; // The Type Of Image, GL_RGB Or GL_RGBA - GLuint Height; // Height Of Image - GLuint Width; // Width Of Image - GLuint Bpp; // Number Of BITS Per Pixel (24 Or 32) - }; - - /*! - * \brief - * Write brief comment for LoadTGA here. - * - * \param filename - * Description of parameter filename. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for LoadTGA here. - * - * \remarks - * Write remarks for LoadTGA here. - * - * \see - * Separate items with the '|' character. - */ - TextureImage* LoadTGA(const char *filename); - - const GLubyte uTGAcompare[12] = {0,0,2, 0,0,0,0,0,0,0,0,0}; // Uncompressed TGA Header - const GLubyte cTGAcompare[12] = {0,0,10,0,0,0,0,0,0,0,0,0}; // Compressed TGA Header - TextureImage* LoadUncompressedTGA(FILE *); // Load an Uncompressed file - TextureImage* LoadCompressedTGA(FILE *); // Load a Compressed file -}; -#endif diff --git a/src/vector.cpp b/src/vector.cpp deleted file mode 100644 index 076f720..0000000 --- a/src/vector.cpp +++ /dev/null @@ -1,270 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#include "vector.h" - -namespace OpenArena{ - Vec3d::Vec3d() - { - x=0.0f; - y=0.0f; - z=0.0f; - } - - Vec3d::Vec3d(const Vec3d& orig) - { - operator=(orig); - } - - Vec3d::Vec3d(double xr=0, double zr=0) - { - x=(double)sin(90-xr); - y=(double)sin(xr); - z=(double)(y*tan(zr)); - } - - Vec3d::Vec3d(double X, double Y, double Z) - { - x = X; - y = Y; - z = Z; - } - - double Vec3d::lengthsquared()const - { - return (x*x+y*y+z*z); - } - - double Vec3d::length() const - { - return (double)sqrt(lengthsquared()); - } - - void Vec3d::normalize() - { - x/=length(); - y/=length(); - z/=length(); - } - - void Vec3d::operator=(const Vec3d& v) - { - x = v.x; - y = v.y; - z = v.z; - } - - Vec3d Vec3d::cross(const Vec3d& v) const - { - return Vec3d(y*v.z-z*v.y, z*v.x-x*v.z, x*v.y-y*v.x); - } - - Vec3d Vec3d::operator*(const Vec3d& v) const - { - return Vec3d(y*v.z-z*v.y, z*v.x-x*v.z, x*v.y-y*v.x); - } - - Vec3d Vec3d::operator+(const Vec3d& v)const - { - return Vec3d(x+v.x, y+v.y, z+v.z); - } - - Vec3d Vec3d::operator*(double f) const - { - return Vec3d(x*f, y*f, z*f); - } - - Vec3d Vec3d::operator-(const Vec3d& v)const - { - return Vec3d(x-v.x, y-v.y, z-v.z); - } - - Vec3d Vec3d::operator/(double k) const - { - return Vec3d(x/k, y/k, z/k); - } - - Vec3d Vec3d::normalized() const - { - return Vec3d(x/length(), y/length(), z/length()); - } - - - Vec2f::Vec2f() - { - x=0; - y=0; - } - - Vec2f::Vec2f(const Vec2f& rtOp) - { - x=rtOp.x; - y=rtOp.y; - } - - Vec2f Vec2f::cross(const Vec2f& rtOp) const - { - return Vec2f(y-rtOp.y, rtOp.x-x); - } - - double Vec2f::length()const - { - return sqrt(x*x+y*y); - } - - double Vec2f::lengthsquared()const - { - return (x*x+y*y); - } - - void Vec2f::normalize() - { - x/=(float)length(); - y/=(float)length(); - } - - Vec2f Vec2f::normalized() const - { - return Vec2f(x/length(), y/length()); - } - - Vec2f Vec2f::operator*(double rtOp) const - { - return Vec2f(x*rtOp, y*rtOp); - } - - Vec2f Vec2f::operator+(const Vec2f& rtOp) const - { - return Vec2f(x+rtOp.x, y+rtOp.y); - } - - Vec2f Vec2f::operator*(const Vec2f& rtOp) const - { - return Vec2f(x*rtOp.x, y*rtOp.y); - } - - Vec2f Vec2f::operator-(const Vec2f& rtOp) const - { - return Vec2f(x-rtOp.x, y-rtOp.y); - } - - Vec2f Vec2f::operator/(double rtOp) const - { - return Vec2f(x/rtOp, y/rtOp); - } - - Vec2f Vec2f::operator=(const Vec2f& rtOp) - { - x=rtOp.x; - y=rtOp.y; - return Vec2f(x,y); - } - - Vec2f::Vec2f(double X, double Y) - { - x=(float)X; - y=(float)Y; - } - //////////// - Vec2i::Vec2i() - { - x=0; - y=0; - } - - Vec2i::Vec2i(const Vec2i& rtOp) - { - x=rtOp.x; - y=rtOp.y; - } - - Vec2i Vec2i::cross(const Vec2i& rtOp) const - { - return Vec2i(y-rtOp.y, rtOp.x-x); - } - - int Vec2i::length()const - { - return (int)sqrt((float)(x*x+y*y)); - } - - int Vec2i::lengthsquared()const - { - return (x*x+y*y); - } - - void Vec2i::normalize() - { - x/=length(); - y/=length(); - } - - Vec2i Vec2i::normalized() const - { - return Vec2i(x/length(), y/length()); - } - - Vec2i Vec2i::operator*(int rtOp) const - { - return Vec2i(x*rtOp, y*rtOp); - } - - Vec2i Vec2i::operator+(const Vec2i& rtOp) const - { - return Vec2i(x+rtOp.x, y+rtOp.y); - } - - Vec2i Vec2i::operator*(const Vec2i& rtOp) const - { - return Vec2i(x*rtOp.x, y*rtOp.y); - } - - Vec2i Vec2i::operator-(const Vec2i& rtOp) const - { - return Vec2i(x-rtOp.x, y-rtOp.y); - } - - Vec2i Vec2i::operator/(int rtOp) const - { - return Vec2i(x/rtOp, y/rtOp); - } - - Vec2i Vec2i::operator=(const Vec2i& rtOp) - { - x=rtOp.x; - y=rtOp.y; - return Vec2i(x,y); - } - - Vec2i::Vec2i(int X, int Y) - { - x=X; - y=Y; - } - - bool Vec2i::operator==(const Vec2i& rtOp) const - { - return x == rtOp.x && y == rtOp.y; - } - - bool Vec2i::operator!=(const Vec2i& rtOp) const - { - return !(x == rtOp.x && y == rtOp.y); - } -}; diff --git a/src/vector.h b/src/vector.h deleted file mode 100644 index 27c3854..0000000 --- a/src/vector.h +++ /dev/null @@ -1,1060 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __vector_h__ -#define __vector_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include -namespace OpenArena{ - /*! - * \brief - * Write brief comment for Vec3d here. - * - * Write detailed description for Vec3d here. - * - * \remarks - * Write remarks for Vec3d here. - * - * \see - * Separate items with the '|' character. - */ - class Vec3d - { - public: - double x,y,z; - /*! - * \brief - * Write brief comment for Vec3d here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Vec3d here. - * - * \remarks - * Write remarks for Vec3d here. - * - * \see - * Separate items with the '|' character. - */ - Vec3d(); //Default Constructor - /*! - * \brief - * Write brief comment for Vec3d here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Vec3d here. - * - * \remarks - * Write remarks for Vec3d here. - * - * \see - * Separate items with the '|' character. - */ - Vec3d(const Vec3d&); //Copy Constructor - /*! - * \brief - * Write brief comment for Vec3d here. - * - * \param - * Description of parameter . - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Vec3d here. - * - * \remarks - * Write remarks for Vec3d here. - * - * \see - * Separate items with the '|' character. - */ - Vec3d(double, double); //From an angle - /*! - * \brief - * Write brief comment for Vec3d here. - * - * \param - * Description of parameter . - * - * \param - * Description of parameter . - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Vec3d here. - * - * \remarks - * Write remarks for Vec3d here. - * - * \see - * Separate items with the '|' character. - */ - Vec3d(double, double, double); //From values - /*! - * \brief - * Write brief comment for lengthsquared here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for lengthsquared here. - * - * \remarks - * Write remarks for lengthsquared here. - * - * \see - * Separate items with the '|' character. - */ - double lengthsquared() const; - /*! - * \brief - * Write brief comment for length here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for length here. - * - * \remarks - * Write remarks for length here. - * - * \see - * Separate items with the '|' character. - */ - double length() const; - /*! - * \brief - * Write brief comment for normalize here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for normalize here. - * - * \remarks - * Write remarks for normalize here. - * - * \see - * Separate items with the '|' character. - */ - void normalize(); - /*! - * \brief - * Write brief comment for normalized here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for normalized here. - * - * \remarks - * Write remarks for normalized here. - * - * \see - * Separate items with the '|' character. - */ - Vec3d normalized() const; - - /*! - * \brief - * Write brief comment for cross here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for cross here. - * - * \remarks - * Write remarks for cross here. - * - * \see - * Separate items with the '|' character. - */ - Vec3d cross(const Vec3d&) const; - /*! - * \brief - * Write brief comment for operator = here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator = here. - * - * \remarks - * Write remarks for operator = here. - * - * \see - * Separate items with the '|' character. - */ - void operator=(const Vec3d&); - /*! - * \brief - * Write brief comment for operator * here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator * here. - * - * \remarks - * Write remarks for operator * here. - * - * \see - * Separate items with the '|' character. - */ - Vec3d operator*(const Vec3d&) const; - /*! - * \brief - * Write brief comment for operator + here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator + here. - * - * \remarks - * Write remarks for operator + here. - * - * \see - * Separate items with the '|' character. - */ - Vec3d operator+(const Vec3d&) const; - /*! - * \brief - * Write brief comment for operator - here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator - here. - * - * \remarks - * Write remarks for operator - here. - * - * \see - * Separate items with the '|' character. - */ - Vec3d operator-(const Vec3d&) const; - /*! - * \brief - * Write brief comment for operator * here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator * here. - * - * \remarks - * Write remarks for operator * here. - * - * \see - * Separate items with the '|' character. - */ - Vec3d operator*(double) const; - /*! - * \brief - * Write brief comment for operator / here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator / here. - * - * \remarks - * Write remarks for operator / here. - * - * \see - * Separate items with the '|' character. - */ - Vec3d operator/(double) const; - - }; - - /*! - * \brief - * Write brief comment for Vector here. - * - * \param - * Description of parameter . - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Vector here. - * - * \remarks - * Write remarks for Vector here. - * - * \see - * Separate items with the '|' character. - */ - Vec3d Vector(double, double); - //Vec3d Angle2Vec3f() - /*! - * \brief - * Write brief comment for Vec2f here. - * - * Write detailed description for Vec2f here. - * - * \remarks - * Write remarks for Vec2f here. - * - * \see - * Separate items with the '|' character. - */ - class Vec2f - { - public: - float x,y; - /*! - * \brief - * Write brief comment for Vec2f here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Vec2f here. - * - * \remarks - * Write remarks for Vec2f here. - * - * \see - * Separate items with the '|' character. - */ - Vec2f(); //Default Constructor - /*! - * \brief - * Write brief comment for Vec2f here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Vec2f here. - * - * \remarks - * Write remarks for Vec2f here. - * - * \see - * Separate items with the '|' character. - */ - Vec2f(const Vec2f&); //Copy Constructor - /*! - * \brief - * Write brief comment for Vec2f here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Vec2f here. - * - * \remarks - * Write remarks for Vec2f here. - * - * \see - * Separate items with the '|' character. - */ - Vec2f(double); // from an angle - /*! - * \brief - * Write brief comment for Vec2f here. - * - * \param - * Description of parameter . - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Vec2f here. - * - * \remarks - * Write remarks for Vec2f here. - * - * \see - * Separate items with the '|' character. - */ - Vec2f(double, double); //from values - - /*! - * \brief - * Write brief comment for lengthsquared here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for lengthsquared here. - * - * \remarks - * Write remarks for lengthsquared here. - * - * \see - * Separate items with the '|' character. - */ - double lengthsquared() const; - /*! - * \brief - * Write brief comment for length here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for length here. - * - * \remarks - * Write remarks for length here. - * - * \see - * Separate items with the '|' character. - */ - double length() const; - void normalize(); - /*! - * \brief - * Write brief comment for normalized here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for normalized here. - * - * \remarks - * Write remarks for normalized here. - * - * \see - * Separate items with the '|' character. - */ - Vec2f normalized() const; - - /*! - * \brief - * Write brief comment for cross here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for cross here. - * - * \remarks - * Write remarks for cross here. - * - * \see - * Separate items with the '|' character. - */ - Vec2f cross(const Vec2f&) const; - /*! - * \brief - * Write brief comment for operator = here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator = here. - * - * \remarks - * Write remarks for operator = here. - * - * \see - * Separate items with the '|' character. - */ - Vec2f operator=(const Vec2f&); - /*! - * \brief - * Write brief comment for operator * here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator * here. - * - * \remarks - * Write remarks for operator * here. - * - * \see - * Separate items with the '|' character. - */ - Vec2f operator*(const Vec2f&) const; - /*! - * \brief - * Write brief comment for operator + here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator + here. - * - * \remarks - * Write remarks for operator + here. - * - * \see - * Separate items with the '|' character. - */ - Vec2f operator+(const Vec2f&) const; - /*! - * \brief - * Write brief comment for operator - here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator - here. - * - * \remarks - * Write remarks for operator - here. - * - * \see - * Separate items with the '|' character. - */ - Vec2f operator-(const Vec2f&) const; - //Vec2f operator/(const Vec2f&) const; //Is this right? - /*! - * \brief - * Write brief comment for operator * here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator * here. - * - * \remarks - * Write remarks for operator * here. - * - * \see - * Separate items with the '|' character. - */ - Vec2f operator*(double) const; - /*! - * \brief - * Write brief comment for operator / here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator / here. - * - * \remarks - * Write remarks for operator / here. - * - * \see - * Separate items with the '|' character. - */ - Vec2f operator/(double) const; - }; - - typedef Vec3d Vec3f; - - /*! - * \brief - * Write brief comment for Vec2i here. - * - * Write detailed description for Vec2i here. - * - * \remarks - * Write remarks for Vec2i here. - * - * \see - * Separate items with the '|' character. - */ - class Vec2i - { - public: - int x,y; - /*! - * \brief - * Write brief comment for Vec2i here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Vec2i here. - * - * \remarks - * Write remarks for Vec2i here. - * - * \see - * Separate items with the '|' character. - */ - Vec2i(); //Default Constructor - /*! - * \brief - * Write brief comment for Vec2i here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Vec2i here. - * - * \remarks - * Write remarks for Vec2i here. - * - * \see - * Separate items with the '|' character. - */ - /*! - * \brief - * Write brief comment for Vec2i here. - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Vec2i here. - * - * \remarks - * Write remarks for Vec2i here. - * - * \see - * Separate items with the '|' character. - */ - Vec2i(const Vec2i&); //Copy Constructor - Vec2i(int); // from an angle - /*! - * \brief - * Write brief comment for Vec2i here. - * - * \param - * Description of parameter . - * - * \param - * Description of parameter . - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for Vec2i here. - * - * \remarks - * Write remarks for Vec2i here. - * - * \see - * Separate items with the '|' character. - */ - Vec2i(int,int); //from values - - /*! - * \brief - * Write brief comment for lengthsquared here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for lengthsquared here. - * - * \remarks - * Write remarks for lengthsquared here. - * - * \see - * Separate items with the '|' character. - */ - int lengthsquared() const; - /*! - * \brief - * Write brief comment for length here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for length here. - * - * \remarks - * Write remarks for length here. - * - * \see - * Separate items with the '|' character. - */ - int length() const; - /*! - * \brief - * Write brief comment for normalize here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for normalize here. - * - * \remarks - * Write remarks for normalize here. - * - * \see - * Separate items with the '|' character. - */ - void normalize(); - /*! - * \brief - * Write brief comment for normalized here. - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for normalized here. - * - * \remarks - * Write remarks for normalized here. - * - * \see - * Separate items with the '|' character. - */ - Vec2i normalized() const; - - /*! - * \brief - * Write brief comment for cross here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for cross here. - * - * \remarks - * Write remarks for cross here. - * - * \see - * Separate items with the '|' character. - */ - Vec2i cross(const Vec2i&) const; - /*! - * \brief - * Write brief comment for operator = here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator = here. - * - * \remarks - * Write remarks for operator = here. - * - * \see - * Separate items with the '|' character. - */ - Vec2i operator=(const Vec2i&); - /*! - * \brief - * Write brief comment for operator * here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator * here. - * - * \remarks - * Write remarks for operator * here. - * - * \see - * Separate items with the '|' character. - */ - Vec2i operator*(const Vec2i&) const; - /*! - * \brief - * Write brief comment for operator + here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator + here. - * - * \remarks - * Write remarks for operator + here. - * - * \see - * Separate items with the '|' character. - */ - Vec2i operator+(const Vec2i&) const; - /*! - * \brief - * Write brief comment for operator - here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator - here. - * - * \remarks - * Write remarks for operator - here. - * - * \see - * Separate items with the '|' character. - */ - Vec2i operator-(const Vec2i&) const; - //Vec2i operator/(const Vec2i&) const; //Is this right? - /*! - * \brief - * Write brief comment for operator * here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator * here. - * - * \remarks - * Write remarks for operator * here. - * - * \see - * Separate items with the '|' character. - */ - Vec2i operator*(int) const; - /*! - * \brief - * Write brief comment for operator / here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator / here. - * - * \remarks - * Write remarks for operator / here. - * - * \see - * Separate items with the '|' character. - */ - Vec2i operator/(int) const; - /*! - * \brief - * Write brief comment for operator == here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator == here. - * - * \remarks - * Write remarks for operator == here. - * - * \see - * Separate items with the '|' character. - */ - bool operator==(const Vec2i&) const; - /*! - * \brief - * Write brief comment for operator != here. - * - * \param - * Description of parameter . - * - * \returns - * Write description of return value here. - * - * \throws - * Description of criteria for throwing this exception. - * - * Write detailed description for operator != here. - * - * \remarks - * Write remarks for operator != here. - * - * \see - * Separate items with the '|' character. - */ - bool operator!=(const Vec2i&) const; - }; -}; -#endif diff --git a/src/version.h b/src/version.h deleted file mode 100644 index 95957a9..0000000 --- a/src/version.h +++ /dev/null @@ -1,21 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -//#define OPENARENA_VERSION "OpenArena: v0.1.2" -#define OPENARENA_VERSION "OpenArena: CVS" diff --git a/src/window.cpp b/src/window.cpp deleted file mode 100644 index 9d2c4cb..0000000 --- a/src/window.cpp +++ /dev/null @@ -1,515 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#include "window.h" - -void OpenArena::Window::SwapBuffers() -{ - #if defined USE_GLX - if(doubleBuffered) - { - glXSwapBuffers(display, window); - } - #elif defined USE_AGL - aglSwapBuffers(_aglContext); - #elif defined USE_CGL - CGLFlushDrawable(cglContext); - #elif defined USE_WGL - ::SwapBuffers(deviceContext); - #endif -} - -bool OpenArena::Window::Open() -{ - #if defined USE_GLX - XVisualInfo* vi; - Colormap cmap; - int bestMode = 0; - int vidModeMajorVersion; - int vidModeMinorVersion; - int glxMajorVersion; - int glxMinorVersion; - int modeNum; - #if defined HAVE_XF86VIDMODE - XF86VidModeModeInfo** modes; - #endif - Atom wmDelete; - ::Window winDummy; - unsigned int borderDummy; - - display = XOpenDisplay(0); - screen = DefaultScreen(display); - - #if defined HAVE_XF86VIDMODE - XF86VidModeQueryVersion(display, &vidModeMajorVersion, &vidModeMinorVersion); - printf("XF86VidModeExtension-Version %d.%d\n", vidModeMajorVersion, vidModeMinorVersion); - - XF86VidModeGetAllModeLines(display, screen, &modeNum, &modes); - vidMode = *modes[0]; - - int i; - for(i=0; ihdisplay == _width) && (modes[i]->vdisplay == _height)) - { - bestMode = i; - } - } - #endif - - vi = glXChooseVisual(display, screen, attrListDbl); - if(vi == NULL){ - vi = glXChooseVisual(display, screen, attrListSgl); - doubleBuffered = false; - printf("Only Singlebuffered Visual!\n"); - } - else - { - doubleBuffered = true; - printf("Got Doublebuffered Visual!\n"); - } - - glXQueryVersion(display, &glxMajorVersion, & glxMinorVersion); - printf("glX-Version %d.%d\n", glxMajorVersion, glxMinorVersion); - - hRC = glXCreateContext(display, vi, 0, GL_TRUE); - cmap = XCreateColormap(display, RootWindow(display, vi->screen), vi->visual, AllocNone); - attributes.colormap = cmap; - attributes.border_pixel = 0; - - attributes.event_mask = ExposureMask | - KeyPressMask | KeyReleaseMask | - ButtonPressMask | ButtonReleaseMask | -// PointerMotionMask | ButtonMotionMask | - StructureNotifyMask; - - if(_fullscreen) - { - #if defined HAVE_XF86VIDMODE - XF86VidModeSwitchToMode(display, screen, modes[bestMode]); - XF86VidModeSetViewPort(display, screen, 0, 0); - XFree(modes); - #endif - - attributes.override_redirect = true; - window = XCreateWindow(display, RootWindow(display, vi->screen), 0, 0, _width, _height, 0, vi->depth, InputOutput, vi->visual, CWBorderPixel | CWColormap | CWEventMask | CWOverrideRedirect, &attributes); - XWarpPointer(display, None, window, 0, 0, 0, 0, 0, 0); - XMapRaised(display, window); - XGrabKeyboard(display, window, true, GrabModeAsync, GrabModeAsync, CurrentTime); - XGrabPointer(display, window, true, ButtonPressMask, GrabModeAsync, GrabModeAsync, window, None, CurrentTime); - XDefineCursor(display, window, CreateFullscreenCursor()); - } - else - { - window = XCreateWindow(display, RootWindow(display, vi->screen), 0, 0, _width, _height, 0, vi->depth, InputOutput, vi->visual, CWBorderPixel | CWColormap | CWEventMask, &attributes); - wmDelete = XInternAtom(display, "WM_DELETE_WINDOW", true); - XSetWMProtocols(display, window, &wmDelete, 1); - XSetStandardProperties(display, window, GetName(), GetName(), None, NULL, 0, NULL); - XMapRaised(display, window); - XDefineCursor(display, window, CreateWindowedCursor()); - } - - glXMakeCurrent(display, window, hRC); - unsigned int twidth, theight, depth; - XGetGeometry(display, window, &winDummy, &x, &y, &twidth, &theight, &borderDummy, &depth); - _colorDepth = (char)depth; - _height = (short)twidth; - _width = (short)theight; - printf("Resolution %dx%d\n", twidth, theight); - printf("Depth %d\n", depth); - if(glXIsDirect(display, hRC)) - { - printf("Congrats, you have Direct Rendering!\n"); - } - else - { - printf("Sorry, no Direct Rendering possible!\n"); - } - _initializer->Initialize(); - return true; - #elif defined USE_AGL - OSStatus err = noErr; - SetRect(&_bounds, 0, 0, 640, 480); - err = CreateNewWindow(kDocumentWindowClass, kWindowStandardHandlerAttribute | kWindowCloseBoxAttribute | kWindowFullZoomAttribute | kWindowCollapseBoxAttribute, &_bounds, &_window); - if(err != noErr) - { - return false; - } - - RepositionWindow(_window, NULL, kWindowCascadeOnMainScreen); - - AGLDevice* devices = NULL; - GLint deviceCount = 0; - GLint attributes[] = {AGL_ACCELERATED, AGL_NO_RECOVERY, AGL_RGBA, AGL_DOUBLEBUFFER, AGL_NONE}; - AGLPixelFormat pixelFormat; - - pixelFormat = aglChoosePixelFormat(devices,deviceCount,attributes); - _aglContext = aglCreateContext(pixelFormat, NULL); - if(!_aglContext) - { - exit (5); - } - - aglDestroyPixelFormat(pixelFormat); - - if(!aglSetCurrentContext(_aglContext)) - { - exit(6); - } - - if(!aglSetDrawable(_aglContext, GetWindowPort(_window))) - { - exit(7); - } - - glClearColor(0.0f,0.0f,0.0f,0.0f); - glClear(GL_COLOR_BUFFER_BIT); - aglSwapBuffers(_aglContext); - ShowWindow(_window); - #elif defined USE_CGL - #error undefined method - #elif defined USE_WGL - unsigned int PixelFormat; - WNDCLASS wc; - DWORD dwExStyle; - DWORD dwStyle; - RECT WindowRect; - WindowRect.left=(long)0; - WindowRect.right=(long)_width; - WindowRect.top=(long)0; - WindowRect.bottom=(long)_height; - - instance = GetModuleHandle(NULL); - wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; - wc.lpfnWndProc = (WNDPROC)WndProc; - wc.cbClsExtra = 0; - wc.cbWndExtra = 0; - wc.hInstance = instance; - wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); - wc.hCursor = LoadCursor(NULL, IDC_ARROW); - wc.hbrBackground = NULL; - wc.lpszMenuName = NULL; - wc.lpszClassName = "OpenArena v0.1.0"; - - if (!RegisterClass(&wc)) - { - MessageBox(NULL,"Failed To Register The Window Class.","ERROR",MB_OK|MB_ICONEXCLAMATION); - return false; - } - - if (_fullscreen) - { - DEVMODE dmScreenSettings; - memset(&dmScreenSettings, 0, sizeof(dmScreenSettings)); - dmScreenSettings.dmSize = sizeof(dmScreenSettings); - dmScreenSettings.dmPelsWidth = _width; - dmScreenSettings.dmPelsHeight = _height; - dmScreenSettings.dmBitsPerPel = _colorDepth; - dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; - - - if (ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL) - { - if (MessageBox(NULL,"The Requested Fullscreen Mode Is Not Supported By\nYour Video Card. Use Windowed Mode Instead?","OpenArena",MB_YESNO|MB_ICONEXCLAMATION)==IDYES) - _fullscreen = false; - else - { - - MessageBox(NULL,"Program Will Now Close.","ERROR",MB_OK|MB_ICONSTOP); - return false; - } - } - } - - if (_fullscreen) - { - dwExStyle = WS_EX_APPWINDOW; - dwStyle = WS_POPUP; - ShowCursor(/*true*/false); - } - else - { - ShowCursor(false); - dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; - dwStyle = WS_OVERLAPPEDWINDOW; - } - - AdjustWindowRectEx(&WindowRect, dwStyle, false, dwExStyle); - - if (!(window = CreateWindowEx(dwExStyle, "OpenArena v0.1.0", GetName(), WS_CLIPSIBLINGS | WS_CLIPCHILDREN | dwStyle, 0, 0, WindowRect.right-WindowRect.left, WindowRect.bottom-WindowRect.top, NULL, NULL, instance, NULL))) - { - Close(); - MessageBox(NULL,"Window Creation Error.","ERROR",MB_OK|MB_ICONEXCLAMATION); - return false; - } - - static PIXELFORMATDESCRIPTOR pfd={sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, _colorDepth, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, PFD_MAIN_PLANE, 0, 0, 0, 0 }; - - if (!(deviceContext=GetDC(window))) - { - Close(); - MessageBox(NULL,"Can't Create A GL Device Context.","ERROR",MB_OK|MB_ICONEXCLAMATION); - return false; - } - - if (!(PixelFormat=ChoosePixelFormat(deviceContext,&pfd))) - { - Close(); - MessageBox(NULL,"Can't Find A Suitable PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION); - return false; - } - - if(!SetPixelFormat(deviceContext,PixelFormat,&pfd)) - { - Close(); - MessageBox(NULL,"Can't Set The PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION); - return false; - } - - if (!(glContext=wglCreateContext(deviceContext))) - { - Close(); - MessageBox(NULL,"Can't Create A GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION); - return false; - } - - if(!wglMakeCurrent(deviceContext,glContext)) - { - Close(); - MessageBox(NULL,"Can't Activate The GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION); - return false; - } - - ShowWindow(window,SW_SHOW); - SetForegroundWindow(window); - SetFocus(window); - _resizer->Resize(_width, _height); - - if (!_initializer->Initialize()) - { - Close(); - MessageBox(NULL,"Initialization Failed.","ERROR",MB_OK|MB_ICONEXCLAMATION); - return false; - } - - return true; - #endif -} - -void OpenArena::Window::Close() -{ - #if defined USE_GLX - if(_fullscreen) - { - #if defined HAVE_XF86VIDMODE - XF86VidModeSwitchToMode(display, screen, &vidMode); - XF86VidModeSetViewPort(display, screen, 0, 0); - #endif - } - - if(hRC) - { - if(!glXMakeCurrent(display, None, NULL)) - { - printf("Could not release drawing context.\n"); - } - glXDestroyContext(display, hRC); - hRC = NULL; - } - - XCloseDisplay(display); - #elif defined USE_AGL - if(!_fullscreen) - { - aglSetCurrentContext(NULL); - aglDestroyContext(_aglContext); - _aglContext = NULL; - } - #elif defined USE_CGL - #error unimplemented method - #elif defined USE_WGL - if(_fullscreen) - { - ChangeDisplaySettings(NULL, 0); - ShowCursor(true); - } - - if(glContext) - { - if(!wglMakeCurrent(NULL, NULL)) - MessageBox(NULL,"Release Of DC And RC Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION); - - if (!wglDeleteContext(glContext)) - MessageBox(NULL,"Release Rendering Context Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION); - - glContext=NULL; - } - - if (deviceContext && !ReleaseDC(window, deviceContext)) - { - MessageBox(NULL,"Release Device Context Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION); - deviceContext=NULL; - } - - if (window && !DestroyWindow(window)) - { - MessageBox(NULL,"Could Not Release hWnd.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION); - window=NULL; - } - - if (!UnregisterClass("OpenArena v0.1.0", instance)) - { - MessageBox(NULL,"Could Not Unregister Class.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION); - instance=NULL; - } - #endif -} - -bool OpenArena::Window::Open(string title, int width, int height, int bits, bool fullscreenflag) -{ - _fullscreen = fullscreenflag; - _width = width; - _height = height; - _colorDepth = bits; - _name = title; - - return Open(); -} - -OpenArena::Window::Window() -{ - _initializer = new Initializer(); - _resizer = new Resizer(); -} - -OpenArena::Window::~Window() -{ -} - -void OpenArena::Window::SetInitializer(OpenArena::Window::Initializer* initializer) -{ - _initializer = initializer; -} - -void OpenArena::Window::SetResizer(OpenArena::Window::Resizer* resizer) -{ - _resizer = resizer; -} - -void OpenArena::Window::Resizer::Resize(GLsizei width, GLsizei height) -{ - if (height==0) - height=1; - - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - gluPerspective(45.0f, (GLfloat)width/(GLfloat)height, 0.1f, 100.0f); - - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - -} - -int OpenArena::Window::Initializer::Initialize() -{ - glEnable(GL_TEXTURE_2D); - glShadeModel(GL_SMOOTH); - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - glClearDepth(1.0f); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LEQUAL); - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - - return true; -} - -void OpenArena::Window::Resize(GLsizei width, GLsizei height) -{ - _resizer->Resize(width, height); -} - -OpenArena::Vec2i OpenArena::Window::GetMousePosition() -{ - #ifdef USE_GLX - ::Window rootWindow; - ::Window childWindow; - int rootX; - int rootY; - int mouseX; - int mouseY; - unsigned int mask; - if(!XQueryPointer(display, window, &rootWindow, &childWindow, &rootX, &rootY, &mouseX, &mouseY, &mask)) - { - return Vec2i(-1,-1); - } - else - { - return Vec2i(mouseX, mouseY); - } - #elif defined USE_AGL - #warning unimplemented method - #elif defined USE_CGL - #error unimplemented method - #elif defined USE_WGL - POINT pos; - GetCursorPos(&pos); - return Vec2i(pos.x, pos.y); - #endif -} - -void OpenArena::Window::SetMousePosition(Vec2i pos) -{ - #if defined USE_GLX - XWarpPointer(display, None, window, 0, 0, 0, 0, pos.x, pos.y); - #elif defined USE_AGL - #warning unimplemented method - #elif defined USE_CGL - #error unimplemented method - #elif defined USE_WGL - SetCursorPos(pos.x, pos.y); - #endif -} - -#ifdef USE_GLX -Display* OpenArena::Window::GetDisplay() -{ - return display; -} - -Cursor OpenArena::Window::CreateWindowedCursor() -{ - return CreateFullscreenCursor(); -} - -Cursor OpenArena::Window::CreateFullscreenCursor() -{ - Pixmap pixmap = XCreatePixmap(display, window, 1, 1, 1); - XColor color; - color.pixel = 0; - color.red = 0; - color.flags = DoRed; - Cursor cur = XCreatePixmapCursor(display, pixmap, pixmap, &color, &color, 0, 0); - XFreePixmap(display, pixmap); - return cur; -} -#endif diff --git a/src/window.h b/src/window.h deleted file mode 100644 index 5ba83be..0000000 --- a/src/window.h +++ /dev/null @@ -1,125 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __window_h__ -#define __window_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include "screen.h" - -#if defined USE_GLX - #include - #include //maybe not necessary - #include - #include - #include - #include - #if defined HAVE_XF86VIDMODE - #include - #endif -#elif defined USE_AGL - #include - #include - #include -#elif defined USE_CGL - #include - #include -#elif defined USE_WGL - #include - #include - #include -#endif - -#ifdef WIN32 -#endif -#include "vector.h" - -namespace OpenArena -{ - class Window: public Screen - { - public: - class Resizer - { - public: - void Resize(GLsizei width, GLsizei height); - }; - - class Initializer - { - public: - int Initialize(); - }; - - public: - Window(); - ~Window(); - void Close(); - bool Open(); - bool Open(string title, int width, int height, int bits, bool fullscreenflag); //make that string a const char* after this works - void SetInitializer(Initializer* initializer); - void SetResizer(Resizer* resizer); - void SwapBuffers(); - void Resize(GLsizei width, GLsizei height); - Vec2i GetMousePosition(); - void SetMousePosition(Vec2i pos); - - #ifdef USE_GLX - Display* GetDisplay(); - #endif - private: - #ifdef USE_GLX - Cursor CreateWindowedCursor(); - Cursor CreateFullscreenCursor(); - int screen; - ::Window window; - GLXContext hRC; - XSetWindowAttributes attributes; - bool doubleBuffered; - #if defined HAVE_XF86VIDMODE - XF86VidModeModeInfo vidMode; - #endif - int x, y; - Display* display; - #elif defined USE_AGL - AGLContext _aglContext; - WindowRef _window; - Rect _bounds; - #elif defined USE_WGL - HGLRC glContext; - HWND window; - HDC deviceContext; - HINSTANCE instance; - #endif - Resizer* _resizer; - Initializer* _initializer; - }; -}; - -#if defined USE_GLX -static int attrListSgl[] = {GLX_RGBA, GLX_RED_SIZE, 4, GLX_GREEN_SIZE, 4, GLX_BLUE_SIZE, 4, GLX_DEPTH_SIZE, 16, None}; -static int attrListDbl[] = {GLX_RGBA, GLX_DOUBLEBUFFER, GLX_RED_SIZE, 4, GLX_GREEN_SIZE, 4, GLX_BLUE_SIZE, 4, GLX_DEPTH_SIZE, 16, None}; -#elif defined USE_WGL -LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); -#endif - -#endif diff --git a/src/windows.cpp b/src/windows.cpp deleted file mode 100644 index b9e68e8..0000000 --- a/src/windows.cpp +++ /dev/null @@ -1,891 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -//////////////////////////////////////////////////////////////////////////////// -// -// Module: windows.cpp -// Author: Tom Hicks -// Creation: 09-01-2003 -// LastEdit: 06-19-2005 -// Editors: Tom Hicks -// -// Purpose: -// To implement the OpenArena SDK. -// -// Summary of Methods: -// Global -// -InitControls() -// Loads the defaultPlayer's configuration. -// -InitGL() -// Initializes OpenGL and is responsible for loading textures. -// -ResizeGLScene(GLsizei width, GLsizei height) -// Resizes the viewport to the current size of the visible area of the window specified by width and height. -// -KillGLWindow() -// Closes the window. -// -CreateGLWindow(string title, int width, int height, int bits, bool fullscreenflag) -// Creates the window with the specified parameters. -// -WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) -// Main procedure. -// -WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -// Window Procedure for the OpenGL window. -// -//////////////////////////////////////////////////////////////////////////////// -#ifdef WIN32 -//include necessary header files -#include "main.h" -#include -#include "version.h" -#include "vector.h" -using OpenArena::Vec2i; - -//link necessary libraries -#pragma comment(lib, "opengl32.lib") -#pragma comment(lib, "glu32.lib") -#pragma comment(lib, "glaux.lib") -#pragma comment(lib, "winmm.lib") - -//Ensure CDS_FULLSCREEN is defined -#ifndef CDS_FULLSCREEN -#define CDS_FULLSCREEN 4 -#endif - -using namespace std; - -void InitControls(); -int InitGL(GLvoid); -void ReSizeGLScene(GLsizei width, GLsizei height); -int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow); -LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); -OpenArena::Keys TranslateKey(int keyCode); -void HandleConsoleKeyPress(OpenArena::Keys key); - -////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Function Definitions - -// -//void InitControls() -// Purpose: -// Initializes controls by loading the default control config file "my.cfg". - -void InitControls() -{ - if (!level.LoadConfig("my.cfg")) - level.LoadConfig(); -} - -// -// int InitGL(GLvoid) -// Purpose: -// To do all required setup before creating an OpenGL window -// Pre: -// -// Post: -// - -int InitGL(GLvoid) -{ - level.LoadGLTextures(); - - glEnable(GL_TEXTURE_2D); - glShadeModel(GL_SMOOTH); - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - glClearDepth(1.0f); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LEQUAL); - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - - /*lighting disabled temporarily - glLightfv(GL_LIGHT1, GL_AMBIENT, level.LightAmbient); - for(index=0; indexcontrols.backward.IsEmpty()) - { - level.defaultPlayer->controls.backward.FirstPosition(); - if(keys[level.defaultPlayer->controls.backward.Retrieve()]) - { - level.defaultPlayer->camera.MoveCamera(-level.moveSpeed); - } - else - { - while(level.defaultPlayer->controls.backward.NextPosition() && (keys[level.defaultPlayer->controls.backward.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.backward.Retrieve()]) - { - level.defaultPlayer->camera.MoveCamera(-level.moveSpeed); - } - } - } - } - - ////////// - //Move forward - if(!level.defaultPlayer->controls.forward.IsEmpty()) - { - level.defaultPlayer->controls.forward.FirstPosition(); - if(keys[level.defaultPlayer->controls.forward.Retrieve()]) - { - level.defaultPlayer->camera.MoveCamera(level.moveSpeed); - } - else - { - while(level.defaultPlayer->controls.forward.NextPosition() && (keys[level.defaultPlayer->controls.forward.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.forward.Retrieve()]) - { - level.defaultPlayer->camera.MoveCamera(level.moveSpeed); - } - } - } - } - - ////////// - //Strafe Left - if(!level.defaultPlayer->controls.moveLeft.IsEmpty()) - { - level.defaultPlayer->controls.moveLeft.FirstPosition(); - if(keys[level.defaultPlayer->controls.moveLeft.Retrieve()]) - { - level.defaultPlayer->camera.StrafeCamera(-level.moveSpeed); - } - else - { - while(level.defaultPlayer->controls.moveLeft.NextPosition() && (keys[level.defaultPlayer->controls.moveLeft.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.moveLeft.Retrieve()]) - { - level.defaultPlayer->camera.StrafeCamera(-level.moveSpeed); - } - } - } - } - - ////////// - //Strafe Right - if(!level.defaultPlayer->controls.moveRight.IsEmpty()) - { - level.defaultPlayer->controls.moveRight.FirstPosition(); - if(keys[level.defaultPlayer->controls.moveRight.Retrieve()]) - { - level.defaultPlayer[0].camera.StrafeCamera(level.moveSpeed); - } - else - { - while(level.defaultPlayer->controls.moveRight.NextPosition() && (keys[level.defaultPlayer->controls.moveRight.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.moveRight.Retrieve()]) - { - level.defaultPlayer->camera.StrafeCamera(level.moveSpeed); - } - } - } - } - - ////////// - //Keyboard Look Left - if(!level.defaultPlayer->controls.lookLeft.IsEmpty()) - { - level.defaultPlayer->controls.lookLeft.FirstPosition(); - if(keys[level.defaultPlayer->controls.lookLeft.Retrieve()]) - { - level.defaultPlayer[0].camera.RotateView(level.turnSpeed, 0, 1, 0); - } - else - { - while(level.defaultPlayer->controls.lookLeft.NextPosition() && (keys[level.defaultPlayer->controls.lookLeft.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.lookLeft.Retrieve()]) - { - level.defaultPlayer[0].camera.RotateView(level.turnSpeed, 0, 1, 0); - } - } - } - } - - ////////// - //Keyboard Look Right - if(!level.defaultPlayer->controls.lookRight.IsEmpty()) - { - level.defaultPlayer->controls.lookRight.FirstPosition(); - if(keys[level.defaultPlayer->controls.lookRight.Retrieve()]) - { - level.defaultPlayer->camera.RotateView(-level.turnSpeed, 0, 1, 0); - } - else - { - while(level.defaultPlayer->controls.lookRight.NextPosition() && (keys[level.defaultPlayer->controls.lookRight.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.lookRight.Retrieve()]) - { - level.defaultPlayer->camera.RotateView(-level.turnSpeed, 0, 1, 0); - } - } - } - } - - ////////// - //Keyboard Look Up - if(!level.defaultPlayer->controls.lookUp.IsEmpty()) - { - level.defaultPlayer->controls.lookUp.FirstPosition(); - if(keys[level.defaultPlayer->controls.lookUp.Retrieve()]) - { - level.defaultPlayer->camera.RotateView(level.turnSpeed, 1, 0, 0); - } - else - { - while(level.defaultPlayer->controls.lookUp.NextPosition() && (keys[level.defaultPlayer->controls.lookUp.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.lookUp.Retrieve()]) - { - level.defaultPlayer->camera.RotateView(level.turnSpeed, 1, 0, 0); - } - } - } - } - - ////////// - //Keyboard Look Down - if(!level.defaultPlayer->controls.lookDown.IsEmpty()) - { - level.defaultPlayer->controls.lookDown.FirstPosition(); - if(keys[level.defaultPlayer->controls.lookDown.Retrieve()]) - { - level.defaultPlayer->camera.RotateView(-level.turnSpeed, 1, 0, 0); - } - else - { - while(level.defaultPlayer->controls.lookDown.NextPosition() && (keys[level.defaultPlayer->controls.lookDown.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.lookDown.Retrieve()]) - { - level.defaultPlayer->camera.RotateView(-level.turnSpeed, 1, 0, 0); - } - } - } - } - - ////////// - //Toggle Show FPS - if(!level.defaultPlayer->controls.toggleFPS.IsEmpty()) - { - level.defaultPlayer->controls.toggleFPS.FirstPosition(); - if(keys[level.defaultPlayer->controls.toggleFPS.Retrieve()]) - { - if(!keys2[level.defaultPlayer->controls.toggleFPS.Retrieve()]) - { - level.showFPS = !level.showFPS; - } - } - else - { - while(level.defaultPlayer->controls.toggleFPS.NextPosition() && (keys[level.defaultPlayer->controls.toggleFPS.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.toggleFPS.Retrieve()]) - { - if(!keys2[level.defaultPlayer->controls.toggleFPS.Retrieve()]) - { - level.showFPS = !level.showFPS; - } - } - } - } - } - - ////////// - //Toggle MouseLook - if(!level.defaultPlayer->controls.toggleMouseLook.IsEmpty()) - { - level.defaultPlayer->controls.toggleMouseLook.FirstPosition(); - if(keys[level.defaultPlayer->controls.toggleMouseLook.Retrieve()]) - { - if(keys2[level.defaultPlayer->controls.toggleMouseLook.Retrieve()]) - { - level.mlook = ! level.mlook; - } - } - else - { - while(level.defaultPlayer->controls.toggleMouseLook.NextPosition() && (keys[level.defaultPlayer->controls.toggleMouseLook.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.toggleMouseLook.Retrieve()]) - { - if(keys2[level.defaultPlayer->controls.toggleMouseLook.Retrieve()]) - { - level.mlook = ! level.mlook; - } - } - } - } - } - - ////////// - //Toggle Console - if(!level.defaultPlayer[0].controls.toggleConsole.IsEmpty()) - { - level.defaultPlayer[0].controls.toggleConsole.FirstPosition(); - if(keys[level.defaultPlayer[0].controls.toggleConsole.Retrieve()]) - { - if(!keys2[level.defaultPlayer[0].controls.toggleConsole.Retrieve()]) - { - level.showConsole = !level.showConsole; - keys2[level.defaultPlayer[0].controls.toggleConsole.Retrieve()] = true; - } - } - else - { - while(level.defaultPlayer[0].controls.toggleConsole.NextPosition() && (keys[level.defaultPlayer[0].controls.toggleConsole.Retrieve()] != true)); - { - if(keys[level.defaultPlayer[0].controls.toggleConsole.Retrieve()]) - { - if(!keys2[level.defaultPlayer[0].controls.toggleConsole.Retrieve()]) - { - level.showConsole = !level.showConsole; - keys2[level.defaultPlayer[0].controls.toggleConsole.Retrieve()] = true; - } - } - } - } - } - - ////////// - //Quick MouseLook - if(!level.defaultPlayer->controls.quickMouseLook.IsEmpty()) - { - level.defaultPlayer->controls.quickMouseLook.FirstPosition(); - if(keys[level.defaultPlayer->controls.quickMouseLook.Retrieve()]) - { - if(keys2[level.defaultPlayer->controls.quickMouseLook.Retrieve()]) - { - level.mlook = ! level.mlook; - } - } - else - { - while(level.defaultPlayer->controls.quickMouseLook.NextPosition() && (keys[level.defaultPlayer->controls.quickMouseLook.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.quickMouseLook.Retrieve()]) - { - if(keys2[level.defaultPlayer->controls.quickMouseLook.Retrieve()]) - { - level.mlook = ! level.mlook; - } - } - } - } - } - //level.Render(); - } - level.Render(); - // - } - } - - g_Screen.SwapBuffers(); - - if (keys[OpenArena::KEY_F1]) - { - keys[OpenArena::KEY_F1]=false; - g_Screen.Close(); - g_Screen.ToggleFullscreen(); - if (!g_Screen.Open("OpenArena",g_Screen.GetWidth(),g_Screen.GetHeight(),g_Screen.GetColorDepth(),g_Screen.GetFullscreen())) - { - return 0; - } - } - } - - level.UnloadMap(); - g_Screen.Close(); - return (msg.wParam); -} - -OpenArena::Keys TranslateKey(int keyCode) -{ - switch (keyCode) - { - case VK_LEFT: - return OpenArena::KEY_LEFT; - case VK_RIGHT: - return OpenArena::KEY_RIGHT; - case VK_UP: - return OpenArena::KEY_UP; - case VK_DOWN: - return OpenArena::KEY_DOWN; - case VK_SPACE: - return OpenArena::KEY_SPACE; - case VK_RETURN: - return OpenArena::KEY_RETURN; - case VK_SHIFT: - return OpenArena::KEY_SHIFT; - case VK_PAUSE: - return OpenArena::KEY_PAUSE; - case VK_CONTROL: - return OpenArena::KEY_CONTROL; - case VK_CAPITAL: - return OpenArena::KEY_CAPITAL; - case VK_ESCAPE: - return OpenArena::KEY_ESCAPE; - case VK_PRIOR: - return OpenArena::KEY_PRIOR; - case VK_NEXT: - return OpenArena::KEY_NEXT; - case VK_END: - return OpenArena::KEY_END; - case VK_HOME: - return OpenArena::KEY_HOME; - case VK_INSERT: - return OpenArena::KEY_INSERT; - case VK_DELETE: - return OpenArena::KEY_DELETE; - case VK_LWIN: - return OpenArena::KEY_LWIN; - case VK_RWIN: - return OpenArena::KEY_RWIN; - case VK_APPS: - return OpenArena::KEY_APPS; - case VK_NUMPAD0: - return OpenArena::KEY_NUMPAD0; - case VK_NUMPAD1: - return OpenArena::KEY_NUMPAD1; - case VK_NUMPAD2: - return OpenArena::KEY_NUMPAD2; - case VK_NUMPAD3: - return OpenArena::KEY_NUMPAD3; - case VK_NUMPAD4: - return OpenArena::KEY_NUMPAD4; - case VK_NUMPAD5: - return OpenArena::KEY_NUMPAD5; - case VK_NUMPAD6: - return OpenArena::KEY_NUMPAD6; - case VK_NUMPAD7: - return OpenArena::KEY_NUMPAD7; - case VK_NUMPAD8: - return OpenArena::KEY_NUMPAD8; - case VK_NUMPAD9: - return OpenArena::KEY_NUMPAD9; - case VK_MULTIPLY: - return OpenArena::KEY_MULTIPLY; - case VK_ADD: - return OpenArena::KEY_ADD; - case VK_SUBTRACT: - return OpenArena::KEY_SUBTRACT; - case VK_DIVIDE: - return OpenArena::KEY_DIVIDE; - case VK_F1: - return OpenArena::KEY_F1; - case VK_F2: - return OpenArena::KEY_F2; - case VK_F3: - return OpenArena::KEY_F3; - case VK_F4: - return OpenArena::KEY_F4; - case VK_F5: - return OpenArena::KEY_F5; - case VK_F6: - return OpenArena::KEY_F6; - case VK_F7: - return OpenArena::KEY_F7; - case VK_F8: - return OpenArena::KEY_F8; - case VK_F9: - return OpenArena::KEY_F9; - case VK_F10: - return OpenArena::KEY_F10; - case VK_F11: - return OpenArena::KEY_F11; - case VK_F12: - return OpenArena::KEY_F12; - case VK_NUMLOCK: - return OpenArena::KEY_NUMLOCK; - case VK_SCROLL: - return OpenArena::KEY_SCROLL; - case VK_SEPARATOR: - return OpenArena::KEY_SEPARATOR; - case VK_OEM_1: - return OpenArena::KEY_OEM_1; - case VK_OEM_2: - return OpenArena::KEY_OEM_2; - case VK_OEM_3: - return OpenArena::KEY_OEM_3; - case VK_OEM_4: - return OpenArena::KEY_OEM_4; - case VK_OEM_5: - return OpenArena::KEY_OEM_5; - case VK_OEM_6: - return OpenArena::KEY_OEM_6; - case VK_OEM_7: - return OpenArena::KEY_OEM_7; - case VK_OEM_PERIOD: - return OpenArena::KEY_OEM_PERIOD; - case VK_OEM_PLUS: - return OpenArena::KEY_OEM_PLUS; - case VK_OEM_MINUS: - return OpenArena::KEY_OEM_MINUS; - case VK_OEM_COMMA: - return OpenArena::KEY_OEM_COMMA; - case VK_BACK: - return OpenArena::KEY_BACK; - case VK_TAB: - return OpenArena::KEY_TAB; - case '0': - return OpenArena::KEY_0; - case '1': - return OpenArena::KEY_1; - case '2': - return OpenArena::KEY_2; - case '3': - return OpenArena::KEY_3; - case '4': - return OpenArena::KEY_4; - case '5': - return OpenArena::KEY_5; - case '6': - return OpenArena::KEY_6; - case '7': - return OpenArena::KEY_7; - case '8': - return OpenArena::KEY_8; - case '9': - return OpenArena::KEY_9; - case 'A': - return OpenArena::KEY_A; - case 'B': - return OpenArena::KEY_B; - case 'C': - return OpenArena::KEY_C; - case 'D': - return OpenArena::KEY_D; - case 'E': - return OpenArena::KEY_E; - case 'F': - return OpenArena::KEY_F; - case 'G': - return OpenArena::KEY_G; - case 'H': - return OpenArena::KEY_H; - case 'I': - return OpenArena::KEY_I; - case 'J': - return OpenArena::KEY_J; - case 'K': - return OpenArena::KEY_K; - case 'L': - return OpenArena::KEY_L; - case 'M': - return OpenArena::KEY_M; - case 'N': - return OpenArena::KEY_N; - case 'O': - return OpenArena::KEY_O; - case 'P': - return OpenArena::KEY_P; - case 'Q': - return OpenArena::KEY_Q; - case 'R': - return OpenArena::KEY_R; - case 'S': - return OpenArena::KEY_S; - case 'T': - return OpenArena::KEY_T; - case 'U': - return OpenArena::KEY_U; - case 'V': - return OpenArena::KEY_V; - case 'W': - return OpenArena::KEY_W; - case 'X': - return OpenArena::KEY_X; - case 'Y': - return OpenArena::KEY_Y; - case 'Z': - return OpenArena::KEY_Z; - case VK_LBUTTON: - return OpenArena::KEY_LBUTTON; - case VK_RBUTTON: - return OpenArena::KEY_RBUTTON; - case VK_MBUTTON: - return OpenArena::KEY_MBUTTON; - default: - return OpenArena::KEY_UNKNOWN; - } -} - -void HandleConsoleKeyPress(OpenArena::Keys key) -{ - //See if we need to hide the console - level.defaultPlayer[0].controls.toggleConsole.FirstPosition(); - if(key == level.defaultPlayer[0].controls.toggleConsole.Retrieve()) - { - level.showConsole = false; - } - else - { - while(level.defaultPlayer[0].controls.toggleConsole.NextPosition() && level.showConsole) - { - if(level.defaultPlayer[0].controls.toggleConsole.Retrieve() == key) - { - level.showConsole = false; - } - } - } - switch (key) - { - case OpenArena::KEY_SHIFT: - keys[OpenArena::KEY_SHIFT] = true; - break; - case OpenArena::KEY_RETURN: - level.UpdateConsole('\n'); - break; - case OpenArena::KEY_SPACE: - printf("hello"); - level.UpdateConsole(' '); - break; - case OpenArena::KEY_BACK: - level.UpdateConsole(OpenArena::KEY_BACK); - break; - default: - char ascii = OpenArena::KeyToASCII(key, keys[OpenArena::KEY_SHIFT]); - if(ascii != '\0') - { - level.UpdateConsole(ascii); - } - } -} - - -#endif diff --git a/src/worlddefs.h b/src/worlddefs.h deleted file mode 100644 index 2e95ed1..0000000 --- a/src/worlddefs.h +++ /dev/null @@ -1,31 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __WorldDefs_h__ -#define __WorldDefs_h__ - -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#include "level.h" - -//static OpenArena::Level level; - -#endif diff --git a/src/x11.cpp b/src/x11.cpp deleted file mode 100644 index ab6ca60..0000000 --- a/src/x11.cpp +++ /dev/null @@ -1,408 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -//////////////////////////////////////////////////////////////////////////////// -// -// Module: x11.cpp -// Author: Tom Hicks -// Creation: 10-08-2006 -// LastEdit: 10-08-2006 -// Editors: Tom Hicks -// -// Purpose: -// To implement the OpenArena SDK. -// -// Summary of Methods: -// Global -// -InitControls() -// Loads the defaultPlayer's configuration. -// -InitGL() -// Initializes OpenGL and is responsible for loading textures. -// -ResizeGLScene(GLsizei width, GLsizei height) -// Resizes the viewport to the current size of the visible area of the window specified by width and height. -// -KillGLWindow() -// Closes the window. -// -CreateGLWindow(string title, int width, int height, int bits, bool fullscreenflag) -// Creates the window with the specified parameters. -// -WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) -// Main procedure. -// -WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -// Window Procedure for the OpenGL window. -// -//////////////////////////////////////////////////////////////////////////////// -#include "x11.h" -#if defined USE_GLX -#include "main.h" -#include "version.h" - -int InitGL(OpenArena::Level* level) -{ - level->LoadGLTextures(); - - glEnable(GL_TEXTURE_2D); - glShadeModel(GL_SMOOTH); - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - glClearDepth(1.0f); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LEQUAL); - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - - /*lighting disabled temporarily - glLightfv(GL_LIGHT1, GL_AMBIENT, level->LightAmbient); - for(index=0; indexnumLights; index++) - { - glLightfv(GL_LIGHT1, GL_DIFFUSE, level->light[index].color); - glLightfv(GL_LIGHT1, GL_POSITION, level->light[index].coords); - } - - glEnable(GL_LIGHT1); - glEnable(GL_LIGHTING); - */ - //BuildFont(); - return true; -} - -//This should probably be moved into oa_input -OpenArena::Keys TranslateKey(int keyCode) -{ - switch (keyCode) - { - case XK_BackSpace: - return OpenArena::KEY_BACK; - case XK_Tab: - return OpenArena::KEY_TAB; - case XK_Return: - return OpenArena::KEY_RETURN; - case XK_Escape: - return OpenArena::KEY_ESCAPE; - case XK_Left: - return OpenArena::KEY_LEFT; - case XK_Right: - return OpenArena::KEY_RIGHT; - case XK_Up: - return OpenArena::KEY_UP; - case XK_Down: - return OpenArena::KEY_DOWN; - case XK_Home: - return OpenArena::KEY_HOME; - case XK_End: - return OpenArena::KEY_END; - case XK_Prior: - return OpenArena::KEY_PRIOR; - case XK_Next: - return OpenArena::KEY_NEXT; - case XK_Num_Lock: - return OpenArena::KEY_NUMLOCK; - case XK_KP_Enter: - return OpenArena::KEY_RETURN; - case XK_KP_Home: - return OpenArena::KEY_HOME; - case XK_KP_End: - return OpenArena::KEY_END; - case XK_KP_Prior: - return OpenArena::KEY_PRIOR; - case XK_KP_Next: - return OpenArena::KEY_NEXT; - case XK_KP_0: - return OpenArena::KEY_NUMPAD0; - case XK_KP_1: - return OpenArena::KEY_NUMPAD1; - case XK_KP_2: - return OpenArena::KEY_NUMPAD2; - case XK_KP_3: - return OpenArena::KEY_NUMPAD3; - case XK_KP_4: - return OpenArena::KEY_NUMPAD4; - case XK_KP_5: - return OpenArena::KEY_NUMPAD5; - case XK_KP_6: - return OpenArena::KEY_NUMPAD6; - case XK_KP_7: - return OpenArena::KEY_NUMPAD7; - case XK_KP_8: - return OpenArena::KEY_NUMPAD8; - case XK_KP_9: - return OpenArena::KEY_NUMPAD9; - case XK_KP_Multiply: - return OpenArena::KEY_MULTIPLY; - case XK_KP_Add: - return OpenArena::KEY_ADD; - case XK_KP_Subtract: - return OpenArena::KEY_SUBTRACT; - case XK_KP_Divide: - return OpenArena::KEY_DIVIDE; - case XK_F1: - return OpenArena::KEY_F1; - case XK_F2: - return OpenArena::KEY_F2; - case XK_F3: - return OpenArena::KEY_F3; - case XK_F4: - return OpenArena::KEY_F4; - case XK_F5: - return OpenArena::KEY_F5; - case XK_F6: - return OpenArena::KEY_F6; - case XK_F7: - return OpenArena::KEY_F7; - case XK_F8: - return OpenArena::KEY_F8; - case XK_F9: - return OpenArena::KEY_F9; - case XK_F10: - return OpenArena::KEY_F10; - case XK_F11: - return OpenArena::KEY_F11; - case XK_F12: - return OpenArena::KEY_F12; - case XK_Shift_L: - return OpenArena::KEY_SHIFT; - case XK_Shift_R: - return OpenArena::KEY_SHIFT; - case XK_Control_L: - return OpenArena::KEY_CONTROL; - case XK_Control_R: - return OpenArena::KEY_CONTROL; - case XK_Caps_Lock: - return OpenArena::KEY_CAPITAL; - case XK_Pause: - return OpenArena::KEY_PAUSE; - case XK_KP_Space: - case XK_space: - return OpenArena::KEY_SPACE; - case XK_Insert: - return OpenArena::KEY_INSERT; - case XK_Delete: - return OpenArena::KEY_DELETE; - case XK_KP_Separator: - return OpenArena::KEY_SEPARATOR; - case XK_Scroll_Lock: - return OpenArena::KEY_SCROLL; - case XK_period: - return OpenArena::KEY_OEM_PERIOD; - case XK_plus: - return OpenArena::KEY_OEM_PLUS; - case XK_minus: - return OpenArena::KEY_OEM_MINUS; - case XK_comma: - return OpenArena::KEY_OEM_COMMA; - case XK_0: - return OpenArena::KEY_0; - case XK_1: - return OpenArena::KEY_1; - case XK_2: - return OpenArena::KEY_2; - case XK_3: - return OpenArena::KEY_3; - case XK_4: - return OpenArena::KEY_4; - case XK_5: - return OpenArena::KEY_5; - case XK_6: - return OpenArena::KEY_6; - case XK_7: - return OpenArena::KEY_7; - case XK_8: - return OpenArena::KEY_8; - case XK_9: - return OpenArena::KEY_9; - case XK_a: - case XK_A: - return OpenArena::KEY_A; - case XK_b: - case XK_B: - return OpenArena::KEY_B; - case XK_c: - case XK_C: - return OpenArena::KEY_C; - case XK_d: - case XK_D: - return OpenArena::KEY_D; - case XK_e: - case XK_E: - return OpenArena::KEY_E; - case XK_f: - case XK_F: - return OpenArena::KEY_F; - case XK_g: - case XK_G: - return OpenArena::KEY_G; - case XK_h: - case XK_H: - return OpenArena::KEY_H; - case XK_i: - case XK_I: - return OpenArena::KEY_I; - case XK_j: - case XK_J: - return OpenArena::KEY_J; - case XK_k: - case XK_K: - return OpenArena::KEY_K; - case XK_l: - case XK_L: - return OpenArena::KEY_L; - case XK_m: - case XK_M: - return OpenArena::KEY_M; - case XK_n: - case XK_N: - return OpenArena::KEY_N; - case XK_o: - case XK_O: - return OpenArena::KEY_O; - case XK_p: - case XK_P: - return OpenArena::KEY_P; - case XK_q: - case XK_Q: - return OpenArena::KEY_Q; - case XK_r: - case XK_R: - return OpenArena::KEY_R; - case XK_s: - case XK_S: - return OpenArena::KEY_S; - case XK_t: - case XK_T: - return OpenArena::KEY_T; - case XK_u: - case XK_U: - return OpenArena::KEY_U; - case XK_v: - case XK_V: - return OpenArena::KEY_V; - case XK_w: - case XK_W: - return OpenArena::KEY_W; - case XK_x: - case XK_X: - return OpenArena::KEY_X; - case XK_y: - case XK_Y: - return OpenArena::KEY_Y; - case XK_z: - case XK_Z: - return OpenArena::KEY_Z; - case XK_grave: - return OpenArena::KEY_OEM_3; - case XK_Super_L: - return OpenArena::KEY_LWIN; - case XK_Super_R: - return OpenArena::KEY_RWIN; - case XK_Menu: - return OpenArena::KEY_APPS; - case XK_bracketleft: - return OpenArena::KEY_OEM_4; - case XK_bracketright: - return OpenArena::KEY_OEM_6; - case XK_backslash: - return OpenArena::KEY_OEM_5; - case XK_semicolon: - return OpenArena::KEY_OEM_1; - case XK_apostrophe: - return OpenArena::KEY_OEM_7; - case XK_slash: - return OpenArena::KEY_OEM_2; - case XK_Alt_L: - return OpenArena::KEY_ALT_L; - case XK_Alt_R: - return OpenArena::KEY_ALT_L; - case XK_equal: - return OpenArena::KEY_OEM_PLUS; - case XK_Mode_switch: - return OpenArena::KEY_OPTION; - case XK_Meta_L: - return OpenArena::KEY_COMMAND; - case 16777219: - return OpenArena::KEY_ENTER; - default: - return OpenArena::KEY_UNKNOWN; - } -} - -OpenArena::Keys TranslateButton(int keyCode) -{ - switch(keyCode) - { - case Button1: - return OpenArena::KEY_BUTTON0; - case Button2: - return OpenArena::KEY_BUTTON2; - case Button3: - return OpenArena::KEY_BUTTON1; - case Button4: - return OpenArena::KEY_BUTTON3; - case Button5: - return OpenArena::KEY_BUTTON4; - } -} - -void HandleConsoleKeyPress(OpenArena::Keys key, OpenArena::Level* level) -{ - if(level->defaultPlayer[0].controls.IsBound(key, OpenArena::ControlScheme::ACTION_TOGGLE_CONSOLE)) - { - level->showConsole = false; - } - - switch (key) - { - case OpenArena::KEY_SHIFT: - keys[OpenArena::KEY_SHIFT] = true; - break; - case OpenArena::KEY_RETURN: - level->UpdateConsole('\n'); - break; - case OpenArena::KEY_SPACE: - printf("hello"); - level->UpdateConsole(' '); - break; - case OpenArena::KEY_BACK: - level->UpdateConsole(OpenArena::KEY_BACK); - break; - case OpenArena::KEY_ESCAPE: - level->showConsole = false; - break; - default: - char ascii = OpenArena::KeyToASCII(key, keys[OpenArena::KEY_SHIFT]); - if(ascii != '\0') - { - level->UpdateConsole(ascii); - } - } -} - -void ResizeGLScene(GLsizei width, GLsizei height) -{ - if(height == 0) - height = 1; - - glViewport(0,0,width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(45.0f, (GLfloat)width/height, 0.1f, 100.0f); - glMatrixMode(GL_MODELVIEW); -} - -void RT() -{ -} - -#endif /* USE_GLX */ diff --git a/src/x11.h b/src/x11.h deleted file mode 100644 index 3f3324d..0000000 --- a/src/x11.h +++ /dev/null @@ -1,40 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006 by Tom Hicks * - * tomhicks@cse.buffalo.edu * - * * - * 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. * - ***************************************************************************/ -#ifndef __x11_h__ -#define __x11_h__ -#if defined HAVE_CONFIG_H -#include "config.h" -#endif - -#if defined USE_GLX -#include "mygl.h" -#include "EventManager.h" -#include "level.h" - -int DrawGLScene(); -OpenArena::Keys TranslateButton(int keyCode); -OpenArena::Keys TranslateKey(int keyCode); -void ResizeGLScene(GLsizei width, GLsizei height); -void HandleConsoleKeyPress(OpenArena::Keys key); -int DrawGLScene(OpenArena::Level* level); -int InitGL(OpenArena::Level* level); -void HandleConsoleKeyPress(OpenArena::Keys key, OpenArena::Level* level); -#endif /* USE_GLX */ -#endif /* __x11_h__ */