~swag/armagetronad/0.2.9-sty+ct+ap-fork

« back to all changes in this revision

Viewing changes to src/render/rScreen.h

  • Committer: luke-jr
  • Date: 2006-05-29 01:55:42 UTC
  • Revision ID: svn-v3-list-QlpoOTFBWSZTWZvbKhsAAAdRgAAQABK6798QIABURMgAAaeoNT1TxT1DQbKaeobXKiyAmlWT7Y5MkdJOtXDtB7w7DOGFBHiOBxaUIu7HQyyQSvxdyRThQkJvbKhs:7d95bf1e-0414-0410-9756-b78462a59f44:armagetronad%2Fbranches%2F0.2.8%2Farmagetronad:4612
Unify tags/branches of modules released together

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 
 
3
*************************************************************************
 
4
 
 
5
ArmageTron -- Just another Tron Lightcycle Game in 3D.
 
6
Copyright (C) 2000  Manuel Moos (manuel@moosnet.de)
 
7
 
 
8
**************************************************************************
 
9
 
 
10
This program is free software; you can redistribute it and/or
 
11
modify it under the terms of the GNU General Public License
 
12
as published by the Free Software Foundation; either version 2
 
13
of the License, or (at your option) any later version.
 
14
 
 
15
This program is distributed in the hope that it will be useful,
 
16
but WITHOUT ANY WARRANTY; without even the implied warranty of
 
17
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
18
GNU General Public License for more details.
 
19
 
 
20
You should have received a copy of the GNU General Public License
 
21
along with this program; if not, write to the Free Software
 
22
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
23
  
 
24
***************************************************************************
 
25
 
 
26
*/
 
27
 
 
28
#ifndef ArmageTron_SCREEN_H
 
29
#define ArmageTron_SCREEN_H
 
30
 
 
31
#include "tString.h"
 
32
#include "tCallback.h"
 
33
#include "tCallbackString.h"
 
34
 
 
35
typedef enum {
 
36
    ArmageTron_320_200=0,ArmageTron_320_240,ArmageTron_400_300,
 
37
    ArmageTron_512_384,ArmageTron_640_480,ArmageTron_800_600,
 
38
    ArmageTron_1024_768,ArmageTron_1280_800,ArmageTron_1280_854,ArmageTron_1280_1024,
 
39
    ArmageTron_1600_1200,ArmageTron_1680_1050,ArmageTron_2048_1572,ArmageTron_Custom, ArmageTron_Invalid=-1
 
40
}
 
41
rResolution;
 
42
 
 
43
typedef enum {
 
44
    ArmageTron_ColorDepth_16, ArmageTron_ColorDepth_Desktop,
 
45
    ArmageTron_ColorDepth_32
 
46
}
 
47
rColorDepth;
 
48
 
 
49
struct rScreenSize
 
50
{
 
51
    rResolution         res;
 
52
    int                 width, height;
 
53
 
 
54
    rScreenSize( int width, int height ); //!< constructor
 
55
    explicit rScreenSize( rResolution r = ArmageTron_Invalid ); //!< constructor
 
56
    void UpdateSize();                                          //!< update size from res enum
 
57
 
 
58
    bool operator ==( rScreenSize const & other ) const; //!< comparison operator
 
59
    bool operator !=( rScreenSize const & other ) const; //!< comparison operator
 
60
 
 
61
    int Compare( rScreenSize const & other ) const; //!< comparison function
 
62
};
 
63
 
 
64
class rScreenSettings
 
65
{
 
66
public:
 
67
    rScreenSize                 res;
 
68
    rScreenSize                 windowSize;
 
69
    bool                                fullscreen;
 
70
    rColorDepth                 colorDepth;
 
71
    rColorDepth                 zDepth;
 
72
    bool                                useSDL;
 
73
    bool                                checkErrors;
 
74
    REAL                                aspect;                 // aspect ratio of pixels ( width/height )
 
75
 
 
76
    rScreenSettings(rResolution r,
 
77
                    bool fs=true,
 
78
                    rColorDepth cd=ArmageTron_ColorDepth_Desktop,
 
79
                    bool sdl=true,
 
80
                    bool ce =true);
 
81
};
 
82
 
 
83
extern rScreenSettings currentScreensetting;
 
84
extern rScreenSettings lastSuccess;
 
85
 
 
86
struct SDL_Surface;
 
87
extern SDL_Surface *sr_screen;
 
88
 
 
89
extern int sr_screenWidth,sr_screenHeight;
 
90
 
 
91
extern bool sr_alphaBlend;
 
92
extern bool sr_screenshotIsPlanned;
 
93
extern bool sr_smoothShading;
 
94
 
 
95
extern bool sr_glOut;           // do we have gl-output at all?
 
96
extern bool sr_textOut;          // display game text graphically?
 
97
extern bool sr_FPSOut;           // display frame counter?
 
98
extern bool sr_ZTrick;            // Quake-Style z-buffer trick: do
 
99
extern bool sr_useDisplayLists;   // use GL display lists
 
100
// not delete the screen, just pait the background with depth test
 
101
// disabled. Gives 20% speedup.
 
102
 
 
103
 
 
104
#define rMIRROR_OFF     0
 
105
#define rMIRROR_OBJECTS 1
 
106
#define rMIRROR_WALLS   2
 
107
#define rMIRROR_ALL     10
 
108
 
 
109
extern int sr_floorMirror;
 
110
 
 
111
#define rFLOOR_OFF        0
 
112
#define rFLOOR_GRID       1
 
113
#define rFLOOR_TEXTURE    2
 
114
#define rFLOOR_TWOTEXTURE 3
 
115
 
 
116
extern int sr_floorDetail;
 
117
 
 
118
#define rFEAT_OFF    -1
 
119
#define rFEAT_DEFAULT 0
 
120
#define rFEAT_ON      1
 
121
 
 
122
extern int     sr_lineAntialias;
 
123
extern int     sr_polygonAntialias;
 
124
extern int     sr_perspectiveCorrection;
 
125
 
 
126
extern bool sr_highRim;
 
127
extern bool sr_upperSky,sr_lowerSky;
 
128
extern bool sr_skyWobble;
 
129
extern bool sr_dither;
 
130
extern bool sr_infinityPlane;
 
131
extern bool sr_laggometer;
 
132
extern bool sr_predictObjects;
 
133
extern bool sr_texturesTruecolor;
 
134
extern bool sr_keepWindowActive;
 
135
 
 
136
extern tString renderer_identification;  // type of renderer used
 
137
 
 
138
extern tString gl_vendor;
 
139
extern tString gl_renderer;
 
140
extern tString gl_version;
 
141
extern tString gl_extensions;
 
142
 
 
143
class rPerFrameTask:public tCallback{
 
144
public:
 
145
    rPerFrameTask(VOIDFUNC *f);
 
146
    static void DoPerFrameTasks();
 
147
};
 
148
 
 
149
class rRenderIdCallback:public tCallbackString{
 
150
public:
 
151
    rRenderIdCallback(STRINGRETFUNC *f);
 
152
    static tString RenderId();
 
153
};
 
154
 
 
155
class rCallbackBeforeScreenModeChange:public tCallback{
 
156
public:
 
157
    rCallbackBeforeScreenModeChange(VOIDFUNC *f);
 
158
    static void Exec();
 
159
};
 
160
 
 
161
class rCallbackAfterScreenModeChange:public tCallback{
 
162
public:
 
163
    rCallbackAfterScreenModeChange(VOIDFUNC *f);
 
164
    static void Exec();
 
165
};
 
166
 
 
167
bool sr_InitDisplay();
 
168
void sr_ExitDisplay();
 
169
void sr_ReinitDisplay();
 
170
 
 
171
void sr_LoadDefaultConfig();
 
172
 
 
173
void sr_ResetRenderState(bool menu=0);
 
174
void sr_DepthOffset(bool offset);
 
175
void sr_Activate(bool active); // set activation staus
 
176
 
 
177
void sr_LockSDL();
 
178
void sr_UnlockSDL();
 
179
#endif