wolf3d-ios/wolf3d/newCode/iphone/iphone_wolf.h

152 lines
4.0 KiB
C

/*
Copyright (C) 2009 Id Software, Inc.
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 this to get only the first episode on selections, and the
// automatic sell screen at the end of episode 1
//#define EPISODE_ONE_ONLY
extern viddef_t viddef;
typedef enum menuState {
IPM_GAME,
IPM_MAIN,
IPM_SKILL,
IPM_EPISODE,
IPM_MAPS,
IPM_CONTROLS,
IPM_INTERMISSION,
IPM_VICTORY,
IPM_AUTOMAP
} menuState_t;
extern menuState_t menuState;
void iphoneDrawMenus();
#define SAVEGAME_VERSION 106
#define MAX_SKILLS 4
#define MAX_MAPS 60
#define MF_TRIED 1
#define MF_COMPLETED 2
#define MF_KILLS 4
#define MF_SECRETS 8
#define MF_TREASURE 16
#define MF_TIME 32
typedef struct {
int episode;
int map;
int skill;
int levelCompleted; // already at intermission when saved
int version;
int mapFlags[MAX_SKILLS][MAX_MAPS];
} currentMap_t;
extern currentMap_t currentMap;
void iphoneStartMap( int episodeNum, int mapNum, int skillLevel );
extern char iphoneDocDirectory[1024];
extern char iphoneAppDirectory[1024];
extern texture_t *numberPics[10];
extern vec3_t vnull;
void Client_PrepRefresh( const char *r_mapname );
extern int iphoneFrameNum;
extern int intermissionTriggerFrame;
extern int consoleActive;
extern cvar_t *controlScheme;
extern cvar_t *sensitivity;
extern cvar_t *stickSize;
extern cvar_t *stickTurnBase;
extern cvar_t *stickTurnScale;
extern cvar_t *stickMoveBase;
extern cvar_t *stickMoveScale;
extern cvar_t *stickDeadBand;
extern cvar_t *tiltTurn;
extern cvar_t *tiltMove;
extern cvar_t *tiltDeadBand;
extern cvar_t *tiltAverages;
extern cvar_t *tiltFire;
extern cvar_t *music;
extern cvar_t *showTilt;
extern cvar_t *cropSprites;
extern cvar_t *blends;
extern cvar_t *gunFrame;
extern cvar_t *slowAI;
// the native iPhone code should set the following each frame:
extern int numTouches;
extern int touches[5][2]; // [0] = x, [1] = y in landscape mode, raster order with y = 0 at top
extern float tilt; // -1.0 to 1.0
extern float tiltPitch;
// so we can detect button releases
extern int numPrevTouches;
extern int prevTouches[5][2];
// the layout drawing code sets these, which are then used
// by the touch processing
extern int menuButtonX, menuButtonY, menuButtonSize;
extern int fireButtonX, fireButtonY, fireButtonSize;
extern int moveAxisX, moveAxisY, moveAxisSize;
extern int turnAxisX, turnAxisY, turnAxisSize;
// incremented once each frame, regardless of framerate
extern int frameNum;
int TouchDown( int x, int y, int w, int h );
int TouchReleased( int x, int y, int w, int h );
int iphoneCenterText( int x, int y, const char *str );
void iphoneDrawNumber( int x, int y, int number, int charWidth, int charHeight );
void iphoneDrawPic( int x, int y, int w, int h, const char *pic );
void R_Draw_Blend( int x, int y, int w, int h, colour4_t c );
void SaveTheGame();
int LoadTheGame();
void StartGame( void );
void iphoneShutdown();
void iphoneOpenAutomap();
void InitImmediateModeGL();
extern colour4_t colorPressed;
extern int damageflash;
extern int bonusFrameNum;
extern int attackDirTime[2];
// interfaces from the game code
void iphoneStartBonusFlash();
void iphoneStartDamageFlash( int points );
void iphoneSetAttackDirection( int dir );
void iphoneStartIntermission( int framesFromNow );
void iphoneSetNotifyText( const char *str, ... );
// interfaces to hadware / system
void OpenURL( const char *url );