Commits

rude committed d362ae6

Initial Mercurial commit.

  • Participants

Comments (0)

Files changed (417)

+ACLOCAL_AMFLAGS = -I platform/unix/m4
+SUBDIRS = src
+EXTRA_DIST = changes.txt license.txt readme.txt
+LOVE 0.6.0
+----------
+
+  * Added love.graphics.print()/printf().
+  * Added unicode-translated parameter to love.keypressed().
+  * Added love.event.
+  * Added love.filesystem.setIdentity().
+  * Added experimental support for Lua lanes.
+  * Added OpenAL dependency.
+  * Added SDL_sound dependency.
+  
+  * Fixed love.fileystem problems with internal \0 in strings.
+  * Fixed love.filesystem.mkdir/remove not working when write directory not set.
+  * Fixed position of Window.
+  
+  * Changed parameter order of draws().
+  * Changed origin for images to top-left.
+  * Changed love.filesystem.open to accept mode (removed from love.filesystem.newFile).
+  * Changed love.filesystem.read() which now returns two parameters (data, length).
+  * Changed love.filesystem.write() which now takes up to four parameters (file, data, length, mode).
+  
+  * Removed love.graphics.draw() for strings.
+  * Removed love.system.
+  * Removed conf files. 
+  * Removed SWIG.
+  * Removed boost.
+  * Removed SDL_mixer.
+  
+
+LOVE 0.5.0
+----------
+
+  * Added love.joystick.
+  * Added network support via LuaSocket.
+  * Added support for loading of appended .love-file.
+
+  * Added love.filesystem.lines().
+  * Added a loader function to enable use of normal require().
+  * Added love.filesystem.load().
+  * Added love.filesystem.getSaveDirectory()
+  * Added love.filesystem.getWorkingDirectory()
+
+  * Added optional explicit destruction of Box2D objects.
+  * Added shape:testSegment().
+  * Added love.graphics.screenshot() (.bmp only).
+  * Added default size (12) to font-related functions.
+  * Added love.graphics.setFont( filename, size )
+  * Added love.graphics.setLineStippe and related functions.
+  * Added love.graphics.setPointSize and related functions.
+
+  * Changed love.filesystem.read() to accept file name.
+  * Changed love.filesystem.write() to accept file name.
+  * Changed love.graphics.triangle() to accept CCW and CW ordering.
+
+  * Fixed love.graphics.read adding bogus characters at the end of string.
+  * Fixed epic swigfusion bug.
+  * Fixed love.graphics.getFont so it returns nil if no font is present.
+  * Fixed bug where love.graphics.getBlendMode() always returns blend_normal.
+  * Fixed bug which caused error screen to be scissored (when enabled).
+  * Fixed Body:setAngle to accept degrees like everything else.
+
+  * Cleaned up love::File and love_physfs.
+  * Cleaned up love::Reference so it stores its reference in _G.
+
+LOVE 0.4.0
+----------
+
+  * Added love.physics. (YES!)
+  * Added love.audio.setMode().
+  * Added love.audio.setChannels().
+  * Added love.graphics.polygon().
+  * Added love.graphics.setScissor() and love.graphics.getScissor() to handle scissoring the graphical area.
+  * Fixed missing constants related to image optimization.
+  * Fixed memory leak related to love::File (thanks amnesiasoft!).
+
+
+LOVE 0.3.2
+----------
+
+  * Added love.graphics.rectangle()
+  * Added love.graphics.setLineWidth()
+  * Added love.graphics.setLineStyle()
+  * Added love.graphics.getLineWidth()
+  * Added love.graphics.getLineStyle()
+  * Added love.mouse.getPosition()
+  * Added love.audio_loop
+  * Added love.timer.getTime()
+  * Changed love.graphics.quad() to accept CCW and CW ordering.
+  * Fixed default color mode bug.
+  * Fixed line width being applied unnecessarily.
+  * Fixed line width bug related to fullscreen toggle.
+  * Fixed music not looping.
+
+LOVE 0.3.1
+----------
+ 
+  * Fixed segfault related to graphics.
+  * Fixed wait-forever bug related to audio.
+  * Fixed error reporting not working across modules.
+  * Fixed bug where games with a trailing "/" would not start.
+  * Fixed bug which caused love.timer.sleep to delay for (way) too long.
+
+LOVE 0.3.0
+----------
+
+  * Added ParticleSystem.
+  * Added visual error reporting. 
+  * Added love.system for game control needs.
+  * Added input grabbing.
+  * Added functions in love.graphics for display management.
+  * Added love.graphics.point().
+  * Added functions in love.graphics for getting current color, font, etc.
+  * Added love.filesystem.enumerate() for getting folder contents.
+  * Added functions for setting the window caption.
+  * Added version checking. An error occurs if the game is incompatible.
+  * Fixed print() :)
+  * Removed all keyboard shortcuts.
+  * Save folders are now created only if required.
+  * On Windows, the new save location is %APPDATA%\LOVE\game
+
+LOVE 0.2.1
+----------
+ 
+  * Added many functions in love.filesystem.
+  * Added a dedicated save-folder for each game.
+  * Added timer.sleep.
+  * Added line heights to font objects.
+  * Added love.graphics.getWidth/getHeight.
+  * Added scaling and rotation for text.
+  * Added variable spacing to ImageFont.
+  * Added support for variable line quality when drawing primitives.
+  * Added several functions for drawing sections of images. (love.graphics.draws)
+  * Added image optimization function and padding function. 
+  * Added love.graphics.getWidth/Height.
+
+  * Split devices up into actual SWIG-modules. This means that:
+    - Functions are used like this: love.graphics.draw, not love.graphics:draw
+    - love.objects is no more. Objects are created by an appropriate device.
+  * How you draw primitives has been altered.
+  * draw(string, x, y, wrap, align) has become drawf(string, x, y, wrap, align)
+
+  * Changed getFps to getFPS.
+  * Escape is no more ... enter: Alt+F4.
+  * love.filesystem.include has been renamed to love.filesystem.require.  
+  * ImageFonts now consider the spacing as well as the glyph size.
+  * Fixed a massive ImageFont bug which resulted in float-positioning failure.
+  * Fixed a bug when loading fonts where the specified size doesn't represent the true size of the font.
+
+  * Updated DevIL to version 1.6.8-rc2 (Windows)
+  * Updated FreeType to freetype-2.3.5-1 (Windows)
+  * Updated Lua to 5.1.3 (Windows)
+  * Updated SDL to 1.2.13 (Windows)
+  * Removed boost::filesystem.
+
+LOVE 0.2.0
+----------
+
+  * Added ImageFont
+  * Added Animation
+  * Added text formatting functions
+  * Added setCenter for Image and Animation.
+  * Added methods for rendering of scaled/rotated sprites.
+  * Added the drawing of basic shapes.
+  * Added default font and embedded resources.
+  * Added Ctrl+R for reload.
+  * Added blending and color modes.
+  * Fixed memory usage of Graphics.
+  * Fixed a bug where the set text color would change the color of any images rendered.
+  * Fixed CWD bug.
+  * Fixed titlebar. Game title is now displayed.
+
+
+LOVE 0.1.1
+----------
+
+Initial release!
+
+ * Image loading and rendering.
+ * Sound loading and playing.
+ * Font loading and rendering.
+ * Lua-scriptable games.
+ * Config files.
+ * Stuff is loadable from archive files.
+ * Keyboard, mouse, display, timer, etc. (Basic devices).
+
+
+
+AC_INIT([love], [r718])
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_AUX_DIR([platform/unix])
+AC_CONFIG_MACRO_DIR([platform/unix/m4])
+AC_CONFIG_SRCDIR([src/love.cpp])
+AM_INIT_AUTOMAKE([-Wall foreign])
+AC_PREFIX_DEFAULT([/usr])
+AC_PROG_LIBTOOL
+AC_PROG_CC
+AC_PROG_CXX
+AC_SEARCH_LIBS([sqrt], [m], [], AC_MSG_ERROR([Can't LÖVE without C math library]))
+AC_SEARCH_LIBS([SDL_Init], [SDL], [], AC_MSG_ERROR([Can't LÖVE without SDL]))
+AC_SEARCH_LIBS([glLoadIdentity], [GL], [], AC_MSG_ERROR([Can't LÖVE without OpenGL]))
+AC_SEARCH_LIBS([gluOrtho2D], [GLU], [], AC_MSG_ERROR([Can't LÖVE without OpenGL Utility Library]))
+AC_SEARCH_LIBS([alSourcePlay], [openal], [], AC_MSG_ERROR([Can't LÖVE without OpenAL]))
+AC_SEARCH_LIBS(
+	[lua_pcall],
+	[lua lua5.1],
+	if test "$ac_cv_search_lua_pcall" = "-llua5.1"; then
+		AC_SUBST([INCLUDE_LUA], [-I/usr/include/lua5.1])
+	fi,
+	AC_MSG_ERROR([Can't LÖVE without Lua])
+)
+AC_SEARCH_LIBS([ilInit], [IL], [], AC_MSG_ERROR([Can't LÖVE without DevIL]))
+AC_SEARCH_LIBS([mng_initialize], [mng], [], AC_MSG_ERROR([DevIL needs MNG]))
+AC_SEARCH_LIBS([TIFFOpen], [tiff], [], AC_MSG_ERROR([DevIL needs TIFF]))
+AC_SEARCH_LIBS([FT_Load_Glyph], [freetype], [], AC_MSG_ERROR([Can't LÖVE without FreeType]))
+AC_SEARCH_LIBS([PHYSFS_init], [physfs], [], AC_MSG_ERROR([Can't LÖVE without PhysicsFS]))
+AC_SEARCH_LIBS([ModPlug_Load], [modplug], [], AC_MSG_ERROR([Can't LÖVE without ModPlug]))
+AC_SEARCH_LIBS([mpg123_open_feed], [mpg123], [], AC_MSG_ERROR([Can't LÖVE without Mpg123]))
+AC_SEARCH_LIBS([ov_open], [vorbisfile], [], AC_MSG_ERROR([Can't LÖVE without VorbisFile]))
+AC_SEARCH_LIBS([FLAC__metadata_chain_new], [FLAC++], [], AC_MSG_ERROR([Can't LÖVE without FLAC++]))
+AC_CONFIG_FILES([
+	Makefile
+	src/Makefile
+])
+AC_OUTPUT

extra/nsis/game.ico

Added
New image

extra/nsis/left.bmp

Added
New image

extra/nsis/love.ico

Added
New image

extra/nsis/love.nsi

+!include "MUI.nsh" # Modern look, plxz
+
+Name "LOVE"
+OutFile "love-0.5-0.exe"
+Icon "love.ico" # this doesn't seem to work
+
+InstallDir $PROGRAMFILES\LOVE
+InstallDirRegKey HKCU "Software\LOVE" ""
+
+# Graphics
+!define MUI_ABORTWARNING
+!define MUI_HEADERIMAGE
+!define MUI_HEADERIMAGE_BITMAP "top.bmp" # optional
+!define MUI_WELCOMEFINISHPAGE_BITMAP "left.bmp"
+!define MUI_UNWELCOMEFINISHPAGE_BITMAP "left.bmp"
+
+# Pages
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE "..\..\license.txt"
+!insertmacro MUI_PAGE_COMPONENTS
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES
+
+!insertmacro MUI_UNPAGE_WELCOME
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_INSTFILES
+
+# Languages
+!insertmacro MUI_LANGUAGE "English"
+
+# Main Program
+Section "LOVE" MainProg
+
+	SectionIn RO
+	SetOutPath $INSTDIR
+
+	# Program
+	File ..\..\platform\msvc\Release\love.exe
+	
+	# Modules
+	#File ..\..\platform\msvc\Release\love_chipmunk.dll
+	#File ..\..\platform\msvc\Release\love_opengl.dll
+	#File ..\..\platform\msvc\Release\love_physfs.dll
+	#File ..\..\platform\msvc\Release\love_sdlkeyboard.dll
+	#File ..\..\platform\msvc\Release\love_sdlmixer.dll
+	#File ..\..\platform\msvc\Release\love_sdlmouse.dll
+	#File ..\..\platform\msvc\Release\love_sdltimer.dll
+	#File ..\..\platform\msvc\Release\love_system.dll
+	
+	# DLLs
+	File ..\..\platform\msvc\DevIL.dll
+	File ..\..\platform\msvc\ILU.dll
+	File ..\..\platform\msvc\SDL.dll
+	File ..\..\platform\msvc\SDL_mixer.dll
+	File ..\..\platform\msvc\Microsoft.VC80.CRT.manifest
+	File ..\..\platform\msvc\msvcp80.dll
+	File ..\..\platform\msvc\msvcr80.dll
+	
+	# Delete old DLLS (from 0.2.1 - 0.3.1)
+	Delete $INSTDIR\love_chipmunk.dll
+	Delete $INSTDIR\love_opengl.dll
+	Delete $INSTDIR\love_physfs.dll
+	Delete $INSTDIR\love_sdlkeyboard.dll
+	Delete $INSTDIR\love_sdlmixer.dll
+	Delete $INSTDIR\love_sdlmouse.dll
+	Delete $INSTDIR\love_sdltimer.dll
+	Delete $INSTDIR\love_system.dll
+	Delete $INSTDIR\freetype6.dll
+	Delete $INSTDIR\ILUT.dll
+	Delete $INSTDIR\libogg-0.dll
+	Delete $INSTDIR\libvorbis-0.dll
+	Delete $INSTDIR\libvorbisfile-3.dll
+	Delete $INSTDIR\lua5.1.dll
+	Delete $INSTDIR\physfs.dll
+	Delete $INSTDIR\smpeg.dll
+	Delete $INSTDIR\zlib1.dll
+	
+	# Delete old demos.
+	Delete $INSTDIR\demos\kkav.love
+	Delete $INSTDIR\demos\passingclouds.love
+	Delete $INSTDIR\demos\sinescroller.love
+	Delete $INSTDIR\demos\no.love
+	Delete $INSTDIR\demos\particles.love
+
+	# Icons
+	File love.ico
+	File game.ico
+	# Text
+	File ..\..\changes.txt
+	File ..\..\license.txt
+	File ..\..\readme.txt
+
+	# Uninstaller
+	WriteUninstaller $INSTDIR\Uninstall.exe
+
+	# Start Menu
+	# Remove old menu items (from 0.2.0)
+	Delete "$SMPROGRAMS\LOVE\Demos\Animation Demo.lnk"
+	Delete "$SMPROGRAMS\LOVE\Demos\Chinchilla.lnk"
+	Delete "$SMPROGRAMS\LOVE\Demos\Color Blend Demo.lnk"
+	Delete "$SMPROGRAMS\LOVE\Demos\Hello LOVE.lnk"
+	Delete "$SMPROGRAMS\LOVE\Demos\Mouse and Image Basics.lnk"
+	Delete "$SMPROGRAMS\LOVE\Demos\Movement.lnk"
+	Delete "$SMPROGRAMS\LOVE\Demos\Passing Clouds.lnk"
+	Delete "$SMPROGRAMS\LOVE\Demos\Sound.lnk"
+	Delete "$SMPROGRAMS\LOVE\Demos\Text Demo.lnk"
+	RMDir "$SMPROGRAMS\LOVE\Demos"
+	Delete "$SMPROGRAMS\LOVE\LOVE.lnk"
+	Delete "$SMPROGRAMS\LOVE\Uninstall.lnk"
+	Delete "$SMPROGRAMS\LOVE\Documentation.url"
+	# Add new start menu items
+	CreateDirectory "$SMPROGRAMS\LOVE"
+	CreateShortCut "$SMPROGRAMS\LOVE\LOVE.lnk" "$INSTDIR\love.exe"
+	CreateShortCut "$SMPROGRAMS\LOVE\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
+	WriteINIStr "$SMPROGRAMS\LOVE\Documentation.url" "InternetShortcut" "URL" "http://love.sourceforge.net/docs/"
+
+	# Desktop
+	CreateShortCut "$DESKTOP\LOVE.lnk" "$INSTDIR\love.exe" ""
+
+	# Registry
+	WriteRegStr HKCU "Software\LOVE" "" $INSTDIR
+	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\LOVE" "DisplayName" "LOVE (remove only)"
+	WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\LOVE" "UninstallString" "$INSTDIR\Uninstall.exe"
+	
+	# love file association
+	WriteRegStr HKCR ".love" "" "LOVE"
+	WriteRegStr HKCR "LOVE" "" "LOVE Game File"
+	WriteRegStr HKCR "LOVE\DefaultIcon" "" "$INSTDIR\game.ico"
+	WriteRegStr HKCR "LOVE\shell" "" "open"
+	WriteRegStr HKCR "LOVE\shell\open" "" "Open in LOVE"
+	WriteRegStr HKCR "LOVE\shell\open\command" "" "$INSTDIR\love.exe $\"%1$\""
+	# Refresh shell icons
+	System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v  (0x08000000, 0, 0, 0)'
+
+SectionEnd
+
+# Demos
+Section "Demos" Demos
+
+	SetOutPath $INSTDIR\demos
+
+	# Files
+	File ..\..\demos\lovalanche.love
+	File ..\..\demos\no.love
+	File ..\..\demos\particles.love
+
+	# Start menu
+	CreateShortCut "$SMPROGRAMS\LOVE\Demos.lnk" "$INSTDIR\demos"
+
+SectionEnd
+
+# Descriptions
+LangString DESC_MainProg ${LANG_ENGLISH} "Main program."
+LangString DESC_Demos ${LANG_ENGLISH} "A series of demos to show what LOVE can do."
+
+# Assign language strings to sections
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+	!insertmacro MUI_DESCRIPTION_TEXT ${MainProg} $(DESC_MainProg)
+	!insertmacro MUI_DESCRIPTION_TEXT ${Demos} $(DESC_Demos)
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+# Uninstall
+Section "Uninstall"
+
+	# Delete Demos
+	Delete $INSTDIR\demos\lovalanche.love
+	Delete $INSTDIR\demos\no.love
+	Delete $INSTDIR\demos\particles.love
+
+	RMDir $INSTDIR\demos
+	# Program
+	Delete $INSTDIR\love.exe
+	# Modules
+	# Delete $INSTDIR\love_chipmunk.dll
+	# Delete $INSTDIR\love_opengl.dll
+	# Delete $INSTDIR\love_physfs.dll
+	# Delete $INSTDIR\love_sdlkeyboard.dll
+	# Delete $INSTDIR\love_sdlmixer.dll
+	# Delete $INSTDIR\love_sdlmouse.dll
+	# Delete $INSTDIR\love_sdltimer.dll
+	# Delete $INSTDIR\love_system.dll
+	# DLLs
+	Delete $INSTDIR\DevIL.dll
+	Delete $INSTDIR\ILU.dll
+	Delete $INSTDIR\SDL.dll
+	Delete $INSTDIR\SDL_mixer.dll
+	Delete $INSTDIR\Microsoft.VC80.CRT.manifest
+	Delete $INSTDIR\msvcp80.dll
+	Delete $INSTDIR\msvcr80.dll
+	# Icons
+	Delete $INSTDIR\love.ico
+	Delete $INSTDIR\game.ico
+	# Text
+	Delete $INSTDIR\changes.txt
+	Delete $INSTDIR\license.txt
+	Delete $INSTDIR\readme.txt
+	RMDir $INSTDIR
+
+	# Start menu
+	Delete "$SMPROGRAMS\LOVE\Demos.lnk"
+	Delete "$SMPROGRAMS\LOVE\LOVE.lnk"
+	Delete "$SMPROGRAMS\LOVE\Uninstall.lnk"
+	Delete "$SMPROGRAMS\LOVE\Documentation.url"
+	RMDir "$SMPROGRAMS\LOVE"
+	
+	# Desktop
+	Delete "$DESKTOP\LOVE.lnk"
+
+	# Uninstall keys
+	DeleteRegKey /ifempty HKCU "Software\LOVE"
+	DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\LOVE"
+	
+	# love file association
+	DeleteRegKey HKCR "LOVE"
+	DeleteRegKey HKCR ".love"
+	# Refresh shell icons
+	System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v  (0x08000000, 0, 0, 0)'
+
+SectionEnd

extra/nsis/top.bmp

Added
New image

extra/reshax/makefile

+TARGET = reshax-5million
+BINDIR = .
+OBJDIR = obj
+SRCDIR = src
+EXEC = $(BINDIR)/$(TARGET)
+OBJ = $(OBJDIR)/main.o
+
+CPP = g++
+CFLAGS = -s -O2 -Wall
+LDFLAGS =
+
+default: $(EXEC)
+
+$(EXEC): $(OBJ)
+	$(CPP) $(CFLAGS) $(LDFLAGS) -o $@ $^
+
+$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
+	$(CPP) $(CFLAGS) -c $< -o $@
+
+clean:
+	rm -f $(OBJ)
+
+cleanall: clean
+	rm -f $(EXEC)

extra/reshax/reshax.cpp

+#include <fstream>
+#include <map>
+#include <sstream>
+#include <sys/stat.h>
+
+std::ofstream resources_cpp, resources_h;
+
+void load(std::string file);
+void write(std::string file, int size, char *data);
+
+
+using namespace std;
+
+int main(int argc, char *argv[])
+{
+	if (argc > 1)
+	{
+		resources_h.open("resources.h");
+		resources_h
+			<< "#ifndef LOVE_RESOURCES_H\n"
+			<< "#define LOVE_RESOURCES_H\n\n"
+			<< "#include <vector>\n"
+			<< "#include <love/MemoryFile.h>\n\n"
+			<< "namespace love\n"
+			<< "{\n";
+		resources_cpp.open("resources.cpp");
+		resources_cpp
+			<< "#include \"resources.h\"\n\n"
+			<< "namespace love\n"
+			<< "{\n";
+		for (int i = 1; i < argc; i++)
+		{
+			// use boost::filesystem to list all the files (in v2 maybe)
+			load(argv[i]);
+		}
+		resources_cpp << "}\n";
+		resources_cpp.close();
+		resources_h
+			<< "}\n\n"
+			<< "#endif\n";
+		resources_h.close();
+	}
+
+	else
+		printf("ResHax-5Million v1.0a\n- now empowered by rubber piggies\n\nUsage: reshax-5million [file1] [file2] [and so on...]\n");
+}
+
+void load(string file)
+{
+	ifstream fs (file.c_str(), fstream::in | fstream::binary | fstream::ate);
+	if (fs.is_open() && fs.good())
+	{
+		printf("Haxing %s", file.c_str());
+		
+		int size = (int)fs.tellg();
+		char * buff = new char[size];
+		fs.seekg(0, ios::beg);
+		fs.read(buff, size);
+#ifndef WIN32
+		struct stat fstat;
+		stat(file.c_str(), &fstat);
+		if (!S_ISDIR(fstat.st_mode))
+			write(file, size, buff);
+		else
+			printf(" FAIL cuz DIR\n");
+#else
+		write(file, size, buff);
+#endif
+		fs.close();
+		delete [] buff;
+	}
+	else
+		printf("Hax does not liek '%s'\n", file.c_str());
+}
+
+void write(string file, int size, char *data)
+{
+	char buffer[8];
+	//size--;
+
+	// removes directory from file path
+	size_t found;
+	found = file.find_last_of('/');
+	if (found != string::npos)
+		file = file.substr(found + 1);
+
+	string var (file);
+	// replaces dashes and dots (in UNIX only)
+	//#ifndef WIN32
+	found = var.find_first_of(" !\"#$%&'()*+,-.@[]", 0);
+	while (found != string::npos)
+	{
+		var[found] = '_';
+		found = var.find_first_of(" !\"#$%&'()*+,-.@[]", found);
+	}
+	//#endif
+
+	resources_cpp << "\tstatic char " << var << "_data[" << size << "] = {";
+	for (int i = 0; i < size - 1; i++)
+	{
+		sprintf(buffer, "%d,", data[i]);
+		resources_cpp << buffer;
+		if (i != 0 && i % 30 == 0)
+			resources_cpp << "\n\t";
+	}
+	sprintf(buffer, "%d};\n", data[size]);
+	resources_cpp << buffer << "\tpFile " << var.c_str() << "(new MemoryFile(" << var << "_data, " << size << ", \"" << file.c_str() << "\"));\n\n";
+
+	resources_h << "\textern pFile " << var << ";\n";
+	printf(" is haxed\n");
+}
+Copyright (c) 2006-2009 LOVE Development Team
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+claim that you wrote the original software. If you use this software
+in a product, an acknowledgment in the product documentation would be
+appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must not be
+misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.

platform/macosx/README.rtf

+{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 ArialMT;}
+{\colortbl;\red255\green255\blue255;}
+\paperw11900\paperh16840\margl1440\margr1440\vieww11900\viewh14740\viewkind0
+\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
+
+\f0\b\fs24 \cf0 XCode Project for LOVE 
+\b0 02/11/2008\
+\
+Requires Mac OS X 10.4 (Can try 10.3.9 if you want... though; only 10.4 is tested)\
+\
+Required frameworks reside in the Frameworks folder inside the love.app package. (Right click love.app and select "Show Package Contents" to view love.app as a folder)\
+\
+Requires XCode 3.1. download from http://developer.apple.com/iphone/program/ (Can try older version if you want but it is only confirmed to work on XCode 3.1)\
+\
+Put these frameworks inside /Library/Frameworks.\
+\
+Open the XCode project. There maybe some paths that were accidentally left absolute; In this case, the files would be highlighted red. Unfortunately the xcode project haven't been checked thoroughly yet, so you will need to fix these up yourself and redirect the paths to the correct ones. You will need your wits.\
+\
+Fix up source code. See change I had to make at bottom of this document\
+\
+Click build on the toolbar.\
+\
+It should compile fine, hopefully. \
+\
+
+\b Now, open up the terminal after compiling and cd to the macosx folder. \ul type "./script.sh" .\ulnone \
+
+\b0 \
+It will edit the link paths of the love executable so love can be run on any computer, rather than only ones with the required frameworks inside /Library/Framework. (There is also some erroneous libs that got linked even though they are not needed, and this script also removes those links, somewhat crudely).\
+\
+I apologise for this to be somewhat cumbersome; This is my first shell script. Apparently XCode can be set up so when you click build, and script is run automatically. I do not know how to do that, yet.\
+\
+The love.app inside ./build/release folder is the result. Enjoy. (If it isn't then you need to click Project->Set Active Build Configuration->Release, and re-build and re-run script.sh)\
+\
+
+\b Source code changes required:\
+
+\b0 in luaSocket usocket.h, commented out #include <unistd.h> to compile, because of errors regarding symbol "_strerror$UNIX2003".\
+http://www.haskell.org/pipermail/glasgo ... 08233.html has some info on this. [[removed unistd.h]]\
+\
+in love_opengl.cpp changed struct display_state: int stipple_repeat; int stipple_pattern; to GLints instead [[changed returns to GLint]]\
+\
+SDL_opengl.h\
+define for linux only\
+changed to [[added ifndef]]\
+#ifndef __APPLE__\
+#define GL_GLEXT_VERSION 29\
+#endif}

platform/macosx/SDLMain.h

+/*   SDLMain.m - main entry point for our Cocoa-ized SDL app
+       Initial Version: Darrell Walisser <dwaliss1@purdue.edu>
+       Non-NIB-Code & other changes: Max Horn <max@quendi.de>
+
+    Feel free to customize this file to suit your needs
+*/
+
+#import <Cocoa/Cocoa.h>
+#import "SDL/SDL.h"
+
+@interface SDLMain : NSObject
+@end

platform/macosx/SDLMain.m

+/*   SDLMain.m - main entry point for our Cocoa-ized SDL app
+       Initial Version: Darrell Walisser <dwaliss1@purdue.edu>
+       Non-NIB-Code & other changes: Max Horn <max@quendi.de>
+
+    Feel free to customize this file to suit your needs
+*/
+
+//#import "SDL.h"
+#import "SDLMain.h"
+#import <sys/param.h> /* for MAXPATHLEN */
+#import <unistd.h>
+
+/* For some reaon, Apple removed setAppleMenu from the headers in 10.4,
+ but the method still is there and works. To avoid warnings, we declare
+ it ourselves here. */
+@interface NSApplication(SDL_Missing_Methods)
+- (void)setAppleMenu:(NSMenu *)menu;
+@end
+
+/* Use this flag to determine whether we use SDLMain.nib or not */
+#define		SDL_USE_NIB_FILE	0
+
+/* Use this flag to determine whether we use CPS (docking) or not */
+#define		SDL_USE_CPS		1
+#ifdef SDL_USE_CPS
+/* Portions of CPS.h */
+typedef struct CPSProcessSerNum
+{
+	UInt32		lo;
+	UInt32		hi;
+} CPSProcessSerNum;
+
+extern OSErr	CPSGetCurrentProcess( CPSProcessSerNum *psn);
+extern OSErr 	CPSEnableForegroundOperation( CPSProcessSerNum *psn, UInt32 _arg2, UInt32 _arg3, UInt32 _arg4, UInt32 _arg5);
+extern OSErr	CPSSetFrontProcess( CPSProcessSerNum *psn);
+
+#endif /* SDL_USE_CPS */
+
+static int    gArgc;
+static char  **gArgv;
+static BOOL   gFinderLaunch;
+static BOOL   gCalledAppMainline = FALSE;
+
+static NSString *getApplicationName(void)
+{
+    NSDictionary *dict;
+    NSString *appName = 0;
+
+    /* Determine the application name */
+    dict = (NSDictionary *)CFBundleGetInfoDictionary(CFBundleGetMainBundle());
+    if (dict)
+        appName = [dict objectForKey: @"CFBundleName"];
+    
+    if (![appName length])
+        appName = [[NSProcessInfo processInfo] processName];
+
+    return appName;
+}
+
+#if SDL_USE_NIB_FILE
+/* A helper category for NSString */
+@interface NSString (ReplaceSubString)
+- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString;
+@end
+#endif
+
+@interface SDLApplication : NSApplication
+@end
+
+@implementation SDLApplication
+/* Invoked from the Quit menu item */
+- (void)terminate:(id)sender
+{
+    /* Post a SDL_QUIT event */
+    SDL_Event event;
+    event.type = SDL_QUIT;
+    SDL_PushEvent(&event);
+}
+@end
+
+/* The main class of the application, the application's delegate */
+@implementation SDLMain
+
+/* Set the working directory to the .app's parent directory */
+/*CHANGED to Bundle's Resource Directory. */
+- (void) setupWorkingDirectory:(BOOL)shouldChdir
+{
+    if (shouldChdir)
+    {
+    	/*
+        char parentdir[PATH_MAX];
+		//CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle());
+		CFURLRef url = CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle());
+		CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url);
+		if (CFURLGetFileSystemRepresentation(url2, true, (UInt8 *)parentdir, PATH_MAX)) {
+	        assert ( chdir (parentdir) == 0 );   // chdir to the binary app's parent //
+		}
+		CFRelease(url);
+		CFRelease(url2);
+		*/
+		CFBundleRef mainBundle = CFBundleGetMainBundle();
+		CFURLRef resourcesURL = CFBundleCopyResourcesDirectoryURL(mainBundle);
+		char path[PATH_MAX];
+		if (!CFURLGetFileSystemRepresentation(resourcesURL, TRUE, (UInt8 *)path, PATH_MAX))
+		{
+		    // error!
+		}
+		CFRelease(resourcesURL);
+		chdir(path);
+	}
+
+}
+
+#if SDL_USE_NIB_FILE
+
+/* Fix menu to contain the real app name instead of "SDL App" */
+- (void)fixMenu:(NSMenu *)aMenu withAppName:(NSString *)appName
+{
+    NSRange aRange;
+    NSEnumerator *enumerator;
+    NSMenuItem *menuItem;
+
+    aRange = [[aMenu title] rangeOfString:@"SDL App"];
+    if (aRange.length != 0)
+        [aMenu setTitle: [[aMenu title] stringByReplacingRange:aRange with:appName]];
+
+    enumerator = [[aMenu itemArray] objectEnumerator];
+    while ((menuItem = [enumerator nextObject]))
+    {
+        aRange = [[menuItem title] rangeOfString:@"SDL App"];
+        if (aRange.length != 0)
+            [menuItem setTitle: [[menuItem title] stringByReplacingRange:aRange with:appName]];
+        if ([menuItem hasSubmenu])
+            [self fixMenu:[menuItem submenu] withAppName:appName];
+    }
+    [ aMenu sizeToFit ];
+}
+
+#else
+
+static void setApplicationMenu(void)
+{
+    /* warning: this code is very odd */
+    NSMenu *appleMenu;
+    NSMenuItem *menuItem;
+    NSString *title;
+    NSString *appName;
+    
+    appName = getApplicationName();
+    appleMenu = [[NSMenu alloc] initWithTitle:@""];
+    
+    /* Add menu items */
+    title = [@"About " stringByAppendingString:appName];
+    [appleMenu addItemWithTitle:title action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""];
+
+    [appleMenu addItem:[NSMenuItem separatorItem]];
+
+    title = [@"Hide " stringByAppendingString:appName];
+    [appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"];
+
+    menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"];
+    [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)];
+
+    [appleMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""];
+
+    [appleMenu addItem:[NSMenuItem separatorItem]];
+
+    title = [@"Quit " stringByAppendingString:appName];
+    [appleMenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"];
+
+    
+    /* Put menu into the menubar */
+    menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""];
+    [menuItem setSubmenu:appleMenu];
+    [[NSApp mainMenu] addItem:menuItem];
+
+    /* Tell the application object that this is now the application menu */
+    [NSApp setAppleMenu:appleMenu];
+
+    /* Finally give up our references to the objects */
+    [appleMenu release];
+    [menuItem release];
+}
+
+/* Create a window menu */
+static void setupWindowMenu(void)
+{
+    NSMenu      *windowMenu;
+    NSMenuItem  *windowMenuItem;
+    NSMenuItem  *menuItem;
+
+    windowMenu = [[NSMenu alloc] initWithTitle:@"Window"];
+    
+    /* "Minimize" item */
+    menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"];
+    [windowMenu addItem:menuItem];
+    [menuItem release];
+    
+    /* Put menu into the menubar */
+    windowMenuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""];
+    [windowMenuItem setSubmenu:windowMenu];
+    [[NSApp mainMenu] addItem:windowMenuItem];
+    
+    /* Tell the application object that this is now the window menu */
+    [NSApp setWindowsMenu:windowMenu];
+
+    /* Finally give up our references to the objects */
+    [windowMenu release];
+    [windowMenuItem release];
+}
+
+/* Replacement for NSApplicationMain */
+static void CustomApplicationMain (int argc, char **argv)
+{
+    NSAutoreleasePool	*pool = [[NSAutoreleasePool alloc] init];
+    SDLMain				*sdlMain;
+
+    /* Ensure the application object is initialised */
+    [SDLApplication sharedApplication];
+    
+#ifdef SDL_USE_CPS
+    {
+        CPSProcessSerNum PSN;
+        /* Tell the dock about us */
+        if (!CPSGetCurrentProcess(&PSN))
+            if (!CPSEnableForegroundOperation(&PSN,0x03,0x3C,0x2C,0x1103))
+                if (!CPSSetFrontProcess(&PSN))
+                    [SDLApplication sharedApplication];
+    }
+#endif /* SDL_USE_CPS */
+
+    /* Set up the menubar */
+    [NSApp setMainMenu:[[NSMenu alloc] init]];
+    setApplicationMenu();
+    setupWindowMenu();
+
+    /* Create SDLMain and make it the app delegate */
+    sdlMain = [[SDLMain alloc] init];
+    [NSApp setDelegate:sdlMain];
+    
+    /* Start the main event loop */
+    [NSApp run];
+    
+    [sdlMain release];
+    [pool release];
+}
+
+#endif
+
+
+/*
+ * Catch document open requests...this lets us notice files when the app
+ *  was launched by double-clicking a document, or when a document was
+ *  dragged/dropped on the app's icon. You need to have a
+ *  CFBundleDocumentsType section in your Info.plist to get this message,
+ *  apparently.
+ *
+ * Files are added to gArgv, so to the app, they'll look like command line
+ *  arguments. Previously, apps launched from the finder had nothing but
+ *  an argv[0].
+ *
+ * This message may be received multiple times to open several docs on launch.
+ *
+ * This message is ignored once the app's mainline has been called.
+ */
+- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
+{
+    const char *temparg;
+    size_t arglen;
+    char *arg;
+    char **newargv;
+
+    if (!gFinderLaunch)  /* MacOS is passing command line args. */
+        return FALSE;
+
+    if (gCalledAppMainline)  /* app has started, ignore this document. */
+        return FALSE;
+
+    temparg = [filename UTF8String];
+    arglen = SDL_strlen(temparg) + 1;
+    arg = (char *) SDL_malloc(arglen);
+    if (arg == NULL)
+        return FALSE;
+
+    newargv = (char **) realloc(gArgv, sizeof (char *) * (gArgc + 2));
+    if (newargv == NULL)
+    {
+        SDL_free(arg);
+        return FALSE;
+    }
+    gArgv = newargv;
+
+    SDL_strlcpy(arg, temparg, arglen);
+    gArgv[gArgc++] = arg;
+    gArgv[gArgc] = NULL;
+    return TRUE;
+}
+
+
+/* Called when the internal event loop has just started running */
+- (void) applicationDidFinishLaunching: (NSNotification *) note
+{
+    int status;
+
+    /* Set the working directory to the .app's parent directory */
+    [self setupWorkingDirectory:gFinderLaunch];
+
+#if SDL_USE_NIB_FILE
+    /* Set the main menu to contain the real app name instead of "SDL App" */
+    [self fixMenu:[NSApp mainMenu] withAppName:getApplicationName()];
+#endif
+
+    /* Hand off to main application code */
+    gCalledAppMainline = TRUE;
+    status = SDL_main (gArgc, gArgv);
+
+    /* We're done, thank you for playing */
+    exit(status);
+}
+@end
+
+
+@implementation NSString (ReplaceSubString)
+
+- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString
+{
+    unsigned int bufferSize;
+    unsigned int selfLen = [self length];
+    unsigned int aStringLen = [aString length];
+    unichar *buffer;
+    NSRange localRange;
+    NSString *result;
+
+    bufferSize = selfLen + aStringLen - aRange.length;
+    buffer = NSAllocateMemoryPages(bufferSize*sizeof(unichar));
+    
+    /* Get first part into buffer */
+    localRange.location = 0;
+    localRange.length = aRange.location;
+    [self getCharacters:buffer range:localRange];
+    
+    /* Get middle part into buffer */
+    localRange.location = 0;
+    localRange.length = aStringLen;
+    [aString getCharacters:(buffer+aRange.location) range:localRange];
+     
+    /* Get last part into buffer */
+    localRange.location = aRange.location + aRange.length;
+    localRange.length = selfLen - localRange.location;
+    [self getCharacters:(buffer+aRange.location+aStringLen) range:localRange];
+    
+    /* Build output string */
+    result = [NSString stringWithCharacters:buffer length:bufferSize];
+    
+    NSDeallocateMemoryPages(buffer, bufferSize);
+    
+    return result;
+}
+
+@end
+
+
+
+#ifdef main
+#  undef main
+#endif
+
+
+/* Main entry point to executable - should *not* be SDL_main! */
+int main (int argc, char **argv)
+{
+    /* Copy the arguments into a global variable */
+    /* This is passed if we are launched by double-clicking */
+    if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) {
+        gArgv = (char **) SDL_malloc(sizeof (char *) * 2);
+        gArgv[0] = argv[0];
+        gArgv[1] = NULL;
+        gArgc = 1;
+        gFinderLaunch = YES;
+    } else {
+        int i;
+        gArgc = argc;
+        gArgv = (char **) SDL_malloc(sizeof (char *) * (argc+1));
+        for (i = 0; i <= argc; i++)
+            gArgv[i] = argv[i];
+        gFinderLaunch = NO;
+    }
+
+#if SDL_USE_NIB_FILE
+    [SDLApplication poseAsClass:[NSApplication class]];
+    NSApplicationMain (argc, argv);
+#else
+    CustomApplicationMain (argc, argv);
+#endif
+    return 0;
+}

platform/macosx/info.plist

+<?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>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleDocumentTypes</key>
+	<array>
+		<dict>
+			<key>CFBundleTypeOSTypes</key>
+			<array>
+				<string>????</string>
+			</array>
+			<key>CFBundleTypeExtensions</key>
+			<array>
+				<string>love</string>
+			</array>
+			<key>CFBundleTypeName</key>
+			<string>Love Project</string>
+			<key>CFBundleTypeIconFile</key>
+			<string></string>
+			<key>LSIsAppleDefaultForType</key>
+			<true/>
+			<key>LSTypeIsPackage</key>
+			<true/>
+			<key>CFBundleTypeRole</key>
+			<string>Viewer</string>
+		</dict>
+	</array>
+	<key>CFBundleExecutable</key>
+	<string>love</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.LOVE.love</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>love</string>
+	<key>CFBundlePackageType</key>
+	<string>LoVe</string>
+	<key>CFBundleSignature</key>
+	<string>LoVe</string>
+	<key>CFBundleVersion</key>
+	<string>0.5</string>
+	<key>NSMainNibFile</key>
+	<string>SDLMain</string>
+	<key>NSPrincipalClass</key>
+	<string>NSApplication</string>
+</dict>
+</plist>

platform/macosx/love-Info.plist

+<?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>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.yourcompany.${PRODUCT_NAME:identifier}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>NSMainNibFile</key>
+	<string>MainMenu</string>
+	<key>NSPrincipalClass</key>
+	<string>NSApplication</string>
+</dict>
+</plist>

platform/macosx/love.xcodeproj/Eric.mode1v3

+<?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>ActivePerspectiveName</key>
+	<string>Project</string>
+	<key>AllowedModules</key>
+	<array>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>PBXSmartGroupTreeModule</string>
+			<key>Name</key>
+			<string>Groups and Files Outline View</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>PBXNavigatorGroup</string>
+			<key>Name</key>
+			<string>Editor</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>XCTaskListModule</string>
+			<key>Name</key>
+			<string>Task List</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>XCDetailModule</string>
+			<key>Name</key>
+			<string>File and Smart Group Detail Viewer</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>1</string>
+			<key>Module</key>
+			<string>PBXBuildResultsModule</string>
+			<key>Name</key>
+			<string>Detailed Build Results Viewer</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>1</string>
+			<key>Module</key>
+			<string>PBXProjectFindModule</string>
+			<key>Name</key>
+			<string>Project Batch Find Tool</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>XCProjectFormatConflictsModule</string>
+			<key>Name</key>
+			<string>Project Format Conflicts List</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>PBXBookmarksModule</string>
+			<key>Name</key>
+			<string>Bookmarks Tool</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>PBXClassBrowserModule</string>
+			<key>Name</key>
+			<string>Class Browser</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>PBXCVSModule</string>
+			<key>Name</key>
+			<string>Source Code Control Tool</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>PBXDebugBreakpointsModule</string>
+			<key>Name</key>
+			<string>Debug Breakpoints Tool</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>XCDockableInspector</string>
+			<key>Name</key>
+			<string>Inspector</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>PBXOpenQuicklyModule</string>
+			<key>Name</key>
+			<string>Open Quickly Tool</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>1</string>
+			<key>Module</key>
+			<string>PBXDebugSessionModule</string>
+			<key>Name</key>
+			<string>Debugger</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>1</string>
+			<key>Module</key>
+			<string>PBXDebugCLIModule</string>
+			<key>Name</key>
+			<string>Debug Console</string>
+		</dict>
+		<dict>
+			<key>BundleLoadPath</key>
+			<string></string>
+			<key>MaxInstances</key>
+			<string>n</string>
+			<key>Module</key>
+			<string>XCSnapshotModule</string>
+			<key>Name</key>
+			<string>Snapshots Tool</string>
+		</dict>
+	</array>
+	<key>BundlePath</key>
+	<string>/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string>
+	<key>Description</key>
+	<string>DefaultDescriptionKey</string>
+	<key>DockingSystemVisible</key>
+	<false/>
+	<key>Extension</key>
+	<string>mode1v3</string>
+	<key>FavBarConfig</key>
+	<dict>
+		<key>PBXProjectModuleGUID</key>
+		<string>07389F5D0EAC4DCA009B4C7A</string>
+		<key>XCBarModuleItemNames</key>
+		<dict/>
+		<key>XCBarModuleItems</key>
+		<array/>
+	</dict>
+	<key>FirstTimeWindowDisplayed</key>
+	<false/>
+	<key>Identifier</key>
+	<string>com.apple.perspectives.project.mode1v3</string>
+	<key>MajorVersion</key>
+	<integer>33</integer>
+	<key>MinorVersion</key>
+	<integer>0</integer>
+	<key>Name</key>
+	<string>Default</string>
+	<key>Notifications</key>
+	<array/>
+	<key>OpenEditors</key>
+	<array/>
+	<key>PerspectiveWidths</key>
+	<array>
+		<integer>-1</integer>
+		<integer>-1</integer>
+	</array>
+	<key>Perspectives</key>
+	<array>
+		<dict>
+			<key>ChosenToolbarItems</key>
+			<array>
+				<string>active-target-popup</string>
+				<string>active-buildstyle-popup</string>
+				<string>action</string>
+				<string>NSToolbarFlexibleSpaceItem</string>
+				<string>buildOrClean</string>
+				<string>build-and-goOrGo</string>
+				<string>com.apple.ide.PBXToolbarStopButton</string>
+				<string>get-info</string>
+				<string>toggle-editor</string>
+				<string>NSToolbarFlexibleSpaceItem</string>
+				<string>com.apple.pbx.toolbar.searchfield</string>
+			</array>
+			<key>ControllerClassBaseName</key>
+			<string></string>
+			<key>IconName</key>
+			<string>WindowOfProjectWithEditor</string>
+			<key>Identifier</key>
+			<string>perspective.project</string>
+			<key>IsVertical</key>
+			<false/>
+			<key>Layout</key>
+			<array>
+				<dict>
+					<key>ContentConfiguration</key>
+					<dict>
+						<key>PBXBottomSmartGroupGIDs</key>
+						<array>
+							<string>1C37FBAC04509CD000000102</string>
+							<string>1C37FAAC04509CD000000102</string>
+							<string>1C08E77C0454961000C914BD</string>
+							<string>1C37FABC05509CD000000102</string>
+							<string>1C37FABC05539CD112110102</string>
+							<string>E2644B35053B69B200211256</string>
+							<string>1C37FABC04509CD000100104</string>
+							<string>1CC0EA4004350EF90044410B</string>
+							<string>1CC0EA4004350EF90041110B</string>
+						</array>
+						<key>PBXProjectModuleGUID</key>
+						<string>1CE0B1FE06471DED0097A5F4</string>
+						<key>PBXProjectModuleLabel</key>
+						<string>Files</string>
+						<key>PBXProjectStructureProvided</key>
+						<string>yes</string>
+						<key>PBXSmartGroupTreeModuleColumnData</key>
+						<dict>
+							<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+							<array>
+								<real>282</real>
+							</array>
+							<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+							<array>
+								<string>MainColumn</string>
+							</array>
+						</dict>
+						<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+						<dict>
+							<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+							<array>
+								<string>29B97314FDCFA39411CA2CEA</string>
+								<string>29B97323FDCFA39411CA2CEA</string>
+								<string>1058C7A0FEA54F0111CA2CBB</string>
+								<string>075EC6110EBC94EE00CEE71A</string>
+								<string>07369E590EB5DF5700EDF471</string>
+								<string>07F5D97D0F8DC6F000E5C43E</string>
+								<string>19C28FACFE9D520D11CA2CBB</string>
+								<string>1C37FBAC04509CD000000102</string>
+								<string>07F5DBCB0F8DC9C500E5C43E</string>
+								<string>07F5DBCC0F8DC9C500E5C43E</string>
+								<string>075EC6110EBC94EE00CEE71A</string>
+								<string>07369E590EB5DF5700EDF471</string>
+								<string>07F5D97D0F8DC6F000E5C43E</string>
+								<string>07F5DD3B0F8DD52800E5C43E</string>
+								<string>075EC6110EBC94EE00CEE71A</string>
+								<string>07369E590EB5DF5700EDF471</string>
+								<string>07F5D97D0F8DC6F000E5C43E</string>
+								<string>1C37FAAC04509CD000000102</string>
+								<string>1C37FABC05509CD000000102</string>
+								<string>E2644B35053B69B200211256</string>
+							</array>
+							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+							<array>
+								<array>
+									<integer>6</integer>
+									<integer>5</integer>
+									<integer>0</integer>
+								</array>
+							</array>
+							<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+							<string>{{0, 60}, {282, 660}}</string>
+						</dict>
+						<key>PBXTopSmartGroupGIDs</key>
+						<array/>
+						<key>XCIncludePerspectivesSwitch</key>
+						<true/>
+						<key>XCSharingToken</key>
+						<string>com.apple.Xcode.GFSharingToken</string>
+					</dict>
+					<key>GeometryConfiguration</key>
+					<dict>
+						<key>Frame</key>
+						<string>{{0, 0}, {299, 678}}</string>
+						<key>GroupTreeTableConfiguration</key>
+						<array>
+							<string>MainColumn</string>
+							<real>282</real>
+						</array>
+						<key>RubberWindowFrame</key>
+						<string>21 59 1187 719 0 0 1280 778 </string>
+					</dict>
+					<key>Module</key>
+					<string>PBXSmartGroupTreeModule</string>
+					<key>Proportion</key>
+					<string>299pt</string>
+				</dict>
+				<dict>
+					<key>Dock</key>
+					<array>
+						<dict>
+							<key>BecomeActive</key>
+							<true/>
+							<key>ContentConfiguration</key>
+							<dict>
+								<key>PBXProjectModuleGUID</key>
+								<string>1CE0B20306471E060097A5F4</string>
+								<key>PBXProjectModuleLabel</key>
+								<string>lualib.h</string>
+								<key>PBXSplitModuleInNavigatorKey</key>
+								<dict>
+									<key>Split0</key>
+									<dict>
+										<key>PBXProjectModuleGUID</key>
+										<string>1CE0B20406471E060097A5F4</string>
+										<key>PBXProjectModuleLabel</key>
+										<string>lualib.h</string>
+										<key>_historyCapacity</key>
+										<integer>0</integer>
+										<key>bookmark</key>
+										<string>07F5DD440F8DD55D00E5C43E</string>
+										<key>history</key>
+										<array>
+											<string>07022CC50EAC6B3100A3735B</string>
+											<string>07022CF30EAC6E1400A3735B</string>