Source release of Wolfenstein 3D Classic Platinum for iOS, 2.1

This commit is contained in:
Travis Bradshaw
2012-01-31 17:08:50 -06:00
parent 16304944b4
commit d7fff51d7d
235 changed files with 64191 additions and 1418 deletions

345
wolf3d/COPYING.txt Normal file
View File

@@ -0,0 +1,345 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

22
wolf3d/README.txt Normal file
View File

@@ -0,0 +1,22 @@
WOLF3D iOS v2.1 GPL source release
===============================================
This file contains the following sections:
GENERAL NOTES
LICENSE
GENERAL NOTES
=============
WOLF3D iOS v2.1 is a free release, and can be downloaded from
http://idsoftware.com/idstuff/wolf3d/wolf3d_ios_v21_src.zip
This source release does not contain any game data, the game data remains subject to the original EULA and applicable law.
LICENSE
=======
See COPYING.txt for the GNU GENERAL PUBLIC LICENSE. If COPYING.txt does not accompany, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

View File

@@ -109,12 +109,17 @@ PUBLIC W32 FS_FileSeek( filehandle_t *fhandle, SW32 offset, W32 origin )
return 1;
}
/* Commenting this out to avoid a warning - note that this is probably not what was
intended!
// offset is negative
if( (fhandle->filesize + offset) < 0 )
{
return 1;
}
*/
// offset is negative
fhandle->ptrCurrent = fhandle->ptrEnd + offset;
break;
@@ -223,7 +228,6 @@ PUBLIC filehandle_t *FS_OpenFile( const char *filename, W32 FlagsAndAttributes )
// high performance file mapping path, avoiding stdio
fd = open( netpath, O_RDONLY );
if ( fd == -1 ) {
// return NULL;
//if it couldn't be found in that path then check again in the document directory
//gsh
//pathBase = FS_ForceGamedir();
@@ -231,7 +235,7 @@ PUBLIC filehandle_t *FS_OpenFile( const char *filename, W32 FlagsAndAttributes )
pathBase = iphoneDocDirectory;
my_snprintf( netpath, sizeof( netpath ), "%s/%s", pathBase, filename );
fd = open( netpath, O_RDONLY );
if ( fd == -1 ) { //okay, couldn't find it there either... return null
if ( fd == -1 ) {
return NULL;
}
}

View File

@@ -172,7 +172,16 @@ PRIVATE char **FS_ListFiles( char *findname, int *numfiles, unsigned musthave, u
*/
PUBLIC void FS_InitFilesystem( void )
{
char *p;
p = getenv("CWD");
sprintf( fs_gamedir, "%s/base", p );
#define BASE_DIRECTORY "/base"
int length = SysIPhoneGetPathToMainBundleLength();
// Make sure the path will fit.
int fullPathLength = length + strlen( BASE_DIRECTORY ) + 1;
assert( fullPathLength < MAX_OSPATH );
SysIPhoneGetPathToMainBundle( fs_gamedir, length + 1 );
strcpy( fs_gamedir + length, BASE_DIRECTORY );
}

View File

@@ -39,6 +39,8 @@
#ifndef __FILESYSTEM_H__
#define __FILESYSTEM_H__
#include "arch.h"
#define MAX_GAMEPATH 256 // max length of a game pathname
#define MAX_OSPATH 256 // max length of a filesystem pathname

View File

@@ -76,12 +76,16 @@ W16 numSoundDevices, numDefaultSoundDevice;
PRIVATE void Sound_Device_getDeviceList( void )
{
char deviceName[ 256 ];
ALboolean isExtensionPresent = AL_FALSE;
my_strlcpy( deviceName, s_device->string, sizeof( deviceName ) );
if( pfalcIsExtensionPresent( NULL, (ALubyte*)"ALC_ENUMERATION_EXT") == AL_TRUE )
isExtensionPresent = pfalcIsExtensionPresent( NULL, (ALubyte*)"ALC_ENUMERATION_EXT");
ALC_CheckErrors();
if( isExtensionPresent == AL_TRUE )
{
// try out enumeration extension
deviceList = (char *)pfalcGetString( NULL, ALC_DEVICE_SPECIFIER );
ALC_CheckErrors();
for( numSoundDevices = 0 ; numSoundDevices < 12 ; ++numSoundDevices )
{
sound_devices[ numSoundDevices ] = NULL;
@@ -200,12 +204,14 @@ failed:
if( Context )
{
pfalcDestroyContext( Context );
ALC_CheckErrors();
Context = NULL;
}
if( Device )
{
pfalcCloseDevice( Device );
ALC_CheckErrors();
Device = NULL;
}
@@ -230,7 +236,9 @@ PUBLIC void Sound_Device_Shutdown( void )
if( Context )
{
pfalcMakeContextCurrent( NULL );
ALC_CheckErrors();
pfalcDestroyContext( Context );
ALC_CheckErrors();
Context = NULL;
}
@@ -238,6 +246,7 @@ PUBLIC void Sound_Device_Shutdown( void )
if( Device )
{
pfalcCloseDevice( Device );
ALC_CheckErrors();
Device = NULL;
}

View File

@@ -93,20 +93,20 @@ PUBLIC void R_Draw_Character( int x, int y, int num, font_t *myfont )
R_Bind( myfont->texfont->texnum );
pfglBegin( GL_QUADS );
pfglBegin( GL_TRIANGLE_STRIP );
pfglTexCoord2f( fcol, frow );
pfglVertex2i( x, y );
pfglTexCoord2f( fcol, frow+myfont->hFrac );
pfglVertex2i( x, (y+sh*scale) );
pfglTexCoord2f( fcol+myfont->wFrac, frow );
pfglVertex2i( x+myfont->nMaxWidth*scale, y );
pfglTexCoord2f( fcol+myfont->wFrac, frow+myfont->hFrac );
pfglVertex2i( x+myfont->nMaxWidth*scale, (y+sh*scale) );
pfglTexCoord2f( fcol, frow+myfont->hFrac );
pfglVertex2i( x, (y+sh*scale) );
@@ -146,12 +146,12 @@ PUBLIC void R_Draw_StretchPic( int x, int y, int w, int h, const char *pic )
R_Bind( gl->texnum );
pfglBegin( GL_QUADS );
pfglBegin( GL_TRIANGLE_STRIP );
pfglTexCoord2f( 0.0f, 0.0f ); pfglVertex2i( x, y );
pfglTexCoord2f( 0.0f, 1.0f ); pfglVertex2i( x, y+h );
pfglTexCoord2f( 1.0f, 0.0f ); pfglVertex2i( x+w, y );
pfglTexCoord2f( 1.0f, 1.0f ); pfglVertex2i( x+w, y+h );
pfglTexCoord2f( 0.0f, 1.0f ); pfglVertex2i( x, y+h );
pfglEnd();
}
@@ -186,7 +186,7 @@ PUBLIC void R_Draw_Fill( int x, int y, int w, int h, colour3_t c )
c4[3] = 255;
R_Draw_Blend( x, y, w, h, c4 );
#else
if ( revLand->value ) {
if ( deviceOrientation == ORIENTATION_LANDSCAPE_RIGHT ) {
qglScissor( x, y, w, h );
} else {
qglScissor( x, 320-(y+h), w, h );
@@ -203,12 +203,12 @@ PUBLIC void R_Draw_Blend( int x, int y, int w, int h, colour4_t c )
pfglDisable( GL_TEXTURE_2D );
pfglColor4ubv( c );
pfglBegin( GL_QUADS );
pfglBegin( GL_TRIANGLE_STRIP );
pfglVertex2i( x, y );
pfglVertex2i( x, y+h );
pfglVertex2i( x+w, y );
pfglVertex2i( x+w, y+h );
pfglVertex2i( x, y+h );
pfglEnd();

View File

@@ -131,6 +131,7 @@ typedef struct
const char *version_string;
const char *extensions_string;
_boolean Version_1_2;
bool framebuffer_discard;
} glconfig_t;

View File

@@ -284,7 +284,6 @@ PUBLIC void R_Init()
int err;
int a, b;
Com_Printf( "\n------ Display Initialization ------\n" );
Com_Printf( "Initializing OpenGL Subsystem\n" );
@@ -294,9 +293,6 @@ PUBLIC void R_Init()
// set our "safe" modes
gl_state.prev_mode = 0;
viddef.width = 480;
viddef.height = 320;
// get various GL strings
gl_config.vendor_string = (char *)pfglGetString( GL_VENDOR );
Com_Printf( "GL_VENDOR: %s\n", gl_config.vendor_string );
@@ -316,7 +312,6 @@ PUBLIC void R_Init()
my_strlcpy( vendor_buffer, gl_config.vendor_string, sizeof( vendor_buffer ) );
(void)my_strlwr( vendor_buffer );
sscanf( gl_config.version_string, "%d.%d", &a, &b );
if( a >= 1 && b >= 2 )
{
@@ -326,6 +321,14 @@ PUBLIC void R_Init()
pfglGetIntegerv( GL_MAX_TEXTURE_SIZE, &glMaxTexSize );
Com_Printf( "GL_MAX_TEXTURE_SIZE: %d\n", glMaxTexSize);
if ( strstr( gl_config.extensions_string, "GL_EXT_discard_framebuffer" ) != 0 ) {
gl_config.framebuffer_discard = true;
} else {
gl_config.framebuffer_discard = false;
}
InitImmediateModeGL();
GL_SetDefaultState();
TM_Init();
@@ -359,7 +362,7 @@ PUBLIC void PrintGLError( W32 err, const char *from )
return;
}
if( from != "" )
if( strlen(from) != 0 )
{
Com_Printf( "\n\n\nGL Error: %s\n", from );
}

View File

@@ -95,6 +95,7 @@ PRIVATE void Sound_AllocChannels( void )
for( i = 0, ch = s_channels ; i < MAX_CHANNELS ; ++i, ++ch )
{
pfalGenSources( 1, &ch->sourceName );
AL_CheckErrors();
if( pfalGetError() != AL_NO_ERROR )
{
@@ -123,6 +124,7 @@ PRIVATE int Sound_ChannelState( channel_t *ch )
int state;
pfalGetSourcei( ch->sourceName, AL_SOURCE_STATE, &state );
AL_CheckErrors();
return state;
}
@@ -133,9 +135,16 @@ PRIVATE void Sound_PlayChannel( channel_t *ch, sfx_t *sfx )
ch->sfx = sfx;
pfalSourcei( ch->sourceName, AL_BUFFER, sfx->bufferNum );
AL_CheckErrors();
pfalSourcei( ch->sourceName, AL_LOOPING, ch->loopSound );
AL_CheckErrors();
pfalSourcei( ch->sourceName, AL_SOURCE_RELATIVE, AL_FALSE );
AL_CheckErrors();
pfalSourcePlay( ch->sourceName );
AL_CheckErrors();
}
@@ -147,12 +156,15 @@ PRIVATE void Sound_StopChannel( channel_t *ch )
// Only deleting the entire source seems to work.
pfalSourceStop( ch->sourceName );
AL_CheckErrors();
// pfalSourceStopv( 1, &ch->sourceName );
// pfalSourcei( ch->sourceName, AL_BUFFER, 0 );
// pfalSourceRewind( ch->sourceName );
#if 1
pfalDeleteSources( 1, &ch->sourceName );
AL_CheckErrors();
pfalGenSources( 1, &ch->sourceName );
AL_CheckErrors();
#endif
}
@@ -165,14 +177,18 @@ PRIVATE void Sound_SpatializeChannel( channel_t *ch )
if( ch->entNum == 0 || ! ch->distanceMult )
{
pfalSourcefv( ch->sourceName, AL_POSITION, s_listener.position );
AL_CheckErrors();
pfalSourcefv( ch->sourceName, AL_VELOCITY, s_listener.velocity );
AL_CheckErrors();
}
else
{
if( ch->fixedPosition )
{
pfalSource3f( ch->sourceName, AL_POSITION, ch->position[1], ch->position[2], -ch->position[0] );
AL_CheckErrors();
pfalSource3f( ch->sourceName, AL_VELOCITY, 0, 0, 0 );
AL_CheckErrors();
}
/* else
{
@@ -195,17 +211,23 @@ PRIVATE void Sound_SpatializeChannel( channel_t *ch )
if( ch->distanceMult )
{
pfalSourcef( ch->sourceName, AL_REFERENCE_DISTANCE, s_minDistance->value * ch->distanceMult );
AL_CheckErrors();
}
else
{
pfalSourcef( ch->sourceName, AL_REFERENCE_DISTANCE, s_maxDistance->value );
AL_CheckErrors();
}
pfalSourcef( ch->sourceName, AL_MAX_DISTANCE, s_maxDistance->value );
AL_CheckErrors();
// Update volume and rolloff factor
pfalSourcef( ch->sourceName, AL_GAIN, s_sfxVolume->value * ch->volume );
AL_CheckErrors();
pfalSourcef( ch->sourceName, AL_ROLLOFF_FACTOR, s_rolloffFactor->value );
AL_CheckErrors();
}
@@ -572,15 +594,26 @@ PUBLIC void Sound_Update( const vec3_t position, const vec3_t velocity, const ve
vectorSet( &s_listener.orientation[3], up[1], -up[2], -up[0] );
pfalListenerfv( AL_POSITION, s_listener.position );
AL_CheckErrors();
pfalListenerfv( AL_VELOCITY, s_listener.velocity );
AL_CheckErrors();
pfalListenerfv( AL_ORIENTATION, s_listener.orientation );
AL_CheckErrors();
pfalListenerf( AL_GAIN, (s_activeApp) ? s_masterVolume->value : 0.0);
AL_CheckErrors();
// Set state
pfalDistanceModel( AL_INVERSE_DISTANCE_CLAMPED );
AL_CheckErrors();
pfalDopplerFactor( s_dopplerFactor->value );
AL_CheckErrors();
pfalDopplerVelocity( s_dopplerVelocity->value );
AL_CheckErrors();
// Stream background track
Sound_StreamBGTrack();
@@ -639,9 +672,26 @@ PUBLIC void Sound_Activate( _boolean active )
}
pfalListenerf( AL_GAIN, ( active ) ? s_masterVolume->value : 0.0 );
AL_CheckErrors();
}
void AL_CheckErrors() {
#if 0
#ifdef DEBUG
ALenum error = alGetError();
if ( error != AL_NO_ERROR ) {
printf( "OpenAL error (al)! %d\n", error);
}
#endif
#endif
}
void ALC_CheckErrors() {
//ALenum error = alcGetError();
//if ( error != AL_NO_ERROR ) {
// printf( "OpenAL error (alc)! %d\n", error);
//}
}
/////////////////////////////////////////////////////////////////////
//
@@ -690,14 +740,14 @@ PRIVATE void Sound_Register( void )
{
s_initSound = Cvar_Get( "s_initSound", "1", CVAR_INIT );
s_masterVolume = Cvar_Get( "s_masterVolume", "0.3", CVAR_ARCHIVE ); //gsh changed this from "1.0" to "0.3" for the volume hack... otherwise it's too loud
s_masterVolume = Cvar_Get( "s_masterVolume", "0.6", CVAR_ARCHIVE ); //gsh changed this from "1.0" to "0.3" for the volume hack... otherwise it's too loud
s_sfxVolume = Cvar_Get( "s_sfxVolume", "1.0", CVAR_ARCHIVE );
s_musicVolume = Cvar_Get( "s_musicVolume", "1.0", CVAR_ARCHIVE );
s_minDistance = Cvar_Get( "s_minDistance", "0.0", CVAR_ARCHIVE );
s_maxDistance = Cvar_Get( "s_maxDistance", "1.0", CVAR_ARCHIVE );
s_rolloffFactor = Cvar_Get( "s_rolloffFactor", "1.0", CVAR_ARCHIVE );
s_dopplerFactor = Cvar_Get( "s_dopplerFactor", "1.0", CVAR_ARCHIVE );
s_dopplerVelocity = Cvar_Get( "s_dopplerVelocity", "0.0", CVAR_ARCHIVE );
s_dopplerVelocity = Cvar_Get( "s_dopplerVelocity", "1.0", CVAR_ARCHIVE );
Cmd_AddCommand( "play", Sound_Play_f );
Cmd_AddCommand( "stopsound", Sound_StopSound_f );

View File

@@ -106,6 +106,8 @@ extern sfx_t *Sound_FindSound( const char *name );
extern _boolean Sound_Device_Setup( void );
extern void Sound_Device_Shutdown( void );
void AL_CheckErrors();
void ALC_CheckErrors();
#endif /* __SOUND_LOCAL_H__ */

View File

@@ -96,7 +96,10 @@ PRIVATE void Sound_UploadSound( W8 *data, int sample_size, int channels, sfx_t *
// Upload the sound
pfalGenBuffers( 1, &sfx->bufferNum );
AL_CheckErrors();
pfalBufferData( sfx->bufferNum, sfx->format, data, size, sfx->rate );
AL_CheckErrors();
}
else
{
@@ -121,7 +124,10 @@ PRIVATE void Sound_UploadSound( W8 *data, int sample_size, int channels, sfx_t *
// Upload the sound
pfalGenBuffers( 1, &sfx->bufferNum );
AL_CheckErrors();
pfalBufferData( sfx->bufferNum, sfx->format, d, size * 2, sfx->rate );
AL_CheckErrors();
free( d );
}
}
@@ -163,7 +169,7 @@ PUBLIC _boolean Sound_LoadSound( sfx_t *sfx )
if ( ! LoadOggInfo( name, &data, &info ) ) {
sfx->defaulted = true;
Com_Printf( "Could not find sound (%s)\n", name );
//Com_Printf( "Could not find sound (%s)\n", name );
return false;
}

View File

@@ -284,17 +284,23 @@ PUBLIC void Sound_StreamBGTrack( void )
// Unqueue and delete any processed buffers
pfalGetSourcei( s_streamingChannel->sourceName, AL_BUFFERS_PROCESSED, &processed );
AL_CheckErrors();
if( processed > 0 )
{
while (processed--)
{
pfalSourceUnqueueBuffers( s_streamingChannel->sourceName, 1, &buffer );
AL_CheckErrors();
//printf( "OpenAL unqueued %d, about to delete it!\n", buffer);
pfalDeleteBuffers( 1, &buffer );
AL_CheckErrors();
}
}
// Make sure we always have at least 4 buffers in the queue
pfalGetSourcei( s_streamingChannel->sourceName, AL_BUFFERS_QUEUED, &queued );
AL_CheckErrors();
while( queued < 4 )
{
size = 0;
@@ -340,20 +346,29 @@ PUBLIC void Sound_StreamBGTrack( void )
// Upload and queue the new buffer
pfalGenBuffers( 1, &buffer );
AL_CheckErrors();
pfalBufferData( buffer, bgTrack.format, data, size, bgTrack.rate );
AL_CheckErrors();
pfalSourceQueueBuffers( s_streamingChannel->sourceName, 1, &buffer );
AL_CheckErrors();
queued++;
}
// Update volume
pfalSourcef( s_streamingChannel->sourceName, AL_GAIN, s_musicVolume->value );
AL_CheckErrors();
// If not playing, then do so
pfalGetSourcei( s_streamingChannel->sourceName, AL_SOURCE_STATE, &state );
AL_CheckErrors();
if( state != AL_PLAYING )
{
pfalSourcePlay(s_streamingChannel->sourceName);
AL_CheckErrors();
}
}
@@ -390,17 +405,28 @@ PUBLIC void Sound_StartStreaming( void )
// hmmm...
pfalDeleteSources( 1, &s_streamingChannel->sourceName );
AL_CheckErrors();
pfalGenSources( 1, &s_streamingChannel->sourceName );
AL_CheckErrors();
// Set up the source
pfalSourcei( s_streamingChannel->sourceName, AL_BUFFER, 0 );
AL_CheckErrors();
pfalSourcei( s_streamingChannel->sourceName, AL_LOOPING, AL_FALSE );
AL_CheckErrors();
pfalSourcei( s_streamingChannel->sourceName, AL_SOURCE_RELATIVE, AL_TRUE );
AL_CheckErrors();
pfalSourcefv( s_streamingChannel->sourceName, AL_POSITION, vec3_origin );
AL_CheckErrors();
pfalSourcefv( s_streamingChannel->sourceName, AL_VELOCITY, vec3_origin );
AL_CheckErrors();
pfalSourcef( s_streamingChannel->sourceName, AL_REFERENCE_DISTANCE, 1.0 );
AL_CheckErrors();
pfalSourcef( s_streamingChannel->sourceName, AL_MAX_DISTANCE, 1.0 );
AL_CheckErrors();
pfalSourcef( s_streamingChannel->sourceName, AL_ROLLOFF_FACTOR, 0.0 );
AL_CheckErrors();
}
/*
@@ -433,22 +459,30 @@ PUBLIC void Sound_StopStreaming( void )
pfalSourceStop( s_streamingChannel->sourceName );
AL_CheckErrors();
pfalGetSourcei( s_streamingChannel->sourceName, AL_BUFFERS_PROCESSED, &processed );
AL_CheckErrors();
if( processed > 0 )
{
while( processed-- )
{
pfalSourceUnqueueBuffers( s_streamingChannel->sourceName, 1, &buffer );
AL_CheckErrors();
pfalDeleteBuffers( 1, &buffer );
AL_CheckErrors();
}
}
pfalSourcei( s_streamingChannel->sourceName, AL_BUFFER, 0 );
AL_CheckErrors();
// hmmm...
pfalDeleteSources( 1, &s_streamingChannel->sourceName );
AL_CheckErrors();
pfalGenSources( 1, &s_streamingChannel->sourceName );
AL_CheckErrors();
s_streamingChannel = NULL;
}

View File

@@ -349,6 +349,19 @@ PUBLIC texture_t *TM_LoadTexture( const char *name, W8 *data, int width, int hei
TM_ResampleTexture( data, tex->width, tex->height, scaled, scaled_width, scaled_height, tex->bytes, INTERPOLATION_NONE );
}
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, WrapToGL( tex->WrapS ) );
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, WrapToGL( tex->WrapT ) );
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, MinFilterToGL( tex->MipMap, tex->MinFilter ) );
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, MagFilterToGL( tex->MagFilter ) );
#ifdef IPHONE
if ( type == TT_Wall ) {
pfglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 2.0f );
} else {
pfglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0f );
}
#endif
{
// upload base image
GLenum internalFormat[] = { GL_LUMINANCE, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB, GL_RGBA };
@@ -379,20 +392,6 @@ PUBLIC texture_t *TM_LoadTexture( const char *name, W8 *data, int width, int hei
if ( scaled != data ) {
Z_Free( scaled );
}
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, WrapToGL( tex->WrapS ) );
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, WrapToGL( tex->WrapT ) );
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, MinFilterToGL( tex->MipMap, tex->MinFilter ) );
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, MagFilterToGL( tex->MagFilter ) );
#ifdef IPHONE
if ( type == TT_Wall ) {
pfglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 2.0f );
} else {
pfglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0 );
}
#endif
return tex;
}
@@ -486,7 +485,8 @@ PUBLIC texture_t *TM_FindTexture( const char *name, texturetype_t type )
// load the texture from disk
//
data = NULL;
if( strcmp( name + len - 4, ".tga" ) ) {
const char* const extension = name + len - 4;
if( strcmp( extension, ".tga" ) && strcmp( extension, ".png" ) ) {
return r_notexture;
}
@@ -537,6 +537,23 @@ PUBLIC texture_t *TM_FindTexture( const char *name, texturetype_t type )
tx->maxS = (float)ph->srcWidth / ph->uploadWidth;
tx->maxT = (float)ph->srcHeight / ph->uploadHeight;
unsigned char *s = (unsigned char *)(ph+1);
if ( noMips ) {
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
} else {
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST );
}
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
if ( type == TT_Wall ) {
pfglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 2.0f );
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
} else {
pfglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0f );
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
}
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
while( 1 ) {
int size = (w*h*fi->bpp)/8;
if ( fi->bpp < 16 ) {
@@ -568,26 +585,27 @@ PUBLIC texture_t *TM_FindTexture( const char *name, texturetype_t type )
}
}
FS_CloseFile( fh );
if ( noMips ) {
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
} else {
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
}
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
if ( type == TT_Wall ) {
pfglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 2.0f );
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
} else {
pfglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0 );
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
}
pfglTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
return tx;
}
// load a normal TGA
LoadTGA( name, &data, &width, &height, &bytes );
// load a normal PNG or TGA. Prioritize PNGs, if not found, fall back to TGA.
size_t filenameLength = strlen( name );
char * pngName = MM_MALLOC( filenameLength );
strcpy( pngName, name );
strcpy( pngName + filenameLength - 3, "png" );
// Try to load a PNG version.
LoadPNG( pngName, &data, &width, &height, &bytes );
MM_FREE( pngName );
pngName = NULL;
// Try finding a TGA if the PNG load failed.
if ( ( data == NULL ) && strcmp( extension, ".tga" ) == 0 ) {
LoadTGA( name, &data, &width, &height, &bytes );
}
if ( data ) {
tex = TM_LoadTexture( name, data, width, height, type, bytes );
MM_FREE( data );

View File

@@ -39,6 +39,9 @@
#ifndef __TEXTURE_MANAGER_H__
#define __TEXTURE_MANAGER_H__
#include "arch.h"
#include "filesystem.h"
#define MAX_TEXTURES 1024

View File

@@ -133,7 +133,7 @@ PUBLIC char *FS_FindFirst( const char *path, W32 musthave, W32 canthave )
{
struct dirent *d;
char *p;
p;
(void)p;
if( fdir )
{

View File

@@ -42,6 +42,8 @@
#ifndef __VIDEO_H__
#define __VIDEO_H__
#include "arch.h"
typedef struct vrect_s
{
int x, y, width, height;

BIN
wolf3d/code/iphone/.DS_Store vendored Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,34 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <UIKit/UIKit.h>
@interface CreditsViewController : UIViewController {
@private
IBOutlet UIView* creditsRoll;
}
- (IBAction)back:(id)sender;
@end

View File

@@ -0,0 +1,116 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import "CreditsViewController.h"
#import <QuartzCore/CAAnimation.h>
#define CREDITS_ANIMATION_POINTS_PER_SECOND ( 320.0f / 6.0f ) // Six seconds to scroll up
// an iPhone screen.
@interface CreditsViewController ()
@property (nonatomic, retain) UIView* creditsRoll;
@end
@implementation CreditsViewController
@synthesize creditsRoll;
// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
/*
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization.
}
return self;
}
*/
/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
// This is the starting position of the credits text.
CGPoint startPoint = self.creditsRoll.center;
// Set up the end point. We can stop the animation as soon as the bottom of the credits
// get to the top of the screen.
CGPoint endPoint = startPoint;
endPoint.y = -self.creditsRoll.bounds.size.height;
// Start credits animation
CABasicAnimation *theAnimation;
theAnimation=[CABasicAnimation animationWithKeyPath:@"position"];
CGFloat pointDistance = endPoint.y - startPoint.y;
theAnimation.duration= fabs( pointDistance ) * ( 1.0f / CREDITS_ANIMATION_POINTS_PER_SECOND );
theAnimation.fromValue=[NSValue valueWithCGPoint:startPoint];
theAnimation.toValue=[NSValue valueWithCGPoint:endPoint];
[self.creditsRoll.layer addAnimation:theAnimation forKey:@"animatePosition"];
}
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations.
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc. that aren't in use.
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
self.creditsRoll = nil;
}
- (void)dealloc {
[super dealloc];
}
- (IBAction)back:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
@end

View File

@@ -1,6 +1,9 @@
/*
Copyright (C) 2009 Id Software, Inc.
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@@ -41,20 +44,17 @@ Note that setting the view non-opaque will only work if the EAGL surface has an
UITextField *textField;
@private
EAGLContext *context;
/* The pixel dimensions of the backbuffer */
GLint backingWidth;
GLint backingHeight;
EAGLContext *context;
GLint framebufferWidth;
GLint framebufferHeight;
/* OpenGL names for the renderbuffer and framebuffers used to render to this view */
GLuint viewRenderbuffer, viewFramebuffer;
GLuint defaultFramebuffer, colorRenderbuffer;
/* OpenGL name for the depth buffer that is attached to viewFramebuffer, if it exists (0 if it does not exist) */
GLuint depthRenderbuffer;
NSTimer *animationTimer;
NSTimeInterval animationInterval;
//gsh... an attempt at hacking the volume button
#ifdef VOLUMEHACK
@@ -66,8 +66,9 @@ Note that setting the view non-opaque will only work if the EAGL surface has an
}
@property NSTimeInterval animationInterval;
@property (nonatomic, retain) EAGLContext *context;
- (void)drawView;
- (void)setFramebuffer;
- (BOOL)presentFramebuffer;
@end

View File

@@ -1,11 +1,25 @@
//
// EAGLView.m
// wolf3d
//
// Created by Cass Everitt on 2/20/09.
// Copyright Id Software 2009. All rights reserved.
//
/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <QuartzCore/QuartzCore.h>
@@ -16,8 +30,6 @@
#include "wolfiphone.h"
//gsh
//#define NOTIFYLISTEN //uncomment to receive notifications
@@ -60,218 +72,235 @@ struct AVSystemControllerPrivate;
@end
AVSystemController *SharedAVSystemController;
EAGLView *eaglview;
EAGLView *eaglview = nil;
// A class extension to declare private methods
@interface EAGLView ()
@property (nonatomic, retain) EAGLContext *context;
@property (nonatomic, assign) NSTimer *animationTimer;
- (void) destroyFramebuffer;
- (void) swapBuffers;
@interface EAGLView (PrivateMethods)
- (void)createFramebuffer;
- (void)deleteFramebuffer;
@end
@implementation EAGLView
@synthesize context;
@synthesize animationTimer;
@synthesize animationInterval;
@dynamic context;
// You must implement this method
+ (Class)layerClass {
return [CAEAGLLayer class];
}
//The GL view is stored in the nib file. When it's unarchived it's sent -initWithCoder:
- (id)initWithCoder:(NSCoder*)coder {
self = [super initWithCoder:coder];
- (id)initWithFrame:(CGRect)aRect {
self = [super initWithFrame:aRect];
eaglview = self;
if ( self ) {
[self setMultipleTouchEnabled:YES];
// Get the layer
CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;
// Support rendering at native resolution on devices with Retina displays.
if( [self respondsToSelector:@selector(contentScaleFactor)] ) {
self.contentScaleFactor = deviceScale;
}
eaglLayer.opaque = YES;
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:NO],
kEAGLDrawablePropertyRetainedBacking,
kEAGLColorFormatRGB565,
/* kEAGLColorFormatRGBA8, */
kEAGLDrawablePropertyColorFormat,
nil];
context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];
assert( context );
if ( ![EAGLContext setCurrentContext:context]) {
[self release];
return nil;
}
self.multipleTouchEnabled = true;
[EAGLContext setCurrentContext:context];
glGenFramebuffersOES(1, &viewFramebuffer);
glGenRenderbuffersOES(1, &viewRenderbuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer*)self.layer];
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, viewRenderbuffer);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);
glGenRenderbuffersOES(1, &depthRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, backingWidth, backingHeight);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);
if(glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES) {
NSLog(@"failed to make complete framebuffer object %x", glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES));
}
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
#if 0
// set swapinterval if possible
void *eglSwapInterval;
eglSwapInterval = dlsym( RTLD_DEFAULT, "eglSwapInterval" );
if ( eglSwapInterval ) {
((void(*)(int))eglSwapInterval)( 2 );
}
#endif
// Get the layer
CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;
eaglLayer.opaque = TRUE;
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:NO],
kEAGLDrawablePropertyRetainedBacking,
kEAGLColorFormatRGB565,
kEAGLDrawablePropertyColorFormat,
nil];
//self.multipleTouchEnabled = true;
#ifdef VOLUMEHACK
//-------------------
// Volume Button Hack
//gsh
// Note: MediaPlayer framework required for this trick
//create a MPVolumeView to hack the volume button
CGRect frame = CGRectMake(0, -30, 180, 10); //put this thing offscreen
volumeView = [[[MPVolumeView alloc] initWithFrame:frame] autorelease];
[volumeView sizeToFit];
[self addSubview:volumeView];
// Find the volume view slider
for (UIView *view in [volumeView subviews]){
if ([[[view class] description] isEqualToString:@"MPVolumeSlider"]) {
volumeViewSlider = (UISlider *)view;
//-------------------
// Volume Button Hack
//gsh
// Note: MediaPlayer framework required for this trick
//create a MPVolumeView to hack the volume button
CGRect frame = CGRectMake(0, -30, 180, 10); //put this thing offscreen
volumeView = [[[MPVolumeView alloc] initWithFrame:frame] autorelease];
[volumeView sizeToFit];
[self addSubview:volumeView];
// Find the volume view slider
for (UIView *view in [volumeView subviews]){
if ([[[view class] description] isEqualToString:@"MPVolumeSlider"]) {
volumeViewSlider = (UISlider *)view;
}
}
}
//listen for volume changes
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(volumeListener:)
name:@"AVSystemController_SystemVolumeDidChangeNotification"
object:nil];
//listen for volume changes
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(volumeListener:)
name:@"AVSystemController_SystemVolumeDidChangeNotification"
object:nil];
//---------------------
#endif
#ifdef NOTIFYLISTEN //gsh
//this is a general purpose listener
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationListener:)
name:nil
object:nil];
//this is a general purpose listener
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationListener:)
name:nil
object:nil];
#endif
// with swapinterval, we want to update as fast as possible
float interval = 1.0 / 30.0f;
self.animationTimer = [NSTimer scheduledTimerWithTimeInterval:interval
target:self
selector:@selector(drawView)
userInfo:nil repeats:YES];
}
return self;
}
//gsh
- (void)viewDidLoad {
Com_Printf("\n---------------\nviewDidLoad() called\n---------------\n\n");
}
- (void)drawView {
[ (wolf3dAppDelegate *)[UIApplication sharedApplication].delegate restartAccelerometerIfNeeded];
#if 0
//------------------
// Volume button hack
{
if ( SharedAVSystemController ) {
float newVolume;
NSString *categoryName;
static float activeVolume = 0.9;
if ([SharedAVSystemController getActiveCategoryVolume:&newVolume andName:&categoryName]) {
if (activeVolume < newVolume) {
[SharedAVSystemController setActiveCategoryVolumeTo:activeVolume];
Com_Printf( "Volume up: %i\n", Sys_Milliseconds() );
}
}
}
}
#endif
#ifdef VOLUMEHACK
//------------------
// volume hack
//check for volume adjustments gsh
if ( menuState == IPM_CONTROLS)
{
if (lastFramesVolume != s_masterVolume->value)
{
lastFramesVolume = s_masterVolume->value;
[volumeViewSlider setValue:lastFramesVolume animated:NO];
[volumeViewSlider _commitVolumeChange];
}
}
#endif
iphoneFrame(); // swapBuffers() will be called from here
}
- (void)swapBuffers {
// glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
loggedTimes[iphoneFrameNum&(MAX_LOGGED_TIMES-1)].beforeSwap = Sys_Milliseconds();
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
loggedTimes[iphoneFrameNum&(MAX_LOGGED_TIMES-1)].afterSwap = Sys_Milliseconds();
}
- (void)layoutSubviews {
[self drawView];
}
- (void)destroyFramebuffer {
glDeleteFramebuffersOES(1, &viewFramebuffer);
viewFramebuffer = 0;
glDeleteRenderbuffersOES(1, &viewRenderbuffer);
viewRenderbuffer = 0;
glDeleteRenderbuffersOES(1, &depthRenderbuffer);
depthRenderbuffer = 0;
}
- (void)dealloc {
if ([EAGLContext currentContext] == context) {
- (void)setContext:(EAGLContext *)newContext
{
if (context != newContext)
{
[self deleteFramebuffer];
[context release];
context = [newContext retain];
[EAGLContext setCurrentContext:nil];
}
}
- (void)createFramebuffer
{
if (context && !defaultFramebuffer)
{
[EAGLContext setCurrentContext:context];
// Create default framebuffer object.
glGenFramebuffersOES(1, &defaultFramebuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, defaultFramebuffer);
// Create color render buffer and allocate backing store.
glGenRenderbuffersOES(1, &colorRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorRenderbuffer);
[context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer *)self.layer];
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &framebufferWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &framebufferHeight);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, colorRenderbuffer);
// Create the depth render buffer and allocate backing store.
glGenRenderbuffersOES(1, &depthRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, framebufferWidth, framebufferHeight);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);
if (glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES) {
NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES));
}
// We can bind the color buffer here to avoid doing it every frame.
glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorRenderbuffer);
}
}
- (void)deleteFramebuffer
{
if (context)
{
[EAGLContext setCurrentContext:context];
if (defaultFramebuffer)
{
glDeleteFramebuffersOES(1, &defaultFramebuffer);
defaultFramebuffer = 0;
}
if (colorRenderbuffer)
{
glDeleteRenderbuffersOES(1, &colorRenderbuffer);
colorRenderbuffer = 0;
}
if (depthRenderbuffer)
{
glDeleteFramebuffersOES(1, &depthRenderbuffer);
depthRenderbuffer = 0;
}
}
}
- (void)setFramebuffer
{
if (context)
{
[EAGLContext setCurrentContext:context];
if (!defaultFramebuffer)
[self createFramebuffer];
//glBindFramebufferOES(GL_FRAMEBUFFER_OES, defaultFramebuffer);
//glViewport(0, 0, framebufferWidth, framebufferHeight);
}
}
- (BOOL)presentFramebuffer
{
BOOL success = FALSE;
[context release];
if (context)
{
[EAGLContext setCurrentContext:context];
//glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorRenderbuffer);
if ( gl_config.framebuffer_discard ) {
const GLenum discards[] = {GL_DEPTH_ATTACHMENT_OES};
glDiscardFramebufferEXT(GL_FRAMEBUFFER_OES,1,discards);
}
loggedTimes[iphoneFrameNum&(MAX_LOGGED_TIMES-1)].beforeSwap = Sys_Milliseconds();
success = [context presentRenderbuffer:GL_RENDERBUFFER_OES];
loggedTimes[iphoneFrameNum&(MAX_LOGGED_TIMES-1)].afterSwap = Sys_Milliseconds();
}
return success;
}
- (void)layoutSubviews {
//float widthRatio = ( self.bounds.size.width * deviceScale ) / REFERENCE_WIDTH;
//float heightRatio = ( self.bounds.size.height * deviceScale ) / REFERENCE_HEIGHT;
[self deleteFramebuffer];
/*
if ( widthRatio < heightRatio ) {
screenScale = widthRatio;
} else {
screenScale = heightRatio;
}
// Set the global width and height so the game code can access it.
// since the game runs in landscape, we must switch width and height.
viddef.width = self.bounds.size.width * deviceScale;
viddef.height = self.bounds.size.height * deviceScale;
*/
// Need to re-arrange the HUD now that the screen changed.
if ( controlScheme ) {
HudSetForScheme( controlScheme->value );
}
}
- (void)dealloc {
[self deleteFramebuffer];
[context release];
[super dealloc];
}
@@ -287,7 +316,7 @@ EAGLView *eaglview;
NSSet *t = [event allTouches];
for (UITouch *myTouch in t)
{
CGPoint touchLocation = [myTouch locationInView:nil];
CGPoint touchLocation = [myTouch locationInView:self];
points[ 2 * touchCount + 0 ] = touchLocation.x;
points[ 2 * touchCount + 1 ] = touchLocation.y; // ( h - 1 ) - touchLocation.y;
@@ -434,10 +463,6 @@ void SysIPhoneSetConsoleTextField( const char * str) {
eaglview->textField.text = [ NSString stringWithUTF8String: str ];
}
void SysIPhoneSwapBuffers() {
[eaglview swapBuffers];
}
void SysIPhoneOpenURL( const char *url ) {
Com_Printf( "OpenURL char *: %s\n", url );
@@ -445,14 +470,6 @@ void SysIPhoneOpenURL( const char *url ) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: nss]];
}
void SysIPhoneSetUIKitOrientation( int isLandscapeRight ) {
if ( isLandscapeRight ) {
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight;
} else {
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft;
}
}
void SysIPhoneLoadJPG( W8* jpegData, int jpegBytes, W8 **pic, W16 *width, W16 *height, W16 *bytes ) {
CFDataRef data;
int dataBytes = 0;

View File

@@ -0,0 +1,698 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1056</int>
<string key="IBDocument.SystemVersion">10K540</string>
<string key="IBDocument.InterfaceBuilderVersion">851</string>
<string key="IBDocument.AppKitVersion">1038.36</string>
<string key="IBDocument.HIToolboxVersion">461.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">141</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="2"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="841351856">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBProxyObject" id="606714003">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUITableViewCell" id="610104207">
<reference key="NSNextResponder"/>
<int key="NSvFlags">1298</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIView" id="946422459">
<reference key="NSNextResponder" ref="610104207"/>
<int key="NSvFlags">1280</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIImageView" id="525193574">
<reference key="NSNextResponder" ref="946422459"/>
<int key="NSvFlags">-2147482332</int>
<string key="NSFrame">{{0, 2}, {328, 100}}</string>
<reference key="NSSuperview" ref="946422459"/>
<int key="IBUITag">3</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<float key="IBUIScaleFactor">2</float>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">highlight_bracket.png</string>
</object>
</object>
<object class="IBUIImageView" id="40397874">
<reference key="NSNextResponder" ref="946422459"/>
<int key="NSvFlags">1316</int>
<string key="NSFrame">{{4, 6}, {319, 92}}</string>
<reference key="NSSuperview" ref="946422459"/>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<float key="IBUIScaleFactor">2</float>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">episode_bracket.png</string>
</object>
</object>
<object class="IBUIImageView" id="285959975">
<reference key="NSNextResponder" ref="946422459"/>
<int key="NSvFlags">1316</int>
<string key="NSFrame">{{13, 32}, {260, 3}}</string>
<reference key="NSSuperview" ref="946422459"/>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<float key="IBUIScaleFactor">2</float>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">episode_divider.png</string>
</object>
</object>
<object class="IBUILabel" id="742621351">
<reference key="NSNextResponder" ref="946422459"/>
<int key="NSvFlags">1316</int>
<string key="NSFrame">{{12, 10}, {314, 34}}</string>
<reference key="NSSuperview" ref="946422459"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<int key="IBUITag">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<float key="IBUIScaleFactor">2</float>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">Episode Number</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">20</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
<object class="NSColor" key="IBUIHighlightedColor" id="911926565">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC4zMzMzMzMzMzMzAA</bytes>
</object>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
</object>
<object class="IBUILabel" id="617790695">
<reference key="NSNextResponder" ref="946422459"/>
<int key="NSvFlags">1316</int>
<string key="NSFrame">{{12, 37}, {323, 41}}</string>
<reference key="NSSuperview" ref="946422459"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">9</int>
<int key="IBUITag">2</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<float key="IBUIScaleFactor">2</float>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">Episode Name</string>
<object class="NSFont" key="IBUIFont" id="428773628">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">32</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor" id="935119435">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<reference key="IBUIHighlightedColor" ref="911926565"/>
<int key="IBUIBaselineAdjustment">1</int>
<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
<float key="IBUIMinimumFontSize">10</float>
</object>
<object class="IBUILabel" id="944150288">
<reference key="NSNextResponder" ref="946422459"/>
<int key="NSvFlags">1316</int>
<string key="NSFrame">{{12, 64}, {323, 41}}</string>
<reference key="NSSuperview" ref="946422459"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">9</int>
<int key="IBUITag">2</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<float key="IBUIScaleFactor">2</float>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText"/>
<reference key="IBUIFont" ref="428773628"/>
<reference key="IBUITextColor" ref="935119435"/>
<reference key="IBUIHighlightedColor" ref="911926565"/>
<int key="IBUIBaselineAdjustment">1</int>
<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
<float key="IBUIMinimumFontSize">10</float>
</object>
</object>
<string key="NSFrameSize">{336, 103}</string>
<reference key="NSSuperview" ref="610104207"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwAA</bytes>
</object>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">4</int>
<bool key="IBUIMultipleTouchEnabled">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</object>
<string key="NSFrameSize">{336, 103}</string>
<reference key="NSSuperview"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAxIDEAA</bytes>
</object>
<float key="IBUIScaleFactor">2</float>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUISeparatorStyle">1</int>
<reference key="IBUIContentView" ref="946422459"/>
<int key="IBUILineBreakMode">0</int>
<string key="IBUIReuseIdentifier">MyIdentifier</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">episodeCell</string>
<reference key="source" ref="841351856"/>
<reference key="destination" ref="610104207"/>
</object>
<int key="connectionID">7</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="841351856"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="606714003"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2</int>
<reference key="object" ref="610104207"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="742621351"/>
<reference ref="617790695"/>
<reference ref="40397874"/>
<reference ref="285959975"/>
<reference ref="944150288"/>
<reference ref="525193574"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">3</int>
<reference key="object" ref="742621351"/>
<reference key="parent" ref="610104207"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="617790695"/>
<reference key="parent" ref="610104207"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">8</int>
<reference key="object" ref="285959975"/>
<reference key="parent" ref="610104207"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">9</int>
<reference key="object" ref="40397874"/>
<reference key="parent" ref="610104207"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">10</int>
<reference key="object" ref="944150288"/>
<reference key="parent" ref="610104207"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">11</int>
<reference key="object" ref="525193574"/>
<reference key="parent" ref="610104207"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>10.CustomClassName</string>
<string>10.IBPluginDependency</string>
<string>10.IBViewBoundsToFrameTransform</string>
<string>11.IBPluginDependency</string>
<string>11.IBViewBoundsToFrameTransform</string>
<string>2.IBEditorWindowLastContentRect</string>
<string>2.IBPluginDependency</string>
<string>3.CustomClassName</string>
<string>3.IBPluginDependency</string>
<string>3.IBViewBoundsToFrameTransform</string>
<string>4.CustomClassName</string>
<string>4.IBPluginDependency</string>
<string>4.IBViewBoundsToFrameTransform</string>
<string>8.IBPluginDependency</string>
<string>8.IBViewBoundsToFrameTransform</string>
<string>9.IBPluginDependency</string>
<string>9.IBViewBoundsToFrameTransform</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>EpisodeViewController</string>
<string>UIResponder</string>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABBoAAAwtgAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AQAAAABAAAAAA</bytes>
</object>
<string>{{614, 707}, {672, 206}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABCsAAAwjQAAA</bytes>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUDgAABCHAAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUJgAABCMAAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AQAAAABAoAAAA</bytes>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">11</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">EpisodeViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back:</string>
<string>next:</string>
<string>setEpisode:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back:</string>
<string>next:</string>
<string>setEpisode:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">back:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">next:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">setEpisode:</string>
<string key="candidateClassName">id</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>episodeCell</string>
<string>episodeList</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UITableViewCell</string>
<string>UITableView</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>episodeCell</string>
<string>episodeList</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">episodeCell</string>
<string key="candidateClassName">UITableViewCell</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">episodeList</string>
<string key="candidateClassName">UITableView</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">EpisodeViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIFontLabel</string>
<string key="superclassName">UILabel</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">UIFontLabel.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="6890943">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIImageView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIImageView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UILabel</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UILabel.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="6890943"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIScrollView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchDisplayController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UITableView</string>
<string key="superclassName">UIScrollView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UITableViewCell</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITableViewCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="1056" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">wolf3d.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>episode_bracket.png</string>
<string>episode_divider.png</string>
<string>highlight_bracket.png</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{606, 168}</string>
<string>{387, 3}</string>
<string>{623, 189}</string>
</object>
</object>
<string key="IBCocoaTouchPluginVersion">141</string>
</data>
</archive>

View File

@@ -0,0 +1,935 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1056</int>
<string key="IBDocument.SystemVersion">10K549</string>
<string key="IBDocument.InterfaceBuilderVersion">851</string>
<string key="IBDocument.AppKitVersion">1038.36</string>
<string key="IBDocument.HIToolboxVersion">461.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">141</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="28"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBProxyObject" id="975951072">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="191373211">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIImageView" id="438564867">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrameSize">{480, 320}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">1</int>
<bool key="IBUIMultipleTouchEnabled">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">wolf_bg.png</string>
</object>
</object>
<object class="IBUIImageView" id="122204725">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{25, 259}, {32, 32}}</string>
<reference key="NSSuperview" ref="191373211"/>
<int key="IBUIContentMode">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">back_arrow.png</string>
</object>
</object>
<object class="IBUIImageView" id="864370271">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{422, 259}, {32, 32}}</string>
<reference key="NSSuperview" ref="191373211"/>
<int key="IBUIContentMode">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">next_arrow.png</string>
</object>
</object>
<object class="IBUILabel" id="1052909798">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{24, 240}, {66, 29}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">BACK</string>
<object class="NSFont" key="IBUIFont" id="622893689">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">18</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor" id="256070585">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<reference key="IBUIHighlightedColor" ref="256070585"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUILineBreakMode">5</int>
</object>
<object class="IBUILabel" id="185220669">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{421, 240}, {66, 29}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">NEXT</string>
<reference key="IBUIFont" ref="622893689"/>
<reference key="IBUITextColor" ref="256070585"/>
<reference key="IBUIHighlightedColor" ref="256070585"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUILineBreakMode">5</int>
</object>
<object class="IBUILabel" id="670859964">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{81, 8}, {128, 31}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">Episode Select</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">24</double>
<int key="NSfFlags">16</int>
</object>
<reference key="IBUITextColor" ref="256070585"/>
<reference key="IBUIHighlightedColor" ref="256070585"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUILineBreakMode">5</int>
</object>
<object class="IBUIButton" id="905085223">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{20, 231}, {52, 62}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<object class="NSFont" key="IBUIFont" id="470588032">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
<reference key="IBUIHighlightedTitleColor" ref="256070585"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleShadowColor" id="864562198">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="155610358">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">button_highlight.png</string>
</object>
</object>
<object class="IBUIButton" id="314196185">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{416, 231}, {50, 62}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIFont" ref="470588032"/>
<reference key="IBUIHighlightedTitleColor" ref="256070585"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="864562198"/>
<reference key="IBUIHighlightedBackgroundImage" ref="155610358"/>
</object>
<object class="IBUIButton" id="331722433">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{220, 299}, {46, 24}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIFont" ref="470588032"/>
<reference key="IBUIHighlightedTitleColor" ref="256070585"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="864562198"/>
<reference key="IBUIHighlightedBackgroundImage" ref="155610358"/>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">down_arrow.png</string>
</object>
</object>
<object class="IBUIButton" id="398032643">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{220, 11}, {46, 24}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIFont" ref="470588032"/>
<reference key="IBUIHighlightedTitleColor" ref="256070585"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="864562198"/>
<reference key="IBUIHighlightedBackgroundImage" ref="155610358"/>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">up_arrow.png</string>
</object>
</object>
<object class="IBUITableView" id="504138825">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{79.5, 35}, {336, 260}}</string>
<reference key="NSSuperview" ref="191373211"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwAA</bytes>
</object>
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIAlwaysBounceVertical">YES</bool>
<bool key="IBUIShowsHorizontalScrollIndicator">NO</bool>
<int key="IBUIIndicatorStyle">2</int>
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
<bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
<float key="IBUIRowHeight">103</float>
</object>
</object>
<string key="NSFrameSize">{480, 320}</string>
<reference key="NSSuperview"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MCAwIDAAA</bytes>
</object>
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
<int key="interfaceOrientation">3</int>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="191373211"/>
</object>
<int key="connectionID">13</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">back:</string>
<reference key="source" ref="905085223"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">36</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">episodeList</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="504138825"/>
</object>
<int key="connectionID">62</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">dataSource</string>
<reference key="source" ref="504138825"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">63</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="504138825"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">64</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">next:</string>
<reference key="source" ref="314196185"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">65</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">pageDown:</string>
<reference key="source" ref="331722433"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">66</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">pageUp:</string>
<reference key="source" ref="398032643"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">67</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="191373211"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="1052909798"/>
<reference ref="670859964"/>
<reference ref="331722433"/>
<reference ref="398032643"/>
<reference ref="864370271"/>
<reference ref="185220669"/>
<reference ref="438564867"/>
<reference ref="504138825"/>
<reference ref="122204725"/>
<reference ref="905085223"/>
<reference ref="314196185"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="372490531"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="975951072"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">31</int>
<reference key="object" ref="1052909798"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">32</int>
<reference key="object" ref="670859964"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">33</int>
<reference key="object" ref="905085223"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">35</int>
<reference key="object" ref="122204725"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">28</int>
<reference key="object" ref="438564867"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">49</int>
<reference key="object" ref="331722433"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">51</int>
<reference key="object" ref="398032643"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">53</int>
<reference key="object" ref="864370271"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">54</int>
<reference key="object" ref="185220669"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">55</int>
<reference key="object" ref="314196185"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">61</int>
<reference key="object" ref="504138825"/>
<reference key="parent" ref="191373211"/>
<string key="objectName">Episode List</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>1.IBEditorWindowLastContentRect</string>
<string>1.IBPluginDependency</string>
<string>28.IBViewBoundsToFrameTransform</string>
<string>31.CustomClassName</string>
<string>31.IBPluginDependency</string>
<string>31.IBViewBoundsToFrameTransform</string>
<string>32.CustomClassName</string>
<string>32.IBPluginDependency</string>
<string>32.IBViewBoundsToFrameTransform</string>
<string>33.IBPluginDependency</string>
<string>33.IBViewBoundsToFrameTransform</string>
<string>35.IBPluginDependency</string>
<string>35.IBViewBoundsToFrameTransform</string>
<string>49.IBPluginDependency</string>
<string>49.IBViewBoundsToFrameTransform</string>
<string>51.IBPluginDependency</string>
<string>51.IBViewBoundsToFrameTransform</string>
<string>53.IBPluginDependency</string>
<string>53.IBViewBoundsToFrameTransform</string>
<string>54.CustomClassName</string>
<string>54.IBPluginDependency</string>
<string>54.IBViewBoundsToFrameTransform</string>
<string>55.IBPluginDependency</string>
<string>55.IBViewBoundsToFrameTransform</string>
<string>61.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>EpisodeViewController</string>
<string>UIResponder</string>
<string>{{647, 827}, {480, 320}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAAAAAAAAw58AAA</bytes>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUIEAABDbQAAA</bytes>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUK4AABBUAAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABBoAAAw2cAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABCFAAAw5KAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUNcAABDlYAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABDNgAAw5SAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUIUAABDg4AAA</bytes>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUIEAABDbQAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABD0oAAw2cAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">67</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">EpisodeViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back:</string>
<string>next:</string>
<string>pageDown:</string>
<string>pageUp:</string>
<string>setEpisode:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back:</string>
<string>next:</string>
<string>pageDown:</string>
<string>pageUp:</string>
<string>setEpisode:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">back:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">next:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">pageDown:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">pageUp:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">setEpisode:</string>
<string key="candidateClassName">id</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>episodeCell</string>
<string>episodeList</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UITableViewCell</string>
<string>UITableView</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>episodeCell</string>
<string>episodeList</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">episodeCell</string>
<string key="candidateClassName">UITableViewCell</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">episodeList</string>
<string key="candidateClassName">UITableView</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">EpisodeViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIFontLabel</string>
<string key="superclassName">UILabel</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">UIFontLabel.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="517279992">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIButton</string>
<string key="superclassName">UIControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIControl</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIControl.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIImageView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIImageView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UILabel</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UILabel.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="517279992"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIScrollView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchDisplayController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UITableView</string>
<string key="superclassName">UIScrollView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UITableViewCell</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITableViewCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="1056" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">wolf3d.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back_arrow.png</string>
<string>button_highlight.png</string>
<string>down_arrow.png</string>
<string>next_arrow.png</string>
<string>up_arrow.png</string>
<string>wolf_bg.png</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{65, 63}</string>
<string>{4, 4}</string>
<string>{80, 36}</string>
<string>{65, 63}</string>
<string>{80, 36}</string>
<string>{480, 320}</string>
</object>
</object>
<string key="IBCocoaTouchPluginVersion">141</string>
</data>
</archive>

View File

@@ -0,0 +1,42 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <UIKit/UIKit.h>
@interface EpisodeViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
IBOutlet UITableView *episodeList;
UITableViewCell* episodeCell;
}
@property (nonatomic, assign) IBOutlet UITableViewCell *episodeCell;
- (IBAction)setEpisode:(id)sender;
- (IBAction)back:(id)sender;
- (IBAction)next:(id)sender;
- (IBAction)pageDown:(id)sender;
- (IBAction)pageUp:(id)sender;
@end

View File

@@ -0,0 +1,355 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import "EpisodeViewController.h"
#import "LevelSelectViewController.h"
#import "wolfiphone.h"
#define TOTAL_EPISODES 10
static const char * const EpisodeNames[TOTAL_EPISODES][2] = {
{ "Episode 1", "Escape from Wolfenstein" },
{ "Episode 2", "Operation: Eisenfaust" },
{ "Episode 3", "Die, Fuhrer, Die!" },
{ "Episode 4", "A Dark Secret" },
{ "Episode 5", "Trail of the Madman" },
{ "Episode 6", "Confrontation" },
{ "Spear of Destiny", "Tunnels" },
{ "Spear of Destiny", "Dungeons" },
{ "Spear of Destiny", "Castle" },
{ "Spear of Destiny", "Ramparts" }
};
// A class extension to declare private methods
@interface EpisodeViewController (PrivateMethods)
- (void)startLevelSelect;
- (void)setCellSelected:(BOOL)selected atIndexPath:(NSIndexPath*)indexPath;
- (void)setCellSelected:(BOOL)selected cell:(UITableViewCell*)cell;
- (void)handleSelectionAtIndexPath:(NSIndexPath*)indexPath;
- (void)scrollToRow:(int)row;
@end
@interface EpisodeViewController ()
@property (nonatomic, retain) UITableView *episodeList;
@end
@implementation EpisodeViewController
@synthesize episodeList;
@synthesize episodeCell;
// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
/*
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization.
}
return self;
}
*/
/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
// TODO: Select the current episode. Haven't yet figured out a good way to get the table
// view to load with a default row selected, so for now always select episode 1.
int initialEpisode = 0;
NSIndexPath *initialPath = [NSIndexPath indexPathForRow:initialEpisode inSection:0];
[self.episodeList selectRowAtIndexPath:initialPath animated:YES scrollPosition:UITableViewScrollPositionNone];
[self handleSelectionAtIndexPath:initialPath];
}
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations.
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc. that aren't in use.
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
[self.episodeList release];
self.episodeList = nil;
}
- (void)dealloc {
[super dealloc];
}
// Sets the current episode with the sender's tag. IF the user selects a platinum episode but
// only has the lite version of the app, prompt him to buy the platinum version.
- (IBAction)setEpisode:(id)sender {
NSInteger requestedEpisode = [sender tag];
if ( SysIPhoneGetContentVersion() == CONTENT_PLATINUM || requestedEpisode == 0 ) {
Cvar_SetValue( episode->name, [sender tag] );
[self startLevelSelect];
} else {
// Prompt user to buy platinum version
iphonePromptToBuyPlatinum();
}
}
- (IBAction)back:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
- (IBAction)next:(id)sender {
LevelSelectViewController *lsc = [[LevelSelectViewController alloc] initWithNibName:@"LevelSelectView" bundle:nil];
[self.navigationController pushViewController:lsc animated:YES];
[lsc release];
}
- (IBAction)pageDown:(id)sender {
// If the user taps the page down button, we want to scroll the table view so that the first
// non-visible row becomes visible. To do this, we can get the array of visible index paths,
// find the maximum row within the array, and scroll to the row just after that.
NSArray* visibleIndexPaths = [self.episodeList indexPathsForVisibleRows];
int maxRow = 0;
for ( NSIndexPath* path in visibleIndexPaths ) {
maxRow = maxRow < path.row ? path.row: maxRow;
}
const int rowToMakeVisible = maxRow + 1;
[self scrollToRow:rowToMakeVisible];
}
- (IBAction)pageUp:(id)sender {
// If the user taps the page up button, we want to scroll the table view so that the first
// non-visible row becomes visible. To do this, we can get the array of visible index paths,
// find the minimum row within the array, and scroll to the row just before that.
NSArray* visibleIndexPaths = [self.episodeList indexPathsForVisibleRows];
int minRow = TOTAL_EPISODES - 1;
for ( NSIndexPath* path in visibleIndexPaths ) {
minRow = minRow < path.row ? minRow: path.row;
}
const int rowToMakeVisible = minRow - 1;
[self scrollToRow:rowToMakeVisible];
}
- (void)scrollToRow:(int)row {
const int clampedRowMax = row < TOTAL_EPISODES? row: TOTAL_EPISODES-1;
const int clampedRow = clampedRowMax < 0? 0: clampedRowMax;
NSIndexPath* pathToMakeVisible = [NSIndexPath indexPathForRow:clampedRow inSection:0];
[self.episodeList scrollToRowAtIndexPath:pathToMakeVisible atScrollPosition:UITableViewScrollPositionNone animated:YES];
}
- (void)startLevelSelect {
}
/*
========================
UITableView interface
========================
*/
- (void)handleSelectionAtIndexPath:(NSIndexPath*)indexPath {
// Prompt for In-App Purchase when the user selects a level that is not currently available.
if ( SysIPhoneGetContentVersion() == CONTENT_LITE ) {
if ( indexPath.row > 0 ) {
iphonePromptToBuyPlatinum();
return;
}
}
Cvar_SetValue( episode->name, indexPath.row );
[self setCellSelected:YES atIndexPath:indexPath];
/*
int episodeIndex = episode->value;
int levelIndex = indexPath.row;
realEpisode = episodeIndex;
realMap = levelIndex;
if ( episodeIndex >= NUM_ORIGINAL_EPISODES ) {
switch (episodeIndex)
{
case 6:
if (levelIndex == 5) {
realEpisode = 7;
realMap = 8;
}
break;
case 7:
realEpisode = 6;
realMap += 5;
break;
case 8:
realEpisode = 7;
if (levelIndex == 6)
realMap = 9;
break;
case 9:
if ( levelIndex == 0) { realEpisode = 7; realMap = 6; }
if ( levelIndex == 1) { realEpisode = 7; realMap = 7; }
if ( levelIndex == 2) { realEpisode = 8; realMap = 0; }
break;
default:
break;
}
}
*/
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return TOTAL_EPISODES;
}
static CGRect maximumNameLabelFrame = { { 0.0, 0.0 }, { 0.0, 0.0 } };
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"MyIdentifier";
UITableViewCell *cell = (UITableViewCell*)[self.episodeList dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
//cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
[[NSBundle mainBundle] loadNibNamed:@"EpisodeCell" owner:self options:nil];
if ( episodeCell == nil ) {
// Couldn't create from nib file, load a default cell.
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
} else {
cell = episodeCell;
self.episodeCell = nil;
// Save the good label size here before it gets modified by the code below.
UILabel *episodeNameLabel;
episodeNameLabel = (UILabel *)[cell viewWithTag:2];
maximumNameLabelFrame = episodeNameLabel.frame;
}
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
BOOL isCellSelected = ( episode->value == indexPath.row)? YES: NO;
[self setCellSelected:isCellSelected cell:cell];
UILabel *episodeNumberLabel;
episodeNumberLabel = (UILabel *)[cell viewWithTag:1];
episodeNumberLabel.text = [NSString stringWithCString:EpisodeNames[indexPath.row][0] encoding:NSASCIIStringEncoding];
UILabel *episodeNameLabel;
episodeNameLabel = (UILabel *)[cell viewWithTag:2];
NSString* episodeNameText = [NSString stringWithCString:EpisodeNames[indexPath.row][1] encoding:NSASCIIStringEncoding];
CGSize expectedLabelSize = [episodeNameText sizeWithFont:episodeNameLabel.font
constrainedToSize:maximumNameLabelFrame.size
lineBreakMode:episodeNameLabel.lineBreakMode];
//adjust the label the the new height.
CGRect newFrame = maximumNameLabelFrame;
newFrame.size.height = expectedLabelSize.height;
episodeNameLabel.frame = newFrame;
episodeNameLabel.text = episodeNameText;
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self handleSelectionAtIndexPath:indexPath];
}
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
[self setCellSelected:NO atIndexPath:indexPath];
}
- (void)setCellSelected:(BOOL)selected atIndexPath:(NSIndexPath*)indexPath {
// Get the cell that was selected.
UITableViewCell * cell = [episodeList cellForRowAtIndexPath:indexPath];
[self setCellSelected:selected cell:cell];
}
- (void)setCellSelected:(BOOL)selected cell:(UITableViewCell*)cell {
// Get the "selected" image
UIView * selectionFrame = [cell viewWithTag:3];
// Show the selected image
selectionFrame.hidden = !selected;
}
@end

View File

@@ -2,16 +2,18 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key></key>
<string></string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}+</string>
<string>Wolf 3D</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string>${PRODUCT_NAME}_icon.png</string>
<key>CFBundleIconFiles</key>
<array>
<string>WOLF_57</string>
<string>WOLF_114</string>
<string>WOLF_72</string>
</array>
<key>CFBundleIdentifier</key>
<string>com.idsoftware.${PRODUCT_NAME:identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
@@ -20,30 +22,33 @@
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string></string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.idsoftware.wolf3dp</string>
<key>CFBundleURLSchemes</key>
<array>
<string>wolf3dp</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>1.2</string>
<string>2.1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSMainNibFile</key>
<string>MainWindow</string>
<key>UIAppFonts</key>
<array>
<string>POSITYPE-idSettler10v2.otf</string>
</array>
<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeLeft</string>
<key>UIPrerenderedIcon</key>
<true/>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationPortrait</string>
</array>
</dict>
</plist>

View File

@@ -0,0 +1,657 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1056</int>
<string key="IBDocument.SystemVersion">10K549</string>
<string key="IBDocument.InterfaceBuilderVersion">851</string>
<string key="IBDocument.AppKitVersion">1038.36</string>
<string key="IBDocument.HIToolboxVersion">461.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">141</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="7"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBProxyObject" id="975951072">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="191373211">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIImageView" id="277101892">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrameSize">{480, 320}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">credits_bg.png</string>
</object>
</object>
<object class="IBUILabel" id="735518854">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{245, 14}, {134, 52}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">Legal</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">36</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor" id="767789838">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<reference key="IBUIHighlightedColor" ref="767789838"/>
<object class="NSColor" key="IBUIShadowColor" id="268491798">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MCAwIDAAA</bytes>
</object>
<string key="IBUIShadowOffset">{2, 2}</string>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUITextAlignment">1</int>
</object>
<object class="IBUIImageView" id="424323441">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{20, 265}, {32, 32}}</string>
<reference key="NSSuperview" ref="191373211"/>
<int key="IBUIContentMode">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">back_arrow.png</string>
</object>
</object>
<object class="IBUILabel" id="103738224">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{20, 243}, {66, 29}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">BACK</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">18</double>
<int key="NSfFlags">16</int>
</object>
<reference key="IBUITextColor" ref="767789838"/>
<reference key="IBUIHighlightedColor" ref="767789838"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUILineBreakMode">5</int>
</object>
<object class="IBUIButton" id="531112737">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">301</int>
<string key="NSFrame">{{6, 239}, {69, 69}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
<reference key="IBUIHighlightedTitleColor" ref="767789838"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleShadowColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">button_highlight.png</string>
</object>
</object>
<object class="IBUILabel" id="348956784">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{185, 59}, {255, 242}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">Wolfenstein® 3D Classic Platinum© 2009-2011 id Software LLC, a ZeniMax Media company. Wolfenstein, id, id Software, id Tech and related logos are registered trademarks or trademarks of id Software LLC in the U.S. and/or other countries. Bethesda, Bethesda Softworks, ZeniMax and related logos are registered trademarks or trademarks of ZeniMax Media Inc. in the U.S. and/or other countries. All Rights Reserved.</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">14</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAxIDEAA</bytes>
<object class="NSColorSpace" key="NSCustomColorSpace">
<int key="NSID">1</int>
</object>
</object>
<reference key="IBUIHighlightedColor" ref="767789838"/>
<reference key="IBUIShadowColor" ref="268491798"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUINumberOfLines">12</int>
<int key="IBUITextAlignment">1</int>
<int key="IBUILineBreakMode">0</int>
</object>
<object class="IBUIImageView" id="895403608">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{163, 69}, {298, 7}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">settings_divider.png</string>
</object>
</object>
</object>
<string key="NSFrameSize">{480, 320}</string>
<reference key="NSSuperview"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes>
</object>
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
<int key="interfaceOrientation">3</int>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="191373211"/>
</object>
<int key="connectionID">3</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">back:</string>
<reference key="source" ref="531112737"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">12</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="191373211"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="735518854"/>
<reference ref="277101892"/>
<reference ref="424323441"/>
<reference ref="103738224"/>
<reference ref="531112737"/>
<reference ref="348956784"/>
<reference ref="895403608"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="372490531"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="975951072"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="735518854"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">7</int>
<reference key="object" ref="277101892"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">10</int>
<reference key="object" ref="424323441"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">11</int>
<reference key="object" ref="103738224"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">9</int>
<reference key="object" ref="531112737"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">18</int>
<reference key="object" ref="348956784"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">19</int>
<reference key="object" ref="895403608"/>
<reference key="parent" ref="191373211"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>1.IBEditorWindowLastContentRect</string>
<string>1.IBPluginDependency</string>
<string>10.IBPluginDependency</string>
<string>10.IBViewBoundsToFrameTransform</string>
<string>11.CustomClassName</string>
<string>11.IBPluginDependency</string>
<string>11.IBViewBoundsToFrameTransform</string>
<string>18.IBPluginDependency</string>
<string>19.IBPluginDependency</string>
<string>4.CustomClassName</string>
<string>4.IBPluginDependency</string>
<string>4.IBViewBoundsToFrameTransform</string>
<string>7.IBPluginDependency</string>
<string>7.IBViewBoundsToFrameTransform</string>
<string>9.IBPluginDependency</string>
<string>9.IBViewBoundsToFrameTransform</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>LegalViewController</string>
<string>UIResponder</string>
<string>{{369, 805}, {480, 320}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABChgAAw5EAAA</bytes>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABChgAAw4SAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABDLQAAwpQAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAAAAAAAAw58AAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUDAAABDbwAAA</bytes>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">19</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">LegalViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">back:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">back:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">back:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">LegalViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIFontLabel</string>
<string key="superclassName">UILabel</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">UIFontLabel.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="419848074">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIButton</string>
<string key="superclassName">UIControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIControl</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIControl.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIImageView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIImageView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UILabel</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UILabel.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="419848074"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchDisplayController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="1056" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">wolf3d.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back_arrow.png</string>
<string>button_highlight.png</string>
<string>credits_bg.png</string>
<string>settings_divider.png</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{65, 63}</string>
<string>{4, 4}</string>
<string>{960, 640}</string>
<string>{597, 13}</string>
</object>
</object>
<string key="IBCocoaTouchPluginVersion">141</string>
</data>
</archive>

View File

@@ -0,0 +1,32 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <UIKit/UIKit.h>
@interface LegalViewController : UIViewController {
}
- (IBAction)back:(id)sender;
@end

View File

@@ -0,0 +1,82 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import "LegalViewController.h"
@implementation LegalViewController
// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
/*
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization.
}
return self;
}
*/
/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/
/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
}
*/
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations.
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc. that aren't in use.
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
- (IBAction)back:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
@end

View File

@@ -0,0 +1,976 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1056</int>
<string key="IBDocument.SystemVersion">10K549</string>
<string key="IBDocument.InterfaceBuilderVersion">851</string>
<string key="IBDocument.AppKitVersion">1038.36</string>
<string key="IBDocument.HIToolboxVersion">461.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">141</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="13"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBProxyObject" id="975951072">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="191373211">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIImageView" id="945071814">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{480, 320}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">1</int>
<bool key="IBUIMultipleTouchEnabled">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">episode_bg.png</string>
</object>
</object>
<object class="IBUIImageView" id="589942973">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{32, 260}, {32, 32}}</string>
<reference key="NSSuperview" ref="191373211"/>
<int key="IBUIContentMode">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">back_arrow.png</string>
</object>
</object>
<object class="IBUIImageView" id="628212498">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{421, 260}, {32, 32}}</string>
<reference key="NSSuperview" ref="191373211"/>
<int key="IBUIContentMode">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">next_arrow.png</string>
</object>
</object>
<object class="IBUILabel" id="759319438">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{31, 237}, {66, 29}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">BACK</string>
<object class="NSFont" key="IBUIFont" id="885212136">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">18</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor" id="542962638">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<reference key="IBUIHighlightedColor" ref="542962638"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUILineBreakMode">5</int>
</object>
<object class="IBUILabel" id="299911581">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{420, 237}, {66, 29}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">PLAY</string>
<reference key="IBUIFont" ref="885212136"/>
<reference key="IBUITextColor" ref="542962638"/>
<reference key="IBUIHighlightedColor" ref="542962638"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUILineBreakMode">5</int>
</object>
<object class="IBUILabel" id="947093628">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{92, 13}, {102, 29}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<string key="IBUIText">MISSION</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">24</double>
<int key="NSfFlags">16</int>
</object>
<reference key="IBUITextColor" ref="542962638"/>
<reference key="IBUIHighlightedColor" ref="542962638"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
</object>
<object class="IBUIButton" id="601718919">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">301</int>
<string key="NSFrame">{{23, 238}, {52, 56}}</string>
<reference key="NSSuperview" ref="191373211"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2NjY3IDAAA</bytes>
</object>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<object class="NSFont" key="IBUIFont" id="791234453">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
<reference key="IBUIHighlightedTitleColor" ref="542962638"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleShadowColor" id="818219289">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="647109756">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">button_highlight.png</string>
</object>
</object>
<object class="IBUIButton" id="468966130">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">301</int>
<string key="NSFrame">{{412, 238}, {52, 56}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIFont" ref="791234453"/>
<reference key="IBUIHighlightedTitleColor" ref="542962638"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="818219289"/>
<reference key="IBUIHighlightedBackgroundImage" ref="647109756"/>
</object>
<object class="IBUITableView" id="337668700">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{92, 42}, {297, 246}}</string>
<reference key="NSSuperview" ref="191373211"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwAA</bytes>
</object>
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIAlwaysBounceVertical">YES</bool>
<bool key="IBUIShowsHorizontalScrollIndicator">NO</bool>
<int key="IBUIIndicatorStyle">2</int>
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
<bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
<float key="IBUIRowHeight">38</float>
</object>
<object class="IBUIButton" id="954375875">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{217, 296}, {46, 24}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIFont" ref="791234453"/>
<reference key="IBUIHighlightedTitleColor" ref="542962638"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="818219289"/>
<reference key="IBUIHighlightedBackgroundImage" ref="647109756"/>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">down_arrow.png</string>
</object>
</object>
<object class="IBUIButton" id="986434937">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{217, 8}, {46, 24}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIFont" ref="791234453"/>
<reference key="IBUIHighlightedTitleColor" ref="542962638"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="818219289"/>
<reference key="IBUIHighlightedBackgroundImage" ref="647109756"/>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">up_arrow.png</string>
</object>
</object>
</object>
<string key="NSFrameSize">{480, 320}</string>
<reference key="NSSuperview"/>
<reference key="IBUIBackgroundColor" ref="542962638"/>
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
<int key="interfaceOrientation">3</int>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="191373211"/>
</object>
<int key="connectionID">4</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">next:</string>
<reference key="source" ref="468966130"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">24</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">back:</string>
<reference key="source" ref="601718919"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">25</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">dataSource</string>
<reference key="source" ref="337668700"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">35</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="337668700"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">36</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">missionList</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="337668700"/>
</object>
<int key="connectionID">37</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">pageDown:</string>
<reference key="source" ref="954375875"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">56</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">pageUp:</string>
<reference key="source" ref="986434937"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">57</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="191373211"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="945071814"/>
<reference ref="759319438"/>
<reference ref="947093628"/>
<reference ref="299911581"/>
<reference ref="589942973"/>
<reference ref="628212498"/>
<reference ref="337668700"/>
<reference ref="954375875"/>
<reference ref="986434937"/>
<reference ref="601718919"/>
<reference ref="468966130"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="372490531"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="975951072"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">13</int>
<reference key="object" ref="945071814"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">14</int>
<reference key="object" ref="759319438"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">15</int>
<reference key="object" ref="947093628"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">16</int>
<reference key="object" ref="299911581"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">20</int>
<reference key="object" ref="601718919"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">21</int>
<reference key="object" ref="589942973"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">22</int>
<reference key="object" ref="468966130"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">23</int>
<reference key="object" ref="628212498"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">34</int>
<reference key="object" ref="337668700"/>
<reference key="parent" ref="191373211"/>
<string key="objectName">Mission List</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">54</int>
<reference key="object" ref="954375875"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">55</int>
<reference key="object" ref="986434937"/>
<reference key="parent" ref="191373211"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>1.IBEditorWindowLastContentRect</string>
<string>1.IBPluginDependency</string>
<string>1.IBUserGuides</string>
<string>14.CustomClassName</string>
<string>14.IBPluginDependency</string>
<string>14.IBViewBoundsToFrameTransform</string>
<string>15.CustomClassName</string>
<string>15.IBPluginDependency</string>
<string>15.IBViewBoundsToFrameTransform</string>
<string>16.CustomClassName</string>
<string>16.IBPluginDependency</string>
<string>16.IBViewBoundsToFrameTransform</string>
<string>20.IBPluginDependency</string>
<string>20.IBViewBoundsToFrameTransform</string>
<string>21.IBPluginDependency</string>
<string>21.IBViewBoundsToFrameTransform</string>
<string>22.IBPluginDependency</string>
<string>22.IBViewBoundsToFrameTransform</string>
<string>23.IBPluginDependency</string>
<string>23.IBViewBoundsToFrameTransform</string>
<string>34.IBPluginDependency</string>
<string>54.IBPluginDependency</string>
<string>54.IBViewBoundsToFrameTransform</string>
<string>55.IBPluginDependency</string>
<string>55.IBViewBoundsToFrameTransform</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>LevelSelectViewController</string>
<string>UIResponder</string>
<string>{{299, 832}, {480, 320}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSMutableArray">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUIEAABDbQAAA</bytes>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUK4AABBUAAAA</bytes>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABCuAAAw4QAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABBuAAAw5GAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUIUAABDg4AAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABDzgAAw5GAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUPSgABDg4AAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUNhAABDmAAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUNhAABBgAAAA</bytes>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">57</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">LevelSelectViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back:</string>
<string>next:</string>
<string>pageDown:</string>
<string>pageUp:</string>
<string>selectDifficulty1:</string>
<string>selectDifficulty2:</string>
<string>selectDifficulty3:</string>
<string>selectDifficulty4:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back:</string>
<string>next:</string>
<string>pageDown:</string>
<string>pageUp:</string>
<string>selectDifficulty1:</string>
<string>selectDifficulty2:</string>
<string>selectDifficulty3:</string>
<string>selectDifficulty4:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">back:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">next:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">pageDown:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">pageUp:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">selectDifficulty1:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">selectDifficulty2:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">selectDifficulty3:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">selectDifficulty4:</string>
<string key="candidateClassName">id</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>difficultyBox</string>
<string>difficultyText1</string>
<string>difficultyText2</string>
<string>difficultyText3</string>
<string>difficultyText4</string>
<string>missionList</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UIView</string>
<string>UIView</string>
<string>UIView</string>
<string>UIView</string>
<string>UIView</string>
<string>UITableView</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>difficultyBox</string>
<string>difficultyText1</string>
<string>difficultyText2</string>
<string>difficultyText3</string>
<string>difficultyText4</string>
<string>missionList</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">difficultyBox</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">difficultyText1</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">difficultyText2</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">difficultyText3</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">difficultyText4</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">missionList</string>
<string key="candidateClassName">UITableView</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">LevelSelectViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIFontLabel</string>
<string key="superclassName">UILabel</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">UIFontLabel.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="911635486">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIButton</string>
<string key="superclassName">UIControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIControl</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIControl.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIImageView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIImageView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UILabel</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UILabel.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="911635486"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIScrollView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchDisplayController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UITableView</string>
<string key="superclassName">UIScrollView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="1056" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">wolf3d.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back_arrow.png</string>
<string>button_highlight.png</string>
<string>down_arrow.png</string>
<string>episode_bg.png</string>
<string>next_arrow.png</string>
<string>up_arrow.png</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{65, 63}</string>
<string>{4, 4}</string>
<string>{80, 36}</string>
<string>{480, 320}</string>
<string>{65, 63}</string>
<string>{80, 36}</string>
</object>
</object>
<string key="IBCocoaTouchPluginVersion">141</string>
</data>
</archive>

View File

@@ -0,0 +1,49 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <UIKit/UIKit.h>
// This object manages the level selection screen. The actual level objects are presented in
// a UITableView, so this controller adopts the protocols for being the delegate and data source
// for the table.
@interface LevelSelectViewController :
UIViewController <UITableViewDelegate, UITableViewDataSource> {
@private
IBOutlet UITableView *missionList;
int realEpisode;
int realMap;
}
- (IBAction)back:(id)sender;
- (IBAction)next:(id)sender;
- (void)handleSelectionAtIndexPath:(NSIndexPath*)indexPath;
- (IBAction)pageUp:(id)sender;
- (IBAction)pageDown:(id)sender;
@end

View File

@@ -0,0 +1,314 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import "LevelSelectViewController.h"
#import "wolf3dAppDelegate.h"
#import "wolfiphone.h"
#import "MissionTableViewCell.h"
#import "UITableViewScrolling.h"
#define NUM_ORIGINAL_EPISODES 6
#define NUM_SPEAR_EPISODES 4
#define MAX_SPEAR_MAPS_PER_EPISODE 7
extern int returnButtonFrameNum;
static int numLevelsTable[] = {
10, 10, 10, 10, 10, 10, // All six classic episodes have 10 levels
// Spear of Destiny episodes
6, // Tunnels
5, // Dungeon
7, // Castle
3 }; // Ramparts
// Private properties and methods
@interface LevelSelectViewController ()
@property (nonatomic, retain) UITableView *missionList;
@end
@implementation LevelSelectViewController
@synthesize missionList;
// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
/*
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization.
}
return self;
}
*/
/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
[self.missionList reloadData];
// Select the first row by default
int levelToSelect = 0;
if ( (int)episode->value == currentMap.episode ) {
levelToSelect = currentMap.map;
}
NSIndexPath *ip=[NSIndexPath indexPathForRow:levelToSelect inSection:0];
[self.missionList selectRowAtIndexPath:ip animated:YES scrollPosition:UITableViewScrollPositionNone];
[self handleSelectionAtIndexPath:ip];
}
/*
========================
UITableView interface
========================
*/
- (void)handleSelectionAtIndexPath:(NSIndexPath*)indexPath {
int episodeIndex = episode->value;
int levelIndex = indexPath.row;
// Prompt for In-App Purchase when the user selects a level that is not currently available.
if ( SysIPhoneGetContentVersion() == CONTENT_LITE ) {
if ( levelIndex >= 3 ) {
iphonePromptToBuyPlatinum();
return;
}
}
realEpisode = episodeIndex;
realMap = levelIndex;
if ( episodeIndex >= NUM_ORIGINAL_EPISODES ) {
switch (episodeIndex)
{
case 6:
if (levelIndex == 5) {
realEpisode = 7;
realMap = 8;
}
break;
case 7:
realEpisode = 6;
realMap += 5;
break;
case 8:
realEpisode = 7;
if (levelIndex == 6)
realMap = 9;
break;
case 9:
if ( levelIndex == 0) { realEpisode = 7; realMap = 6; }
if ( levelIndex == 1) { realEpisode = 7; realMap = 7; }
if ( levelIndex == 2) { realEpisode = 8; realMap = 0; }
break;
default:
break;
}
}
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of levels based on the episode
int episodeIndex = episode->value;
return numLevelsTable[ episodeIndex ];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"MyIdentifier";
MissionTableViewCell *cell = (MissionTableViewCell*)[self.missionList dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[MissionTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
}
// Cell configuration
cell.selectionStyle = UITableViewCellSelectionStyleNone;
// Cell text configuration
NSString* levelName = [NSString stringWithFormat:@"Level %d", indexPath.row + 1 ];
int episodeIndex = episode->value;
int levelIndex = indexPath.row;
if ( episodeIndex < NUM_ORIGINAL_EPISODES ) {
// Wolfenstein episodes are the first six, and they all follow the pattern of 8 levels,
// one boss level, and one secret level.
if ( levelIndex == 8 ) {
levelName = @"Boss";
} else if ( levelIndex == 9 ) {
levelName = @"Secret";
}
} else {
// These are the Spear of Destiny levels.
// Level name lookup
static const char* const spearLevelNameTable[ NUM_SPEAR_EPISODES ][ MAX_SPEAR_MAPS_PER_EPISODE ] = {
{ "Level 1", "Level 2", "Level 3", "Level 4", "Boss", "Secret", NULL },
{ "Level 1", "Level 2", "Level 3", "Level 4", "Boss", NULL, NULL },
{ "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Boss", "Secret" },
{ "Ramparts", "Death Knight", "Dungeon Dimension", NULL, NULL, NULL, NULL } };
const char * spearLevelName = "";
int spearEpisode = episodeIndex - NUM_ORIGINAL_EPISODES;
if ( 0 <= spearEpisode && spearEpisode < NUM_SPEAR_EPISODES ) {
spearLevelName = spearLevelNameTable[ spearEpisode ][ levelIndex ];
}
levelName = [NSString stringWithCString:spearLevelName encoding:NSASCIIStringEncoding ];
}
cell.textLabel.text = levelName;
cell.textLabel.textColor = [UIColor lightGrayColor];
cell.textLabel.highlightedTextColor = [UIColor colorWithRed:98.0/255.0 green:149.0/255.0 blue:212.0/255.0 alpha:1.0];
return cell;
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath {
int fontSize = 32;
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ) {
fontSize = 48;
}
cell.textLabel.font = [UIFont fontWithName:@"POSITYPE idSettler v10.2"
size:fontSize];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self handleSelectionAtIndexPath:indexPath];
}
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations.
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc. that aren't in use.
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
self.missionList = nil;
}
- (void)dealloc {
[super dealloc];
}
- (IBAction)next:(id)sender {
int levelNum = realEpisode*10+realMap;
int ch = currentMap.mapFlags[ (int)skill->value ][levelNum];
// don't let them go to the secret level unless they earned it
if ( (int)episode->value >= NUM_ORIGINAL_EPISODES ) {
if ( (levelNum == 78 || levelNum == 79) && !( ch & MF_TRIED ) ) {
return;
}
} else {
if ( realMap == 9 && !( ch & MF_TRIED ) ) {
return;
}
}
wolf3dAppDelegate* app = (wolf3dAppDelegate*)[[UIApplication sharedApplication] delegate];
[app stopMenuMusic];
[app showOpenGL];
PL_NewGame( &Player );
iphonePreloadBeforePlay();
int clampedSkill = skill->value;
if ( clampedSkill < 0 ) {
clampedSkill = 0;
}
if ( clampedSkill > 3 ) {
clampedSkill = 3;
}
iphoneStartMap( realEpisode, realMap, clampedSkill );
iphoneFrameNum = 0;
returnButtonFrameNum = 100;
Sound_StartBGTrack( levelData.musicName, levelData.musicName);
}
- (IBAction)back:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
- (IBAction)pageDown:(id)sender {
UITableViewScrollingPageDown( self.missionList, numLevelsTable[(int)episode->value] );
}
- (IBAction)pageUp:(id)sender {
UITableViewScrollingPageUp( self.missionList, numLevelsTable[(int)episode->value] );
}
@end

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,67 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <UIKit/UIKit.h>
@interface MainMenuViewController : UIViewController {
@private
// Main menu
IBOutlet UIButton *resumeButton;
IBOutlet UIButton *newGameButton;
IBOutlet UIButton *settingsButton;
IBOutlet UIButton *aboutButton;
IBOutlet UIButton *extrasButton;
IBOutlet UIView* resumeStar;
// About menu
IBOutlet UIButton *creditsButton;
IBOutlet UIButton *legalButton;
// Extras menu
IBOutlet UIButton *idGamesButton;
IBOutlet UIButton *idSoftwareButton;
IBOutlet UIButton *triviaButton;
// Shared
IBOutlet UIButton *backButton;
}
- (IBAction)resume:(id)sender;
- (IBAction)newGame:(id)sender;
- (IBAction)settings:(id)sender;
- (IBAction)about:(id)sender;
- (IBAction)extras:(id)sender;
- (IBAction)credits:(id)sender;
- (IBAction)legal:(id)sender;
- (IBAction)back:(id)sender;
- (IBAction)idGames:(id)sender;
- (IBAction)idSoftware:(id)sender;
- (IBAction)trivia:(id)sender;
- (IBAction)oldNewGame:(id)sender;
@end

View File

@@ -0,0 +1,192 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import "MainMenuViewController.h"
#import "wolf3dAppDelegate.h"
#import "wolfiphone.h"
#import "SkillViewController.h"
#import "CreditsViewController.h"
#import "LegalViewController.h"
#import "TriviaViewController.h"
#import "SettingsViewController.h"
@interface MainMenuViewController ()
@property (nonatomic, retain) IBOutlet UIButton *resumeButton;
@property (nonatomic, retain) IBOutlet UIButton *newGameButton;
@property (nonatomic, retain) IBOutlet UIButton *settingsButton;
@property (nonatomic, retain) IBOutlet UIButton *aboutButton;
@property (nonatomic, retain) IBOutlet UIButton *extrasButton;
@property (nonatomic, retain) IBOutlet UIView *resumeStar;
@property (nonatomic, retain) IBOutlet UIButton *creditsButton;
@property (nonatomic, retain) IBOutlet UIButton *legalButton;
@property (nonatomic, retain) IBOutlet UIButton *idGamesButton;
@property (nonatomic, retain) IBOutlet UIButton *idSoftwareButton;
@property (nonatomic, retain) IBOutlet UIButton *triviaButton;
@property (nonatomic, retain) IBOutlet UIButton *backButton;
- (void) setMainHidden:(BOOL)hide;
- (void) setAboutHidden:(BOOL)hide;
- (void) setExtrasHidden:(BOOL)hide;
@end
@implementation MainMenuViewController
@synthesize resumeButton, newGameButton, settingsButton, aboutButton, extrasButton, resumeStar;
@synthesize creditsButton, legalButton;
@synthesize idGamesButton, idSoftwareButton, triviaButton;
@synthesize backButton;
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
self.resumeButton = nil;
self.newGameButton = nil;
self.settingsButton = nil;
self.aboutButton = nil;
self.extrasButton = nil;
self.resumeStar = nil;
self.idGamesButton = nil;
self.idSoftwareButton = nil;
self.triviaButton = nil;
self.creditsButton = nil;
self.legalButton = nil;
self.backButton = nil;
}
- (IBAction)resume:(id)sender {
wolf3dAppDelegate* app = (wolf3dAppDelegate*)[[UIApplication sharedApplication] delegate];
[app showOpenGL];
iphoneResume();
}
- (IBAction)newGame:(id)sender {
SkillViewController *svc = [[SkillViewController alloc] initWithNibName:@"SkillView" bundle:nil];
[self.navigationController pushViewController:svc animated:YES];
[svc release];
}
- (IBAction)settings:(id)sender {
SettingsViewController *evc = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];
[self.navigationController pushViewController:evc animated:YES];
[evc release];
}
- (IBAction)about:(id)sender {
[self setMainHidden:YES];
[self setAboutHidden:NO];
}
- (IBAction)extras:(id)sender {
[self setMainHidden:YES];
[self setExtrasHidden:NO];
}
- (IBAction)credits:(id)sender {
CreditsViewController *cvc = [[CreditsViewController alloc] initWithNibName:@"CreditsView" bundle:nil];
[self.navigationController pushViewController:cvc animated:YES];
[cvc release];
}
- (IBAction)legal:(id)sender {
LegalViewController *lvc = [[LegalViewController alloc] initWithNibName:@"LegalView" bundle:nil];
[self.navigationController pushViewController:lvc animated:YES];
[lvc release];
}
- (IBAction)idGames:(id)sender {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.com/apps/idsoftware"]];
}
- (IBAction)idSoftware:(id)sender {
currentYesNoBox = YESNO_GO_TO_WEBSITE;
iphoneYesNoBox("Website", "This will navigate you to idsoftware.com. Continue?");
}
- (IBAction)trivia:(id)sender {
TriviaViewController *tvc = [[TriviaViewController alloc] initWithNibName:@"TriviaView" bundle:nil];
[self.navigationController pushViewController:tvc animated:YES];
[tvc release];
//menuState = IPM_TRIVIA;
//wolf3dAppDelegate* app = (wolf3dAppDelegate*)[[UIApplication sharedApplication] delegate];
//[app showOpenGL];
}
- (IBAction)back:(id)sender {
[self setAboutHidden:YES];
[self setExtrasHidden:YES];
[self setMainHidden:NO];
}
- (void)setMainHidden:(BOOL)hide {
// Set the main menu visibility
[self.resumeButton setHidden:hide];
[self.newGameButton setHidden:hide];
[self.settingsButton setHidden:hide];
[self.aboutButton setHidden:hide];
[self.extrasButton setHidden:hide];
[self.resumeStar setHidden:hide];
}
- (void)setAboutHidden:(BOOL)hide {
// Set the about menu visibility
[self.creditsButton setHidden:hide];
[self.legalButton setHidden:hide];
[self.backButton setHidden:hide];
}
- (void)setExtrasHidden:(BOOL)hide {
// Set the extras menu visibility
[self.idGamesButton setHidden:hide];
[self.idSoftwareButton setHidden:hide];
[self.triviaButton setHidden:hide];
[self.backButton setHidden:hide];
}
// REMOVE WHEN NEW MENU IS READY
- (IBAction)oldNewGame:(id)sender {
menuState = IPM_SKILL;
wolf3dAppDelegate* app = (wolf3dAppDelegate*)[[UIApplication sharedApplication] delegate];
[app showOpenGL];
}
@end

View File

@@ -0,0 +1,31 @@
/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <UIKit/UIKit.h>
@interface MissionTableViewCell : UITableViewCell {
}
@end

View File

@@ -0,0 +1,59 @@
/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import "MissionTableViewCell.h"
@implementation MissionTableViewCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code.
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state.
if ( selected ) {
self.textLabel.highlighted = YES;
} else {
self.textLabel.highlighted = NO;
}
[self setNeedsDisplay];
}
- (void)dealloc {
[super dealloc];
}
@end

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,678 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1056</int>
<string key="IBDocument.SystemVersion">10K549</string>
<string key="IBDocument.InterfaceBuilderVersion">851</string>
<string key="IBDocument.AppKitVersion">1038.36</string>
<string key="IBDocument.HIToolboxVersion">461.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">141</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="2"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="841351856">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
<object class="IBProxyObject" id="606714003">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
<object class="IBUITableViewCell" id="610104207">
<reference key="NSNextResponder"/>
<int key="NSvFlags">1298</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIView" id="946422459">
<reference key="NSNextResponder" ref="610104207"/>
<int key="NSvFlags">1280</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIImageView" id="525193574">
<reference key="NSNextResponder" ref="946422459"/>
<int key="NSvFlags">-2147482332</int>
<string key="NSFrame">{{1, 5}, {610, 180}}</string>
<reference key="NSSuperview" ref="946422459"/>
<int key="IBUITag">3</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<float key="IBUIScaleFactor">1</float>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">highlight_bracket.png</string>
</object>
</object>
<object class="IBUIImageView" id="40397874">
<reference key="NSNextResponder" ref="946422459"/>
<int key="NSvFlags">1316</int>
<string key="NSFrame">{{6, 13}, {598, 163}}</string>
<reference key="NSSuperview" ref="946422459"/>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<float key="IBUIScaleFactor">1</float>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">episode_bracket.png</string>
</object>
</object>
<object class="IBUIImageView" id="285959975">
<reference key="NSNextResponder" ref="946422459"/>
<int key="NSvFlags">1316</int>
<string key="NSFrame">{{13, 61}, {387, 3}}</string>
<reference key="NSSuperview" ref="946422459"/>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<float key="IBUIScaleFactor">1</float>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">episode_divider.png</string>
</object>
</object>
<object class="IBUILabel" id="742621351">
<reference key="NSNextResponder" ref="946422459"/>
<int key="NSvFlags">1316</int>
<string key="NSFrame">{{18, 24}, {586, 52}}</string>
<reference key="NSSuperview" ref="946422459"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<int key="IBUITag">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<float key="IBUIScaleFactor">1</float>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<string key="IBUIText">Episode Number</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">44</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
<object class="NSColor" key="IBUIHighlightedColor" id="911926565">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC4zMzMzMzMzMzMzAA</bytes>
</object>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
</object>
<object class="IBUILabel" id="617790695">
<reference key="NSNextResponder" ref="946422459"/>
<int key="NSvFlags">1316</int>
<string key="NSFrame">{{17, 67}, {586, 75}}</string>
<reference key="NSSuperview" ref="946422459"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">9</int>
<int key="IBUITag">2</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<float key="IBUIScaleFactor">1</float>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<string key="IBUIText">Episode Name</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">64</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<reference key="IBUIHighlightedColor" ref="911926565"/>
<int key="IBUIBaselineAdjustment">1</int>
<bool key="IBUIAdjustsFontSizeToFit">NO</bool>
<float key="IBUIMinimumFontSize">10</float>
</object>
</object>
<string key="NSFrameSize">{618, 189}</string>
<reference key="NSSuperview" ref="610104207"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwAA</bytes>
</object>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">4</int>
<bool key="IBUIMultipleTouchEnabled">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</object>
<string key="NSFrameSize">{618, 189}</string>
<reference key="NSSuperview"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAxIDEAA</bytes>
</object>
<float key="IBUIScaleFactor">1</float>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<int key="IBUISeparatorStyle">1</int>
<reference key="IBUIContentView" ref="946422459"/>
<int key="IBUILineBreakMode">0</int>
<string key="IBUIReuseIdentifier">MyIdentifier</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">episodeCell</string>
<reference key="source" ref="841351856"/>
<reference key="destination" ref="610104207"/>
</object>
<int key="connectionID">7</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="841351856"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="606714003"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2</int>
<reference key="object" ref="610104207"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="742621351"/>
<reference ref="617790695"/>
<reference ref="40397874"/>
<reference ref="285959975"/>
<reference ref="525193574"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">3</int>
<reference key="object" ref="742621351"/>
<reference key="parent" ref="610104207"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="617790695"/>
<reference key="parent" ref="610104207"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">8</int>
<reference key="object" ref="285959975"/>
<reference key="parent" ref="610104207"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">9</int>
<reference key="object" ref="40397874"/>
<reference key="parent" ref="610104207"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">11</int>
<reference key="object" ref="525193574"/>
<reference key="parent" ref="610104207"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>11.IBPluginDependency</string>
<string>11.IBViewBoundsToFrameTransform</string>
<string>2.IBEditorWindowLastContentRect</string>
<string>2.IBPluginDependency</string>
<string>3.CustomClassName</string>
<string>3.IBPluginDependency</string>
<string>3.IBViewBoundsToFrameTransform</string>
<string>4.CustomClassName</string>
<string>4.IBPluginDependency</string>
<string>4.IBViewBoundsToFrameTransform</string>
<string>8.IBPluginDependency</string>
<string>8.IBViewBoundsToFrameTransform</string>
<string>9.IBPluginDependency</string>
<string>9.IBViewBoundsToFrameTransform</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>EpisodeViewController</string>
<string>UIResponder</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AQAAAABAAAAAA</bytes>
</object>
<string>{{415, 957}, {618, 189}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABCsAAAwjQAAA</bytes>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUDgAABCHAAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUJgAABCMAAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AQAAAABAoAAAA</bytes>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">11</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">EpisodeViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back:</string>
<string>next:</string>
<string>pageDown:</string>
<string>pageUp:</string>
<string>setEpisode:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back:</string>
<string>next:</string>
<string>pageDown:</string>
<string>pageUp:</string>
<string>setEpisode:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">back:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">next:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">pageDown:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">pageUp:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">setEpisode:</string>
<string key="candidateClassName">id</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>episodeCell</string>
<string>episodeList</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UITableViewCell</string>
<string>UITableView</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>episodeCell</string>
<string>episodeList</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">episodeCell</string>
<string key="candidateClassName">UITableViewCell</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">episodeList</string>
<string key="candidateClassName">UITableView</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">EpisodeViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIFontLabel</string>
<string key="superclassName">UILabel</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">UIFontLabel.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="6890943">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIImageView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIImageView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UILabel</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UILabel.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="6890943"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIScrollView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchDisplayController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UITableView</string>
<string key="superclassName">UIScrollView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UITableViewCell</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITableViewCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="1056" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../wolf3d.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>episode_bracket.png</string>
<string>episode_divider.png</string>
<string>highlight_bracket.png</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{606, 168}</string>
<string>{387, 3}</string>
<string>{623, 189}</string>
</object>
</object>
<string key="IBCocoaTouchPluginVersion">141</string>
</data>
</archive>

View File

@@ -0,0 +1,938 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1056</int>
<string key="IBDocument.SystemVersion">10K549</string>
<string key="IBDocument.InterfaceBuilderVersion">851</string>
<string key="IBDocument.AppKitVersion">1038.36</string>
<string key="IBDocument.HIToolboxVersion">461.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">141</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="28"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
<object class="IBProxyObject" id="975951072">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
<object class="IBUIView" id="191373211">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIImageView" id="438564867">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrameSize">{1024, 768}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIMultipleTouchEnabled">YES</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">episode_bg.png</string>
</object>
</object>
<object class="IBUIImageView" id="122204725">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{68, 87}, {63, 65}}</string>
<reference key="NSSuperview" ref="191373211"/>
<int key="IBUIContentMode">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">back_arrow.png</string>
</object>
</object>
<object class="IBUILabel" id="1052909798">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{66, 58}, {99, 43}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<string key="IBUIText">BACK</string>
<object class="NSFont" key="IBUIFont" id="1027068732">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">36</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor" id="256070585">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<reference key="IBUIHighlightedColor" ref="256070585"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUILineBreakMode">5</int>
</object>
<object class="IBUIImageView" id="432258777">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{899, 87}, {63, 65}}</string>
<reference key="NSSuperview" ref="191373211"/>
<int key="IBUIContentMode">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">next_arrow.png</string>
</object>
</object>
<object class="IBUILabel" id="500080337">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{897, 58}, {99, 43}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<string key="IBUIText">NEXT</string>
<reference key="IBUIFont" ref="1027068732"/>
<reference key="IBUITextColor" ref="256070585"/>
<reference key="IBUIHighlightedColor" ref="256070585"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUILineBreakMode">5</int>
</object>
<object class="IBUILabel" id="670859964">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{191, 47}, {214, 57}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<string key="IBUIText">EPISODE</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">48</double>
<int key="NSfFlags">16</int>
</object>
<reference key="IBUITextColor" ref="256070585"/>
<reference key="IBUIHighlightedColor" ref="256070585"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUILineBreakMode">5</int>
</object>
<object class="IBUITableView" id="283960237">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{205, 104}, {625, 577}}</string>
<reference key="NSSuperview" ref="191373211"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwAA</bytes>
</object>
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<bool key="IBUIAlwaysBounceVertical">YES</bool>
<bool key="IBUIShowsHorizontalScrollIndicator">NO</bool>
<int key="IBUIIndicatorStyle">2</int>
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
<bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
<float key="IBUIRowHeight">189</float>
</object>
<object class="IBUIButton" id="905085223">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{63, 49}, {73, 105}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<object class="NSFont" key="IBUIFont" id="398370538">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
<reference key="IBUIHighlightedTitleColor" ref="256070585"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleShadowColor" id="501903479">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="223274725">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">button_highlight.png</string>
</object>
</object>
<object class="IBUIButton" id="618766876">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{893, 50}, {73, 105}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIFont" ref="398370538"/>
<reference key="IBUIHighlightedTitleColor" ref="256070585"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="501903479"/>
<reference key="IBUIHighlightedBackgroundImage" ref="223274725"/>
</object>
<object class="IBUIButton" id="600720080">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{478, 715}, {80, 36}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIFont" ref="398370538"/>
<reference key="IBUIHighlightedTitleColor" ref="256070585"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="501903479"/>
<reference key="IBUIHighlightedBackgroundImage" ref="223274725"/>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">down_arrow.png</string>
</object>
</object>
<object class="IBUIButton" id="370427313">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{478, 37}, {80, 36}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIFont" ref="398370538"/>
<reference key="IBUIHighlightedTitleColor" ref="256070585"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="501903479"/>
<reference key="IBUIHighlightedBackgroundImage" ref="223274725"/>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">up_arrow.png</string>
</object>
</object>
</object>
<string key="NSFrameSize">{1024, 768}</string>
<reference key="NSSuperview"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MCAwIDAAA</bytes>
</object>
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
<int key="interfaceOrientation">3</int>
</object>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="191373211"/>
</object>
<int key="connectionID">13</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">back:</string>
<reference key="source" ref="905085223"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">36</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">dataSource</string>
<reference key="source" ref="283960237"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">51</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="283960237"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">52</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">episodeList</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="283960237"/>
</object>
<int key="connectionID">53</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">pageUp:</string>
<reference key="source" ref="370427313"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">54</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">pageDown:</string>
<reference key="source" ref="600720080"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">55</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">next:</string>
<reference key="source" ref="618766876"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">58</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="191373211"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="122204725"/>
<reference ref="1052909798"/>
<reference ref="670859964"/>
<reference ref="283960237"/>
<reference ref="370427313"/>
<reference ref="600720080"/>
<reference ref="432258777"/>
<reference ref="500080337"/>
<reference ref="438564867"/>
<reference ref="618766876"/>
<reference ref="905085223"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="372490531"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="975951072"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">28</int>
<reference key="object" ref="438564867"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">31</int>
<reference key="object" ref="1052909798"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">32</int>
<reference key="object" ref="670859964"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">33</int>
<reference key="object" ref="905085223"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">35</int>
<reference key="object" ref="122204725"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">48</int>
<reference key="object" ref="600720080"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">49</int>
<reference key="object" ref="370427313"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">50</int>
<reference key="object" ref="283960237"/>
<reference key="parent" ref="191373211"/>
<string key="objectName">Episode List</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">56</int>
<reference key="object" ref="618766876"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">59</int>
<reference key="object" ref="432258777"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">60</int>
<reference key="object" ref="500080337"/>
<reference key="parent" ref="191373211"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>1.IBEditorWindowLastContentRect</string>
<string>1.IBPluginDependency</string>
<string>28.IBViewBoundsToFrameTransform</string>
<string>31.CustomClassName</string>
<string>31.IBPluginDependency</string>
<string>31.IBViewBoundsToFrameTransform</string>
<string>32.CustomClassName</string>
<string>32.IBPluginDependency</string>
<string>32.IBViewBoundsToFrameTransform</string>
<string>33.IBPluginDependency</string>
<string>33.IBViewBoundsToFrameTransform</string>
<string>35.IBPluginDependency</string>
<string>35.IBViewBoundsToFrameTransform</string>
<string>48.IBPluginDependency</string>
<string>48.IBViewBoundsToFrameTransform</string>
<string>49.IBPluginDependency</string>
<string>49.IBViewBoundsToFrameTransform</string>
<string>50.IBPluginDependency</string>
<string>50.IBViewBoundsToFrameTransform</string>
<string>56.IBPluginDependency</string>
<string>56.IBViewBoundsToFrameTransform</string>
<string>59.IBPluginDependency</string>
<string>59.IBViewBoundsToFrameTransform</string>
<string>60.CustomClassName</string>
<string>60.IBPluginDependency</string>
<string>60.IBViewBoundsToFrameTransform</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>EpisodeViewController</string>
<string>UIResponder</string>
<string>{{179, 382}, {1024, 768}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAAAAAAAAxD+AAA</bytes>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUKEAABCaAAAA</bytes>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABDtgAAw4QAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABCaAAAw56AAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUKIAABCrgAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABD+wAAw7GAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABD+wAAw7GAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUNNAABC4AAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABEX0AAw8eAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABCkgAAwxYAAA</bytes>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABCjgAAwsYAAA</bytes>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">60</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">EpisodeViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back:</string>
<string>next:</string>
<string>pageDown:</string>
<string>pageUp:</string>
<string>setEpisode:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back:</string>
<string>next:</string>
<string>pageDown:</string>
<string>pageUp:</string>
<string>setEpisode:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">back:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">next:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">pageDown:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">pageUp:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">setEpisode:</string>
<string key="candidateClassName">id</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>episodeCell</string>
<string>episodeList</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UITableViewCell</string>
<string>UITableView</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>episodeCell</string>
<string>episodeList</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">episodeCell</string>
<string key="candidateClassName">UITableViewCell</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">episodeList</string>
<string key="candidateClassName">UITableView</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">EpisodeViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIFontLabel</string>
<string key="superclassName">UILabel</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">UIFontLabel.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="517279992">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIButton</string>
<string key="superclassName">UIControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIControl</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIControl.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIImageView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIImageView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UILabel</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UILabel.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="517279992"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIScrollView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchDisplayController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UITableView</string>
<string key="superclassName">UIScrollView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UITableViewCell</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITableViewCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="1056" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../wolf3d.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back_arrow.png</string>
<string>button_highlight.png</string>
<string>down_arrow.png</string>
<string>episode_bg.png</string>
<string>next_arrow.png</string>
<string>up_arrow.png</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{65, 63}</string>
<string>{4, 4}</string>
<string>{80, 36}</string>
<string>{480, 320}</string>
<string>{65, 63}</string>
<string>{80, 36}</string>
</object>
</object>
<string key="IBCocoaTouchPluginVersion">141</string>
</data>
</archive>

View File

@@ -0,0 +1,639 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1056</int>
<string key="IBDocument.SystemVersion">10K549</string>
<string key="IBDocument.InterfaceBuilderVersion">851</string>
<string key="IBDocument.AppKitVersion">1038.36</string>
<string key="IBDocument.HIToolboxVersion">461.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">141</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="17"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
<object class="IBProxyObject" id="975951072">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
<object class="IBUIView" id="191373211">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIImageView" id="277101892">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrameSize">{1024, 768}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">credits_bg.png</string>
</object>
</object>
<object class="IBUIImageView" id="424323441">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{26, 45}, {63, 65}}</string>
<reference key="NSSuperview" ref="191373211"/>
<int key="IBUIContentMode">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">back_arrow.png</string>
</object>
</object>
<object class="IBUILabel" id="103738224">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{22.5, 15.5}, {99, 43}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<string key="IBUIText">BACK</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">36</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor" id="767789838">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<reference key="IBUIHighlightedColor" ref="767789838"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUILineBreakMode">5</int>
</object>
<object class="IBUIButton" id="531112737">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">301</int>
<string key="NSFrame">{{21, 10}, {75, 102}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
<reference key="IBUIHighlightedTitleColor" ref="767789838"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleShadowColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">button_highlight.png</string>
</object>
</object>
<object class="IBUILabel" id="530320248">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{396, -27}, {556, 510}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<string key="IBUIText">Wolfenstein® 3D Classic Platinum© 2009-2011 id Software LLC, a ZeniMax Media company. Wolfenstein, id, id Software, id Tech and related logos are registered trademarks or trademarks of id Software LLC in the U.S. and/or other countries. Bethesda, Bethesda Softworks, ZeniMax and related logos are registered trademarks or trademarks of ZeniMax Media Inc. in the U.S. and/or other countries. All Rights Reserved.</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">22</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAxIDEAA</bytes>
<object class="NSColorSpace" key="NSCustomColorSpace">
<int key="NSID">1</int>
</object>
</object>
<reference key="IBUIHighlightedColor" ref="767789838"/>
<object class="NSColor" key="IBUIShadowColor" id="845110471">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MCAwIDAAA</bytes>
</object>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUINumberOfLines">10</int>
<int key="IBUITextAlignment">1</int>
<int key="IBUILineBreakMode">0</int>
</object>
<object class="IBUILabel" id="735518854">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{607, 44}, {134, 54}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<string key="IBUIText">Legal</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">44</double>
<int key="NSfFlags">16</int>
</object>
<reference key="IBUITextColor" ref="767789838"/>
<reference key="IBUIHighlightedColor" ref="767789838"/>
<reference key="IBUIShadowColor" ref="845110471"/>
<string key="IBUIShadowOffset">{2, 2}</string>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUITextAlignment">1</int>
</object>
</object>
<string key="NSFrameSize">{1024, 768}</string>
<reference key="NSSuperview"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes>
</object>
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
<int key="interfaceOrientation">3</int>
</object>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="191373211"/>
</object>
<int key="connectionID">3</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">back:</string>
<reference key="source" ref="531112737"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">12</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="191373211"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="277101892"/>
<reference ref="424323441"/>
<reference ref="103738224"/>
<reference ref="531112737"/>
<reference ref="530320248"/>
<reference ref="735518854"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="372490531"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="975951072"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">7</int>
<reference key="object" ref="277101892"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">10</int>
<reference key="object" ref="424323441"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">11</int>
<reference key="object" ref="103738224"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">9</int>
<reference key="object" ref="531112737"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">17</int>
<reference key="object" ref="530320248"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="735518854"/>
<reference key="parent" ref="191373211"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>1.IBEditorWindowLastContentRect</string>
<string>1.IBPluginDependency</string>
<string>10.IBPluginDependency</string>
<string>10.IBViewBoundsToFrameTransform</string>
<string>11.CustomClassName</string>
<string>11.IBPluginDependency</string>
<string>11.IBViewBoundsToFrameTransform</string>
<string>17.IBPluginDependency</string>
<string>17.IBViewBoundsToFrameTransform</string>
<string>4.CustomClassName</string>
<string>4.IBPluginDependency</string>
<string>4.IBViewBoundsToFrameTransform</string>
<string>7.IBPluginDependency</string>
<string>7.IBViewBoundsToFrameTransform</string>
<string>9.IBPluginDependency</string>
<string>9.IBViewBoundsToFrameTransform</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>LegalViewController</string>
<string>UIResponder</string>
<string>{{140, 350}, {1024, 768}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABBoAAAw5OAAA</bytes>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABBoAAAw4cAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">AUPGAADBAAAAA</bytes>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABD3oAAw8wAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAAAAAAAAxD+AAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABCGAAAxCBAAA</bytes>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">17</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">LegalViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">back:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">back:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">back:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">LegalViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIFontLabel</string>
<string key="superclassName">UILabel</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">UIFontLabel.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="419848074">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIButton</string>
<string key="superclassName">UIControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIControl</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIControl.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIImageView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIImageView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UILabel</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UILabel.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="419848074"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchDisplayController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="1056" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../wolf3d.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back_arrow.png</string>
<string>button_highlight.png</string>
<string>credits_bg.png</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{65, 63}</string>
<string>{4, 4}</string>
<string>{960, 640}</string>
</object>
</object>
<string key="IBCocoaTouchPluginVersion">141</string>
</data>
</archive>

View File

@@ -0,0 +1,898 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1056</int>
<string key="IBDocument.SystemVersion">10K540</string>
<string key="IBDocument.InterfaceBuilderVersion">851</string>
<string key="IBDocument.AppKitVersion">1038.36</string>
<string key="IBDocument.HIToolboxVersion">461.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">141</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="1"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
<object class="IBProxyObject" id="975951072">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
<object class="IBUIView" id="191373211">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIImageView" id="945071814">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{1024, 768}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIMultipleTouchEnabled">YES</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">episode_bg.png</string>
</object>
</object>
<object class="IBUIImageView" id="589942973">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{61, 87}, {65, 63}}</string>
<reference key="NSSuperview" ref="191373211"/>
<int key="IBUIContentMode">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">back_arrow.png</string>
</object>
</object>
<object class="IBUIImageView" id="628212498">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{900, 87}, {65, 63}}</string>
<reference key="NSSuperview" ref="191373211"/>
<int key="IBUIContentMode">1</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSCustomResource" key="IBUIImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">next_arrow.png</string>
</object>
</object>
<object class="IBUILabel" id="759319438">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{60, 56}, {99, 43}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<string key="IBUIText">BACK</string>
<object class="NSFont" key="IBUIFont" id="1064640266">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">36</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor" id="542962638">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<reference key="IBUIHighlightedColor" ref="542962638"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUILineBreakMode">5</int>
</object>
<object class="IBUILabel" id="299911581">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{899, 56}, {93, 43}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<string key="IBUIText">PLAY</string>
<reference key="IBUIFont" ref="1064640266"/>
<reference key="IBUITextColor" ref="542962638"/>
<reference key="IBUIHighlightedColor" ref="542962638"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
<int key="IBUILineBreakMode">5</int>
</object>
<object class="IBUILabel" id="947093628">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{190, 48}, {186, 52}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<int key="IBUIContentMode">7</int>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<string key="IBUIText">MISSION</string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">POSITYPE-idSettler_v10.2</string>
<double key="NSSize">44</double>
<int key="NSfFlags">16</int>
</object>
<reference key="IBUITextColor" ref="542962638"/>
<reference key="IBUIHighlightedColor" ref="542962638"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
</object>
<object class="IBUITableView" id="337668700">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{204, 104}, {625, 593}}</string>
<reference key="NSSuperview" ref="191373211"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwAA</bytes>
</object>
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<bool key="IBUIAlwaysBounceVertical">YES</bool>
<bool key="IBUIShowsHorizontalScrollIndicator">NO</bool>
<int key="IBUIIndicatorStyle">2</int>
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
<bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
<float key="IBUIRowHeight">50</float>
</object>
<object class="IBUIButton" id="954375875">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{472, 712}, {80, 36}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<object class="NSFont" key="IBUIFont" id="791234453">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">15</double>
<int key="NSfFlags">16</int>
</object>
<reference key="IBUIHighlightedTitleColor" ref="542962638"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<object class="NSColor" key="IBUINormalTitleShadowColor" id="818219289">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<object class="NSCustomResource" key="IBUIHighlightedBackgroundImage" id="919253741">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">button_highlight.png</string>
</object>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">down_arrow.png</string>
</object>
</object>
<object class="IBUIButton" id="986434937">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{472, 37}, {80, 36}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIFont" ref="791234453"/>
<reference key="IBUIHighlightedTitleColor" ref="542962638"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="818219289"/>
<reference key="IBUIHighlightedBackgroundImage" ref="919253741"/>
<object class="NSCustomResource" key="IBUINormalBackgroundImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">up_arrow.png</string>
</object>
</object>
<object class="IBUIButton" id="468966130">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">301</int>
<string key="NSFrame">{{896, 45}, {73, 105}}</string>
<reference key="NSSuperview" ref="191373211"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIFont" ref="791234453"/>
<reference key="IBUIHighlightedTitleColor" ref="542962638"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="818219289"/>
<reference key="IBUIHighlightedBackgroundImage" ref="919253741"/>
</object>
<object class="IBUIButton" id="601718919">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">301</int>
<string key="NSFrame">{{58, 46}, {75, 108}}</string>
<reference key="NSSuperview" ref="191373211"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2NjY3IDAAA</bytes>
</object>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIAutoresizesSubviews">NO</bool>
<int key="IBUIContentMode">1</int>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<int key="IBUIContentHorizontalAlignment">0</int>
<int key="IBUIContentVerticalAlignment">0</int>
<reference key="IBUIFont" ref="791234453"/>
<reference key="IBUIHighlightedTitleColor" ref="542962638"/>
<object class="NSColor" key="IBUINormalTitleColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
</object>
<reference key="IBUINormalTitleShadowColor" ref="818219289"/>
<reference key="IBUIHighlightedBackgroundImage" ref="919253741"/>
</object>
</object>
<string key="NSFrameSize">{1024, 768}</string>
<reference key="NSSuperview"/>
<reference key="IBUIBackgroundColor" ref="542962638"/>
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
<int key="interfaceOrientation">3</int>
</object>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="191373211"/>
</object>
<int key="connectionID">4</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">next:</string>
<reference key="source" ref="468966130"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">24</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">back:</string>
<reference key="source" ref="601718919"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">25</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">dataSource</string>
<reference key="source" ref="337668700"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">35</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="337668700"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">36</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">missionList</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="337668700"/>
</object>
<int key="connectionID">37</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">pageDown:</string>
<reference key="source" ref="954375875"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">56</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">pageUp:</string>
<reference key="source" ref="986434937"/>
<reference key="destination" ref="372490531"/>
<int key="IBEventType">7</int>
</object>
<int key="connectionID">57</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="191373211"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="945071814"/>
<reference ref="337668700"/>
<reference ref="947093628"/>
<reference ref="954375875"/>
<reference ref="986434937"/>
<reference ref="589942973"/>
<reference ref="628212498"/>
<reference ref="759319438"/>
<reference ref="299911581"/>
<reference ref="601718919"/>
<reference ref="468966130"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="372490531"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="975951072"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">13</int>
<reference key="object" ref="945071814"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">14</int>
<reference key="object" ref="759319438"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">15</int>
<reference key="object" ref="947093628"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">16</int>
<reference key="object" ref="299911581"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">21</int>
<reference key="object" ref="589942973"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">23</int>
<reference key="object" ref="628212498"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">34</int>
<reference key="object" ref="337668700"/>
<reference key="parent" ref="191373211"/>
<string key="objectName">Mission List</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">54</int>
<reference key="object" ref="954375875"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">55</int>
<reference key="object" ref="986434937"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">22</int>
<reference key="object" ref="468966130"/>
<reference key="parent" ref="191373211"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">20</int>
<reference key="object" ref="601718919"/>
<reference key="parent" ref="191373211"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>1.IBEditorWindowLastContentRect</string>
<string>1.IBPluginDependency</string>
<string>1.IBUserGuides</string>
<string>14.CustomClassName</string>
<string>14.IBPluginDependency</string>
<string>14.IBViewBoundsToFrameTransform</string>
<string>15.CustomClassName</string>
<string>15.IBPluginDependency</string>
<string>15.IBViewBoundsToFrameTransform</string>
<string>16.CustomClassName</string>
<string>16.IBPluginDependency</string>
<string>16.IBViewBoundsToFrameTransform</string>
<string>20.IBPluginDependency</string>
<string>20.IBViewBoundsToFrameTransform</string>
<string>21.IBPluginDependency</string>
<string>21.IBViewBoundsToFrameTransform</string>
<string>22.IBPluginDependency</string>
<string>22.IBViewBoundsToFrameTransform</string>
<string>23.IBPluginDependency</string>
<string>23.IBViewBoundsToFrameTransform</string>
<string>34.IBPluginDependency</string>
<string>54.IBPluginDependency</string>
<string>54.IBViewBoundsToFrameTransform</string>
<string>55.IBPluginDependency</string>
<string>55.IBViewBoundsToFrameTransform</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>LevelSelectViewController</string>
<string>UIResponder</string>
<string>{{218, 349}, {1024, 768}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSMutableArray">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABChgAAxCoAAA</bytes>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABDtgAAw4QAAA</bytes>
</object>
<string>UIFontLabel</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABEY4AAxCoAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABEXMAAww0AAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABCiAAAxDbAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABEYAAAw6AAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABEY8AAxDbAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABD7AAAxAkAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABD7AAAw4IAAA</bytes>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">57</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">LevelSelectViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back:</string>
<string>next:</string>
<string>pageDown:</string>
<string>pageUp:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back:</string>
<string>next:</string>
<string>pageDown:</string>
<string>pageUp:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">back:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">next:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">pageDown:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">pageUp:</string>
<string key="candidateClassName">id</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">missionList</string>
<string key="NS.object.0">UITableView</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">missionList</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">missionList</string>
<string key="candidateClassName">UITableView</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">LevelSelectViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIFontLabel</string>
<string key="superclassName">UILabel</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">UIFontLabel.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="911635486">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIButton</string>
<string key="superclassName">UIControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIControl</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIControl.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIImageView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIImageView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UILabel</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UILabel.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="911635486"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIScrollView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchDisplayController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UITableView</string>
<string key="superclassName">UIScrollView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="1056" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../wolf3d.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>back_arrow.png</string>
<string>button_highlight.png</string>
<string>down_arrow.png</string>
<string>episode_bg.png</string>
<string>next_arrow.png</string>
<string>up_arrow.png</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{65, 63}</string>
<string>{4, 4}</string>
<string>{80, 36}</string>
<string>{480, 320}</string>
<string>{65, 63}</string>
<string>{80, 36}</string>
</object>
</object>
<string key="IBCocoaTouchPluginVersion">141</string>
</data>
</archive>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,56 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <UIKit/UIKit.h>
@interface SettingsViewController : UIViewController {
IBOutlet UISlider * sensitivitySlider;
IBOutlet UISlider * tiltMoveSpeedSlider;
IBOutlet UISlider * tiltTurnSpeedSlider;
IBOutlet UISlider * hudAlphaSlider;
IBOutlet UILabel * sensitivityLabel;
IBOutlet UILabel * tiltMoveSpeedLabel;
IBOutlet UILabel * tiltTurnSpeedLabel;
IBOutlet UILabel * hudAlphaLabel;
IBOutlet UILabel * presetLabel;
}
- (void) LoadSettings;
- (IBAction)back:(id)sender;
- (IBAction) AdvancedPressed;
- (IBAction) SensitivityValChanged;
- (IBAction) TiltMoveSpeedValChanged;
- (IBAction) TiltTurnSpeedValChanged;
- (IBAction) HudAlphaValChanged;
- (IBAction) nextPreset;
- (IBAction) previousPreset;
@end

View File

@@ -0,0 +1,282 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import "SettingsViewController.h"
#import "wolfiphone.h"
#import "wolf3dAppDelegate.h"
#define NUM_CONTROL_SCHEMES 4
void setSliderLabel( UISlider * slider, UILabel * label );
void setSliderValue( UISlider * slider, UILabel * label, float value );
float convertSliderValue( UISlider * slider );
@interface SettingsViewController ()
@property (nonatomic, retain) UISlider * sensitivitySlider;
@property (nonatomic, retain) UISlider * tiltMoveSpeedSlider;
@property (nonatomic, retain) UISlider * tiltTurnSpeedSlider;
@property (nonatomic, retain) UISlider * hudAlphaSlider;
@property (nonatomic, retain) UIView * sensitivityLabel;
@property (nonatomic, retain) UIView * tiltMoveSpeedLabel;
@property (nonatomic, retain) UIView * tiltTurnSpeedLabel;
@property (nonatomic, retain) UIView * hudAlphaLabel;
@property (nonatomic, retain) UILabel * presetLabel;
- (void)setPresetVisibility;
@end
@implementation SettingsViewController
@synthesize sensitivitySlider, tiltMoveSpeedSlider, tiltTurnSpeedSlider, hudAlphaSlider;
@synthesize sensitivityLabel, tiltMoveSpeedLabel, tiltTurnSpeedLabel, hudAlphaLabel;
@synthesize presetLabel;
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
[self LoadSettings];
}
- (void) SetupSlider:(UISlider*)slider minimumTrack:(UIImage*)minImage
maximumTrack:(UIImage*)maxImage
thumb:(UIImage*)thumbImage {
[slider setMinimumTrackImage:minImage forState:UIControlStateNormal];
[slider setMaximumTrackImage:maxImage forState:UIControlStateNormal];
[slider setThumbImage:thumbImage forState:UIControlStateNormal];
[slider setThumbImage:thumbImage forState:UIControlStateHighlighted];
}
- (void) LoadSettings {
// Minimum track image setup.
UIImage* minimumTrackImage = [UIImage imageNamed:@"settings_slider_grey.png"];
CGFloat minimumTrackImageCap = minimumTrackImage.size.width * 0.5f;
UIImage* minimumTrackImageCapped = [minimumTrackImage stretchableImageWithLeftCapWidth:minimumTrackImageCap topCapHeight:0.0];
// Maximum track image setup.
UIImage* maximumTrackImage = [UIImage imageNamed:@"settings_slider_white.png"];
CGFloat maximumTrackImageCap = maximumTrackImage.size.width * 0.5f;
UIImage* maximumTrackImageCapped = [maximumTrackImage stretchableImageWithLeftCapWidth:maximumTrackImageCap topCapHeight:0.0];
// Thumb image.
UIImage* thumbImage = [UIImage imageNamed:@"settings_slider_blue.png"];
// Set up slider instances.
[self SetupSlider:sensitivitySlider minimumTrack:minimumTrackImageCapped
maximumTrack:maximumTrackImageCapped
thumb:thumbImage];
[self SetupSlider:tiltMoveSpeedSlider minimumTrack:minimumTrackImageCapped
maximumTrack:maximumTrackImageCapped
thumb:thumbImage];
[self SetupSlider:tiltTurnSpeedSlider minimumTrack:minimumTrackImageCapped
maximumTrack:maximumTrackImageCapped
thumb:thumbImage];
[self SetupSlider:hudAlphaSlider minimumTrack:minimumTrackImageCapped
maximumTrack:maximumTrackImageCapped
thumb:thumbImage];
// Load Settings from CVars.
setSliderValue( sensitivitySlider, sensitivityLabel, sensitivity->value );
setSliderValue( tiltMoveSpeedSlider, tiltMoveSpeedLabel, tiltMove->value );
setSliderValue( tiltTurnSpeedSlider, tiltTurnSpeedLabel, tiltTurn->value );
setSliderValue( hudAlphaSlider, hudAlphaLabel, hudAlpha->value );
[self setPresetVisibility];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc. that aren't in use.
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
self.sensitivitySlider = nil;
self.tiltTurnSpeedSlider = nil;
self.tiltMoveSpeedSlider = nil;
self.hudAlphaSlider = nil;
self.sensitivityLabel = nil;
self.tiltTurnSpeedLabel = nil;
self.tiltMoveSpeedLabel = nil;
self.hudAlphaSlider = nil;
self.presetLabel = nil;
}
- (void)dealloc {
[super dealloc];
}
- (IBAction)back:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
- (IBAction) SensitivityValChanged {
Cvar_SetValue( sensitivity->name, convertSliderValue( sensitivitySlider ) );
setSliderLabel( sensitivitySlider, sensitivityLabel);
}
- (IBAction) TiltMoveSpeedValChanged {
Cvar_SetValue( tiltMove->name, convertSliderValue( tiltMoveSpeedSlider ) );
setSliderLabel( tiltMoveSpeedSlider, tiltMoveSpeedLabel);
if ( tiltMove->value == 5000 ) {
Cvar_SetValue( tiltMove->name, 0 );
}
if ( tiltMove->value ) {
Cvar_SetValue( tiltTurn->name, 0 );
setSliderValue( tiltTurnSpeedSlider, tiltTurnSpeedLabel, tiltTurnSpeedSlider.minimumValue );
}
}
- (IBAction) TiltTurnSpeedValChanged {
Cvar_SetValue( tiltTurn->name, convertSliderValue( tiltTurnSpeedSlider ) );
setSliderLabel( tiltTurnSpeedSlider, tiltTurnSpeedLabel);
if ( tiltTurn->value == 500 ) {
Cvar_SetValue( tiltTurn->name, 0 );
}
if ( tiltTurn->value ) {
Cvar_SetValue( tiltMove->name, 0 );
setSliderValue( tiltMoveSpeedSlider, tiltMoveSpeedLabel, tiltMoveSpeedSlider.minimumValue );
}
}
- (IBAction) HudAlphaValChanged {
Cvar_SetValue( hudAlpha->name, convertSliderValue( hudAlphaSlider ) );
setSliderLabel( hudAlphaSlider, hudAlphaLabel );
}
- (IBAction) AdvancedPressed {
iphonePreloadBeforePlay(); // make sure all the hud textures are loaded
menuState = IPM_HUDEDIT;
wolf3dAppDelegate* app = (wolf3dAppDelegate*)[[UIApplication sharedApplication] delegate];
[app showOpenGL];
}
- (void)setPresetVisibility {
for ( int i = 0; i < NUM_CONTROL_SCHEMES; ++i ) {
BOOL hide = true;
if ( i == (int)controlScheme->value ) {
hide = false;
}
[[self.view viewWithTag:(i + 1)] setHidden:hide];
}
self.presetLabel.text = [NSString stringWithFormat:@"Preset %d", (int)(controlScheme->value + 1) ];
}
- (IBAction)nextPreset {
int newScheme = controlScheme->value + 1;
if ( newScheme >= NUM_CONTROL_SCHEMES ) {
newScheme = 0;
}
Cvar_SetValue( controlScheme->name, newScheme );
HudSetForScheme( (int)controlScheme->value );
[self setPresetVisibility];
}
- (IBAction)previousPreset {
int newScheme = controlScheme->value - 1;
if ( newScheme < 0 ) {
newScheme = NUM_CONTROL_SCHEMES - 1;
}
Cvar_SetValue( controlScheme->name, newScheme );
HudSetForScheme( (int)controlScheme->value );
[self setPresetVisibility];
}
@end
float convertSliderValue( UISlider * slider ) {
const float difference = slider.value - slider.minimumValue;
const float adjustedValue = slider.maximumValue - difference;
return adjustedValue;
}
void setSliderValue( UISlider * slider, UILabel * label, float value ) {
const float difference = value - slider.minimumValue;
const float reversedValue = slider.maximumValue - difference;
slider.value = reversedValue;
setSliderLabel( slider, label );
}
void setSliderLabel( UISlider * slider, UILabel * label ) {
const float range = slider.maximumValue - slider.minimumValue;
const float adjustedValue = convertSliderValue( slider );
const float adjustedDiff = adjustedValue - slider.minimumValue;
const float percent = adjustedDiff / range * 100.0f;
label.text = [NSString stringWithFormat:@"%.0f%%", percent];
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,41 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <UIKit/UIKit.h>
@interface SkillViewController : UIViewController {
@private
IBOutlet UIView* selectionFrame;
}
-(IBAction)back:(id)sender;
-(IBAction)next:(id)sender;
-(IBAction)canIPlayDaddy:(id)sender;
-(IBAction)dontHurtMe:(id)sender;
-(IBAction)BringEmOn:(id)sender;
-(IBAction)IAmDeathIncarnate:(id)sender;
@end

View File

@@ -0,0 +1,134 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import "SkillViewController.h"
#import "EpisodeViewController.h"
#import "wolf_local.h"
@interface SkillViewController ()
- (void)setSelectionFrame;
@property (nonatomic, retain) UIView* selectionFrame;
@end
@implementation SkillViewController
@synthesize selectionFrame;
// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
/*
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization.
}
return self;
}
*/
/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/
- (void)setSelectionFrame {
int skillTag = skill->value + 1;
UIView *currentDifficulty = [self.view viewWithTag:skillTag];
self.selectionFrame.center = currentDifficulty.center;
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
[self setSelectionFrame];
}
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations.
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc. that aren't in use.
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
self.selectionFrame = nil;
}
- (void)dealloc {
[super dealloc];
}
- (IBAction)back:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
- (IBAction)next:(id)sender {
EpisodeViewController *evc = [[EpisodeViewController alloc] initWithNibName:@"EpisodeView" bundle:nil];
[self.navigationController pushViewController:evc animated:YES];
[evc release];
}
-(IBAction)canIPlayDaddy:(id)sender {
Cvar_SetValue( skill->name, 0 );
[self setSelectionFrame];
}
-(IBAction)dontHurtMe:(id)sender {
Cvar_SetValue( skill->name, 1 );
[self setSelectionFrame];
}
-(IBAction)BringEmOn:(id)sender {
Cvar_SetValue( skill->name, 2 );
[self setSelectionFrame];
}
-(IBAction)IAmDeathIncarnate:(id)sender {
Cvar_SetValue( skill->name, 3 );
[self setSelectionFrame];
}
@end

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,43 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <UIKit/UIKit.h>
// This class handles the trivia menu. It is based on tags - to make it work, each trivia view
// needs a unique, incrementing tag number, and the default trivia item but be set up as an
// IBOutlet.
@interface TriviaViewController : UIViewController {
@private
IBOutlet UIView* firstTrivia;
IBOutlet UIView* lastTrivia;
UIView* currentTrivia;
}
- (IBAction)nextTrivia:(id)sender;
- (IBAction)previousTrivia:(id)sender;
- (IBAction)back:(id)sender;
@end

View File

@@ -0,0 +1,139 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import "TriviaViewController.h"
#define TRIVIA_COUNT 4
@interface TriviaViewController ()
@property (nonatomic, retain) IBOutlet UIView *firstTrivia;
@property (nonatomic, retain) IBOutlet UIView *lastTrivia;
@property (nonatomic, retain) UIView *currentTrivia;
@end
@implementation TriviaViewController
@synthesize firstTrivia, lastTrivia, currentTrivia;
// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
/*
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization.
}
return self;
}
*/
/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
self.currentTrivia = self.firstTrivia;
}
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations.
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc. that aren't in use.
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
self.firstTrivia = nil;
self.lastTrivia = nil;
self.currentTrivia = nil;
}
- (void)dealloc {
[super dealloc];
}
- (IBAction)nextTrivia:(id)sender {
// Hide the current trivia
self.currentTrivia.hidden = YES;
if ( self.currentTrivia == self.lastTrivia ) {
// If we are on the last trivia, we need to loop back to the first one.
self.currentTrivia = self.firstTrivia;
} else {
// Otherwise, just go to the trivia with the next tag.
NSInteger currentTriviaTag = self.currentTrivia.tag;
NSInteger nextTriviaTag = currentTriviaTag + 1;
self.currentTrivia = [self.view viewWithTag:nextTriviaTag];
}
// Now that the currentTrivia has been reassigned, we can show the new one.
self.currentTrivia.hidden = NO;
}
- (IBAction)previousTrivia:(id)sender {
// Hide the current trivia
self.currentTrivia.hidden = YES;
if ( self.currentTrivia == self.firstTrivia ) {
// If we are on the first trivia, we need to loop back to the last one.
self.currentTrivia = self.lastTrivia;
} else {
// Otherwise, just go to the trivia with the previous tag.
NSInteger currentTriviaTag = self.currentTrivia.tag;
NSInteger nextTriviaTag = currentTriviaTag - 1;
self.currentTrivia = [self.view viewWithTag:nextTriviaTag];
}
// Now that the currentTrivia has been reassigned, we can show the new one.
self.currentTrivia.hidden = NO;
}
- (IBAction)back:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
@end

View File

@@ -0,0 +1,30 @@
/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <UIKit/UIButton.h>
@interface UIFontButton : UIButton
@end

View File

@@ -0,0 +1,34 @@
/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import "UIFontButton.h"
@implementation UIFontButton
- (void)awakeFromNib {
CGFloat points = self.titleLabel.font.pointSize;
self.titleLabel.font = [UIFont fontWithName:@"POSITYPE idSettler v10.2" size:points];
}
@end

View File

@@ -0,0 +1,30 @@
/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <UIKit/UILabel.h>
@interface UIFontLabel : UILabel
@end

View File

@@ -0,0 +1,34 @@
/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import "UIFontLabel.h"
@implementation UIFontLabel
- (void)awakeFromNib {
CGFloat points = self.font.pointSize;
self.font = [UIFont fontWithName:@"POSITYPE idSettler v10.2" size:points];
}
@end

View File

@@ -0,0 +1,35 @@
/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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 UITABLEVIEWSCROLLING_H
#define UITABLEVIEWSCROLLING_H
@class UITableView;
void UITableViewScrollingPageUp( UITableView * table, int totalRows );
void UITableViewScrollingPageDown( UITableView * table, int totalRows );
void UITableViewScrollingScrollToRow( UITableView * table, int row, int maxRow );
#endif

View File

@@ -0,0 +1,74 @@
/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import "UITableViewScrolling.h"
#import <UIKit/UITableView.h>
void UITableViewScrollingPageDown( UITableView * table, int totalRows ) {
// If the user taps the page down button, we want to scroll the table view so that the first
// non-visible row becomes visible. To do this, we can get the array of visible index paths,
// find the maximum row within the array, and scroll to the row just after that.
NSArray* visibleIndexPaths = [table indexPathsForVisibleRows];
int maxRow = 0;
for ( NSIndexPath* path in visibleIndexPaths ) {
maxRow = maxRow < path.row ? path.row: maxRow;
}
const int rowToMakeVisible = maxRow + 1;
UITableViewScrollingScrollToRow( table,rowToMakeVisible, totalRows );
}
void UITableViewScrollingPageUp( UITableView * table, int totalRows ) {
// If the user taps the page up button, we want to scroll the table view so that the first
// non-visible row becomes visible. To do this, we can get the array of visible index paths,
// find the minimum row within the array, and scroll to the row just before that.
NSArray* visibleIndexPaths = [table indexPathsForVisibleRows];
int minRow = totalRows - 1;
for ( NSIndexPath* path in visibleIndexPaths ) {
minRow = minRow < path.row ? minRow: path.row;
}
const int rowToMakeVisible = minRow - 1;
UITableViewScrollingScrollToRow( table,rowToMakeVisible, totalRows );
}
void UITableViewScrollingScrollToRow( UITableView * table, int row, int maxRow ) {
const int clampedRowMax = row < maxRow? row: maxRow-1;
const int clampedRow = clampedRowMax < 0? 0: clampedRowMax;
NSIndexPath* pathToMakeVisible = [NSIndexPath indexPathForRow:clampedRow inSection:0];
[table scrollToRowAtIndexPath:pathToMakeVisible atScrollPosition:UITableViewScrollPositionNone animated:YES];
}

View File

@@ -0,0 +1,31 @@
/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <UIKit/UIKit.h>
@interface WolfSlider : UISlider {
}
@end

View File

@@ -0,0 +1,40 @@
/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import "WolfSlider.h"
@implementation WolfSlider
- (CGRect)trackRectForBounds:(CGRect)bounds {
UIImage* trackImage = [self minimumTrackImageForState:UIControlStateNormal];
CGFloat trackImageHeight = trackImage.size.height;
return CGRectMake(bounds.origin.x, bounds.origin.y, self.bounds.size.width, trackImageHeight);
}
@end

View File

@@ -1,6 +1,9 @@
/*
Copyright (C) 2009 Id Software, Inc.
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@@ -46,8 +49,8 @@ unsigned int QGLBeginStarted = 0;
struct Vertex {
float xyz[3];
float st[2];
GLfloat xyz[3];
GLfloat st[2];
GLubyte c[4];
};
@@ -56,10 +59,12 @@ struct Vertex {
typedef struct Vertex Vertex;
Vertex immediate[ MAX_VERTS ];
Vertex vab;
short quad_indexes[MAX_VERTS * 3 / 2 ];
GLushort quad_indexes[MAX_VERTS * 3 / 2 ];
int curr_vertex;
GLenum curr_prim;
GLuint quad_index_buffer_name;
void InitImmediateModeGL() {
for ( int i = 0; i < MAX_VERTS * 3 / 2; i+=6 ) {
int q = i / 6 * 4;
@@ -71,6 +76,11 @@ void InitImmediateModeGL() {
quad_indexes[ i + 4 ] = q + 2;
quad_indexes[ i + 5 ] = q + 3;
}
// Use a VBO for the quad indices, since they never change.
glGenBuffers( 1, &quad_index_buffer_name );
glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, quad_index_buffer_name );
glBufferData( GL_ELEMENT_ARRAY_BUFFER, sizeof( quad_indexes), quad_indexes, GL_STATIC_DRAW );
qglVertexPointer( 3, GL_FLOAT, sizeof( Vertex ), immediate[ 0 ].xyz );
qglTexCoordPointer( 2, GL_FLOAT, sizeof( Vertex ), immediate[ 0 ].st );
@@ -132,7 +142,7 @@ void pfglTexCoord2f( GLfloat s, GLfloat t ) {
void pfglEnd() {
if ( curr_prim == GL_QUADS ) {
qglDrawElements( GL_TRIANGLES, curr_vertex / 4 * 6, GL_UNSIGNED_SHORT, quad_indexes );
qglDrawElements( GL_TRIANGLES, curr_vertex / 4 * 6, GL_UNSIGNED_SHORT, (void*)0 );
} else {
qglDrawArrays( curr_prim, 0, curr_vertex );
}

View File

@@ -55,6 +55,7 @@ extern "C" {
void pfglBegin( GLenum prim );
void pfglVertex3f( float x, float y, float z );
void pfglVertex2i( GLint x, GLint y );
void pfglVertex2f(GLfloat x, GLfloat y );
void pfglColor4ub( GLubyte r, GLubyte g, GLubyte b, GLubyte a );
void pfglColor4f( GLfloat r, GLfloat g, GLfloat b, GLfloat a );
void pfglTexCoord2i( GLint s, GLint t );

View File

@@ -1,6 +1,9 @@
/*
Copyright (C) 2009 Id Software, Inc.
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@@ -20,6 +23,9 @@
#include "../wolfiphone.h"
extern int BackButton();
extern int MenuButton();
hud_t huds;
void HudDraw();
@@ -76,44 +82,102 @@ void HudSetTexnums() {
#endif
}
// HUD element sizes
#define HUD_FORWARD_STICK_WIDTH 100
#define HUD_FORWARD_STICK_HEIGHT 100
#define HUD_SIDE_STICK_WIDTH 100
#define HUD_SIDE_STICK_HEIGHT 100
#define HUD_TURN_STICK_WIDTH 100
#define HUD_TURN_STICK_HEIGHT 100
#define HUD_FIRE_BUTTON_WIDTH 80
#define HUD_FIRE_BUTTON_HEIGHT 80
#define HUD_MENU_BUTTON_WIDTH 64
#define HUD_MENU_BUTTON_HEIGHT 64
#define HUD_MAP_BUTTON_WIDTH 64
#define HUD_MAP_BUTTON_HEIGHT 64
#define HUD_AMMO_WIDTH 80
#define HUD_AMMO_HEIGHT 44
#define TABLET_STICK_SCALE 0.9f
void HudSetForScheme( int schemeNum ) {
int forwardWidth = HUD_FORWARD_STICK_WIDTH * screenScale;
int forwardHeight = HUD_FORWARD_STICK_HEIGHT * screenScale;
int sideWidth = HUD_SIDE_STICK_WIDTH * screenScale;
int sideHeight = HUD_SIDE_STICK_HEIGHT * screenScale;
int turnWidth = HUD_TURN_STICK_WIDTH * screenScale;
int turnHeight = HUD_TURN_STICK_HEIGHT * screenScale;
int fireWidth = HUD_FIRE_BUTTON_WIDTH * screenScale;
int fireHeight = HUD_FIRE_BUTTON_HEIGHT * screenScale;
int menuWidth = HUD_MENU_BUTTON_WIDTH * screenScale;
int menuHeight = HUD_MENU_BUTTON_HEIGHT * screenScale;
int mapWidth = HUD_MAP_BUTTON_WIDTH * screenScale;
int mapHeight = HUD_MAP_BUTTON_HEIGHT * screenScale;
int ammoWidth = HUD_AMMO_WIDTH * screenScale;
int ammoHeight = HUD_AMMO_HEIGHT * screenScale;
// Scale the size of the sticks down a bit on the iPad. This helps normalize the
// sensitivity and helps with any potential controller attachments :)
if ( iphoneGetDeviceType() == DEVICE_TABLET ) {
forwardWidth *= TABLET_STICK_SCALE;
forwardHeight *= TABLET_STICK_SCALE;
sideWidth *= TABLET_STICK_SCALE;
sideHeight *= TABLET_STICK_SCALE;
turnWidth *= TABLET_STICK_SCALE;
turnHeight *= TABLET_STICK_SCALE;
}
switch ( schemeNum ) {
default:
case 0:
SetHudSpot( &huds.forwardStick, 0, 320-100, 100, 100, 0 );
SetHudSpot( &huds.sideStick, 0, 320-100, 100, 100, HF_DISABLED );
SetHudSpot( &huds.turnStick, 0, 320-100, 100, 100, 0 );
SetHudSpot( &huds.fire, 480-80, 320-80, 80, 80, 0 );
SetHudSpot( &huds.menu, 480-64, 0, 64, 32, 0 );
SetHudSpot( &huds.map, 0, 0, 64, 32, 0 );
SetHudSpot( &huds.ammo, 480-80, 320-100-44, 80, 44, 0 );
SetHudSpot( &huds.forwardStick, 0, viddef.height-forwardHeight, forwardWidth, forwardHeight, 0 );
SetHudSpot( &huds.sideStick, 0, viddef.height-sideHeight, sideWidth, sideHeight, HF_DISABLED );
SetHudSpot( &huds.turnStick, 0, viddef.height-turnHeight, turnWidth, turnHeight, 0 );
SetHudSpot( &huds.fire, viddef.width-fireWidth, viddef.height-fireHeight, fireWidth, fireHeight, 0 );
SetHudSpot( &huds.menu, viddef.width-menuWidth, 0, menuWidth, menuHeight, 0 );
SetHudSpot( &huds.map, 0, 0, mapWidth, mapHeight, 0 );
SetHudSpot( &huds.ammo, viddef.width-ammoWidth, viddef.height-fireHeight-ammoHeight, ammoWidth, ammoHeight, 0 );
break;
case 1:
SetHudSpot( &huds.forwardStick, 480-100, 320-100, 100, 100, 0 );
SetHudSpot( &huds.sideStick, 0, 320-100, 100, 100, HF_DISABLED );
SetHudSpot( &huds.turnStick, 480-100, 320-100, 100, 100, 0 );
SetHudSpot( &huds.fire, 0, 320-80, 80, 80, 0 );
SetHudSpot( &huds.menu, 480-64, 0, 64, 32, 0 );
SetHudSpot( &huds.map, 0, 0, 64, 32, 0 );
SetHudSpot( &huds.ammo, 480-80, 320-100-44, 80, 44, 0 );
SetHudSpot( &huds.forwardStick, viddef.width-forwardWidth, viddef.height-forwardHeight, forwardWidth, forwardHeight, 0 );
SetHudSpot( &huds.sideStick, 0, viddef.height-sideHeight, sideWidth, sideHeight, HF_DISABLED );
SetHudSpot( &huds.turnStick, viddef.width-turnWidth, viddef.height-turnHeight, turnWidth, turnHeight, 0 );
SetHudSpot( &huds.fire, 0, viddef.height-fireHeight, fireWidth, fireHeight, 0 );
SetHudSpot( &huds.menu, viddef.width-menuWidth, 0, menuWidth, menuHeight, 0 );
SetHudSpot( &huds.map, 0, 0, mapWidth, mapHeight, 0 );
SetHudSpot( &huds.ammo, 0, viddef.height-fireHeight-ammoHeight, ammoWidth, ammoHeight, 0 );
break;
case 2:
SetHudSpot( &huds.forwardStick, 0, 320-100, 100, 100, 0 );
SetHudSpot( &huds.sideStick, 0, 320-100, 100, 100, 0 );
SetHudSpot( &huds.turnStick, 480-100, 320-100, 100, 100, 0 );
SetHudSpot( &huds.fire, 480-80, 0, 80, 80, 0 );
SetHudSpot( &huds.menu, 0, 32, 64, 32, 0 );
SetHudSpot( &huds.map, 0, 0, 64, 32, 0 );
SetHudSpot( &huds.ammo, 480-80, 80, 80, 44, 0 );
SetHudSpot( &huds.forwardStick, 0, viddef.height-forwardHeight, forwardWidth, forwardHeight, 0 );
SetHudSpot( &huds.sideStick, 0, viddef.height-sideHeight, sideWidth, sideHeight, 0 );
SetHudSpot( &huds.turnStick, viddef.width-turnWidth, viddef.height-turnHeight, turnWidth, turnHeight, 0 );
SetHudSpot( &huds.fire, viddef.width-fireWidth, 0, fireWidth, fireHeight, 0 );
SetHudSpot( &huds.menu, 0, mapHeight, menuWidth, menuHeight, 0 );
SetHudSpot( &huds.map, 0, 0, mapWidth, mapHeight, 0 );
SetHudSpot( &huds.ammo, viddef.width-ammoWidth, fireHeight, ammoWidth, ammoHeight, 0 );
break;
case 3:
SetHudSpot( &huds.forwardStick, 480-100, 320-100, 100, 100, 0 );
SetHudSpot( &huds.sideStick, 480-100, 320-100, 100, 100, 0 );
SetHudSpot( &huds.turnStick, 0, 320-100, 100, 100, 0 );
SetHudSpot( &huds.fire, 480-80, 0, 80, 80, 0 );
SetHudSpot( &huds.menu, 0, 32, 64, 32, 0 );
SetHudSpot( &huds.map, 0, 0, 64, 32, 0 );
SetHudSpot( &huds.ammo, 480-80, 80, 80, 44, 0 );
SetHudSpot( &huds.forwardStick, viddef.width-forwardWidth, viddef.height-forwardHeight, forwardWidth, forwardHeight, 0 );
SetHudSpot( &huds.sideStick, viddef.width-sideWidth, viddef.height-sideHeight, sideWidth, sideHeight, 0 );
SetHudSpot( &huds.turnStick, 0, viddef.height-turnHeight, turnWidth, turnHeight, 0 );
SetHudSpot( &huds.fire, viddef.width-fireWidth, 0, fireWidth, fireHeight, 0 );
SetHudSpot( &huds.menu, 0, mapHeight, menuWidth, menuHeight, 0 );
SetHudSpot( &huds.map, 0, 0, mapWidth, mapHeight, 0 );
SetHudSpot( &huds.ammo, viddef.width-ammoWidth, fireHeight, ammoWidth, ammoHeight, 0 );
break;
}
@@ -192,14 +256,14 @@ void HudEditFrame() {
if ( dragHud->x < 0 ) {
dragHud->x = 0;
}
if ( dragHud->x > 480 - dragHud->width ) {
dragHud->x = 480 - dragHud->width;
if ( dragHud->x > viddef.width - dragHud->width ) {
dragHud->x = viddef.width - dragHud->width;
}
if ( dragHud->y < 0 ) {
dragHud->y = 0;
}
if ( dragHud->y > 320 - dragHud->height ) {
dragHud->y = 320 - dragHud->height;
if ( dragHud->y > viddef.height - dragHud->height ) {
dragHud->y = viddef.height - dragHud->height;
}
}
@@ -210,7 +274,7 @@ void HudEditFrame() {
w += hud->width;
}
}
x = 240 - w / 2;
x = (480 / 2) - w / 2;
for ( hudPic_t *hud = (hudPic_t *)&huds ; hud != (hudPic_t *)(&huds+1) ; hud++ ) {
if ( hud->hudFlags & HF_DISABLED ) {
@@ -242,7 +306,7 @@ void HudEditFrame() {
}
// draw the done button
if ( iphoneDrawPicWithTouch( 240-32, 320-80-32, 64, 32, "iphone/button_back.tga" ) ) {
if ( iphoneDrawPicWithTouch( (480 / 2)-32, 320-80-32, 64, 32, "iphone/button_back.tga" ) ) {
menuState = IPM_CONTROLS;
iphoneSetNotifyText( "" );
}
@@ -279,11 +343,16 @@ void ConvertFromImageToScreen(int *x, int *y, rect_t boundsRect)
//int boundsUnder = 320-10;
int height = boundsUnder - boundsAbove;
float windowWidth = 480.0f;
float windowHeight = 320.0f;
ScalePositionAndSize( NULL, NULL, &windowWidth, &windowHeight );
valX -= boundsLeft;
valX = 480*valX/width;
valX = windowWidth*valX/width;
valY -= boundsAbove;
valY = 320*valY/height;
valY = windowHeight*valY/height;
*x = valX;
*y = valY;
@@ -295,7 +364,7 @@ void ConvertFromImageToScreen(int *x, int *y, rect_t boundsRect)
// to the coordinates of the screen of the iphone image
// gsh
//-------------------
void ConvertFromScreenToImage(int *x, int *y, rect_t boundsRect)
void ConvertFromScreenToImage(int *x, int *y, rect_t boundsRect, float screenWidth, float screenHeight )
{
int boundsLeft = boundsRect.x;
int boundsRight = boundsRect.x + boundsRect.width;
@@ -312,11 +381,11 @@ void ConvertFromScreenToImage(int *x, int *y, rect_t boundsRect)
//int boundsAbove = 100;
//int boundsUnder = 320-10;
int height = boundsUnder - boundsAbove;
valX = width*valX/480;
valX = width*valX/screenWidth;
valX += boundsLeft;
valY = height*valY/320;
valY = height*valY/screenHeight;
valY += boundsAbove;
*x = valX;
@@ -346,8 +415,13 @@ void ScaleFromScreenToImage(int *width, int *height, rect_t boundsRect)
//int boundsUnder = 320-10;
int iH = boundsUnder - boundsAbove;
w = w*iW/480;
h = h*iH/320;
float screenWidth = 480.0f;
float screenHeight = 320.0f;
ScalePositionAndSize( NULL, NULL, &screenWidth, &screenHeight );
w = w*iW/screenWidth;
h = h*iH/screenHeight;
*width = w;
*height = h;
@@ -369,8 +443,18 @@ void iphoneHudEditFrame() {
int adjustY = 10;
rect_t boundsRect = RectMake(86, 80-adjustY, 300, 205);
rect_t scaledBoundsRect;
scaledBoundsRect.x = boundsRect.x;
scaledBoundsRect.y = boundsRect.y;
scaledBoundsRect.width = boundsRect.width;
scaledBoundsRect.height = boundsRect.height;
ScaleRect( &scaledBoundsRect );
float scaledScreenWidth = 480.0f;
float scaledScreenHeight = 320.0f;
ScalePositionAndSize( NULL, NULL, &scaledScreenWidth, &scaledScreenHeight );
//iphoneSetNotifyText( "Drag the controls" );
@@ -380,10 +464,22 @@ void iphoneHudEditFrame() {
int y = prevTouches[0][1];
//convert x, y coordinates from iphone_image to screen coordinates
ConvertFromImageToScreen( &x, &y, boundsRect);
ConvertFromImageToScreen( &x, &y, scaledBoundsRect);
//ConvertFromScreenToImage( &x, &y);
if ( x > 120 && x < 360 && y > 80 && y < 240 ) {
float disableRegionLeft = 120;
float disableRegionRight = REFERENCE_WIDTH - 120;
float disableRegionTop = 80;
float disableRegionBottom = REFERENCE_HEIGHT - 80;
disableRegionTop *= screenScale;
disableRegionBottom *= screenScale;
disableRegionLeft *= screenScale;
disableRegionRight *= screenScale;
if ( x > disableRegionLeft && x < disableRegionRight &&
y > disableRegionTop && y < disableRegionBottom ) {
dragHud->hudFlags |= HF_DISABLED;
} else {
// magnet pull a matchable axis if it is close enough
@@ -408,7 +504,7 @@ void iphoneHudEditFrame() {
int y = touches[0][1];
//convert x, y coordinates from iphone_image to screen coordinates
ConvertFromImageToScreen( &x, &y, boundsRect);
ConvertFromImageToScreen( &x, &y, scaledBoundsRect);
// ConvertFromScreenToImage( &x, &y);
dragHud = NULL;
@@ -416,9 +512,6 @@ void iphoneHudEditFrame() {
if ( x >= hud->x && x - hud->x < hud->width &&
y >= hud->y && y - hud->y < hud->height ) {
dragHud = hud;
//int tempDragX = dragHud->x;
//int tempDragY = dragHud->y;
//ConvertFromImageToScreen(&, <#int * y#>)
dragX = dragHud->x - x;
dragY = dragHud->y - y;
Sound_StartLocalSound( "iphone/bdown_01.wav" );
@@ -432,21 +525,21 @@ void iphoneHudEditFrame() {
// adjust the position of the dragHud
int x = touches[0][0];
int y = touches[0][1];
ConvertFromImageToScreen(&x, &y, boundsRect);
ConvertFromImageToScreen(&x, &y, scaledBoundsRect);
dragHud->x = x + dragX;
dragHud->y = y + dragY;
if ( dragHud->x < 0 ) {
dragHud->x = 0;
}
if ( dragHud->x > 480 - dragHud->width ) {
dragHud->x = 480 - dragHud->width;
if ( dragHud->x > scaledScreenWidth - dragHud->width ) {
dragHud->x = scaledScreenWidth - dragHud->width;
}
if ( dragHud->y < 0 ) {
dragHud->y = 0;
}
if ( dragHud->y > 320 - dragHud->height ) {
dragHud->y = 320 - dragHud->height;
if ( dragHud->y > scaledScreenHeight - dragHud->height ) {
dragHud->y = scaledScreenHeight - dragHud->height;
}
}
@@ -457,12 +550,12 @@ void iphoneHudEditFrame() {
w += hud->width;
}
}
x = 240 - w / 2;
x = ( viddef.width / 2 ) - ( w / 2 );
for ( hudPic_t *hud = (hudPic_t *)&huds ; hud != (hudPic_t *)(&huds+1) ; hud++ ) {
if ( hud->hudFlags & HF_DISABLED ) {
hud->x = x;
hud->y = 160-hud->height/2;
hud->y = ( viddef.height / 2 ) - ( hud->height/2 );
x += hud->width;
}
}
@@ -470,21 +563,21 @@ void iphoneHudEditFrame() {
// decide where the menu button, map button, and ammo will draw
// solid background color and some UI elements for context
R_Draw_Fill( 0, 0, 480, 320, gray );
rectFloat_t backgroundFill = MakeScaledRectFloat( 0.0f, 0.0f, 480.0f, 320.0f );
R_Draw_Fill( backgroundFill.x, backgroundFill.y, backgroundFill.width, backgroundFill.height, gray );
iphoneDrawPic(0, 0, 480, 320, "iphone/submenus_background_image.tga");
iphoneDrawPicRect( MakeScaledRectFloat( 0.0f, 0.0f, 480.0f, 320.0f ), "iphone/submenus_background_image.tga");
//iphoneDrawPic(240-108, 0, 217, 50, "iphone/header_advanced.tga");
iphoneDrawPic(240-108*9/10, 0, 217*9/10, 50*9/10, "iphone/header_advanced.tga");
iphoneDrawPicRect( MakeScaledRectFloat( 240.0f-108.0f*9/10.0f, 0.0f, 217.0f*9/10.0f, 50.0f*9/10.0f ), "iphone/header_advanced.tga");
//gsh
iphoneDrawPic(10, 60-adjustY, 462, 250, "iphone/iphone_image.tga");
iphoneDrawPicRect( MakeScaledRectFloat( 10.0f, 60.0f-adjustY, 462.0f, 250.0f ), "iphone/iphone_image.tga");
// iphoneDrawPic(0, 320-240, 480, 240, "iphone/iphone_image.tga");
// iphoneDrawFace();
// iphoneDrawNotifyText();
// draw the active items at their current locations
for ( hudPic_t *hud = (hudPic_t *)&huds ; hud != (hudPic_t *)(&huds+1) ; hud++ ) { //nice foreach loop!
if ( hud->hudFlags & HF_DISABLED ) {
@@ -496,8 +589,10 @@ void iphoneHudEditFrame() {
int w = 48;
int h = 48;
ConvertFromScreenToImage(&x, &y, boundsRect);
ScaleFromScreenToImage(&w, &h, boundsRect);
ConvertFromScreenToImage(&x, &y, scaledBoundsRect, scaledScreenWidth, scaledScreenHeight );
ScaleFromScreenToImage(&w, &h, scaledBoundsRect);
//ScalePositionAndSizeInt( &x, &y, &w, &h );
iphoneDrawNumber( x, y, 99, w, h );
} else {
@@ -506,8 +601,10 @@ void iphoneHudEditFrame() {
int w = hud->width;
int h = hud->height;
ConvertFromScreenToImage(&x, &y, boundsRect);
ScaleFromScreenToImage(&w, &h, boundsRect);
ConvertFromScreenToImage(&x, &y, scaledBoundsRect, scaledScreenWidth, scaledScreenHeight );
ScaleFromScreenToImage(&w, &h, scaledBoundsRect);
//ScalePositionAndSizeInt( &x, &y, &w, &h );
iphoneDrawPicNum( x, y, w, h, hud->glTexNum );
}
@@ -519,16 +616,14 @@ void iphoneHudEditFrame() {
// draw the back button
if ( iphoneDrawPicWithTouch( 0, 0, 64, 36, "iphone/button_back.tga" ) ) {
menuState = IPM_CONTROLS;
if ( BackButton() ) {
iphoneStartPreviousMenu();
iphoneSetNotifyText( "" );
}
//x = 64;
//if (revLand->value)
x = 480-64;
x = 480-64;
// draw the menu button
if ( iphoneDrawPicWithTouch( x, 0, 64, 36, "iphone/menu.tga" ) ) {
if ( MenuButton() ) {
//if ( iphoneDrawPicWithTouch( 64, 0, 64, 36, "iphone/button_menu_yellow.tga" ) ) {
menuState = IPM_MAIN;
iphoneSetNotifyText( "" );
@@ -543,10 +638,6 @@ void iphoneHudEditFrame() {
int y = 0;
y = 0;
x = 480-width;
if (revLand->value){
y = 320-height;
x = 0;
}
//gsh
if ((int)volumeFireUpSetting->value) {
@@ -560,8 +651,6 @@ void iphoneHudEditFrame() {
x = 480-width-width-5;
if (revLand->value)
x = width+5;
if ((int)volumeFireDownSetting->value) {
if (iphoneDrawPicWithTouch( x, y, width, height, "iphone/button_pistol.tga" ))
@@ -574,10 +663,6 @@ void iphoneHudEditFrame() {
//-----------------------------------
*/
//draw the instructions
//if (revLand->value)
// iphoneDrawText(x+width+20, 300, 16, 16, "Drag the controls to customize");
//else
// iphoneCenterText(240, 300, "Drag each element of the controls to customize");
iphoneCenterArialText(245, 315, 0.8f, "Drag each element of the controls to customize");
}

View File

@@ -1,16 +1,9 @@
/*
* iphone_alerts.h
* wolf3d
*
* Created by Greg Hodges on 7/14/09.
* Copyright 2009 id software. All rights reserved.
*
* C wrappers for the UIAlertView.
*
*/
/*
Copyright (C) 2009 Id Software, Inc.
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@@ -28,12 +21,12 @@
*/
#ifndef __IPHONE_ALERTS__
#define __IPHONE_ALERTS__
void iphoneMessageBox(char *title, char *message);
void iphoneKillMessageBox();
void iphoneNewMessageBox(char *title, char *message);
void iphoneYesNoBox(char *title, char *message);
#endif

View File

@@ -1,14 +1,9 @@
/*
* iphone_alerts.c
* wolf3d
*
* Created by Greg Hodges on 7/14/09.
* Copyright 2009 id software. All rights reserved.
*
*/
/*
Copyright (C) 2009 Id Software, Inc.
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@@ -26,7 +21,6 @@
*/
#import "iphone_alerts.h"
#import "wolf3dAppDelegate.h"
@@ -71,6 +65,34 @@ void iphoneKillMessageBox()
[alert dismissWithClickedButtonIndex:alert.cancelButtonIndex animated:NO];
}
/*
========================
iphoneNewMessageBox()
creates a new message box without
drestroying the old one
========================
*/
void iphoneNewMessageBox(char *title, char *message)
{
UIAlertView *newAlert;
newAlert = [[UIAlertView alloc] initWithTitle:@"Title"
message:@"Message"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
NSString *nsTitle = [[NSString alloc] initWithCString:title];
NSString *nsMessage = [[NSString alloc] initWithCString:message];
newAlert.title = nsTitle;
newAlert.message = nsMessage;
[newAlert show];
[newAlert release];
}
#if 1
/*
==================================

View File

@@ -1,13 +1,9 @@
//
// iphone_downloadSOD.m
// wolf3d
//
// Created by Greg Hodges on 6/8/09.
// Copyright 2009 id software. All rights reserved.
//
/*
Copyright (C) 2009 Id Software, Inc.
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@@ -25,15 +21,15 @@
*/
#import "../wolfiphone.h"
#import "wolf3dAppDelegate.h"
//#import "zlib.h"
#import "iphone_alerts.h"
#include <CoreFoundation/CoreFoundation.h>
#include <unistd.h>
//gsh
#import <SystemConfiguration/SCNetworkReachability.h> //this is for testing network availability
//Note: in order to link the zlib library into the build from usr/lib/libz.ylib
@@ -46,6 +42,7 @@ extern void Com_Printf(const char* fmt, ... );
extern void my_snprintf( char *dest, size_t size, const char *format, ... );
#ifdef SPEARSTOREKIT
//extern int StartUntgz(char *TGZfile);
extern void PurchaseSOD();
extern bool isStorekitAvailable;
#endif
@@ -178,6 +175,11 @@ void DownloadSOD()
{
menuState = IPM_DOWNLOADPROGRESS; //change the menu to the download screen
/*
//TODO: alert user that the download is beginning and will take a while
*/
//iphoneMessageBox("Download in Progress", "You have not been charged. Purchasing comes at the end of this process. Download may take several minutes.");
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
@@ -199,6 +201,20 @@ void DownloadSOD()
//after this the control automatically goes back to the appDelegate where it receives the packets of downloaded information
}
/*
//============================
// AppendData
// adds a packet of data to our buffer
//============================
void AppendData(NSData* data)
{
Com_Printf("appending data\n");
NSUInteger length = [data length];
NSLog(@"Received %d bytes of data", length);
// [receivedData appendData:data];
}*/
unsigned int dataAmount = 0;
unsigned int dataTotalAmount = 0;
@@ -216,7 +232,13 @@ void AppendDataToFile(NSData* data)
dataAmount = (unsigned int)length;
dataTotalAmount += dataAmount;
totalDownloaded = dataTotalAmount; //update the download screen with the total downloaded
/*
if (dataTotalAmount > DownloadFileSize * 7/10 && !hasBeenMessaged)
{
iphoneMessageBox("Extraction in Progress", "SOD is installing. This may take several minutes.");
hasBeenMessaged = 1;
}
*/
//get documents directory
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
@@ -253,7 +275,162 @@ void DecompressData()
char path[1024];
my_snprintf(path, sizeof(path), "%s/downloadedfile.tgz", iphoneDocDirectory);
// StartUntgz(path); //this is where we would normally start decompression.
//but we no longer need to decompress anything
//so we might as well get rid of our zlib dependencies
}
/*
//================================
// CopyFolders
// Copies the contents of the base folder to the SODbase folder
// One folder at a time... hopefully to allow renderings
// This allows us to provide a smaller download
//================================
void CopyFolders()
{
int numberOfFolders = 7;
char sourcePath[1024];
char destPath[1024];
char folderNames[7][8] = {"iphone","lsfx","maps","music","sfx","sprites","walls"};
char *appDir;
appDir = getenv("CWD");
NSString *source;
NSString *toPath;
//Draw a black colored bar
colour4_t backgroundColor = { 10, 10, 10, 255 };
R_Draw_Blend( 40, 150, 4*100, 20, backgroundColor );
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
//try creating the base directory
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/", iphoneDocDirectory);
toPath = [[NSString alloc] initWithUTF8String:destPath];
NSLog(@"creating Directory: %@", toPath);
if([fileManager createDirectoryAtPath:toPath attributes:nil])
Com_Printf("creating SODbase success!\n");
else
Com_Printf("creating SODbase failed :(\n");
for (int i = 0; i < numberOfFolders; ++i)
{
my_snprintf(sourcePath, sizeof(sourcePath), "%s/base/%s", appDir, folderNames[i]);
// my_snprintf(destPath, sizeof(destPath), "%s/base/", iphoneDocDirectory);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/%s", iphoneDocDirectory, folderNames[i]);
source = [[NSString alloc] initWithUTF8String:sourcePath];
toPath = [[NSString alloc] initWithUTF8String:destPath];
NSLog(source);
NSLog(toPath);
//attempt the copy
if ([fileManager copyItemAtPath:source toPath:toPath error:&error])//;
Com_Printf("copy base %s success!\n", folderNames[i]);
else
Com_Printf("copy %s folder failed :(\n", folderNames[i]);
//draw the next iteration
colour4_t color = { 255, 0, 0, 255 };
R_Draw_Blend( 40, 150, 400*i/numberOfFolders, 20, color );
SysIPhoneSwapBuffers();
[source release];
[toPath release];
}
//TODO: delete some of the copied files
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/012.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/017.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/024.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/042.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/046.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/047.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/048.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/050.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/051.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/052.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/053.5551", iphoneDocDirectory);
remove(destPath);
}
//================================
// CopyFolder
// Copies the contents of the base folder to the SODbase folder
// This allows us to provide a smaller download
// This is all very slow. The POSIX library might've been faster.
//================================
void CopyFolder()
{
char sourcePath[1024];
char destPath[1024];
char *appDir;
appDir = getenv("CWD");
my_snprintf(sourcePath, sizeof(sourcePath), "%s/base/", appDir);
// my_snprintf(destPath, sizeof(destPath), "%s/base/", iphoneDocDirectory);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/", iphoneDocDirectory);
NSString *source = [[NSString alloc] initWithUTF8String:sourcePath];
NSString *toPath = [[NSString alloc] initWithUTF8String:destPath];
NSLog(source);
NSLog(toPath);
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
//attempt the copy
if ([fileManager copyItemAtPath:source toPath:toPath error:&error])//;
Com_Printf("copy base folder success!\n");
else
Com_Printf("copy base folder failed :(\n");
//TODO: delete some of the copied files
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/012.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/017.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/024.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/042.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/046.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/047.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/048.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/050.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/051.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/052.5551", iphoneDocDirectory);
remove(destPath);
my_snprintf(destPath, sizeof(destPath), "%s/SODbase/sprites/053.5551", iphoneDocDirectory);
remove(destPath);
}*/
//================================
// IsSpearPurchased
@@ -337,6 +514,10 @@ void FinalizeDownload()
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName = [documentsDirectory stringByAppendingString:@"/downloadedfile.tgz"];
//TODO: after save check that the file is of the correct size... if it isn't then something was corrupted
// and we should try again
//inflate the data and store in its appropriate directory
DecompressData();

View File

@@ -1,14 +1,9 @@
/*
* iphone_downloadUserMap.c
* wolf3d
*
* Created by Greg Hodges on 7/20/09.
* Copyright 2009 id software. All rights reserved.
*
*/
/*
Copyright (C) 2009 Id Software, Inc.
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@@ -26,7 +21,6 @@
*/
#import "../wolfiphone.h"
#import "wolf3dAppDelegate.h"
#import "iphone_alerts.h"
@@ -91,7 +85,7 @@ void DownloadURLConnection( char *url )
if (dp != NULL)
{
struct dirent *ep;
while (ep = readdir (dp))
while ( ( ep = readdir (dp) ) )
{
//if you find a .DS_Store file... ignore it!
if ( strcmp(ep->d_name, ".DS_Store") == 0 )

View File

@@ -1,6 +1,9 @@
/*
Copyright (C) 2009 Id Software, Inc.
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@@ -138,10 +141,24 @@ int returnButtonFrameNum = 0;
// console mode
int consoleActive;
// The size of UI elements will be scaled by this value in order to support different
// resolutions, such as Retina displays and the iPad.
float screenScale = 1.0f;
// the native iPhone code should set the following each frame:
int numTouches;
int touches[5][2]; // [0] = x, [1] = y in landscape mode, raster order with y = 0 at top
int isTouchMoving = 0; //gsh
// On Retina displays, touch coordinates are still reported at "low resolution". Since the game
// compares touch coordinates directly to the on-screen positions of buttons, we will need to
// scale the touches on Retina displays.
int touchCoordinateScale = 1;
float deviceScale = 1.0f;
deviceOrientation_t deviceOrientation = ORIENTATION_LANDSCAPE_LEFT;
float tilt; // -1.0 to 1.0
float tiltPitch;
@@ -158,6 +175,10 @@ texture_t *numberPics[10];
//gsh
texture_t *arialFontTexture;
// Profiling information
CFAbsoluteTime soundTime = 0.0;
CFAbsoluteTime menuTime = 0.0;
char *mugshotnames[ NUM_MUGSHOTS ] =
{
"iphone/FACE1APIC.tga",
@@ -202,6 +223,20 @@ int attackDirTime[2];
logTime_t loggedTimes[MAX_LOGGED_TIMES]; // indexed by iphoneFrameNum
// Some HUD element constants
#define HUD_FACE_WIDTH 64.0f
#define HUD_FACE_HEIGHT 80.0f
#define HUD_WEAPON_WIDTH 128.0f
#define HUD_WEAPON_HEIGHT 128.0f
float faceWidth = HUD_FACE_WIDTH;
float faceHeight = HUD_FACE_HEIGHT;
float weaponWidth = HUD_WEAPON_WIDTH;
float weaponHeight = HUD_WEAPON_HEIGHT;
/*
==================
iphoneActivateConsole
@@ -305,14 +340,14 @@ int iphoneCenterText( int x, int y, const char *str ) {
pfglTexCoord2f( fcol, frow );
pfglVertex2i( x, y );
pfglTexCoord2f( fcol+myfont->wFrac, frow );
pfglVertex2i( x+scale, y );
pfglTexCoord2f( fcol, frow+myfont->hFrac );
pfglVertex2i( x, y+scale );
pfglTexCoord2f( fcol+myfont->wFrac, frow+myfont->hFrac );
pfglVertex2i( x+scale, y+scale );
pfglTexCoord2f( fcol, frow+myfont->hFrac );
pfglVertex2i( x, y+scale );
pfglTexCoord2f( fcol+myfont->wFrac, frow );
pfglVertex2i( x+scale, y );
}
pfglEnd();
@@ -338,6 +373,8 @@ void iphoneCenterTextWithColor(int x, int y, const char *str, colour4_t color )
==================
*/
int iphoneDrawArialText( int x, int y, float scale, const char *str ) {
scale *= screenScale;
/*
int l = strlen( str );
int i;
@@ -392,17 +429,17 @@ int iphoneDrawArialText( int x, int y, float scale, const char *str ) {
// pfglVertex2f( fx + xoff, fy + yoff );
pfglVertex2i( x, y + yoff);
pfglTexCoord2f( x1, y0 );
// pfglVertex2f( fx + xoff + width, fy + yoff );
pfglVertex2i( x+width, y + yoff);
pfglTexCoord2f( x0, y1);
// pfglVertex2f( fx + xoff, fy + yoff + height );
pfglVertex2i( x, y+height + yoff);
pfglTexCoord2f( x1, y1);
// pfglVertex2f( fx + xoff + width, fy + yoff + height );
pfglVertex2i( x+width, y+height + yoff );
pfglTexCoord2f( x0, y1);
// pfglVertex2f( fx + xoff, fy + yoff + height );
pfglVertex2i( x, y+height + yoff);
pfglTexCoord2f( x1, y0 );
// pfglVertex2f( fx + xoff + width, fy + yoff );
pfglVertex2i( x+width, y + yoff);
// with our default texture, the difference is negligable
// fx += glyph->xadvance * scale;
@@ -439,7 +476,11 @@ int iphoneCenterArialText( int x, int y, float scale, const char *str )
++str;
}
return iphoneDrawArialText( x - width/2, y, scale, strcopy );
float scaledX = x - width / 2;
float scaledY = y;
ScalePosition( &scaledX, &scaledY );
return iphoneDrawArialText( scaledX, scaledY, scale, strcopy );
}
/*
==================
@@ -450,6 +491,7 @@ int iphoneCenterArialText( int x, int y, float scale, const char *str )
==================
*/
int iphoneDrawArialTextInBox( rect_t paragraph, int lineLength, const char *str, rect_t boxRect ) {
int l = strlen( str );
int i;
@@ -552,14 +594,14 @@ int iphoneDrawArialTextInBox( rect_t paragraph, int lineLength, const char *str,
pfglTexCoord2f( x0, y0 );
pfglVertex2i( x, y + yoff);
pfglTexCoord2f( x1, y0 );
pfglVertex2i( x+width, y + yoff);
pfglTexCoord2f( x0, y1);
pfglVertex2i( x, y+height + yoff);
pfglTexCoord2f( x1, y1);
pfglVertex2i( x+width, y+height + yoff );
pfglTexCoord2f( x0, y1);
pfglVertex2i( x, y+height + yoff);
pfglTexCoord2f( x1, y0 );
pfglVertex2i( x+width, y + yoff);
x += glyph->xadvance * scale + 1;
@@ -608,14 +650,15 @@ int iphoneDrawText( int x, int y, int width, int height, const char *str ) {
pfglTexCoord2f( fcol, frow );
pfglVertex2i( x, y );
pfglTexCoord2f( fcol+myfont->wFrac, frow );
pfglVertex2i( x+width, y );
pfglTexCoord2f( fcol, frow+myfont->hFrac );
pfglVertex2i( x, y+height );
pfglTexCoord2f( fcol+myfont->wFrac, frow+myfont->hFrac );
pfglVertex2i( x+width, y+height );
pfglTexCoord2f( fcol, frow+myfont->hFrac );
pfglVertex2i( x, y+height );
pfglTexCoord2f( fcol+myfont->wFrac, frow );
pfglVertex2i( x+width, y );
}
pfglEnd();
@@ -644,8 +687,11 @@ void iphoneDrawTextWithColor( rect_t rect, const char *str, float colors[4] ) {
*/
void iphoneDrawMapName( rect_t rect, const char *str ) {
rect.y += 25;
rect.x += 110;//80;
rectFloat_t rectFloat = MakeScaledRectFloat( rect.x, rect.y, rect.width, rect.height );
/*
float colors[4] = { 0, 0, 0, 1 };
iphoneDrawTextWithColor(RectMake(rect.x+1, rect.y+1, rect.width, rect.height), str, colors);
@@ -657,11 +703,11 @@ void iphoneDrawMapName( rect_t rect, const char *str ) {
*/
pfglColor4f(0, 0, 0, 1);
iphoneDrawArialText(rect.x + 1, rect.y + 1, 0.9f, str);
iphoneDrawArialText(rect.x + 2, rect.y + 2, 0.9f, str);
iphoneDrawArialText(rectFloat.x + 1, rectFloat.y + 1, 0.9f, str);
iphoneDrawArialText(rectFloat.x + 2, rectFloat.y + 2, 0.9f, str);
pfglColor4f(225.0f/255, 166.0f/255, 0, 1);
pfglColor4f(225.0f/255, 242.0f/255, 0, 1);
iphoneDrawArialText(rect.x, rect.y, 0.9f, str);
iphoneDrawArialText(rectFloat.x, rectFloat.y, 0.9f, str);
pfglColor4f(1, 1, 1, 1);
}
@@ -737,14 +783,14 @@ int iphoneDrawTextInBox( rect_t paragraph, int lineLength, const char *str, rect
pfglTexCoord2f( fcol, frow );
pfglVertex2i( x, y );
pfglTexCoord2f( fcol+myfont->wFrac, frow );
pfglVertex2i( x+width, y );
pfglTexCoord2f( fcol, frow+myfont->hFrac );
pfglVertex2i( x, y+height );
pfglTexCoord2f( fcol+myfont->wFrac, frow+myfont->hFrac );
pfglVertex2i( x+width, y+height );
pfglTexCoord2f( fcol, frow+myfont->hFrac );
pfglVertex2i( x, y+height );
pfglTexCoord2f( fcol+myfont->wFrac, frow );
pfglVertex2i( x+width, y );
}
pfglEnd();
@@ -752,7 +798,136 @@ int iphoneDrawTextInBox( rect_t paragraph, int lineLength, const char *str, rect
return l * step;
}
/*
==================
ScaleToScreen
Scales a value for the current resolution.
==================
*/
void ScaleToScreen( int * value ) {
if ( value ) {
*value *= screenScale;
}
}
/*
==================
ScalePosition
Scales an x, y position for the current resolution.
==================
*/
void ScalePosition( float * x, float * y ) {
if ( x ) {
*x *= screenScale;
*x += ( viddef.width - ( REFERENCE_WIDTH * screenScale ) ) / 2.0f;
}
if ( y ) {
*y *= screenScale;
*y += ( viddef.height - ( REFERENCE_HEIGHT * screenScale ) ) / 2.0f;
}
}
/*
==================
ScalePositionInt
Scales an x, y position for the current resolution.
==================
*/
void ScalePositionInt( int * x, int * y ) {
if ( x ) {
*x *= screenScale;
*x += ( viddef.width - ( REFERENCE_WIDTH * screenScale ) ) / 2.0f;
}
if ( y ) {
*y *= screenScale;
*y += ( viddef.height - ( REFERENCE_HEIGHT * screenScale ) ) / 2.0f;
}
}
/*
==================
ScalePositionAndSize
Scales an x, y, width, and height set for the current resolution.
==================
*/
void ScalePositionAndSize( float * x, float * y, float * w, float * h ) {
ScalePosition( x, y );
if ( w ) {
*w *= screenScale;
}
if ( h ) {
*h *= screenScale;
}
}
/*
==================
ScalePositionAndSizeInt
Scales an x, y, width, and height set for the current resolution.
==================
*/
void ScalePositionAndSizeInt( int * x, int * y, int * w, int * h ) {
ScalePositionInt( x, y );
if ( w ) {
*w *= screenScale;
}
if ( h ) {
*h *= screenScale;
}
}
/*
==================
ScaleRect
Scales a rect for the current resolution.
==================
*/
void ScaleRect( rect_t * rect ) {
if ( rect ) {
ScalePositionInt( &(rect->x), &(rect->y) );
rect->width *= screenScale;
rect->height *= screenScale;
}
}
/*
==================
ScaleRectFloat
Scales a rect for the current resolution.
==================
*/
void ScaleRectFloat( rectFloat_t * rect ) {
if ( rect ) {
ScalePositionAndSize( &rect->x, &rect->y, &rect->width, &rect->height );
}
}
/*
==================
MakeScaledRectFloat
Produces a scaled rect for the current resolution.
==================
*/
rectFloat_t MakeScaledRectFloat( float x, float y, float width, float height ) {
rectFloat_t rect = { x, y, width, height };
ScaleRectFloat( &rect );
return rect;
}
/*
==================
@@ -762,6 +937,8 @@ int iphoneDrawTextInBox( rect_t paragraph, int lineLength, const char *str, rect
==================
*/
int TouchDown( int x, int y, int w, int h ) {
//ScalePositionAndSize( &x, &y, &w, &h );
int i;
for ( i = 0 ; i < numTouches ; i++ ) {
if ( touches[i][0] >= x && touches[i][1] >= y
@@ -781,6 +958,8 @@ int TouchDown( int x, int y, int w, int h ) {
==================
*/
int TouchReleased( int x, int y, int w, int h ) {
//ScalePositionAndSize( &x, &y, &w, &h );
int i;
int downPrev = 0;
int downNow = 0;
@@ -828,21 +1007,6 @@ int TouchReleased( int x, int y, int w, int h ) {
return 1;
}
/*
==================
iphoneRotateForLandscape
==================
*/
void iphoneRotateForLandscape() {
if ( revLand->value ) {
// reverse landscape mode
pfglRotatef( -90, 0, 0, 1 );
} else {
pfglRotatef( 90, 0, 0, 1 );
}
}
/*
==================
iphoneSet2D
@@ -850,20 +1014,23 @@ void iphoneRotateForLandscape() {
==================
*/
void iphoneSet2D( void ) {
pfglViewport( 0,0, 480, 320 );
pfglMatrixMode( GL_MODELVIEW );
pfglLoadIdentity();
pfglDisable( GL_DEPTH_TEST );
pfglDisable( GL_CULL_FACE );
pfglEnable( GL_BLEND );
pfglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
pfglDisable( GL_ALPHA_TEST );
static bool doBlending = true;
if ( doBlending ) {
pfglEnable( GL_BLEND );
} else {
pfglDisable( GL_BLEND );
}
pfglColor4f( 1,1,1,1 );
pfglMatrixMode( GL_PROJECTION );
pfglLoadIdentity();
iphoneRotateForLandscape();
pfglOrtho( 0, 480, 320, 0, -99999, 99999 );
pfglOrtho( 0, viddef.width, viddef.height, 0, -99999, 99999 );
}
@@ -902,6 +1069,9 @@ float AxisHit( hudPic_t *hud ) {
int y = hud->y;
int width = hud->width;
int height = hud->width;
//ScalePositionAndSize( &x, &y, &width, &height );
float activeFraction = 0.8f;
int i;
int isXaxis = ( hud != &huds.forwardStick );
@@ -955,33 +1125,6 @@ float AxisHit( hudPic_t *hud ) {
return 0;
}
void iphoneTouchEvent( int _numTouches, int _touches[16] ) {
numTouches = _numTouches;
for ( int i = 0 ; i < numTouches ; i++ ) {
if ( revLand->value ) {
touches[i][0] = _touches[i*2+1];
touches[i][1] = 319 - _touches[i*2+0];
} else {
touches[i][0] = 479 - _touches[i*2+1];
touches[i][1] = _touches[i*2+0];
}
}
}
void iphoneCheckForLandscapeReverse() {
static int reverseCount;
// if we stay significantly negative for half a second, flip orientation
if ( tiltPitch < -0.35 ) {
if ( ++reverseCount > 10 ) {
Cvar_SetValue( revLand->name, !revLand->value );
SysIPhoneSetUIKitOrientation( revLand->value );
}
} else {
reverseCount = 0;
}
}
void iphoneTiltEvent( float *tilts ) {
int i;
int j;
@@ -989,7 +1132,7 @@ void iphoneTiltEvent( float *tilts ) {
float sum[3];
static float prevTime;
if ( revLand->value ) {
if ( deviceOrientation == ORIENTATION_LANDSCAPE_RIGHT ) {
tilts[1] = -tilts[1];
tilts[0] = -tilts[0];
}
@@ -1087,7 +1230,7 @@ PRIVATE void CreateIphoneUserCmd()
float stickTurnValue;
float stickMoveValue;
stickTurnValue = stickTurnBase->value + stickTurnScale->value * sensitivity->value;
stickTurnValue = ( stickTurnBase->value + stickTurnScale->value * sensitivity->value );
stickMoveValue = stickMoveBase->value + stickMoveScale->value * sensitivity->value;
usercmd_t *cmd = &Player.cmd;
@@ -1122,18 +1265,38 @@ PRIVATE void CreateIphoneUserCmd()
}
#endif
int weaponSwitchWidth = weaponWidth * 0.625f;
// tapping the weapon issues the nextWeapon impulse
if ( TouchReleased( 240 - 40, 320 - 80 - 64, 80, 64 ) ) {
if ( TouchReleased( (viddef.width / 2) - ( weaponSwitchWidth / 2 ),
viddef.height - faceHeight - ( weaponHeight / 2 ),
weaponSwitchWidth,
weaponHeight / 2 ) ) {
cmd->buttons |= BUTTON_CHANGE_WEAPON;
}
cmd->forwardmove = -stickMoveValue * AxisHit( &huds.forwardStick );
cmd->sidemove = stickMoveValue * AxisHit( &huds.sideStick );
Player.position.angle += -stickTurnValue * AxisHit( &huds.turnStick );
float forwardAxisHit = AxisHit( &huds.forwardStick );
float sideAxisHit = AxisHit( &huds.sideStick );
float turnAxisHit = AxisHit( &huds.turnStick );
static bool printSticks = false;
if ( printSticks ) {
printf( "Forward: %.4f \nSide: %.4f\nTurn: %.4f\n", forwardAxisHit, sideAxisHit, turnAxisHit );
}
cmd->forwardmove = -stickMoveValue * forwardAxisHit;
cmd->sidemove = stickMoveValue * sideAxisHit;
Player.position.angle += -stickTurnValue * turnAxisHit * tics;
// accelerometer tilting
cmd->sidemove += tiltMove->value * DeadBandAdjust( tilt, tiltDeadBand->value );
Player.position.angle -= tiltTurn->value * DeadBandAdjust( tilt, tiltDeadBand->value );
// Multiply by 0.5 and tics because the original calculation was for 30Hz.
// The multiplication allows this calculation to scale with different framerates while
// maintaining the same behavior at 30Hz.
Player.position.angle -= tiltTurn->value * DeadBandAdjust( tilt, tiltDeadBand->value ) * 0.5f * tics;
// always use
if ( iphoneFrameNum & 1 ) {
@@ -1171,12 +1334,15 @@ void iphoneHighlightPicNumWhenTouched( int x, int y, int w, int h, int glTexNum
void iphoneDrawWeapon( void ) {
char name[ 32 ];
texture_t *tex;
static int w = 128;
static int h = 128;
int x = (viddef.width - w ) >> 1;
int y = viddef.height - 80 - h;
float w = 128 * screenScale;
float h = 128 * screenScale;
float x = (viddef.width - w ) / 2.0f;
float y = viddef.height - ( HUD_FACE_HEIGHT * screenScale ) - h;
int frame;
weaponWidth = w;
weaponHeight = h;
if ( gunFrame->value ) {
// screenshots look better with the muzzle flash
frame = Player.weapon * 4 + gunFrame->value + SPR_KNIFEREADY;
@@ -1189,12 +1355,12 @@ void iphoneDrawWeapon( void ) {
R_Bind( tex->texnum );
pfglBegin( GL_QUADS );
pfglBegin( GL_TRIANGLE_STRIP );
pfglTexCoord2f( 0.01f, 0.01f ); pfglVertex2i( x, y );
pfglTexCoord2f( 0.99f, 0.01f ); pfglVertex2i( x + w, y );
pfglTexCoord2f( 0.99f, 0.99f ); pfglVertex2i( x + w, y + h );
pfglTexCoord2f( 0.01f, 0.99f ); pfglVertex2i( x, y + h );
pfglTexCoord2f( 0.01f, 0.01f ); pfglVertex2f( x, y );
pfglTexCoord2f( 0.01f, 0.99f ); pfglVertex2f( x, y + h );
pfglTexCoord2f( 0.99f, 0.01f ); pfglVertex2f( x + w, y );
pfglTexCoord2f( 0.99f, 0.99f ); pfglVertex2f( x + w, y + h );
pfglEnd();
}
@@ -1207,6 +1373,8 @@ void iphoneDrawWeapon( void ) {
==================
*/
void iphoneDrawNumber( int x, int y, int number, int charWidth, int charHeight ) {
//ScalePositionAndSize( &x, &y, &charWidth, &charHeight );
texture_t *tex;
int i;
char string[ 20 ];
@@ -1226,12 +1394,12 @@ void iphoneDrawNumber( int x, int y, int number, int charWidth, int charHeight )
tex = numberPics[digit];
R_Bind( tex->texnum );
pfglBegin( GL_QUADS );
pfglBegin( GL_TRIANGLE_STRIP );
pfglTexCoord2f( 0, 0 ); pfglVertex2i( x, y );
pfglTexCoord2f( 0, 1 ); pfglVertex2i( x, y+charHeight );
pfglTexCoord2f( 1, 0 ); pfglVertex2i( x+charWidth, y );
pfglTexCoord2f( 1, 1 ); pfglVertex2i( x+charWidth, y+charHeight );
pfglTexCoord2f( 0, 1 ); pfglVertex2i( x, y+charHeight );
pfglEnd();
x += charStep;
@@ -1247,22 +1415,31 @@ void iphoneDrawNumber( int x, int y, int number, int charWidth, int charHeight )
*/
void iphoneDrawFace() {
int i;
int w = 64;
int h = 80;
int x = (viddef.width - w ) >> 1;
int y = viddef.height - h;
float w = HUD_FACE_WIDTH * screenScale;
float h = HUD_FACE_HEIGHT * screenScale;
const char *pic;
const int halfScreenWidth = viddef.width / 2.0f;
faceWidth = 128.0f * screenScale;
float halfFaceWidth = faceWidth / 2.0f;
faceHeight = 80.0f * screenScale;
float keyY = 72.0f * screenScale;
float keyWidth = 32.0f * screenScale;
float keyHeight = 64.0f * screenScale;
float damageWidth = 40.0f * screenScale;
// solid background
iphoneDrawPic( 240 - 64, 320 - 80, 128, 80, "iphone/status_hud.tga" );
iphoneDrawPicFloat( halfScreenWidth - halfFaceWidth, viddef.height - faceHeight, faceWidth, faceHeight, "iphone/status_hud.tga" );
// keys on the side
if( Player.items & ITEM_KEY_1 ) {
iphoneDrawPic( 240-64, 320-72, 32, 64, "iphone/gold_key.tga" );
iphoneDrawPicFloat( halfScreenWidth - halfFaceWidth, viddef.height - keyY, keyWidth, keyHeight, "iphone/gold_key.tga" );
}
if( Player.items & ITEM_KEY_2 ) {
iphoneDrawPic( 240+32, 320-72, 32, 64, "iphone/silver_key.tga" );
iphoneDrawPicFloat( halfScreenWidth + halfFaceWidth - keyWidth, viddef.height - keyY, keyWidth, keyHeight, "iphone/silver_key.tga" );
}
@@ -1312,7 +1489,7 @@ void iphoneDrawFace() {
pic = mugshotnames[ 21 ];
}
iphoneDrawPic( x, y, w, h, pic );
iphoneDrawPicFloat( halfScreenWidth - w / 2.0f, (float)(viddef.height) - faceHeight, w, h, pic );
// blend the right / left damage indicators on the side
for ( i = 0 ; i < 2 ; i++ ) {
@@ -1332,15 +1509,22 @@ void iphoneDrawFace() {
}
pfglColor4f( 1, 1, 1, f );
if ( i == 0 ) {
iphoneDrawPic( 240 - 64, 320 - 80, 40, 80, "iphone/L_damage.tga" );
iphoneDrawPicFloat( halfScreenWidth - halfFaceWidth,
(float)(viddef.height) - faceHeight,
damageWidth, faceHeight, "iphone/L_damage.tga" );
} else {
iphoneDrawPic( 240 + 64 - 40, 320 - 80, 40, 80, "iphone/R_damage.tga" );
iphoneDrawPicFloat( halfScreenWidth + halfFaceWidth - damageWidth,
(float)viddef.height - faceHeight,
damageWidth, faceHeight, "iphone/R_damage.tga" );
}
pfglColor4f( 1, 1, 1, 1 );
}
float healthWidth = 16 * screenScale;
float healthHeight = 16 * screenScale;
// draw the tiny health numbers on top of the face
iphoneDrawNumber( 240, 304, Player.health, 16, 16 );
iphoneDrawNumber( halfScreenWidth, viddef.height - healthHeight, Player.health, healthWidth, healthHeight );
}
/*
@@ -1422,7 +1606,8 @@ void iphoneDrawReturnButton() {
f = 0.5f;
pfglColor4f( 1, 1, 1, f );
if (iphoneDrawPicWithTouch( 240-32, 32, 64, 48, "iphone/button_back.tga")) {//int x, int y, int w, int h, const char *pic )) {
if (iphoneDrawPicRectWithTouch( MakeScaledRectFloat( 240.0f-32.0f, 32.0f, BACK_BUTTON_WIDTH, BACK_BUTTON_HEIGHT ),
"iphone/button_back.tga")) {//int x, int y, int w, int h, const char *pic )) {
menuState = IPM_MAPS;
returnButtonFrameNum = 0;
@@ -1445,6 +1630,8 @@ void iphoneDrawReturnButton() {
episode->value = 9;
}
}
iphoneStartPreviousMenu();
}
pfglColor4f( 1, 1, 1, 1 );
@@ -1552,6 +1739,10 @@ iphoneFrame
==================
*/
void iphoneFrame() {
// clear depth buffer
qglDepthMask( GL_TRUE );
pfglClear( GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT );
unsigned char blendColor[4] = { 0, 0, 0, 0 };
iphoneFrameNum++;
@@ -1566,14 +1757,16 @@ void iphoneFrame() {
// toggle / scroll down the console
Client_Screen_RunConsole();
// check for flipping the phone orientation
iphoneCheckForLandscapeReverse();
// fixed frame timing, assume we go 30hz
tics = 2; // wolf's global rate counter
// fixed frame timing, assume we go 60Hz
tics = DEFAULT_FRAME_INTERVAL; // wolf's global rate counter
CFAbsoluteTime soundStartTime = CFAbsoluteTimeGetCurrent();
Sound_Update( vnull, vnull, vnull, vnull );
CFAbsoluteTime soundEndTime = CFAbsoluteTimeGetCurrent();
soundTime = soundEndTime - soundStartTime;
//printf( "Sound_Update took %0.8f seconds.\n", soundTime );
if ( consoleActive ) {
iphoneSet2D();
@@ -1581,16 +1774,20 @@ void iphoneFrame() {
Client_Screen_DrawConsole();
iphoneSavePrevTouches();
SysIPhoneSwapBuffers();
//SysIPhoneSwapBuffers();
return;
}
if ( menuState != IPM_GAME ) {
iphoneSet2D();
iphoneDrawMenus();
CFAbsoluteTime menuStartTime = CFAbsoluteTimeGetCurrent();
iphoneDrawMenus( vnull, vnull, vnull, vnull );
CFAbsoluteTime menuEndTime = CFAbsoluteTimeGetCurrent();
menuTime = menuEndTime - menuStartTime;
//printf( "iphoneDrawMenus took %0.8f seconds.\n", menuTime );
iphoneSavePrevTouches();
SysIPhoneSwapBuffers();
return;
}
@@ -1620,10 +1817,6 @@ void iphoneFrame() {
levelstate.time += tics;
}
// clear depth buffer
qglDepthMask( GL_TRUE );
pfglClear( GL_DEPTH_BUFFER_BIT );
// fill the floor and ceiling
pfglDisable( GL_BLEND );
@@ -1633,7 +1826,7 @@ void iphoneFrame() {
pfglMatrixMode( GL_PROJECTION );
pfglLoadIdentity();
iphoneRotateForLandscape();
pfglOrtho( 0, 480, 320, 0, -99999, 99999 );
pfglOrtho( 0, viddef.width, viddef.height, 0, -99999, 99999 );
R_Draw_Fill( 0, 0, viddef.width, viddef.height >> 1, r_world->ceilingColour );
R_Draw_Fill( 0, viddef.height >> 1, viddef.width, viddef.height, r_world->floorColour );
@@ -1644,7 +1837,6 @@ void iphoneFrame() {
cur_x_fov = 75;
cur_y_fov = CalcFov( cur_x_fov, (float)viddef.width, (float)viddef.height );
pfglMatrixMode( GL_PROJECTION );
pfglLoadIdentity();
iphoneRotateForLandscape();
MYgluPerspective( cur_y_fov - 2.0f, ratio, 0.2f, 64.0f ); // tweak fov in to avoid edge tile clips
@@ -1653,13 +1845,8 @@ void iphoneFrame() {
pfglRotatef( (float)(90 - FINE2DEG( Player.position.angle )), 0, 1, 0 );
pfglTranslatef( -Player.position.origin[ 0 ] / FLOATTILE, 0, Player.position.origin[ 1 ] / FLOATTILE );
pfglCullFace( GL_BACK );
pfglEnable( GL_DEPTH_TEST );
pfglEnable( GL_CULL_FACE );
pfglDisable( GL_BLEND );
pfglDisable( GL_ALPHA_TEST );
// find and draw all the walls
R_RayCast( Player.position, r_world );
@@ -1668,7 +1855,7 @@ void iphoneFrame() {
R_DrawSprites();
// draw 2D overlays
iphoneSet2D();
iphoneSet2D();
// do a full screen blend for damage, death, and bonus pickup
if( Player.playstate == ex_dead ) {
@@ -1733,6 +1920,7 @@ void iphoneFrame() {
if ( iphoneDrawHudButton( &huds.menu ) ) {
menuState = IPM_MAIN;
iphoneStartMainMenu();
}
if ( iphoneDrawHudButton( &huds.map ) ) {
iphoneOpenAutomap();
@@ -1745,7 +1933,7 @@ void iphoneFrame() {
iphoneSavePrevTouches();
SysIPhoneSwapBuffers(); // do the swapbuffers
//SysIPhoneSwapBuffers(); // do the swapbuffers
}
@@ -1759,7 +1947,7 @@ void iphoneDrawLoading()
//draw stuff here
iphoneDrawText(100, 100, 16, 16, "Drawing Loading!");//, <#int y#>, <#int width#>, <#int height#>, <#const char * str#>)
SysIPhoneSwapBuffers(); // do the swapbuffers
//SysIPhoneSwapBuffers(); // do the swapbuffers
}

View File

@@ -1,8 +1,13 @@
/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
Copyright (C) 2004-2005 Michael Liebscher <johnnycanuck@users.sourceforge.net>
Copyright (C) 1997-2001 Id Software, Inc.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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
@@ -28,6 +33,7 @@
*/
#include "../wolfiphone.h"
#include "iphone_store.h"
cvar_t *controlScheme;
cvar_t *sensitivity;
@@ -55,7 +61,6 @@ cvar_t *cropSprites;
cvar_t *blends;
cvar_t *gunFrame;
cvar_t *slowAI;
cvar_t *revLand;
cvar_t *mapScale;
cvar_t *hideControls;
cvar_t *autoFire;
@@ -111,20 +116,27 @@ void Reset_f() {
void iphoneStartup() {
char *s;
int start = Sys_Milliseconds();
static bool firstInit = true;
if ( !firstInit ) {
return;
}
firstInit = false;
#ifdef STOREKIT
//check for storekit framework and set appropriate flags... gsh
CheckForStorekitExistence();
#endif
InAppPurchaseInit();
// temporary
const char *systemVersion = SysIPhoneGetOSVersion();
printf( "systemVersion = %s\n", systemVersion );
z_chain.next = z_chain.prev = &z_chain;
InitImmediateModeGL();
// Prepare enough of the subsystems to handle
// cvar and command buffer management.
COM_InitArgv( 0, NULL ); // FIXME: get args...
@@ -170,11 +182,11 @@ void iphoneStartup() {
consoleActive = 0;
controlScheme = Cvar_Get( "controlScheme", "0", CVAR_ARCHIVE );
sensitivity = Cvar_Get( "sensitivity", "0.3", CVAR_ARCHIVE );
stickTurnBase = Cvar_Get( "stickTurnBase", "300", CVAR_ARCHIVE );
stickTurnScale = Cvar_Get( "stickTurnScale", "500", CVAR_ARCHIVE );
stickMoveBase = Cvar_Get( "stickMoveBase", "3000", CVAR_ARCHIVE );
stickMoveScale = Cvar_Get( "stickMoveScale", "5000", CVAR_ARCHIVE );
sensitivity = Cvar_Get( "sensitivity", "0.5", CVAR_ARCHIVE );
stickTurnBase = Cvar_Get( "stickTurnBase", "200", CVAR_ARCHIVE );
stickTurnScale = Cvar_Get( "stickTurnScale", "400", CVAR_ARCHIVE );
stickMoveBase = Cvar_Get( "stickMoveBase", "2000", CVAR_ARCHIVE );
stickMoveScale = Cvar_Get( "stickMoveScale", "4000", CVAR_ARCHIVE );
stickDeadBand = Cvar_Get( "stickDeadBand", "0.2", CVAR_ARCHIVE );
tiltTurn = Cvar_Get( "tiltTurn", "0", CVAR_ARCHIVE );
tiltMove = Cvar_Get( "tiltMove", "0", CVAR_ARCHIVE );
@@ -195,13 +207,13 @@ void iphoneStartup() {
blends = Cvar_Get( "blends", "1", 0 );
gunFrame = Cvar_Get( "gunFrame", "0", 0 );
slowAI = Cvar_Get( "slowAI", "0", 0 );
revLand = Cvar_Get( "revLand", "0", CVAR_ARCHIVE );
mapScale = Cvar_Get( "mapScale", "10", CVAR_ARCHIVE );
hideControls = Cvar_Get( "hideControls", "0", CVAR_ARCHIVE );
autoFire = Cvar_Get( "autoFire", "0", 0 );
// make sure volume changes and incoming calls draw the right orientation
SysIPhoneSetUIKitOrientation( revLand->value );
g_version = Cvar_Get( "g_version", "1", CVAR_ARCHIVE );
//this call fixes the bug of crashed apps during sod map loads
//( it only occured on devices updated from ( 1.1 || 1.0 )->1.2 )
Cvar_Set( "g_version", "1" );
/* //if we don't preload the ogg files then we have faster start ups... gsh
// preload all the ogg FM synth sounds
@@ -246,15 +258,30 @@ void iphoneStartup() {
if ( !LoadTheGame() ) {
PL_NewGame( &Player );
iphoneStartMap( currentMap.episode, currentMap.map, currentMap.skill );
HudSetForScheme( 0 );
}
// always start at main menu
menuState = IPM_MAIN;
// Start menu music
iphoneInitMenuMusic();
iphoneStartMenuMusic();
Com_Printf( "startup time: %i msec\n", Sys_Milliseconds() - start );
}
/*
===================
iphoneStartGameplay
Loads the saved game if there is one, otherwise starts a new game.
===================
*/
void iphoneStartGameplay() {
}
/*
===================
iphonePreloadBeforePlay
@@ -354,9 +381,9 @@ void iphoneWriteConfig( void ) {
*/
void iphoneShutdown() {
Sound_StopAllSounds();
Sound_StopBGTrack();
//Sound_StopBGTrack();
iphoneWriteConfig();
SaveTheGame();
exit( 0 );
//exit( 0 );
}

View File

@@ -1,11 +1,27 @@
/*
* iphone_mapselector.c
* wolf3d
*
* Created by Greg Hodges on 7/2/09.
* Copyright 2009 id software. All rights reserved.
*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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 "../wolfiphone.h"
#include <dirent.h>
@@ -13,7 +29,6 @@ const char levelNames[][29] = {
"E1 level 1",
"E1 level 2",
"E1 level 3",
#ifndef LITE
"E1 level 4",
"E1 level 5",
"E1 level 6",
@@ -92,7 +107,6 @@ const char levelNames[][29] = {
"Floor 19: Secret 1 ",
"Floor 20: Secret 2 ",
"Floor 21: Angel of Death",
#endif
};
int dragVelocity = 0; //velocity for the scrolling maps
@@ -106,9 +120,7 @@ extern int iphoneDrawPicWithTouchAndColor( int x, int y, int w, int h, const cha
extern void iphoneStartUserMap( int episodeNum, int mapNum, int skillLevel, char *mapName );
#ifdef LITE
extern void GetMoreLevels( int x, int y );
#endif
//==========================================
// iphoneUpdateDrags()
@@ -132,13 +144,13 @@ void iphoneUpdateDrags(int numMaps, int skillSides, int height, int spacing, int
//boundary check the drags
int num = numMaps+1+6;
if (g_version-> value == SPEAROFDESTINY)
if (g_version->value == SPEAROFDESTINY)
num = numMaps + 7;
num += numUserMaps + 1;
if (dragPosition < 320 - (height+spacing)*(num) - 20)
dragPosition < 320 - (height+spacing)*(num) - 20;
dragPosition = 320 - (height+spacing)*(num) - 20;
else if (dragPosition > 40)
dragPosition = 40;
@@ -150,6 +162,8 @@ void iphoneUpdateDrags(int numMaps, int skillSides, int height, int spacing, int
//update the drags
dragPosition -= dragVelocity;
dragVelocity /= screenScale;
//retard the velocity
if (dragVelocity > 0)
--dragVelocity;
@@ -184,28 +198,28 @@ void iphoneDrawRewards(int m, int s, int x, int y)
int height = 40;//22;
int spacing = -12;
// draw award shadows
iphoneDrawPic( x,y+23, width, height, "iphone/kills_shadow.tga" ); x += width + spacing;
iphoneDrawPic( x,y+23, width, height, "iphone/secrets_shadow.tga" ); x += width + spacing;
iphoneDrawPic( x,y+23, width, height, "iphone/treasure_shadow.tga" ); x += width + spacing;
iphoneDrawPic( x,y+23, width, height, "iphone/partime_shadow.tga" ); //x += width + 5;
iphoneDrawPicRect( MakeScaledRectFloat( x,y+23, width, height ), "iphone/kills_shadow.tga" ); x += width + spacing;
iphoneDrawPicRect( MakeScaledRectFloat( x,y+23, width, height ), "iphone/secrets_shadow.tga" ); x += width + spacing;
iphoneDrawPicRect( MakeScaledRectFloat( x,y+23, width, height ), "iphone/treasure_shadow.tga" ); x += width + spacing;
iphoneDrawPicRect( MakeScaledRectFloat( x,y+23, width, height ), "iphone/partime_shadow.tga" ); //x += width + 5;
x = startX;
// draw awards
if ( (ch & MF_KILLS) || forceDrawRewards) {
iphoneDrawPic( x,y+23, width, height, "iphone/kills.tga" );
iphoneDrawPicRect( MakeScaledRectFloat( x,y+23, width, height ), "iphone/kills.tga" );
}
x += width + spacing;
if ( (ch & MF_SECRETS) || forceDrawRewards) {
iphoneDrawPic( x,y+23, width, height, "iphone/secrets.tga" );
iphoneDrawPicRect( MakeScaledRectFloat( x,y+23, width, height ), "iphone/secrets.tga" );
}
x += width + spacing;
if ( (ch & MF_TREASURE) || forceDrawRewards) {
iphoneDrawPic( x,y+23, width, height, "iphone/treasure.tga" );
iphoneDrawPicRect( MakeScaledRectFloat( x,y+23, width, height ), "iphone/treasure.tga" );
}
x += width + spacing;
if ( (ch & MF_TIME) || forceDrawRewards) {
iphoneDrawPic( x,y+23, width, height, "iphone/partime.tga" );
iphoneDrawPicRect( MakeScaledRectFloat( x,y+23, width, height ), "iphone/partime.tga" );
}
}
@@ -239,7 +253,7 @@ int iphoneDrawUserMaps(int Yoffset, int height, int spacing, int skillValue)
iphoneDrawPic( 0, y, 480-80, height, "iphone/button_epSOD.tga");
while (ep = readdir (dp))
while ( ( ep = readdir (dp) ) )
{
++numMaps;
if (numMaps < 3) //skip the '.' and '..'
@@ -315,13 +329,9 @@ void iphoneSelectMapMenu()
char strMission[80];
strMission[79] = '\0';
#ifdef LITE
int numMaps = 3;//5;
#else
int numMaps = 60;
if (g_version->value == SPEAROFDESTINY)
numMaps = 60 + 21;
#endif
iphoneDrawPic(0, 0, 480, 320, "iphone/submenus_background_image.tga");
@@ -429,18 +439,13 @@ void iphoneSelectMapMenu()
int numUserMaps = 0;
#ifdef LITE
//buy more episodes button
GetMoreLevels( 0, dragPosition + (height + spacing) * (m+1) );
#else
#if 0
//buy more episodes button
if (g_version->value != SPEAROFDESTINY)
GetSpearOfDestiny( 0, dragPosition + (height + spacing) * (m+6) );
#endif
//TODO: Draw user maps
numUserMaps = iphoneDrawUserMaps(y, height, spacing, skillValue);
#endif
numUserMaps = iphoneDrawUserMaps(y, height, spacing, skillValue);
//Update the scrolling drags
iphoneUpdateDrags(numMaps, skillSides, height, spacing, numUserMaps);

File diff suppressed because it is too large Load Diff

View File

@@ -3,6 +3,8 @@
#ifndef _IPHONE_QGL_H_
#define _IPHONE_QGL_H_
//#define QGL_CHECK_GL_ERRORS
#ifdef QGL_LOG_GL_CALLS
extern unsigned int QGLLogGLCalls;
#ifdef __cplusplus
@@ -1177,8 +1179,8 @@ static inline GLenum qglGetError(void)
#endif
returnValue = glGetError();
#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS)
if (!QGLBeginStarted)
QGLCheckError("glGetError");
//if (!QGLBeginStarted)
// QGLCheckError("glGetError");
#endif
return returnValue;
}
@@ -2041,8 +2043,7 @@ static inline void qglViewport(GLint x, GLint y, GLsizei width, GLsizei height)
fprintf(QGLDebugFile(), "glViewport(x=%ld, y=%ld, width=%ld, height=%ld)\n", x, y, width, height);
#endif
//extern glconfig_t glConfig;
int vidHeight = 320;
glViewport(vidHeight - y - height, x, height, width);
glViewport(x, y, width, height);
#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS)
if (!QGLBeginStarted)
QGLCheckError("glViewport");
@@ -2231,6 +2232,8 @@ static inline void qglDrawTexfvOES(const GLfloat *coords)
#endif
}
/*
// Prevent calls to the 'normal' GL functions
#define glAlphaFunc CALL_THE_QGL_VERSION_OF_glAlphaFunc
#define glClearColor CALL_THE_QGL_VERSION_OF_glClearColor
@@ -2388,5 +2391,5 @@ static inline void qglDrawTexfvOES(const GLfloat *coords)
#define glDrawTexxvOES CALL_THE_QGL_VERSION_OF_glDrawTexxvOES
#define glDrawTexfOES CALL_THE_QGL_VERSION_OF_glDrawTexfOES
#define glDrawTexfvOES CALL_THE_QGL_VERSION_OF_glDrawTexfvOES
*/
#endif // _IPHONE_QGL_H_

View File

@@ -0,0 +1,69 @@
/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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 <stdbool.h>
/*
===============================================
Expose a C interface to the In App Purchase functionality.
This interface only supports non-consumable products, such as one-time purchases of extra levels
or expansion packs. It uses NSUserDefaults internally to keep track of purchases the user has
made. This is Apple's recommended method, and it means that purchases will automatically be
backed up with the app in iTunes, should the user choose to do so. Each product is a boolean
value stored in NSUserDefaults, with a key equal to the product ID string specified in iTunes
connect. This is the same string that needs to passed to InAppPurchaseStartPurchase and similar
functions.
Usage:
InAppPurchaseInit needs to be called during app launch to complete any transactions that
were not finished last time.
Call InAppPurchaseStartPurchase with the product ID string from iTunes connect to begin the
purchase process. This will launch Apple's interface for logging in with an Apple ID and
comfirming the purchase.
Call InAppPurchaseHasPurchased to see if the user has purchased a specific product. The string
parameter is the same product ID used in iTunes Connect and InAppPurchaseStartPurchase.
===============================================
*/
void InAppPurchaseInit( void );
void InAppPurchaseShutdown( void );
void InAppPurchaseStartPurchase( const char * productIdentifier );
typedef enum {
IAP_SUCCESS,
IAP_FAILURE
} InAppPurchaseResult;
typedef void (*InAppPurchaseCallbackPtr)( InAppPurchaseResult result );
void InAppPurchaseSetCallback( InAppPurchaseCallbackPtr function );
bool InAppPurchaseIsInProgress( void );
bool InAppPurchaseHasPurchased( const char * productIdentifier );

View File

@@ -0,0 +1,350 @@
/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <Foundation/Foundation.h>
#import <StoreKit/StoreKit.h>
#import <StoreKit/SKPaymentTransaction.h>
#import <StoreKit/SKError.h>
#import <UIKit/UIAlertView.h>
#import "iphone_store.h"
@interface MyStoreObserver : NSObject<SKProductsRequestDelegate, SKPaymentTransactionObserver> {
}
// SKProductsRequestDelegate methods
- (void)productsRequest: (SKProductsRequest *)request didReceiveResponse: (SKProductsResponse *)response;
// SKPaymentTransactionObserver methods
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions;
- (void)paymentQueue:(SKPaymentQueue *)queue removedTransactions:(NSArray *)transactions;
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error;
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue;
// MyStoreObserver methods
- (void)completeTransaction:(SKPaymentTransaction *)transaction;
- (void)failedTransaction:(SKPaymentTransaction *)transaction;
- (void)restoreTransaction:(SKPaymentTransaction *)transaction;
- (void)finalizeTransaction:(SKPaymentTransaction *)transaction;
@end
// The single instance of the store observer. This is created in InAppPurchaseInit and released
// in InAppPurchaseShutdown.
static MyStoreObserver *storeObserver;
// Flag to indicate whether a purchase is in progress or not. This is set to true in
// InAppPurchaseStartPurchase and false when the request either succeeds or fails.
static bool isInProgress = false;
static InAppPurchaseCallbackPtr clientCallback;
@implementation MyStoreObserver
/*
========================
productsRequest:didReceiveResponse
Called by the system when the application gets product information about an In-App Purchase.
========================
*/
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSArray *myProduct = response.products;
// For now, immediately request payment for any items the user has requested.
for (SKProduct *product in myProduct)
{
SKPayment *payment = [SKPayment paymentWithProductIdentifier:[product productIdentifier]];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
// We should handle the case of an empty array, this seems to occur if we send a request
// with a nonexistant product ID, but there may be other cases.
// TODO: Need a timeout to be even more robust.
if ( [myProduct count] == 0 ) {
if ( clientCallback ) {
clientCallback( IAP_FAILURE );
}
}
[request autorelease];
}
/*
========================
paymentQueue:updatedTransactions
Called by the system when purchase requests are updated.
========================
*/
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
[self completeTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
[self failedTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
[self restoreTransaction:transaction];
default:
break;
}
}
}
- (void)paymentQueue:(SKPaymentQueue *)queue removedTransactions:(NSArray *)transactions
{
}
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
{
}
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{
}
/*
========================
completeTransaction
Called by updatedTransactions when a request is completed.
========================
*/
- (void)completeTransaction:(SKPaymentTransaction *)transaction
{
[self finalizeTransaction:transaction];
}
/*
========================
failedTransaction
Called by updatedTransactions when a request fails.
========================
*/
- (void)failedTransaction:(SKPaymentTransaction *)transaction
{
if (transaction.error.code != SKErrorPaymentCancelled)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"In-App Purchase error"
message:[transaction.error localizedDescription]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
isInProgress = false;
if ( clientCallback ) {
clientCallback( IAP_FAILURE );
}
}
/*
========================
restoreTransaction
Called by updatedTransactions when a request is restored. This can behave identically to
completeTransaction.
========================
*/
- (void)restoreTransaction:(SKPaymentTransaction *)transaction
{
[self finalizeTransaction:transaction.originalTransaction];
}
/*
========================
finalizeTransaction
This method actually delivers the purchased item to the user. Currently, this means setting
a key in NSUserDefaults equal to the product ID to TRUE.
========================
*/
- (void)finalizeTransaction:(SKPaymentTransaction *)transaction
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *productID = transaction.payment.productIdentifier;
[defaults setBool:TRUE forKey:productID];
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
isInProgress = false;
if ( clientCallback ) {
clientCallback( IAP_SUCCESS );
}
}
@end
/*
========================
InAppPurchaseInit
Creates the instance of the payment observer and adds it to the payment queue. This should be
called at application launch.
========================
*/
void InAppPurchaseInit(void) {
if ( !storeObserver ) {
storeObserver = [[MyStoreObserver alloc] init];
// Add the observer here in case purchase requests were interrupted last time.
[[SKPaymentQueue defaultQueue] addTransactionObserver:storeObserver];
}
}
void InAppPurchaseShutdown(void) {
[storeObserver release];
storeObserver = nil;
}
/*
========================
InAppPurchaseStartPurchase
If payments are enabled, starts an In-App Purchase transaction for the given product identifier.
If payments are not enabled, reminds the user that they can be enabled.
If a request is currently in progress, nothing happens, as only one request at a time is
allowed.
========================
*/
void InAppPurchaseStartPurchase( const char * productIdentifier ) {
// Only allow one request at a time.
if ( isInProgress ) {
return;
}
if ( [SKPaymentQueue canMakePayments] ) {
// Start transaction.
if ( storeObserver == nil ) {
printf( "In-App Purchase system not initialized. Can't purchase anything!\n" );
return;
}
isInProgress = true;
// convert the C string to an NSString.
NSString *productKey = [[NSString alloc] initWithCString:productIdentifier
encoding:NSASCIIStringEncoding];
SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject: productKey]];
// The set retains the string, so we can release it now.
[productKey release];
request.delegate = storeObserver;
[request start];
} else {
// User has disabled In-App purchases in settings. Kindly remind him that he can
// enable purchases again.
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"In-App Purchases are disabled"
message:@"You can enable In-App purchases in your device's settings."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
}
/*
========================
InAppPurchaseHasPurchased
Queries the standard NSUserDefaults object for a boolean key equal to the product identifier.
If this key is true, the user has purchased the product. If the key is false, the user has
not purchased the product.
========================
*/
bool InAppPurchaseHasPurchased( const char * productIdentifier ) {
// Convert the C string to an NSString for use with NSUserDefaults.
NSString *productKey = [[NSString alloc] initWithCString:productIdentifier
encoding:NSASCIIStringEncoding];
// Purchase records are stored in the standardUserDefaults, with a key equal to the product
// identifier.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL hasProduct = [defaults boolForKey:productKey];
// This string was alloced above, but since it isn't needed anymore, it must be released.
[productKey release];
// Convert Objective-C BOOL type to standard C99 _Bool type.
return ( hasProduct )? true: false;
}
/*
========================
InAppPurchaseIsInProgress
Returns true if an In-App Purchase request is currently pending. Only one request can be active
at a time.
========================
*/
bool InAppPurchaseIsInProgress( void ) {
return isInProgress;
}
/*
========================
InAppPurchaseSetCallback
Sets a functino pointer to be called when the in-app purchase transaction in complete, either
successfully or unsuccessfully.
========================
*/
void InAppPurchaseSetCallback( InAppPurchaseCallbackPtr function ) {
clientCallback = function;
}

View File

@@ -1,6 +1,9 @@
/*
Copyright (C) 2009 Id Software, Inc.
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@@ -19,9 +22,13 @@
*/
#include "../wolfiphone.h"
#include "iphone_store.h"
#import "wolf3dAppDelegate.h"
#import <AudioToolbox/AudioServices.h>
//#import <UIDevice.h>
#import <UIKit/UIDevice.h>
#import <Foundation/NSUserDefaults.h>
void interruptionListener( void *inUserData, UInt32 inInterruption)
{
@@ -45,7 +52,7 @@ void SysIPhoneInitAudioSession() {
UInt32 audioCategory = kAudioSessionCategory_AmbientSound;
status = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(audioCategory), &audioCategory);
UInt32 propOtherAudioIsPlaying = 'othr'; // kAudioSessionProperty_OtherAudioIsPlaying
AudioSessionPropertyID propOtherAudioIsPlaying = kAudioSessionProperty_OtherAudioIsPlaying;
UInt32 size = sizeof( otherAudioIsPlaying );
AudioSessionGetProperty( propOtherAudioIsPlaying, &size, &otherAudioIsPlaying );
@@ -72,3 +79,276 @@ const char *SysIPhoneGetOSVersion() {
return osVersion;
}
/*
==================
SysIPhoneGetContentVersion
Checks the NSUserDefaults and returns true if the user has purchased the Platinum edition.
==================
*/
contentVersion_t SysIPhoneGetContentVersion(void) {
#ifndef LITE
return CONTENT_PLATINUM;
#else
// For the "Lite" app, we must check the user defaults to see if the user has purchased
// the platinum edition.
bool platinum = InAppPurchaseHasPurchased( PLATINUM_UPGRADE_STRING );
if ( platinum ) {
return CONTENT_PLATINUM;
}
return CONTENT_LITE;
#endif
}
/*
==================
SysIPhoneGetPathToMainBundleLength
Fills in the string
==================
*/
int SysIPhoneGetPathToMainBundleLength( void ) {
NSBundle *mainBundle = [NSBundle mainBundle];
NSString *path = [mainBundle bundlePath];
return [path length];
}
/*
==================
SysIPhoneGetPathToMainBundle
Fills in the string outPath with the path to the main bundle. If the path is longer than
maxLength, it will be truncated. Call SysIPhoneGetPathToMainBundleLength to get the string
size needed without truncation.
==================
*/
void SysIPhoneGetPathToMainBundle( char * outPath, int maxLength ) {
NSBundle *mainBundle = [NSBundle mainBundle];
NSString *path = [mainBundle bundlePath];
[path getCString:outPath maxLength:maxLength encoding:NSASCIIStringEncoding];
}
/*
==================
iphoneRotateForLandscape
==================
*/
void iphoneRotateForLandscape() {
switch ( deviceOrientation ) {
case ORIENTATION_LANDSCAPE_LEFT:
pfglRotatef( 90.0f, 0.0f, 0.0f, 1.0f );
break;
default:
pfglRotatef( -90.0f, 0.0f, 0.0f, 1.0f );
break;
}
}
/*
==================
iphoneTouchEvent
==================
*/
void iphoneTouchEvent( int _numTouches, int _touches[16] ) {
numTouches = _numTouches;
for ( int i = 0 ; i < numTouches ; i++ ) {
switch( deviceOrientation ) {
case ORIENTATION_LANDSCAPE_RIGHT:
touches[i][0] = _touches[i*2+1] * touchCoordinateScale;
touches[i][1] = ( (viddef.height / touchCoordinateScale ) - 1 - _touches[i*2+0]) * touchCoordinateScale;
break;
default:
touches[i][0] = ( ( viddef.width / touchCoordinateScale ) - 1 - _touches[i*2+1]) * touchCoordinateScale;
touches[i][1] = _touches[i*2+0] * touchCoordinateScale;
break;
}
}
}
/*
==================
iphonePromptToBuyPlatinum
==================
*/
void iphonePromptToBuyPlatinum() {
currentYesNoBox = YESNO_BUY_PLATINUM;
iphoneYesNoBox( "Purchase Platinum", "This level is not available in "
"Wolfenstein 3D Lite. Would you like to upgrade to "
"Platinum?" );
}
/*
==================
LoadPNG
Uses the iPhone's Core Graphics library to easily load PNG files.
==================
*/
void LoadPNG( const char *filename, W8 **pic, W16 *outWidth, W16 *outHeight, W16 *bytes ) {
CGImageRef spriteImage;
CGContextRef spriteContext;
GLubyte *spriteData = NULL;
size_t width = 0;
size_t height = 0;
size_t bytesPerPixel = 0;
// Get just the filename from the path passed in.
const char * lastSeparator = strrchr( filename, '/' );
const char * filenameOnly = filename;
if ( lastSeparator ) {
filenameOnly = lastSeparator + 1;
}
// Creates a Core Graphics image from an image file
spriteImage = [UIImage imageNamed:[NSString stringWithCString:filenameOnly encoding:NSASCIIStringEncoding]].CGImage;
// Get the width and height of the image
width = CGImageGetWidth(spriteImage);
height = CGImageGetHeight(spriteImage);
bytesPerPixel = CGImageGetBitsPerPixel(spriteImage) / 8;
// Texture dimensions must be a power of 2. If you write an application that allows users to supply an image,
// you'll want to add code that checks the dimensions and takes appropriate action if they are not a power of 2.
// HACK to fix alpha/non-alpha images.
// If an image has alpha, it will be 4 bytes per pixel.
// If an image doesn't have alpha, it will be 3 bytes per pixel.
CGImageAlphaInfo alpha = kCGImageAlphaPremultipliedLast;
size_t byteWidth = width * 4;
if ( bytesPerPixel == 4 ) {
alpha = kCGImageAlphaPremultipliedLast;
byteWidth = width * 4;
}
if(spriteImage) {
// Allocated memory needed for the bitmap context
spriteData = (GLubyte *) MM_CALLOC(width * height * 4, sizeof(GLubyte));
// Uses the bitmap creation function provided by the Core Graphics framework.
spriteContext = CGBitmapContextCreate(spriteData, width, height,
8,
byteWidth,
CGImageGetColorSpace(spriteImage),
alpha);
if ( spriteContext ) {
// After you create the context, you can draw the sprite image to the context.
CGContextDrawImage(spriteContext, CGRectMake(0.0, 0.0, (CGFloat)width, (CGFloat)height), spriteImage);
// You don't need the context at this point, so you need to release it to avoid memory leaks.
CGContextRelease(spriteContext);
if ( outWidth ) {
*outWidth = width;
}
if ( outHeight ) {
*outHeight = height;
}
if ( pic ) {
*pic = spriteData;
}
if ( bytes ) {
*bytes = bytesPerPixel;
}
return;
}
}
if ( outWidth ) {
*outWidth = 0;
}
if ( outHeight ) {
*outHeight = 0;
}
if ( pic ) {
*pic = NULL;
}
if ( bytes ) {
*bytes = 0;
}
return;
}
/*
==================
iphoneGetDeviceType
Uses the iPhone's Core Graphics library to easily load PNG files.
==================
*/
deviceType_t iphoneGetDeviceType(void) {
deviceType_t result = DEVICE_UNKNOWN;
switch ( UI_USER_INTERFACE_IDIOM() ) {
case UIUserInterfaceIdiomPhone:
result = DEVICE_PHONE;
break;
case UIUserInterfaceIdiomPad:
result = DEVICE_TABLET;
break;
default:
break;
}
return result;
}
/*
==================
iphoneInitMenuMusic
==================
*/
void iphoneInitMenuMusic() {
wolf3dAppDelegate * app = (wolf3dAppDelegate*)[[UIApplication sharedApplication] delegate];
[app initMenuMusicPlayer];
}
/*
==================
iphoneStartMenuMusic
==================
*/
void iphoneStartMenuMusic() {
wolf3dAppDelegate * app = (wolf3dAppDelegate*)[[UIApplication sharedApplication] delegate];
[app startMenuMusic];
}
/*
==================
iphoneStopMenuMusic
==================
*/
void iphoneStopMenuMusic() {
wolf3dAppDelegate * app = (wolf3dAppDelegate*)[[UIApplication sharedApplication] delegate];
[app stopMenuMusic];
}

View File

@@ -1,6 +1,9 @@
/*
Copyright (C) 2009 Id Software, Inc.
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@@ -18,12 +21,18 @@
*/
#include "video.h"
#include "texture_manager.h"
#include "vector.h"
#include "cvar.h"
#include "arch.h"
// 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
// this is the version number displayed on the menu screen
#define WOLF_IPHONE_VERSION 1.2//1.1
#define WOLF_IPHONE_VERSION 2.1
extern viddef_t viddef;
@@ -84,6 +93,13 @@ typedef struct {
} rect_t;
rect_t RectMake(int x, int y, int width, int height);
typedef struct {
float x;
float y;
float width;
float height;
} rectFloat_t;
extern currentMap_t currentMap;
void iphoneStartMap( int episodeNum, int mapNum, int skillLevel );
@@ -130,15 +146,39 @@ extern cvar_t *cropSprites;
extern cvar_t *blends;
extern cvar_t *gunFrame;
extern cvar_t *slowAI;
extern cvar_t *revLand;
extern cvar_t *mapScale;
extern cvar_t *hideControls;
extern cvar_t *autoFire;
// The size of UI elements will be scaled by this value in order to support different
// resolutions, such as Retina displays and the iPad.
extern float screenScale;
// 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 int isTouchMoving; //gsh
// On Retina displays, touch coordinates are still reported at "low resolution". Since the game
// compares touch coordinates directly to the on-screen positions of buttons, we will need to
// scale the touches on Retina displays.
extern int touchCoordinateScale;
// Store the device's contentScaleFactor ourselves. This is needed to support iOS
// versions < 4.0, as the UIView contentScaleFactor property did not exist before then.
// This should be 1 for all non-Retina displays, and 2 for Retina displays.
extern float deviceScale;
// The orientation of the device. Currently, we only support both landscape modes.
// LEFT and RIGHT correspond to the position of the home button as you look at the
// device from the front.
typedef enum {
ORIENTATION_LANDSCAPE_LEFT,
ORIENTATION_LANDSCAPE_RIGHT
} deviceOrientation_t;
extern deviceOrientation_t deviceOrientation;
extern float tilt; // -1.0 to 1.0
extern float tiltPitch;
@@ -169,7 +209,10 @@ void iphoneDrawMapName( rect_t rect, const char *str ); //gsh
int iphoneDrawTextInBox( rect_t paragraph, int lineLength, const char *str, rect_t boxRect ); //gsh
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 iphoneDrawPicFloat( float x, float y, float w, float h, const char *pic );
void iphoneDrawPicRect( rectFloat_t rect, const char * pic );
int iphoneDrawPicWithTouch( int x, int y, int w, int h, const char *pic );
int iphoneDrawPicRectWithTouch( rectFloat_t rect, const char *pic );
void iphoneDrawPicNum( int x, int y, int w, int h, int glTexNum );
void R_Draw_Blend( int x, int y, int w, int h, colour4_t c );
void SaveTheGame();
@@ -182,7 +225,15 @@ void iphonePreloadBeforePlay();
void InitImmediateModeGL();
void iphoneRotateForLandscape();
void iphoneCheckForLandscapeReverse();
void ScaleToScreen( int * value);
void ScalePosition( float * x, float * y );
void ScalePositionInt( int * x, int * y );
void ScalePositionAndSize( float * x, float * y, float * w, float * h );
void ScalePositionAndSizeInt( int * x, int * y, int * w, int * h );
void ScaleRect( rect_t * rect );
void ScaleRectFloat( rectFloat_t * rect );
rectFloat_t MakeScaledRectFloat( float x, float y, float width, float height );
extern colour4_t colorPressed;
@@ -229,6 +280,13 @@ void HudEditFrame();
void iphoneHudEditFrame();
//---------------------------------------
// Content version management for Lite and Platinum
//---------------------------------------
typedef enum {
CONTENT_LITE,
CONTENT_PLATINUM
} contentVersion_t;
//---------------------------------------
// interfaces from the original game code
@@ -246,13 +304,23 @@ void iphoneSetLevelNotifyText(); //gsh
void SysIPhoneSwapBuffers();
void SysIPhoneVibrate();
void SysIPhoneOpenURL( const char *url );
void SysIPhoneSetUIKitOrientation( int isLandscapeRight );
void SysIPhoneLoadJPG( W8* jpegData, int jpegBytes, W8 **pic, W16 *width, W16 *height, W16 *bytes );
const char * SysIPhoneGetConsoleTextField();
void SysIPhoneSetConsoleTextField(const char *);
void SysIPhoneInitAudioSession();
int SysIPhoneOtherAudioIsPlaying();
const char *SysIPhoneGetOSVersion();
contentVersion_t SysIPhoneGetContentVersion();
int SysIPhoneGetPathToMainBundleLength( void );
void SysIPhoneGetPathToMainBundle( char * outPath, int maxLength );
void iphoneStartPreviousMenu();
void iphoneStartMainMenu();
void iphonePromptToBuyPlatinum();
void iphoneInitMenuMusic();
void iphoneStartMenuMusic();
void iphoneStopMenuMusic();
//---------------------------------------
// interfaces from Objective-C land
@@ -265,4 +333,53 @@ void iphoneTouchEvent( int numTouches, int touches[16] );
void iphoneActivateConsole();
void iphoneDeactivateConsole();
void iphoneExecuteCommandLine();
void iphoneStartGameplay();
void iphoneResume();
void LoadPNG( const char *filename, W8 **pic, W16 *width, W16 *height, W16 *bytes );
// The width and height the assets were originally designed for. Used in scaling to different
// resolutions for preserving aspect ratio.
#define REFERENCE_WIDTH 480.0f
#define REFERENCE_HEIGHT 320.0f
// Constants for HUD buttons.
#define BACK_BUTTON_WIDTH 64.0f
#define BACK_BUTTON_HEIGHT 64.0f
// These variables store the scaled dimensions of certain HUD elements that are needed
// in various parts of the code.
extern float faceWidth;
extern float faceHeight;
extern float weaponWidth;
extern float weaponHeight;
// The following items support in-app purchases.
#define PLATINUM_UPGRADE_STRING "com.idsoftware.wolf3dlite.platupgrade"
// An enum to help keep track of YesNo boxes.
typedef enum {
YESNO_NONE,
YESNO_BUY_PLATINUM,
YESNO_GO_TO_WEBSITE,
YESNO_DOWNLOAD_INSTRUCTIONS
} yesNoBoxType_t;
extern yesNoBoxType_t currentYesNoBox;
// This determines the default framerate of the game.
// 1 = 60Hz, 2 = 30Hz, etc.
#define DEFAULT_FRAME_INTERVAL 1
// Determine phone or tablet device at runtime.
typedef enum {
DEVICE_UNKNOWN,
DEVICE_PHONE,
DEVICE_TABLET
} deviceType_t;
deviceType_t iphoneGetDeviceType(void);

View File

@@ -1,6 +1,9 @@
/*
Copyright (C) 2009 Id Software, Inc.
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@@ -19,28 +22,11 @@
*/
#import <UIKit/UIKit.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char *argv[]) {
{
char cwd[256];
strcpy( cwd, argv[0] );
int len = strlen( cwd );
for( int i = len-1; i >= 0; i-- ) {
if ( cwd[i] == '/' ) {
cwd[i] = 0;
break;
}
cwd[i] = 0;
}
setenv( "CWD", cwd, 1 );
}
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
int retVal = UIApplicationMain(argc, argv, nil, @"wolf3dAppDelegate");
[pool release];
return retVal;
}

703
wolf3d/code/iphone/untgz.c Normal file
View File

@@ -0,0 +1,703 @@
/*
* untgz.c -- Display contents and extract files from a gzip'd TAR file
*
* written by Pedro A. Aranda Gutierrez <paag@tid.es>
* adaptation to Unix by Jean-loup Gailly <jloup@gzip.org>
* various fixes by Cosmin Truta <cosmint@cs.ubbcluj.ro>
*/
// This file was originally authored by the people above.
// It has been modified for this program.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <errno.h>
#include "../wolfiphone.h"
extern int chmod(const char *, mode_t) __DARWIN_ALIAS(chmod);
extern int mkdir(const char *, mode_t);
extern void Com_Printf( const char *fmt, ... );
#include "zlib.h"
//Note: in order to link the zlib library into the build from usr/lib/libz.ylib
// the flag -lz was added to the OTHER_LDFLAGS under the build options.
// To get there: right click on the wolf3d project. choose get info.
// Click on build and scroll to "Other Link Flags" under "Linking"
#define unix
#ifdef unix
# include <unistd.h>
#else
# include <direct.h>
# include <io.h>
#endif
#ifdef WIN32
#include <windows.h>
# ifndef F_OK
# define F_OK 0
# endif
# define mkdir(dirname,mode) _mkdir(dirname)
# ifdef _MSC_VER
# define access(path,mode) _access(path,mode)
# define chmod(path,mode) _chmod(path,mode)
# define strdup(str) _strdup(str)
# endif
#else
# include <utime.h>
#endif
//extern int iphoneCenterText( int x, int y, const char *str );
/* values used in typeflag field */
#define REGTYPE '0' /* regular file */
#define AREGTYPE '\0' /* regular file */
#define LNKTYPE '1' /* link */
#define SYMTYPE '2' /* reserved */
#define CHRTYPE '3' /* character special */
#define BLKTYPE '4' /* block special */
#define DIRTYPE '5' /* directory */
#define FIFOTYPE '6' /* FIFO special */
#define CONTTYPE '7' /* reserved */
/* GNU tar extensions */
#define GNUTYPE_DUMPDIR 'D' /* file names from dumped directory */
#define GNUTYPE_LONGLINK 'K' /* long link name */
#define GNUTYPE_LONGNAME 'L' /* long file name */
#define GNUTYPE_MULTIVOL 'M' /* continuation of file from another volume */
#define GNUTYPE_NAMES 'N' /* file name that does not fit into main hdr */
#define GNUTYPE_SPARSE 'S' /* sparse file */
#define GNUTYPE_VOLHDR 'V' /* tape/volume header */
/* tar header */
#define BLOCKSIZE 512
#define SHORTNAMESIZE 100
struct tar_header
{ /* byte offset */
char name[100]; /* 0 */
char mode[8]; /* 100 */
char uid[8]; /* 108 */
char gid[8]; /* 116 */
char size[12]; /* 124 */
char mtime[12]; /* 136 */
char chksum[8]; /* 148 */
char typeflag; /* 156 */
char linkname[100]; /* 157 */
char magic[6]; /* 257 */
char version[2]; /* 263 */
char uname[32]; /* 265 */
char gname[32]; /* 297 */
char devmajor[8]; /* 329 */
char devminor[8]; /* 337 */
char prefix[155]; /* 345 */
/* 500 */
};
union tar_buffer
{
char buffer[BLOCKSIZE];
struct tar_header header;
};
struct attr_item
{
struct attr_item *next;
char *fname;
int mode;
time_t time;
};
enum { TGZ_EXTRACT, TGZ_LIST, TGZ_INVALID };
char *TGZfname OF((const char *));
void TGZnotfound OF((const char *));
int getoct OF((char *, int));
char *strtime OF((time_t *));
int setfiletime OF((char *, time_t));
void push_attr OF((struct attr_item **, char *, int, time_t));
void restore_attr OF((struct attr_item **));
int ExprMatch OF((char *, char *));
int makedir OF((char *));
int matchname OF((int, int, char **, char *));
void error OF((const char *));
int tar OF((gzFile, int, int, int, char **));
void help OF((int));
int main OF((int, char **));
char *prog;
const char *TGZsuffix[] = { "\0", ".tar", ".tar.gz", ".taz", ".tgz", NULL };
extern char iphoneDocDirectory[1024];
//returns the fname along with the appdocdirectory tagged onto the front
char *DirFName (const char* fname)
{
static char buffer[1024];
int origlen;//, i;
// Com_Printf("iphone Doc Direct: %s\n", iphoneDocDirectory);
//copy the directory into the buffer
strcpy(buffer, iphoneDocDirectory);
origlen = strlen(buffer);
//add the '/' to the end of the iphoneDocDirectory
buffer[origlen] = '/';
++origlen;
buffer[origlen] = '\0';
//copy the file name into the buffer
strcpy(buffer+origlen, fname);
Com_Printf("extracting file: %s\n", buffer);
// colour4_t backgroundColor = { 10, 10, 10, 255 };
// R_Draw_Blend( 40, 150, 4*100, 20, backgroundColor ); //this is not actually drawing. The draw thread is somehow pausing
return buffer;
}
/* return the file name of the TGZ archive */
/* or NULL if it does not exist */
char *TGZfname (const char *arcname)
{
static char buffer[1024];
int origlen,i;
strcpy(buffer,arcname);
origlen = strlen(buffer);
for (i=0; TGZsuffix[i]; i++)
{
strcpy(buffer+origlen,TGZsuffix[i]);
if (access(buffer,F_OK) == 0)
return buffer;
}
return NULL;
}
/* error message for the filename */
void TGZnotfound (const char *arcname)
{
int i;
fprintf(stderr,"%s: Couldn't find ",prog);
for (i=0;TGZsuffix[i];i++)
fprintf(stderr,(TGZsuffix[i+1]) ? "%s%s, " : "or %s%s\n",
arcname,
TGZsuffix[i]);
exit(1);
}
/* convert octal digits to int */
/* on error return -1 */
int getoct (char *p,int width)
{
int result = 0;
char c;
while (width--)
{
c = *p++;
if (c == 0)
break;
if (c == ' ')
continue;
if (c < '0' || c > '7')
return -1;
result = result * 8 + (c - '0');
}
return result;
}
/* convert time_t to string */
/* use the "YYYY/MM/DD hh:mm:ss" format */
char *strtime (time_t *t)
{
struct tm *local;
static char result[32];
local = localtime(t);
sprintf(result,"%4d/%02d/%02d %02d:%02d:%02d",
local->tm_year+1900, local->tm_mon+1, local->tm_mday,
local->tm_hour, local->tm_min, local->tm_sec);
return result;
}
/* set file time */
int setfiletime (char *fname,time_t ftime)
{
#ifdef WIN32
static int isWinNT = -1;
SYSTEMTIME st;
FILETIME locft, modft;
struct tm *loctm;
HANDLE hFile;
int result;
loctm = localtime(&ftime);
if (loctm == NULL)
return -1;
st.wYear = (WORD)loctm->tm_year + 1900;
st.wMonth = (WORD)loctm->tm_mon + 1;
st.wDayOfWeek = (WORD)loctm->tm_wday;
st.wDay = (WORD)loctm->tm_mday;
st.wHour = (WORD)loctm->tm_hour;
st.wMinute = (WORD)loctm->tm_min;
st.wSecond = (WORD)loctm->tm_sec;
st.wMilliseconds = 0;
if (!SystemTimeToFileTime(&st, &locft) ||
!LocalFileTimeToFileTime(&locft, &modft))
return -1;
if (isWinNT < 0)
isWinNT = (GetVersion() < 0x80000000) ? 1 : 0;
hFile = CreateFile(fname, GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
(isWinNT ? FILE_FLAG_BACKUP_SEMANTICS : 0),
NULL);
if (hFile == INVALID_HANDLE_VALUE)
return -1;
result = SetFileTime(hFile, NULL, NULL, &modft) ? 0 : -1;
CloseHandle(hFile);
return result;
#else
struct utimbuf settime;
settime.actime = settime.modtime = ftime;
return utime(fname,&settime);
#endif
}
/* push file attributes */
void push_attr(struct attr_item **list,char *fname,int mode,time_t time)
{
struct attr_item *item;
item = (struct attr_item *)malloc(sizeof(struct attr_item));
if (item == NULL)
error("Out of memory");
item->fname = strdup(fname);
item->mode = mode;
item->time = time;
item->next = *list;
*list = item;
}
/* restore file attributes */
void restore_attr(struct attr_item **list)
{
struct attr_item *item, *prev;
for (item = *list; item != NULL; )
{
setfiletime(item->fname,item->time);
chmod(item->fname,item->mode);
prev = item;
item = item->next;
free(prev);
}
*list = NULL;
}
/* match regular expression */
#define ISSPECIAL(c) (((c) == '*') || ((c) == '/'))
int ExprMatch (char *string,char *expr)
{
while (1)
{
if (ISSPECIAL(*expr))
{
if (*expr == '/')
{
if (*string != '\\' && *string != '/')
return 0;
string ++; expr++;
}
else if (*expr == '*')
{
if (*expr ++ == 0)
return 1;
while (*++string != *expr)
if (*string == 0)
return 0;
}
}
else
{
if (*string != *expr)
return 0;
if (*expr++ == 0)
return 1;
string++;
}
}
}
/* recursive mkdir */
/* abort on ENOENT; ignore other errors like "directory already exists" */
/* return 1 if OK */
/* 0 on error */
int makedir (char *newdir)
{
char *buffer = strdup(newdir);
char *p;
int len = strlen(buffer);
if (len <= 0) {
free(buffer);
return 0;
}
if (buffer[len-1] == '/') {
buffer[len-1] = '\0';
}
if (mkdir(buffer, 0755) == 0)
{
free(buffer);
return 1;
}
p = buffer+1;
while (1)
{
char hold;
while(*p && *p != '\\' && *p != '/')
p++;
hold = *p;
*p = 0;
if ((mkdir(buffer, 0755) == -1) && (errno == ENOENT))
{
fprintf(stderr,"%s: Couldn't create directory %s\n",prog,buffer);
free(buffer);
return 0;
}
if (hold == 0)
break;
*p++ = hold;
}
free(buffer);
return 1;
}
int matchname (int arg,int argc,char **argv,char *fname)
{
if (arg == argc) /* no arguments given (untgz tgzarchive) */
return 1;
while (arg < argc)
if (ExprMatch(fname,argv[arg++]))
return 1;
return 0; /* ignore this for the moment being */
}
/* tar file list or extract */
int tar2 (gzFile in,int action)
{
union tar_buffer buffer;
int len;
int err;
int getheader = 1;
int remaining = 0;
FILE *outfile = NULL;
char fname[BLOCKSIZE];
//char dirfname;
int tarmode;
time_t tartime;
struct attr_item *attributes = NULL;
if (action == TGZ_LIST)
printf(" date time size file\n"
" ---------- -------- --------- -------------------------------------\n");
while (1)
{
len = gzread(in, &buffer, BLOCKSIZE);
if (len < 0)
error(gzerror(in, &err));
/*
* Always expect complete blocks to process
* the tar information.
*/
if (len != BLOCKSIZE)
{
action = TGZ_INVALID; /* force error exit */
remaining = 0; /* force I/O cleanup */
}
/*
* If we have to get a tar header
*/
if (getheader >= 1)
{
/*
* if we met the end of the tar
* or the end-of-tar block,
* we are done
*/
if (len == 0 || buffer.header.name[0] == 0)
break;
tarmode = getoct(buffer.header.mode,8);
tartime = (time_t)getoct(buffer.header.mtime,12);
if (tarmode == -1 || tartime == (time_t)-1)
{
buffer.header.name[0] = 0;
action = TGZ_INVALID;
}
if (getheader == 1)
{
strncpy(fname,buffer.header.name,SHORTNAMESIZE);
if (fname[SHORTNAMESIZE-1] != 0)
fname[SHORTNAMESIZE] = 0;
}
else
{
/*
* The file name is longer than SHORTNAMESIZE
*/
if (strncmp(fname,buffer.header.name,SHORTNAMESIZE-1) != 0)
error("bad long name");
getheader = 1;
}
/*
* Act according to the type flag
*/
switch (buffer.header.typeflag)
{
case DIRTYPE:
if (action == TGZ_LIST)
{
printf(" %s <dir> %s\n",strtime(&tartime),fname);
Com_Printf("case DIRTYPE: %s\n", DirFName(fname));
}
if (action == TGZ_EXTRACT)
{
Com_Printf("blah blah DIRTYPE:action == TGZ_EXTRACT, make directory\n");
makedir(fname);
//makedir(DirFName(fname));
push_attr(&attributes,fname,tarmode,tartime);
}
break;
case REGTYPE:
case AREGTYPE:
remaining = getoct(buffer.header.size,12);
if (remaining == -1)
{
action = TGZ_INVALID;
break;
}
if (action == TGZ_LIST)
printf(" %s %9d %s\n",strtime(&tartime),remaining,fname);
else if (action == TGZ_EXTRACT)
{
if (1)//gsh matchname(arg,argc,argv,fname))
{
//Com_Printf("call just before iphonedocdirectory\n");
//Com_Printf("iphonedocdirect: %s\n", iphoneDocDirectory);
char* outname = DirFName(fname);
//Com_Printf("outname is: %s\n", outname);
outfile = fopen(outname,"wb");
if (outfile == NULL) {
// try creating directory
char *p = strrchr(outname, '/');
if (p != NULL) {
*p = '\0';
makedir(outname);
*p = '/';
outfile = fopen(outname,"wb");
}
}/*
if (outfile != NULL)
Com_Printf("Extracting %s\n",fname);
else
Com_Printf("%s: Couldn't create %s",prog,fname);*/
/*
outfile = fopen(fname,"wb");
if (outfile == NULL) {
/* try creating directory *
char *p = strrchr(fname, '/');
if (p != NULL) {
*p = '\0';
makedir(fname);
*p = '/';
outfile = fopen(fname,"wb");
}
}
if (outfile != NULL)
printf("Extracting %s\n",fname);
else
fprintf(stderr, "%s: Couldn't create %s",prog,fname);*/
}
else
outfile = NULL;
}
getheader = 0;
break;
case GNUTYPE_LONGLINK:
case GNUTYPE_LONGNAME:
remaining = getoct(buffer.header.size,12);
if (remaining < 0 || remaining >= BLOCKSIZE)
{
action = TGZ_INVALID;
break;
}
len = gzread(in, fname, BLOCKSIZE);
if (len < 0)
error(gzerror(in, &err));
if (fname[BLOCKSIZE-1] != 0 || (int)strlen(fname) > remaining)
{
action = TGZ_INVALID;
break;
}
getheader = 2;
break;
default:
if (action == TGZ_LIST)
printf(" %s <---> %s\n",strtime(&tartime),fname);
break;
}
}
else
{
//Com_Printf("else called\n");
unsigned int bytes = (remaining > BLOCKSIZE) ? BLOCKSIZE : remaining;
if (outfile != NULL)
{
if (fwrite(&buffer,sizeof(char),bytes,outfile) != bytes)
{
fprintf(stderr,
"%s: Error writing %s -- skipping\n",prog,fname);
fclose(outfile);
outfile = NULL;
remove(fname);
}
}
remaining -= bytes;
}
if (remaining == 0)
{
getheader = 1;
if (outfile != NULL)
{
fclose(outfile);
outfile = NULL;
if (action != TGZ_INVALID)
push_attr(&attributes,fname,tarmode,tartime);
}
}
/*
* Abandon if errors are found
*/
if (action == TGZ_INVALID)
{
error("broken archive");
break;
}
}
/*
* Restore file modes and time stamps
*/
restore_attr(&attributes);
if (gzclose(in) != Z_OK)
error("failed gzclose");
return 0;
}
/* ============================================================ */
void help(int exitval)
{
printf("untgz version 0.2.1\n"
" using zlib version %s\n\n",
zlibVersion());
printf("Usage: untgz file.tgz extract all files\n"
" untgz file.tgz fname ... extract selected files\n"
" untgz -l file.tgz list archive contents\n"
" untgz -h display this help\n");
exit(exitval);
}
void error(const char *msg)
{
fprintf(stderr, "%s: %s\n", prog, msg);
exit(1);
}
/* ============================================================ */
#if defined(WIN32) && defined(__GNUC__)
int _CRT_glob = 0; /* disable argument globbing in MinGW */
#endif
int StartUntgz(char *TGZfile)
{
int action = TGZ_EXTRACT;
gzFile *f;
f = gzopen(TGZfile,"rb");
if (f == NULL)
{
Com_Printf("%s: Couldn't gzopen %s\n",prog,TGZfile);
return 1;
}
return tar2(f, action);
}

View File

@@ -211,6 +211,7 @@
<string>active-combo-popup</string>
<string>action</string>
<string>NSToolbarFlexibleSpaceItem</string>
<string>debugger-enable-breakpoints</string>
<string>build-and-go</string>
<string>com.apple.ide.PBXToolbarStopButton</string>
<string>get-info</string>
@@ -234,7 +235,6 @@
<array>
<string>1C37FBAC04509CD000000102</string>
<string>1C37FAAC04509CD000000102</string>
<string>1C08E77C0454961000C914BD</string>
<string>1C37FABC05509CD000000102</string>
<string>1C37FABC05539CD112110102</string>
<string>E2644B35053B69B200211256</string>
@@ -265,6 +265,7 @@
<array>
<string>29B97314FDCFA39411CA2CEA</string>
<string>29B97315FDCFA39411CA2CEA</string>
<string>72935B190F6B2D720085DD28</string>
<string>29B97317FDCFA39411CA2CEA</string>
<string>29B97323FDCFA39411CA2CEA</string>
<string>19C28FACFE9D520D11CA2CBB</string>
@@ -274,13 +275,13 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
<integer>32</integer>
<integer>27</integer>
<integer>4</integer>
<integer>1</integer>
<integer>0</integer>
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
<string>{{0, 0}, {186, 720}}</string>
<string>{{0, 742}, {186, 720}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -299,7 +300,7 @@
<real>186</real>
</array>
<key>RubberWindowFrame</key>
<string>391 174 1010 779 0 0 1680 1028 </string>
<string>337 313 1010 779 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -310,12 +311,14 @@
<key>Dock</key>
<array>
<dict>
<key>BecomeActive</key>
<true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CE0B20306471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
<string>Info.plist</string>
<string>iphone_main.c</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -323,44 +326,41 @@
<key>PBXProjectModuleGUID</key>
<string>1CE0B20406471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
<string>Info.plist</string>
<string>iphone_main.c</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>ED45402710B21F0900DCFA32</string>
<string>EDFA70BF119469CD0098FFFC</string>
<key>history</key>
<array>
<string>ED2E5C05106C886700F57B9D</string>
<string>ED2E5C06106C886700F57B9D</string>
<string>ED4AC98010742365000706D8</string>
<string>EDDA5A7E107BA97F003F55D3</string>
<string>EDDA5A80107BA97F003F55D3</string>
<string>ED2754531085141B009C891E</string>
<string>ED0653B61087719F00E5450B</string>
<string>EDAFC5A2109A14EE002C3487</string>
<string>ED845AB1109F5B3500F673AC</string>
<string>ED45402110B21F0900DCFA32</string>
<string>ED45402210B21F0900DCFA32</string>
<string>ED45402310B21F0900DCFA32</string>
<string>ED845AB2109F5B3500F673AC</string>
</array>
<key>prevStack</key>
<array>
<string>ED3703CD106C20620059C5F8</string>
<string>ED2E5C0A106C886700F57B9D</string>
<string>ED2E5C0B106C886700F57B9D</string>
<string>ED4AC98210742365000706D8</string>
<string>ED4AC9AB10743318000706D8</string>
<string>ED4AC9AC10743318000706D8</string>
<string>EDDA5A82107BA97F003F55D3</string>
<string>EDDA5A83107BA97F003F55D3</string>
<string>EDDA5A84107BA97F003F55D3</string>
<string>ED2754551085141B009C891E</string>
<string>ED2754561085141B009C891E</string>
<string>ED0653B81087719F00E5450B</string>
<string>ED45402410B21F0900DCFA32</string>
<string>ED45402510B21F0900DCFA32</string>
<string>ED45402610B21F0900DCFA32</string>
<string>ED89CF4410D0693D006A2D2E</string>
<string>ED89CF4710D0693D006A2D2E</string>
<string>ED89CF4810D0693D006A2D2E</string>
<string>ED89CF4910D0693D006A2D2E</string>
<string>EDC7BE4810D95AF900DA2765</string>
<string>EDC7BE4910D95AF900DA2765</string>
<string>EDB41E9910DADFF000487A3B</string>
<string>EDB41E9A10DADFF000487A3B</string>
<string>EDB41EAF10DAE14F00487A3B</string>
<string>EDB41EB110DAE14F00487A3B</string>
<string>EDB41ECB10DAE24C00487A3B</string>
<string>EDB41EFD10DAEE4800487A3B</string>
<string>EDB41EFE10DAEE4800487A3B</string>
<string>EDB41F0110DAEE4800487A3B</string>
<string>EDB41F1110DAF0FC00487A3B</string>
<string>EDB41F3610DAF95B00487A3B</string>
<string>ED89F57010DC207800C8A107</string>
<string>ED89F58710DC257400C8A107</string>
<string>ED89F58F10DC27DD00C8A107</string>
<string>ED89F5B010DC406A00C8A107</string>
<string>ED89F5B110DC406A00C8A107</string>
<string>ED89F5B210DC406A00C8A107</string>
<string>EDFA70BE119469CD0098FFFC</string>
<string>EDFA7084119384150098FFFC</string>
</array>
</dict>
<key>SplitCount</key>
@@ -372,14 +372,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {802, 686}}</string>
<string>{{0, 0}, {802, 683}}</string>
<key>RubberWindowFrame</key>
<string>391 174 1010 779 0 0 1680 1028 </string>
<string>337 313 1010 779 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>686pt</string>
<string>683pt</string>
</dict>
<dict>
<key>ContentConfiguration</key>
@@ -392,14 +392,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 691}, {802, 47}}</string>
<string>{{0, 688}, {802, 50}}</string>
<key>RubberWindowFrame</key>
<string>391 174 1010 779 0 0 1680 1028 </string>
<string>337 313 1010 779 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
<key>Proportion</key>
<string>47pt</string>
<string>50pt</string>
</dict>
</array>
<key>Proportion</key>
@@ -418,12 +418,14 @@
</array>
<key>TableOfContents</key>
<array>
<string>ED45402810B21F0900DCFA32</string>
<string>EDFA70C0119469CD0098FFFC</string>
<string>1CE0B1FE06471DED0097A5F4</string>
<string>ED45402910B21F0900DCFA32</string>
<string>EDFA70C1119469CD0098FFFC</string>
<string>1CE0B20306471E060097A5F4</string>
<string>1CE0B20506471E060097A5F4</string>
</array>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.defaultV3</string>
</dict>
@@ -554,10 +556,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>/Users/greghodges/wolf3dplatinum/wolf3d/code/iphone/wolf3d.xcodeproj</string>
<string>ED0A8CF61069A9E0001E0547</string>
<string>/Volumes/Work/idMobileDepot/Wolfenstein3DPlatinumDepot/wolf3d/code/iphone/wolf3d.xcodeproj</string>
</array>
<key>WindowString</key>
<string>391 174 1010 779 0 0 1680 1028 </string>
<string>337 313 1010 779 0 0 1920 1178 </string>
<key>WindowToolsV3</key>
<array>
<dict>
@@ -587,7 +590,7 @@
<key>Frame</key>
<string>{{0, 0}, {500, 218}}</string>
<key>RubberWindowFrame</key>
<string>56 488 500 500 0 0 1680 1028 </string>
<string>67 625 500 500 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -600,7 +603,7 @@
<key>PBXProjectModuleGUID</key>
<string>XCMainBuildResultsModuleGUID</string>
<key>PBXProjectModuleLabel</key>
<string>Build</string>
<string>Build Results</string>
<key>XCBuildResultsTrigger_Collapse</key>
<integer>1021</integer>
<key>XCBuildResultsTrigger_Open</key>
@@ -611,7 +614,7 @@
<key>Frame</key>
<string>{{0, 223}, {500, 236}}</string>
<key>RubberWindowFrame</key>
<string>56 488 500 500 0 0 1680 1028 </string>
<string>67 625 500 500 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -634,14 +637,14 @@
<key>TableOfContents</key>
<array>
<string>ED0A8CF61069A9E0001E0547</string>
<string>EDAFC5AA109A14EE002C3487</string>
<string>EDFA70C2119469CD0098FFFC</string>
<string>1CD0528F0623707200166675</string>
<string>XCMainBuildResultsModuleGUID</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.buildV3</string>
<key>WindowString</key>
<string>56 488 500 500 0 0 1680 1028 </string>
<string>67 625 500 500 0 0 1920 1178 </string>
<key>WindowToolGUID</key>
<string>ED0A8CF61069A9E0001E0547</string>
<key>WindowToolIsVisible</key>
@@ -676,8 +679,8 @@
<string>yes</string>
<key>sizes</key>
<array>
<string>{{0, 0}, {316, 203}}</string>
<string>{{316, 0}, {378, 203}}</string>
<string>{{0, 0}, {542, 426}}</string>
<string>{{542, 0}, {646, 426}}</string>
</array>
</dict>
<key>VerticalSplitView</key>
@@ -692,8 +695,8 @@
<string>yes</string>
<key>sizes</key>
<array>
<string>{{0, 0}, {694, 203}}</string>
<string>{{0, 203}, {694, 178}}</string>
<string>{{0, 0}, {1188, 426}}</string>
<string>{{0, 426}, {1188, 373}}</string>
</array>
</dict>
</dict>
@@ -713,7 +716,7 @@
<key>DebugSTDIOWindowFrame</key>
<string>{{200, 200}, {500, 300}}</string>
<key>Frame</key>
<string>{{0, 0}, {694, 381}}</string>
<string>{{0, 0}, {1188, 799}}</string>
<key>PBXDebugSessionStackFrameViewKey</key>
<dict>
<key>DebugVariablesTableConfiguration</key>
@@ -723,24 +726,24 @@
<string>Value</string>
<real>85</real>
<string>Summary</string>
<real>148</real>
<real>416</real>
</array>
<key>Frame</key>
<string>{{316, 0}, {378, 203}}</string>
<string>{{542, 0}, {646, 426}}</string>
<key>RubberWindowFrame</key>
<string>150 519 694 422 0 0 1680 1028 </string>
<string>430 265 1188 840 0 0 1920 1178 </string>
</dict>
<key>RubberWindowFrame</key>
<string>150 519 694 422 0 0 1680 1028 </string>
<string>430 265 1188 840 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXDebugSessionModule</string>
<key>Proportion</key>
<string>381pt</string>
<string>799pt</string>
</dict>
</array>
<key>Proportion</key>
<string>381pt</string>
<string>799pt</string>
</dict>
</array>
<key>Name</key>
@@ -754,18 +757,18 @@
<key>TableOfContents</key>
<array>
<string>1CD10A99069EF8BA00B06720</string>
<string>EDAFC5AB109A14EE002C3487</string>
<string>ED89F55610DC024400C8A107</string>
<string>1C162984064C10D400B95A72</string>
<string>EDAFC5AC109A14EE002C3487</string>
<string>EDAFC5AD109A14EE002C3487</string>
<string>EDAFC5AE109A14EE002C3487</string>
<string>EDAFC5AF109A14EE002C3487</string>
<string>EDAFC5B0109A14EE002C3487</string>
<string>ED89F55710DC024400C8A107</string>
<string>ED89F55810DC024400C8A107</string>
<string>ED89F55910DC024400C8A107</string>
<string>ED89F55A10DC024400C8A107</string>
<string>ED89F55B10DC024400C8A107</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.debugV3</string>
<key>WindowString</key>
<string>150 519 694 422 0 0 1680 1028 </string>
<string>430 265 1188 840 0 0 1920 1178 </string>
<key>WindowToolGUID</key>
<string>1CD10A99069EF8BA00B06720</string>
<key>WindowToolIsVisible</key>
@@ -787,23 +790,21 @@
<key>Dock</key>
<array>
<dict>
<key>BecomeActive</key>
<true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
<string>1CDD528C0622207200134675</string>
<key>PBXProjectModuleLabel</key>
<string>iphone_menus.c</string>
<string></string>
<key>StatusBarVisibility</key>
<true/>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {1122, 588}}</string>
<string>{{0, 0}, {1122, 464}}</string>
<key>RubberWindowFrame</key>
<string>450 88 1122 866 0 0 1680 1028 </string>
<string>1948 265 1122 866 1920 150 1680 1050 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -812,9 +813,11 @@
</dict>
</array>
<key>Proportion</key>
<string>588pt</string>
<string>464pt</string>
</dict>
<dict>
<key>BecomeActive</key>
<true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -825,14 +828,14 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 593}, {1122, 232}}</string>
<string>{{0, 469}, {1122, 356}}</string>
<key>RubberWindowFrame</key>
<string>450 88 1122 866 0 0 1680 1028 </string>
<string>1948 265 1122 866 1920 150 1680 1050 </string>
</dict>
<key>Module</key>
<string>PBXProjectFindModule</string>
<key>Proportion</key>
<string>232pt</string>
<string>356pt</string>
</dict>
</array>
<key>Proportion</key>
@@ -850,17 +853,17 @@
<key>TableOfContents</key>
<array>
<string>1C530D57069F1CE1000CFCEE</string>
<string>EDAFC5B1109A14EE002C3487</string>
<string>EDAFC5B2109A14EE002C3487</string>
<string>EDFA70821193840B0098FFFC</string>
<string>EDFA70831193840B0098FFFC</string>
<string>1CDD528C0622207200134675</string>
<string>1CD0528E0623707200166675</string>
</array>
<key>WindowString</key>
<string>450 88 1122 866 0 0 1680 1028 </string>
<string>1948 265 1122 866 1920 150 1680 1050 </string>
<key>WindowToolGUID</key>
<string>1C530D57069F1CE1000CFCEE</string>
<key>WindowToolIsVisible</key>
<true/>
<false/>
</dict>
<dict>
<key>Identifier</key>
@@ -891,7 +894,7 @@
<key>Frame</key>
<string>{{0, 0}, {650, 209}}</string>
<key>RubberWindowFrame</key>
<string>450 704 650 250 0 0 1680 1028 </string>
<string>555 839 650 250 0 0 1920 1178 </string>
</dict>
<key>Module</key>
<string>PBXDebugCLIModule</string>
@@ -914,13 +917,13 @@
<key>TableOfContents</key>
<array>
<string>1C78EAAD065D492600B07095</string>
<string>EDAFC5B3109A14EE002C3487</string>
<string>EDB41EC610DAE14F00487A3B</string>
<string>1C78EAAC065D492600B07095</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.consoleV3</string>
<key>WindowString</key>
<string>450 704 650 250 0 0 1680 1028 </string>
<string>555 839 650 250 0 0 1920 1178 </string>
<key>WindowToolGUID</key>
<string>1C78EAAD065D492600B07095</string>
<key>WindowToolIsVisible</key>

View File

@@ -7,13 +7,15 @@
);
};
29B97313FDCFA39411CA2CEA /* Project object */ = {
activeBuildConfigurationName = Release;
activeBuildConfigurationName = Distribution;
activeExecutable = ED0A8CE41069A9CF001E0547 /* wolf3d */;
activeSDKPreference = iphonesimulator2.0;
activeSDKPreference = iphoneos2.0;
activeTarget = 1D6058900D05DD3D006BFB54 /* wolf3d */;
addToTargets = (
1D6058900D05DD3D006BFB54 /* wolf3d */,
);
breakpoints = (
);
codeSenseManager = ED0A8CFA1069A9F5001E0547 /* Code sense */;
executables = (
ED0A8CE41069A9CF001E0547 /* wolf3d */,
@@ -41,12 +43,24 @@
PBXFileDataSource_Target_ColumnID,
);
};
PBXConfiguration.PBXFileTableDataSource3.PBXFindDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID;
PBXFileTableDataSourceColumnWidthsKey = (
200,
577,
);
PBXFileTableDataSourceColumnsKey = (
PBXFindDataSource_MessageID,
PBXFindDataSource_LocationID,
);
};
PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
523,
1433,
60,
20,
48,
@@ -63,39 +77,39 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 280108689;
PBXWorkspaceStateSaveDate = 280108689;
PBXPerProjectTemplateStateSaveDate = 294880202;
PBXWorkspaceStateSaveDate = 294880202;
};
perUserProjectItems = {
ED0653B61087719F00E5450B /* PBXTextBookmark */ = ED0653B61087719F00E5450B /* PBXTextBookmark */;
ED0653B81087719F00E5450B /* PBXTextBookmark */ = ED0653B81087719F00E5450B /* PBXTextBookmark */;
ED2754531085141B009C891E /* PBXTextBookmark */ = ED2754531085141B009C891E /* PBXTextBookmark */;
ED2754551085141B009C891E /* PlistBookmark */ = ED2754551085141B009C891E /* PlistBookmark */;
ED2754561085141B009C891E /* PBXTextBookmark */ = ED2754561085141B009C891E /* PBXTextBookmark */;
ED2E5C05106C886700F57B9D /* PBXTextBookmark */ = ED2E5C05106C886700F57B9D /* PBXTextBookmark */;
ED2E5C06106C886700F57B9D /* PBXTextBookmark */ = ED2E5C06106C886700F57B9D /* PBXTextBookmark */;
ED2E5C0A106C886700F57B9D /* PBXTextBookmark */ = ED2E5C0A106C886700F57B9D /* PBXTextBookmark */;
ED2E5C0B106C886700F57B9D /* PBXTextBookmark */ = ED2E5C0B106C886700F57B9D /* PBXTextBookmark */;
ED3703CD106C20620059C5F8 /* PlistBookmark */ = ED3703CD106C20620059C5F8 /* PlistBookmark */;
ED45402110B21F0900DCFA32 /* PBXTextBookmark */ = ED45402110B21F0900DCFA32 /* PBXTextBookmark */;
ED45402210B21F0900DCFA32 /* PBXTextBookmark */ = ED45402210B21F0900DCFA32 /* PBXTextBookmark */;
ED45402310B21F0900DCFA32 /* PBXTextBookmark */ = ED45402310B21F0900DCFA32 /* PBXTextBookmark */;
ED45402410B21F0900DCFA32 /* PBXTextBookmark */ = ED45402410B21F0900DCFA32 /* PBXTextBookmark */;
ED45402510B21F0900DCFA32 /* PBXTextBookmark */ = ED45402510B21F0900DCFA32 /* PBXTextBookmark */;
ED45402610B21F0900DCFA32 /* PBXTextBookmark */ = ED45402610B21F0900DCFA32 /* PBXTextBookmark */;
ED45402710B21F0900DCFA32 /* PlistBookmark */ = ED45402710B21F0900DCFA32 /* PlistBookmark */;
ED4AC98010742365000706D8 /* PBXTextBookmark */ = ED4AC98010742365000706D8 /* PBXTextBookmark */;
ED4AC98210742365000706D8 /* PBXTextBookmark */ = ED4AC98210742365000706D8 /* PBXTextBookmark */;
ED4AC9AB10743318000706D8 /* PBXTextBookmark */ = ED4AC9AB10743318000706D8 /* PBXTextBookmark */;
ED4AC9AC10743318000706D8 /* PBXTextBookmark */ = ED4AC9AC10743318000706D8 /* PBXTextBookmark */;
ED845AB1109F5B3500F673AC /* PBXTextBookmark */ = ED845AB1109F5B3500F673AC /* PBXTextBookmark */;
ED845AB2109F5B3500F673AC /* PlistBookmark */ = ED845AB2109F5B3500F673AC /* PlistBookmark */;
EDAFC5A2109A14EE002C3487 /* PBXTextBookmark */ = EDAFC5A2109A14EE002C3487 /* PBXTextBookmark */;
EDDA5A7E107BA97F003F55D3 /* PBXTextBookmark */ = EDDA5A7E107BA97F003F55D3 /* PBXTextBookmark */;
EDDA5A80107BA97F003F55D3 /* PBXTextBookmark */ = EDDA5A80107BA97F003F55D3 /* PBXTextBookmark */;
EDDA5A82107BA97F003F55D3 /* PBXTextBookmark */ = EDDA5A82107BA97F003F55D3 /* PBXTextBookmark */;
EDDA5A83107BA97F003F55D3 /* PBXTextBookmark */ = EDDA5A83107BA97F003F55D3 /* PBXTextBookmark */;
EDDA5A84107BA97F003F55D3 /* PBXTextBookmark */ = EDDA5A84107BA97F003F55D3 /* PBXTextBookmark */;
ED89CF4410D0693D006A2D2E /* PBXTextBookmark */ = ED89CF4410D0693D006A2D2E /* PBXTextBookmark */;
ED89CF4610D0693D006A2D2E /* PBXTextBookmark */ = ED89CF4610D0693D006A2D2E /* PBXTextBookmark */;
ED89CF4710D0693D006A2D2E /* PBXTextBookmark */ = ED89CF4710D0693D006A2D2E /* PBXTextBookmark */;
ED89CF4810D0693D006A2D2E /* PBXTextBookmark */ = ED89CF4810D0693D006A2D2E /* PBXTextBookmark */;
ED89CF4910D0693D006A2D2E /* PBXTextBookmark */ = ED89CF4910D0693D006A2D2E /* PBXTextBookmark */;
ED89F57010DC207800C8A107 /* PlistBookmark */ = ED89F57010DC207800C8A107 /* PlistBookmark */;
ED89F58710DC257400C8A107 /* PBXTextBookmark */ = ED89F58710DC257400C8A107 /* PBXTextBookmark */;
ED89F58F10DC27DD00C8A107 /* PBXTextBookmark */ = ED89F58F10DC27DD00C8A107 /* PBXTextBookmark */;
ED89F5B010DC406A00C8A107 /* PBXTextBookmark */ = ED89F5B010DC406A00C8A107 /* PBXTextBookmark */;
ED89F5B110DC406A00C8A107 /* PBXTextBookmark */ = ED89F5B110DC406A00C8A107 /* PBXTextBookmark */;
ED89F5B210DC406A00C8A107 /* PBXTextBookmark */ = ED89F5B210DC406A00C8A107 /* PBXTextBookmark */;
EDB41E9910DADFF000487A3B /* PlistBookmark */ = EDB41E9910DADFF000487A3B /* PlistBookmark */;
EDB41E9A10DADFF000487A3B /* PBXTextBookmark */ = EDB41E9A10DADFF000487A3B /* PBXTextBookmark */;
EDB41EAF10DAE14F00487A3B /* PBXTextBookmark */ = EDB41EAF10DAE14F00487A3B /* PBXTextBookmark */;
EDB41EB110DAE14F00487A3B /* PBXTextBookmark */ = EDB41EB110DAE14F00487A3B /* PBXTextBookmark */;
EDB41ECB10DAE24C00487A3B /* PBXTextBookmark */ = EDB41ECB10DAE24C00487A3B /* PBXTextBookmark */;
EDB41EFD10DAEE4800487A3B /* PBXTextBookmark */ = EDB41EFD10DAEE4800487A3B /* PBXTextBookmark */;
EDB41EFE10DAEE4800487A3B /* PBXTextBookmark */ = EDB41EFE10DAEE4800487A3B /* PBXTextBookmark */;
EDB41F0110DAEE4800487A3B /* PBXTextBookmark */ = EDB41F0110DAEE4800487A3B /* PBXTextBookmark */;
EDB41F1110DAF0FC00487A3B /* PBXTextBookmark */ = EDB41F1110DAF0FC00487A3B /* PBXTextBookmark */;
EDB41F3610DAF95B00487A3B /* PBXTextBookmark */ = EDB41F3610DAF95B00487A3B /* PBXTextBookmark */;
EDC7BE4810D95AF900DA2765 /* PBXTextBookmark */ = EDC7BE4810D95AF900DA2765 /* PBXTextBookmark */;
EDC7BE4910D95AF900DA2765 /* PBXTextBookmark */ = EDC7BE4910D95AF900DA2765 /* PBXTextBookmark */;
EDFA7075119383080098FFFC /* PBXTextBookmark */ = EDFA7075119383080098FFFC /* PBXTextBookmark */;
EDFA7084119384150098FFFC /* PBXTextBookmark */ = EDFA7084119384150098FFFC /* PBXTextBookmark */;
};
sourceControlManager = ED0A8CF91069A9F5001E0547 /* Source Control */;
userBuildSettings = {
@@ -103,24 +117,31 @@
};
43AF6B940F996DA200777569 /* iphone_sys.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {852, 1050}}";
sepNavIntBoundsRect = "{{0, 0}, {1651, 1050}}";
sepNavSelRange = "{1419, 24}";
sepNavVisRange = "{771, 1684}";
sepNavVisRange = "{289, 2254}";
};
};
43CF03090F56D5C200E4A23D /* iphone_loop.c */ = {
uiCtxt = {
sepNavFolds = "{\n c = (\n {\n l = \"int y\";\n r = \"{41674, 9}\";\n s = 1;\n },\n {\n l = \"int width\";\n r = \"{41685, 13}\";\n s = 1;\n },\n {\n l = \"int height\";\n r = \"{41700, 14}\";\n s = 1;\n },\n {\n l = \"const char * str\";\n r = \"{41716, 20}\";\n s = 1;\n }\n );\n r = \"{0, 41792}\";\n s = 0;\n}";
sepNavIntBoundsRect = "{{0, 0}, {1061, 24388}}";
sepNavSelRange = "{27221, 8}";
sepNavVisRange = "{26941, 622}";
sepNavIntBoundsRect = "{{0, 0}, {1061, 24066}}";
sepNavSelRange = "{34481, 0}";
sepNavVisRange = "{34065, 813}";
};
};
43E8D2DF0F4FC61E003F09B2 /* iphone_main.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {741, 5418}}";
sepNavSelRange = "{1413, 4}";
sepNavVisRange = "{970, 956}";
sepNavIntBoundsRect = "{{0, 0}, {741, 4760}}";
sepNavSelRange = "{5816, 0}";
sepNavVisRange = "{5166, 2013}";
};
};
7229CC250F6B3222004123C5 /* wolf_actor_ai.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1061, 13384}}";
sepNavSelRange = "{1895, 9}";
sepNavVisRange = "{1545, 981}";
};
};
7229CC270F6B3222004123C5 /* wolf_actors.c */ = {
@@ -130,6 +151,90 @@
sepNavVisRange = "{0, 1418}";
};
};
7229CC290F6B3222004123C5 /* wolf_ai_com.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1061, 18186}}";
sepNavSelRange = "{24018, 9}";
sepNavVisRange = "{23772, 594}";
};
};
7229CC2E0F6B3222004123C5 /* wolf_client_main.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1061, 2142}}";
sepNavSelRange = "{1430, 9}";
sepNavVisRange = "{1285, 710}";
};
};
7229CC310F6B3222004123C5 /* wolf_level.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1061, 20342}}";
sepNavSelRange = "{19282, 0}";
sepNavVisRange = "{19052, 690}";
};
};
7229CC320F6B3222004123C5 /* wolf_level.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1061, 3976}}";
sepNavSelRange = "{5009, 7}";
sepNavVisRange = "{4411, 607}";
};
};
7229CC330F6B3222004123C5 /* wolf_local.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1061, 1932}}";
sepNavSelRange = "{1187, 0}";
sepNavVisRange = "{867, 423}";
};
};
7229CC340F6B3222004123C5 /* wolf_main.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1061, 1260}}";
sepNavSelRange = "{1698, 9}";
sepNavVisRange = "{1375, 596}";
};
};
7229CC380F6B3222004123C5 /* wolf_player.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1127, 14616}}";
sepNavSelRange = "{2849, 0}";
sepNavVisRange = "{2450, 554}";
};
};
7229CC3A0F6B3222004123C5 /* wolf_powerups.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1061, 5376}}";
sepNavSelRange = "{7666, 0}";
sepNavVisRange = "{7116, 1214}";
};
};
7229CC3C0F6B3222004123C5 /* wolf_pushwalls.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1061, 2310}}";
sepNavSelRange = "{2623, 9}";
sepNavVisRange = "{2617, 967}";
};
};
7229CC3D0F6B3222004123C5 /* wolf_raycast.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1127, 5348}}";
sepNavSelRange = "{2319, 0}";
sepNavVisRange = "{2010, 511}";
};
};
7229CC3F0F6B3222004123C5 /* wolf_renderer.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1061, 1456}}";
sepNavSelRange = "{2450, 9}";
sepNavVisRange = "{2238, 497}";
};
};
7229CC430F6B3222004123C5 /* wolf_sv_ccmds.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1061, 1344}}";
sepNavSelRange = "{2007, 5}";
sepNavVisRange = "{1624, 525}";
};
};
7229CC8E0F6B3363004123C5 /* wolfiphone.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {741, 1260}}";
@@ -139,9 +244,9 @@
};
7229CE460F6C89F8004123C5 /* EAGLView.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {786, 6650}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{10594, 1878}";
sepNavIntBoundsRect = "{{0, 0}, {1061, 6706}}";
sepNavSelRange = "{10810, 13}";
sepNavVisRange = "{10594, 1180}";
};
};
7229CE480F6C89F8004123C5 /* wolf3dAppDelegate.h */ = {
@@ -153,9 +258,9 @@
};
7229CE490F6C89F8004123C5 /* wolf3dAppDelegate.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1074, 5012}}";
sepNavSelRange = "{3930, 0}";
sepNavVisRange = "{5119, 1271}";
sepNavIntBoundsRect = "{{0, 0}, {1074, 4872}}";
sepNavSelRange = "{9060, 13}";
sepNavVisRange = "{8605, 1087}";
};
};
72935B1E0F6B2D9D0085DD28 /* arch.h */ = {
@@ -165,6 +270,34 @@
sepNavVisRange = "{2465, 1040}";
};
};
72935B2D0F6B2D9D0085DD28 /* cvar.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {741, 10542}}";
sepNavSelRange = "{5889, 0}";
sepNavVisRange = "{5250, 937}";
};
};
72935B2E0F6B2D9D0085DD28 /* cvar.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {741, 2310}}";
sepNavSelRange = "{3022, 0}";
sepNavVisRange = "{2654, 1407}";
};
};
72935B2F0F6B2D9D0085DD28 /* fileio.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1061, 4060}}";
sepNavSelRange = "{5506, 0}";
sepNavVisRange = "{4925, 708}";
};
};
72935B5D0F6B2D9D0085DD28 /* sound_sfx_id.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1061, 4354}}";
sepNavSelRange = "{5333, 9}";
sepNavVisRange = "{5277, 575}";
};
};
72935B630F6B2D9D0085DD28 /* tga.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {741, 10822}}";
@@ -174,37 +307,25 @@
};
72A7E8F30F5F2001005B83C0 /* iphone_wolf.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {741, 3850}}";
sepNavSelRange = "{1009, 0}";
sepNavVisRange = "{0, 1316}";
sepNavIntBoundsRect = "{{0, 0}, {741, 3682}}";
sepNavSelRange = "{742, 0}";
sepNavVisRange = "{0, 1321}";
};
};
72A7E8F60F5F2063005B83C0 /* iphone_menus.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {900, 56714}}";
sepNavSelRange = "{66944, 0}";
sepNavVisRange = "{62588, 1640}";
sepNavIntBoundsRect = "{{0, 0}, {2202, 55510}}";
sepNavSelRange = "{76416, 0}";
sepNavVisRange = "{75965, 1083}";
};
};
ED0653B61087719F00E5450B /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 43AF6B940F996DA200777569 /* iphone_sys.m */;
name = "iphone_sys.m: 40";
rLen = 24;
rLoc = 1419;
rType = 0;
vrLen = 1684;
vrLoc = 771;
};
ED0653B81087719F00E5450B /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 43AF6B940F996DA200777569 /* iphone_sys.m */;
name = "iphone_sys.m: 40";
rLen = 24;
rLoc = 1419;
rType = 0;
vrLen = 1684;
vrLoc = 771;
72B5FF380F7E5C3D00C8A372 /* hud.c */ = {
uiCtxt = {
sepNavFolds = "{\n c = (\n {\n l = \"int * y\";\n r = \"{11911, 11}\";\n s = 1;\n }\n );\n r = \"{0, 16141}\";\n s = 0;\n}";
sepNavIntBoundsRect = "{{0, 0}, {1061, 7784}}";
sepNavSelRange = "{2416, 0}";
sepNavVisRange = "{2009, 1134}";
};
};
ED0A8CE41069A9CF001E0547 /* wolf3d */ = {
isa = PBXExecutable;
@@ -217,6 +338,9 @@
configStateDict = {
};
customDataFormattersEnabled = 1;
dataTipCustomDataFormattersEnabled = 1;
dataTipShowTypeColumn = 1;
dataTipSortType = 0;
debuggerPlugin = GDBDebugging;
disassemblyDisplayState = 0;
dylibVariantSuffix = "";
@@ -229,6 +353,7 @@
name = wolf3d;
savedGlobals = {
};
showTypeColumn = 0;
sourceDirectories = (
);
variableFormatDictionary = {
@@ -239,24 +364,55 @@
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
ED0A8CFA1069A9F5001E0547 /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
ED0A8D0A1069ACA8001E0547 /* arialGlyphRects.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {741, 1512}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 2920}";
};
};
ED0A8D0B1069ACA8001E0547 /* iphone_alerts.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1651, 884}}";
sepNavSelRange = "{362, 0}";
sepNavVisRange = "{0, 419}";
};
};
ED0A8D0C1069ACA8001E0547 /* iphone_alerts.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1061, 1638}}";
sepNavSelRange = "{1027, 19}";
sepNavVisRange = "{684, 647}";
};
};
ED0A8D0D1069ACA8001E0547 /* iphone_downloadSOD.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {741, 7434}}";
sepNavSelRange = "{1756, 0}";
sepNavVisRange = "{1108, 1549}";
sepNavIntBoundsRect = "{{0, 0}, {966, 7378}}";
sepNavSelRange = "{5826, 0}";
sepNavVisRange = "{15863, 1355}";
};
};
ED0A8D0E1069ACA8001E0547 /* iphone_downloadUserMap.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {858, 2856}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{4517, 1352}";
};
};
ED0A8D0F1069ACA8001E0547 /* iphone_mapselector.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {948, 6706}}";
sepNavSelRange = "{7865, 0}";
sepNavVisRange = "{1577, 1229}";
sepNavIntBoundsRect = "{{0, 0}, {1061, 6664}}";
sepNavSelRange = "{10729, 9}";
sepNavVisRange = "{10370, 764}";
};
};
ED0A8D101069ACA8001E0547 /* iphone_store.h */ = {
@@ -268,9 +424,9 @@
};
ED0A8D111069ACA8001E0547 /* iphone_store.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {741, 5964}}";
sepNavSelRange = "{673, 17}";
sepNavVisRange = "{0, 1394}";
sepNavIntBoundsRect = "{{0, 0}, {1061, 6118}}";
sepNavSelRange = "{2402, 13}";
sepNavVisRange = "{1952, 677}";
};
};
ED2754531085141B009C891E /* PBXTextBookmark */ = {
@@ -283,97 +439,6 @@
vrLen = 1878;
vrLoc = 10594;
};
ED2754551085141B009C891E /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D1107310486CEB800E47090 /* Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
UIPrerenderedIcon,
);
name = /Users/greghodges/wolf3dplatinum/wolf3d/code/iphone/Info.plist;
rLen = 0;
rLoc = 2147483647;
};
ED2754561085141B009C891E /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7229CE460F6C89F8004123C5 /* EAGLView.m */;
name = "EAGLView.m: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 1878;
vrLoc = 10594;
};
ED2E5C05106C886700F57B9D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = ED0A8D0D1069ACA8001E0547 /* iphone_downloadSOD.m */;
name = "iphone_downloadSOD.m: 61";
rLen = 0;
rLoc = 1756;
rType = 0;
vrLen = 1549;
vrLoc = 1108;
};
ED2E5C06106C886700F57B9D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = ED2E5C07106C886700F57B9D /* OpenTGA.c */;
name = "OpenTGA.c: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 722;
vrLoc = 12240;
};
ED2E5C07106C886700F57B9D /* OpenTGA.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
name = OpenTGA.c;
path = /Users/greghodges/Desktop/MyTGAConverter/OpenTGA.c;
sourceTree = "<absolute>";
};
ED2E5C0A106C886700F57B9D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = ED0A8D0D1069ACA8001E0547 /* iphone_downloadSOD.m */;
name = "iphone_downloadSOD.m: 61";
rLen = 0;
rLoc = 1756;
rType = 0;
vrLen = 1549;
vrLoc = 1108;
};
ED2E5C0B106C886700F57B9D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = ED2E5C0C106C886700F57B9D /* OpenTGA.c */;
name = "OpenTGA.c: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 722;
vrLoc = 12240;
};
ED2E5C0C106C886700F57B9D /* OpenTGA.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
name = OpenTGA.c;
path = /Users/greghodges/Desktop/MyTGAConverter/OpenTGA.c;
sourceTree = "<absolute>";
};
ED3703CD106C20620059C5F8 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = ED3703CE106C20620059C5F8;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
);
rLen = 0;
rLoc = 2147483647;
};
ED3703CE106C20620059C5F8 = {
isa = PBXFileReference;
lastKnownFileType = folder;
sourceTree = "<group>";
};
ED45402110B21F0900DCFA32 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7229CC270F6B3222004123C5 /* wolf_actors.c */;
@@ -404,175 +469,256 @@
vrLen = 1205;
vrLoc = 0;
};
ED45402410B21F0900DCFA32 /* PBXTextBookmark */ = {
ED89CF4410D0693D006A2D2E /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7229CC270F6B3222004123C5 /* wolf_actors.c */;
name = "wolf_actors.c: 5";
rLen = 0;
rLoc = 84;
rType = 0;
vrLen = 1418;
vrLoc = 0;
};
ED45402510B21F0900DCFA32 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7229CE490F6C89F8004123C5 /* wolf3dAppDelegate.m */;
name = "wolf3dAppDelegate.m: 124";
rLen = 0;
rLoc = 3930;
rType = 0;
vrLen = 1271;
vrLoc = 5119;
};
ED45402610B21F0900DCFA32 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7229CE480F6C89F8004123C5 /* wolf3dAppDelegate.h */;
name = "wolf3dAppDelegate.h: 1";
fRef = ED0A8D0A1069ACA8001E0547 /* arialGlyphRects.h */;
name = "arialGlyphRects.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 1205;
vrLen = 2920;
vrLoc = 0;
};
ED45402710B21F0900DCFA32 /* PlistBookmark */ = {
ED89CF4610D0693D006A2D2E /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = ED0A8D0C1069ACA8001E0547 /* iphone_alerts.m */;
name = "iphone_alerts.m: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 965;
vrLoc = 868;
};
ED89CF4710D0693D006A2D2E /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = ED0A8D0D1069ACA8001E0547 /* iphone_downloadSOD.m */;
name = "iphone_downloadSOD.m: 185";
rLen = 0;
rLoc = 5826;
rType = 0;
vrLen = 1355;
vrLoc = 15863;
};
ED89CF4810D0693D006A2D2E /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = ED0A8D0E1069ACA8001E0547 /* iphone_downloadUserMap.m */;
name = "iphone_downloadUserMap.m: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 1352;
vrLoc = 4517;
};
ED89CF4910D0693D006A2D2E /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = ED0A8D0F1069ACA8001E0547 /* iphone_mapselector.c */;
name = "iphone_mapselector.c: 341";
rLen = 0;
rLoc = 7864;
rType = 0;
vrLen = 1282;
vrLoc = 1549;
};
ED89F57010DC207800C8A107 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D1107310486CEB800E47090 /* Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
UIPrerenderedIcon,
);
name = /Users/greghodges/wolf3dplatinum/wolf3d/code/iphone/Info.plist;
rLen = 0;
rLoc = 2147483647;
};
ED4AC98010742365000706D8 /* PBXTextBookmark */ = {
ED89F58710DC257400C8A107 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = EDD56B7E10740B7A007C0E16 /* ConvertTGA.c */;
name = "ConvertTGA.c: 1";
fRef = 72935B2D0F6B2D9D0085DD28 /* cvar.c */;
name = "cvar.c: 286";
rLen = 0;
rLoc = 0;
rLoc = 5889;
rType = 0;
vrLen = 1082;
vrLoc = 18055;
vrLen = 937;
vrLoc = 5250;
};
ED4AC98210742365000706D8 /* PBXTextBookmark */ = {
ED89F58F10DC27DD00C8A107 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = EDD56B7E10740B7A007C0E16 /* ConvertTGA.c */;
name = "ConvertTGA.c: 1";
fRef = 7229CC340F6B3222004123C5 /* wolf_main.c */;
name = "wolf_main.c: 73";
rLen = 0;
rLoc = 0;
rLoc = 1674;
rType = 0;
vrLen = 1082;
vrLoc = 18055;
vrLen = 938;
vrLoc = 1084;
};
ED4AC9AB10743318000706D8 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7229CE490F6C89F8004123C5 /* wolf3dAppDelegate.m */;
name = "wolf3dAppDelegate.m: 124";
rLen = 0;
rLoc = 3930;
rType = 0;
vrLen = 1417;
vrLoc = 3274;
};
ED4AC9AC10743318000706D8 /* PBXTextBookmark */ = {
ED89F5B010DC406A00C8A107 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 72A7E8F60F5F2063005B83C0 /* iphone_menus.c */;
name = "iphone_menus.c: 1111";
rLen = 13;
rLoc = 31543;
rType = 0;
vrLen = 2083;
vrLoc = 30775;
};
ED845AB1109F5B3500F673AC /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 72A7E8F60F5F2063005B83C0 /* iphone_menus.c */;
name = "iphone_menus.c: 2407";
name = "iphone_menus.c: 2810";
rLen = 0;
rLoc = 66944;
rLoc = 76416;
rType = 0;
vrLen = 1640;
vrLoc = 62588;
vrLen = 1083;
vrLoc = 75965;
};
ED845AB2109F5B3500F673AC /* PlistBookmark */ = {
ED89F5B110DC406A00C8A107 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 72935B2E0F6B2D9D0085DD28 /* cvar.h */;
name = "cvar.h: 101";
rLen = 0;
rLoc = 3022;
rType = 0;
vrLen = 1407;
vrLoc = 2654;
};
ED89F5B210DC406A00C8A107 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 72A7E8F30F5F2001005B83C0 /* iphone_wolf.h */;
name = "iphone_wolf.h: 20";
rLen = 0;
rLoc = 742;
rType = 0;
vrLen = 1321;
vrLoc = 0;
};
EDB41E9910DADFF000487A3B /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D1107310486CEB800E47090 /* Info.plist */;
fRef = 4364BF3E0F5CB25900F29317 /* dist.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
UIPrerenderedIcon,
);
name = /Users/greghodges/wolf3dplatinum/wolf3d/code/iphone/Info.plist;
name = /Users/greghodges/wolf3dplatinum/wolf3d/code/iphone/dist.plist;
rLen = 0;
rLoc = 2147483647;
};
EDAFC5A2109A14EE002C3487 /* PBXTextBookmark */ = {
EDB41E9A10DADFF000487A3B /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 43E8D2DF0F4FC61E003F09B2 /* iphone_main.c */;
name = "iphone_main.c: 50";
rLen = 4;
rLoc = 1413;
fRef = 72935B2F0F6B2D9D0085DD28 /* fileio.c */;
name = "fileio.c: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 956;
vrLoc = 970;
vrLen = 1148;
vrLoc = 2350;
};
EDD56B7E10740B7A007C0E16 /* ConvertTGA.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
name = ConvertTGA.c;
path = /Users/greghodges/Desktop/MyTGAConverter/ConvertTGA.c;
sourceTree = "<absolute>";
EDB41EAF10DAE14F00487A3B /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 43AF6B940F996DA200777569 /* iphone_sys.m */;
name = "iphone_sys.m: 40";
rLen = 24;
rLoc = 1419;
rType = 0;
vrLen = 2254;
vrLoc = 289;
};
EDDA5A7E107BA97F003F55D3 /* PBXTextBookmark */ = {
EDB41EB110DAE14F00487A3B /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 43CF03090F56D5C200E4A23D /* iphone_loop.c */;
name = "iphone_loop.c: 1226";
rLen = 0;
rLoc = 28766;
rType = 0;
vrLen = 942;
vrLoc = 28216;
vrLen = 1255;
vrLoc = 30135;
};
EDDA5A80107BA97F003F55D3 /* PBXTextBookmark */ = {
EDB41ECB10DAE24C00487A3B /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = ED0A8D0F1069ACA8001E0547 /* iphone_mapselector.c */;
name = "iphone_mapselector.c: 341";
fRef = 7229CC320F6B3222004123C5 /* wolf_level.h */;
name = "wolf_level.h: 232";
rLen = 0;
rLoc = 7865;
rLoc = 5017;
rType = 0;
vrLen = 1229;
vrLoc = 1577;
vrLen = 1538;
vrLoc = 4647;
};
EDDA5A82107BA97F003F55D3 /* PBXTextBookmark */ = {
EDB41EFD10DAEE4800487A3B /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 43CF03090F56D5C200E4A23D /* iphone_loop.c */;
name = "iphone_loop.c: 1226";
rLen = 0;
rLoc = 28766;
fRef = 7229CC2E0F6B3222004123C5 /* wolf_client_main.c */;
name = "wolf_client_main.c: 76";
rLen = 19;
rLoc = 1963;
rType = 0;
vrLen = 942;
vrLoc = 28216;
vrLen = 1735;
vrLoc = 1148;
};
EDDA5A83107BA97F003F55D3 /* PBXTextBookmark */ = {
EDB41EFE10DAEE4800487A3B /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7229CC3F0F6B3222004123C5 /* wolf_renderer.c */;
name = "wolf_renderer.c: 72";
rLen = 0;
rLoc = 2093;
rType = 0;
vrLen = 1527;
vrLoc = 1208;
};
EDB41F0110DAEE4800487A3B /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7229CC3D0F6B3222004123C5 /* wolf_raycast.c */;
name = "wolf_raycast.c: 92";
rLen = 0;
rLoc = 2319;
rType = 0;
vrLen = 1398;
vrLoc = 1520;
};
EDB41F1110DAF0FC00487A3B /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 7229CC310F6B3222004123C5 /* wolf_level.c */;
name = "wolf_level.c: 922";
rLen = 0;
rLoc = 19218;
rType = 0;
vrLen = 1355;
vrLoc = 18618;
};
EDB41F3610DAF95B00487A3B /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = ED0A8D0B1069ACA8001E0547 /* iphone_alerts.h */;
name = "iphone_alerts.h: 17";
rLen = 0;
rLoc = 362;
rType = 0;
vrLen = 419;
vrLoc = 0;
};
EDC7BE4810D95AF900DA2765 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = ED0A8D101069ACA8001E0547 /* iphone_store.h */;
name = "iphone_store.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 1253;
vrLoc = 0;
};
EDC7BE4910D95AF900DA2765 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = ED0A8D111069ACA8001E0547 /* iphone_store.m */;
name = "iphone_store.m: 399";
rLen = 9;
rLoc = 11914;
rType = 0;
vrLen = 1577;
vrLoc = 11199;
};
EDFA7075119383080098FFFC /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 43E8D2DF0F4FC61E003F09B2 /* iphone_main.c */;
name = "iphone_main.c: 272";
name = "iphone_main.c: 207";
rLen = 0;
rLoc = 7878;
rLoc = 5816;
rType = 0;
vrLen = 1550;
vrLoc = 7519;
vrLen = 2013;
vrLoc = 5166;
};
EDDA5A84107BA97F003F55D3 /* PBXTextBookmark */ = {
EDFA7084119384150098FFFC /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = ED0A8D0F1069ACA8001E0547 /* iphone_mapselector.c */;
name = "iphone_mapselector.c: 341";
fRef = 43E8D2DF0F4FC61E003F09B2 /* iphone_main.c */;
name = "iphone_main.c: 207";
rLen = 0;
rLoc = 7865;
rLoc = 5816;
rType = 0;
vrLen = 1229;
vrLoc = 1577;
vrLen = 2013;
vrLoc = 5166;
};
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:wolf3d.xcodeproj">
</FileRef>
</Workspace>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEWorkspaceUserSettings_BuildLocationStyle</key>
<integer>2</integer>
</dict>
</plist>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
type = "1"
version = "1.0">
<FileBreakpoints>
<FileBreakpoint
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
isPathRelative = "1"
filePath = "EAGLView.m"
timestampString = "333053394.1999959"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "353"
endingLineNumber = "353">
</FileBreakpoint>
</FileBreakpoints>
</Bucket>

View File

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
BuildableName = "wolf3d.app"
BlueprintName = "wolf3d"
ReferencedContainer = "container:wolf3d.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
displayScaleIsEnabled = "NO"
displayScale = "1.00"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
BuildableName = "wolf3d.app"
BlueprintName = "wolf3d"
ReferencedContainer = "container:wolf3d.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
displayScaleIsEnabled = "NO"
displayScale = "1.00"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
BuildableName = "wolf3d.app"
BlueprintName = "wolf3d"
ReferencedContainer = "container:wolf3d.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>wolf3d.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>1D6058900D05DD3D006BFB54</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View File

@@ -1,6 +1,9 @@
/*
Copyright (C) 2009 Id Software, Inc.
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@@ -20,22 +23,46 @@
#import <UIKit/UIKit.h>
#import <UIKit/UIAccelerometer.h>
#import <AVFoundation/AVAudioPlayer.h>
#import "iphone_store.h"
@class EAGLView;
@class wolf3dViewController;
@interface wolf3dAppDelegate : NSObject <UIApplicationDelegate, UIAccelerometerDelegate, UIAlertViewDelegate> {
UIWindow *window;
EAGLView *glView;
UINavigationController *navigationController;
wolf3dViewController *viewController;
int lastAccelUpdateMsec;
@private
UIView *waitingView;
// UIAlertView *alertPurchaseSpear;
AVAudioPlayer * player;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet EAGLView *glView;
@property (nonatomic, retain) IBOutlet wolf3dViewController *viewController;
@property (nonatomic, retain) UINavigationController *navigationController;
@property (nonatomic, retain) UIView *waitingView;
@property (nonatomic, retain) AVAudioPlayer *player;
- (void)initMenuMusicPlayer;
- (void)startMenuMusic;
- (void)stopMenuMusic;
- (void)restartAccelerometerIfNeeded;
- (void)showOpenGL;
- (void)GLtoMainMenu;
- (void)GLtoPreviousMenu;
- (void)didRotate:(NSNotification *)notification;
- (void)setScreenForOrientation:(UIDeviceOrientation)orientation;
- (void)dismissWaitingView;
@end
// Callback for in-app purchase.
void inAppPurchaseCallback( InAppPurchaseResult result );

View File

@@ -1,6 +1,9 @@
/*
Copyright (C) 2009 Id Software, Inc.
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@@ -19,6 +22,8 @@
*/
#import "wolf3dAppDelegate.h"
#import "MainMenuViewController.h"
#import "wolf3dViewController.h"
#import "EAGLView.h"
#import <AudioToolbox/AudioServices.h>
#include "../wolfiphone.h"
@@ -34,6 +39,8 @@ extern void AppendUserDataToFile(NSData* data);
//used for downloading custom made map
extern void FinalizeUserDownload();
yesNoBoxType_t currentYesNoBox = YESNO_NONE;
#if SPEARSTOREKIT
//was used for storekit
extern void FinalizeDownload();
@@ -45,7 +52,6 @@ extern void GetSpear();
extern void DownloadURLConnection(char *url);
extern int wasCalledFromDownloadInstructionsMenu;
extern void iphoneSet2D();
@@ -72,13 +78,51 @@ void SysIPhoneVibrate() {
@implementation wolf3dAppDelegate
@synthesize window;
@synthesize glView;
@synthesize viewController;
@synthesize navigationController;
@synthesize waitingView;
@synthesize player;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
application.statusBarHidden = YES;
application.statusBarOrientation = UIInterfaceOrientationLandscapeLeft;
- (void)initMenuMusicPlayer {
NSString *soundFilePath =
[[NSBundle mainBundle] pathForResource: @"wondering"
ofType: @"caf"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
AVAudioPlayer *newPlayer =
[[AVAudioPlayer alloc] initWithContentsOfURL: fileURL
error: nil];
[fileURL release];
if ( s_masterVolume != NULL ) {
newPlayer.volume = s_masterVolume->value * 0.5f;
} else {
newPlayer.volume = 0.2f;
}
newPlayer.numberOfLoops = -1;
self.player = newPlayer;
[newPlayer release];
[player prepareToPlay];
}
- (void)startMenuMusic {
[player play];
}
- (void)stopMenuMusic {
[player stop];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// get the documents directory, where we will write configs and save games
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
@@ -96,10 +140,11 @@ void SysIPhoneVibrate() {
// start the flow of accelerometer events
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
accelerometer.delegate = self;
accelerometer.updateInterval = 0.01;
accelerometer.updateInterval = 1.0 / 30.0;
// do all the game startup work
iphoneStartup();
//iphoneStartup();
#if SPEARSTOREKIT
//check if user downloaded spear but didn't purchase
@@ -115,22 +160,150 @@ void SysIPhoneVibrate() {
}
#endif
// Sign up for rotation notifications
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
// Support rendering at native resolution on devices with Retina displays.
if ( [[UIScreen mainScreen] respondsToSelector:@selector(scale)] ) {
deviceScale = UIScreen.mainScreen.scale;
touchCoordinateScale = UIScreen.mainScreen.scale;
}
// Screen is initially landscape-left.
// BEWARE! For UI*Interface*Orientation, Left/Right refers to the location of the home button.
// BUT, for UI*Device*Orientation, Left/Right refers to the location of the side OPPOSITE the home button!!
[self setScreenForOrientation:UIDeviceOrientationLandscapeRight];
// Create the window programmatically instead of loading from a nib file.
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// We will create the OpenGL view here so we can get a context and preload textures, but
// don't actually add the view to the window until the player enters a level.
wolf3dViewController *vc = [[wolf3dViewController alloc] initWithNibName:nil bundle:nil];
self.viewController = vc;
[self.viewController setActive:NO];
[vc release];
MainMenuViewController *rootController = [[MainMenuViewController alloc] initWithNibName:@"MainMenuView" bundle:nil];
navigationController = [[UINavigationController alloc] initWithRootViewController:rootController];
[navigationController setNavigationBarHidden:YES];
[rootController release];
[window addSubview:navigationController.view];
[window makeKeyAndVisible];
return YES;
}
- (void)showOpenGL {
// Maybe clearing the OpenGL view before displaying will fix the old frame flashing.
// I don't mind if this blocks until a vsync, becasue it's just a menu.
[self.viewController clearAndPresentRenderbuffer];
[[navigationController view] removeFromSuperview];
[self.viewController setActive:YES];
[window addSubview:[self.viewController view]];
[self.viewController startAnimation];
}
- (void)didRotate:(NSNotification *)notification {
UIDeviceOrientation orient = [[UIDevice currentDevice] orientation];
[self setScreenForOrientation:orient];
}
- (void)setScreenForOrientation:(UIDeviceOrientation) orientation {
// Note the the UIDeviceOrientations are REVERSED from the UIInterface orientations!
switch (orientation) {
case UIDeviceOrientationLandscapeLeft:
deviceOrientation = ORIENTATION_LANDSCAPE_RIGHT;
viddef.width = [UIScreen mainScreen].bounds.size.height * deviceScale;
viddef.height = [UIScreen mainScreen].bounds.size.width * deviceScale;
//[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight;
break;
case UIDeviceOrientationLandscapeRight:
deviceOrientation = ORIENTATION_LANDSCAPE_LEFT;
viddef.width = [UIScreen mainScreen].bounds.size.height * deviceScale;
viddef.height = [UIScreen mainScreen].bounds.size.width * deviceScale;
//[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft;
break;
default:
break;
}
float widthRatio = viddef.width / REFERENCE_WIDTH;
float heightRatio = viddef.height / REFERENCE_HEIGHT;
if ( widthRatio < heightRatio ) {
screenScale = widthRatio;
} else {
screenScale = heightRatio;
}
}
//this is so that we can respond to alertView events (messageboxes)
//but this should only respond to the alertPurchaseSpear
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
//this is if they clicked yes to going to the map instructions website
if (wasCalledFromDownloadInstructionsMenu && buttonIndex == 1) {
SysIPhoneOpenURL( "http://www.idsoftware.com/wolfenstein-3d-classic-platinum/mapinstructions/" );
return;
if (buttonIndex == 1) {
switch ( currentYesNoBox ) {
case YESNO_BUY_PLATINUM: {
// They clicked yes to buy the platinum edition.
// Set up a fullscreen view with the activity indicator in the middle while
// we wait for the in-app purchase to complete.
UIView* topView = [[self.navigationController topViewController] view];
CGRect waitFrame = topView.frame;
[waitingView release];
waitingView = [[UIView alloc] initWithFrame:waitFrame];
waitingView.backgroundColor = [UIColor blackColor];
waitingView.opaque = NO;
waitingView.alpha = 0.75;
UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
[indicator startAnimating];
[waitingView addSubview:indicator];
// This mask centers the view in its superview
indicator.center = indicator.superview.center;
[indicator release];
[topView addSubview:waitingView];
// Start the request to the app store
InAppPurchaseSetCallback( inAppPurchaseCallback );
InAppPurchaseStartPurchase( PLATINUM_UPGRADE_STRING );
break;
}
case YESNO_GO_TO_WEBSITE:
//if they clicked yes to going to the idsoftware website
SysIPhoneOpenURL( "http://www.idsoftware.com/wolfenstein-3d-classic-platinum/" );
break;
case YESNO_DOWNLOAD_INSTRUCTIONS:
//this is if they clicked yes to going to the map instructions website
SysIPhoneOpenURL( "http://www.idsoftware.com/wolfenstein-3d-classic-platinum/mapinstructions/" );
break;
default:
break;
}
}
//if they clicked yes to going to the idsoftware website
if (buttonIndex == 1)
SysIPhoneOpenURL( "http://www.idsoftware.com/wolfenstein-3d-classic-platinum/" );
/*
if (alertPurchaseSpear && (alertPurchaseSpear == actionSheet))
{
@@ -140,26 +313,47 @@ void SysIPhoneVibrate() {
}
- (void)applicationWillResignActive:(UIApplication *)application {
[self.viewController stopAnimation];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
[self.viewController startAnimation];
}
- (void)applicationWillTerminate:(UIApplication *)application {
[self.viewController stopAnimation];
// Save the game.
iphoneShutdown();
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
[self.viewController stopAnimation];
// Save the game.
iphoneShutdown();
}
- (void)dismissWaitingView {
if ( waitingView != nil ) {
[waitingView removeFromSuperview];
[waitingView release];
waitingView = nil;
}
}
#if 1
extern char urlbuffer[1024];
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
// wolf3d:foo should launch wolf3d now... next, add useful URL parameter encoding
#ifdef LITE
iphoneMessageBox("Lite version", "This is a Lite version. You must purchase Wolfenstein3D to get this feature.");
return NO;
#endif
if ( SysIPhoneGetContentVersion() == CONTENT_LITE ) {
iphoneMessageBox("Lite version", "This is a Lite version. You must purchase Wolfenstein3D to get this feature.");
return NO;
}
if (!url)
return NO;
@@ -217,8 +411,10 @@ extern char urlbuffer[1024];
- (void)dealloc {
[viewController release];
[navigationController release];
[window release];
[glView release];
[super dealloc];
}
@@ -232,7 +428,7 @@ extern char urlbuffer[1024];
}
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
accelerometer.delegate = self;
accelerometer.updateInterval = 0.01;
accelerometer.updateInterval = 1.0 / 30.0;
}
}
@@ -345,7 +541,38 @@ extern char urlbuffer[1024];
}
}
*/
- (void)GLtoMainMenu {
[self.navigationController popToRootViewControllerAnimated:NO];
[viewController setActive:NO];
[[viewController view] removeFromSuperview];
[window addSubview:navigationController.view];
}
- (void)GLtoPreviousMenu {
[viewController setActive:NO];
[[viewController view] removeFromSuperview];
[window addSubview:navigationController.view];
}
@end
void iphoneStartMainMenu() {
Sound_StopBGTrack();
iphoneStartMenuMusic();
numTouches = 0;
numPrevTouches = 0;
wolf3dAppDelegate *app = (wolf3dAppDelegate*)[[UIApplication sharedApplication] delegate];
[app GLtoMainMenu];
}
void iphoneStartPreviousMenu() {
wolf3dAppDelegate *app = (wolf3dAppDelegate*)[[UIApplication sharedApplication] delegate];
[app GLtoPreviousMenu ];
}
void inAppPurchaseCallback( InAppPurchaseResult result ) {
wolf3dAppDelegate* app = (wolf3dAppDelegate*)[[UIApplication sharedApplication] delegate];
[app dismissWaitingView];
}

View File

@@ -0,0 +1,48 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <UIKit/UIKit.h>
#import <OpenGLES/EAGL.h>
#import <OpenGLES/ES1/gl.h>
#import <OpenGLES/ES1/glext.h>
@interface wolf3dViewController : UIViewController {
EAGLContext *context;
BOOL animating;
BOOL active;
NSInteger animationFrameInterval;
CADisplayLink *displayLink;
}
@property (nonatomic, getter=isActive) BOOL active;
@property (readonly, nonatomic, getter=isAnimating) BOOL animating;
@property (nonatomic) NSInteger animationFrameInterval;
- (void)startAnimation;
- (void)stopAnimation;
- (void)clearAndPresentRenderbuffer;
@end

View File

@@ -0,0 +1,237 @@
/*
Copyright (C) 2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
#import <QuartzCore/QuartzCore.h>
#import "wolf3dViewController.h"
#import "EAGLView.h"
#import "wolfiphone.h"
//#import "wolf3dAppDelegate.h"
@interface wolf3dViewController ()
@property (nonatomic, retain) EAGLContext *context;
@property (nonatomic, assign) CADisplayLink *displayLink;
@end
@implementation wolf3dViewController
@synthesize animating, context, displayLink, active;
- (id)initWithNibName:(NSString*)file bundle:(NSBundle*)bundle
{
// Get the application's window dimensions.
EAGLView *glView = [[EAGLView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
self.view = glView;
[glView release];
EAGLContext *aContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];
if (!aContext)
NSLog(@"Failed to create ES context");
else if (![EAGLContext setCurrentContext:aContext])
NSLog(@"Failed to set ES context current");
self.context = aContext;
[aContext release];
[(EAGLView *)self.view setContext:context];
[(EAGLView *)self.view setFramebuffer];
animating = FALSE;
animationFrameInterval = DEFAULT_FRAME_INTERVAL;
self.displayLink = nil;
// Now that we have a context, we can init the render system.
iphoneStartup();
return self;
}
- (void)awakeFromNib
{
EAGLView *glView = [[EAGLView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
self.view = glView;
[glView release];
EAGLContext *aContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];
if (!aContext)
NSLog(@"Failed to create ES context");
else if (![EAGLContext setCurrentContext:aContext])
NSLog(@"Failed to set ES context current");
self.context = aContext;
[aContext release];
[(EAGLView *)self.view setContext:context];
[(EAGLView *)self.view setFramebuffer];
animating = FALSE;
animationFrameInterval = DEFAULT_FRAME_INTERVAL;
self.displayLink = nil;
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc. that aren't in use.
}
- (void)dealloc {
// Stop orientation notifications.
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
// Tear down context.
if ([EAGLContext currentContext] == context)
[EAGLContext setCurrentContext:nil];
[context release];
[super dealloc];
}
- (void)viewWillAppear:(BOOL)animated
{
[self startAnimation];
[super viewWillAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[self setActive:NO];
[super viewWillDisappear:animated];
}
- (void)viewDidUnload
{
[super viewDidUnload];
[self stopAnimation];
// Tear down context.
if ([EAGLContext currentContext] == context)
[EAGLContext setCurrentContext:nil];
self.context = nil;
}
- (NSInteger)animationFrameInterval
{
return animationFrameInterval;
}
- (void)setAnimationFrameInterval:(NSInteger)frameInterval
{
/*
Frame interval defines how many display frames must pass between each time the display link fires.
The display link will only fire 30 times a second when the frame internal is two on a display that refreshes 60 times a second. The default frame interval setting of one will fire 60 times a second when the display refreshes at 60 times a second. A frame interval setting of less than one results in undefined behavior.
*/
if (frameInterval >= 1)
{
animationFrameInterval = frameInterval;
if (animating)
{
[self stopAnimation];
[self startAnimation];
}
}
}
- (void)startAnimation
{
if ( !animating )
{
// The UIScreen method is not supported pre-4.0.
// Not worrying about supporting external displays yet, so just create a default display link.
//CADisplayLink *aDisplayLink = [[UIScreen mainScreen] displayLinkWithTarget:self selector:@selector(drawFrame)];
CADisplayLink *aDisplayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(drawFrame)];
[aDisplayLink setFrameInterval:animationFrameInterval];
[aDisplayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
self.displayLink = aDisplayLink;
animating = TRUE;
}
}
- (void)stopAnimation
{
if ( animating )
{
[self.displayLink invalidate];
self.displayLink = nil;
animating = FALSE;
}
}
- (void)drawFrame
{
// Check out framerate
//CFTimeInterval frameTime = [displayLink duration];
//CFTimeInterval stamp = [displayLink timestamp];
//if ( frameTime < 0.016666 ) {
// NSLog( @"Frame timestamp: %f\n", stamp );
//}
//[ (wolf3dAppDelegate *)[UIApplication sharedApplication].delegate restartAccelerometerIfNeeded];
if ( !active ) {
// We are in the menus, only need to update sound.
Sound_Update( vnull, vnull, vnull, vnull );
return;
}
picTimingClear();
[(EAGLView *)self.view setFramebuffer];
NSTimeInterval startTime = [NSDate timeIntervalSinceReferenceDate];
iphoneFrame();
NSTimeInterval gameTime = [NSDate timeIntervalSinceReferenceDate] - startTime;
if ( gameTime > 0.0166 ) {
/* NSLog (@"Frame took %.8f seconds.", gameTime);
NSLog (@" Sound_Update took %.8f seconds.", soundTime );
NSLog (@" iphoneDrawMenus took %.8f seconds.", menuTime );
soundTime = 0;
menuTime = 0;
picTimingPrint();
*/ }
[(EAGLView *)self.view presentFramebuffer];
}
// Clears the renderbuffer and immediately displays it.
- (void)clearAndPresentRenderbuffer {
qglClear( GL_COLOR_BUFFER_BIT );
[(EAGLView *)self.view presentFramebuffer];
}
@end

View File

@@ -1,3 +1,26 @@
/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This file is part of the WOLF3D iOS v2.1 GPL Source Code.
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.
*/
//
// Prefix header for all source files of the 'wolf3d' target in the 'wolf3d' project
//

View File

@@ -540,6 +540,9 @@ PRIVATE _boolean AI_CheckSight( entity_t *self )
if( deltax > 0 )
return false;
break;
default:
break;
}
// trace a line to check for blocking tiles (corners)

Some files were not shown because too many files have changed in this diff Show More