about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoel de Vahl <joel@stalverk80.se>2009-01-11 12:10:30 +0000
committerJoel de Vahl <joel@stalverk80.se>2009-01-11 12:10:30 +0000
commit2a7402dd6c78e5b0e41bae57bfdd8aec57545f0d (patch)
tree846542258748f31953eadbe770fe3e6bbde191ac
parent2aafe11723e8c30b0482bbefb4c1c9a25fba92b3 (diff)
downloadzcatch-2a7402dd6c78e5b0e41bae57bfdd8aec57545f0d.tar.gz
zcatch-2a7402dd6c78e5b0e41bae57bfdd8aec57545f0d.zip
use dmg for osx deliver, build universal binary, fix backspace being entered as a character
-rw-r--r--default.bam73
-rw-r--r--scripts/make_release.py15
-rw-r--r--src/engine/client/ec_snd.c11
-rw-r--r--src/game/client/components/menus.cpp2
-rw-r--r--src/game/editor/ed_editor.cpp2
5 files changed, 79 insertions, 24 deletions
diff --git a/default.bam b/default.bam
index 746632b9..e7d26718 100644
--- a/default.bam
+++ b/default.bam
@@ -239,19 +239,62 @@ function build(settings)
 	return all
 end
 
+if platform == "macosx"  and arch == "ia32" then
+	debug_settings_ppc = NewSettings()
+	debug_settings_ppc.config_name = "debug_ppc"
+	debug_settings_ppc.config_ext = "_ppc_d"
+	debug_settings_ppc.debug = 1
+	debug_settings_ppc.cc.optimize = 0
+	debug_settings_ppc.cc.flags:Add("-arch ppc")
+	debug_settings_ppc.link.flags:Add("-arch ppc")
+
+	release_settings_ppc = NewSettings()
+	release_settings_ppc.config_name = "release_ppc"
+	release_settings_ppc.config_ext = "_ppc"
+	release_settings_ppc.debug = 0
+	release_settings_ppc.cc.optimize = 1
+	release_settings_ppc.cc.flags:Add("-arch ppc")
+	release_settings_ppc.link.flags:Add("-arch ppc")
+
+	debug_settings_x86 = NewSettings()
+	debug_settings_x86.config_name = "debug_x86"
+	debug_settings_x86.config_ext = "_x86_d"
+	debug_settings_x86.debug = 1
+	debug_settings_x86.cc.optimize = 0
+
+	release_settings_x86 = NewSettings()
+	release_settings_x86.config_name = "release_x86"
+	release_settings_x86.config_ext = "_x86"
+	release_settings_x86.debug = 0
+	release_settings_x86.cc.optimize = 1
+
+	ppc_d = build(debug_settings_ppc)
+	x86_d = build(debug_settings_x86)
+	ppc_r = build(release_settings_ppc)
+	x86_r = build(release_settings_x86)
+	DefaultTarget("game_debug_x86")
+	PseudoTarget("release", ppc_r, x86_r)
+	PseudoTarget("debug", ppc_d, x86_d)
+
+	PseudoTarget("server_release", "server_release_x86", "server_release_ppc")
+	PseudoTarget("server_debug", "server_debug_x86", "server_debug_ppc")
+	PseudoTarget("client_release", "client_release_x86", "client_release_ppc")
+	PseudoTarget("client_debug", "client_debug_x86", "client_debug_ppc")
+else
+	debug_settings = NewSettings()
+	debug_settings.config_name = "debug"
+	debug_settings.config_ext = "_d"
+	debug_settings.debug = 1
+	debug_settings.cc.optimize = 0
+
+	release_settings = NewSettings()
+	release_settings.config_name = "release"
+	release_settings.config_ext = ""
+	release_settings.debug = 0
+	release_settings.cc.optimize = 1
+
+	build(debug_settings)
+	build(release_settings)
+	DefaultTarget("game_debug")
+end
 
-debug_settings = NewSettings()
-debug_settings.config_name = "debug"
-debug_settings.config_ext = "_d"
-debug_settings.debug = 1
-debug_settings.cc.optimize = 0
-
-release_settings = NewSettings()
-release_settings.config_name = "release"
-release_settings.config_ext = ""
-release_settings.debug = 0
-release_settings.cc.optimize = 1
-
-build(debug_settings)
-build(release_settings)
-DefaultTarget("game_debug")
diff --git a/scripts/make_release.py b/scripts/make_release.py
index e5501a1b..b1cc0fc0 100644
--- a/scripts/make_release.py
+++ b/scripts/make_release.py
@@ -13,6 +13,7 @@ platform = sys.argv[2]
 exe_ext = ""
 use_zip = 0
 use_gz = 1
+use_dmg = 0
 use_bundle = 0
 include_data = True
 include_exe = True
@@ -34,8 +35,8 @@ if platform == 'win32':
 	exe_ext = ".exe"
 	use_zip = 1
 	use_gz = 0
-if 'osx_' in platform:
-	use_zip = 1
+if  platform == 'osx':
+	use_dmg = 1
 	use_gz = 0
 	use_bundle = 1
 
@@ -78,6 +79,8 @@ if include_src:
 	shutil.copy("default.bam", package_dir)
 
 if use_bundle:
+	os.system("lipo -create -output teeworlds_srv teeworlds_srv_ppc teeworlds_srv_x86")
+	os.system("lipo -create -output teeworlds teeworlds_ppc teeworlds_x86")
 	bundle_content_dir = os.path.join(package_dir, "Teeworlds.app/Contents")
 	bundle_bin_dir = os.path.join(bundle_content_dir, "MacOS")
 	bundle_resource_dir = os.path.join(bundle_content_dir, "Resources")
@@ -92,7 +95,6 @@ if use_bundle:
 	shutil.copy("other/icons/Teeworlds.icns", bundle_resource_dir)
 	shutil.copy(name+exe_ext, bundle_bin_dir)
 	shutil.copy(name+"_srv"+exe_ext, bundle_bin_dir)
-	print(bundle_framework_dir)
 	os.system("cp -R /Library/Frameworks/SDL.framework " + bundle_framework_dir)
 	file(os.path.join(bundle_content_dir, "Info.plist"), "w").write("""
 <?xml version="1.0" encoding="UTF-8"?>
@@ -132,5 +134,12 @@ if use_zip:
 if use_gz:
 	print "making tar.gz archive"
 	os.system("tar czf %s.tar.gz %s" % (package, package_dir))
+
+if use_dmg:
+	print "making disk image"
+	os.system("rm -f %s.dmg %s_temp.dmg" % (package, package))
+	os.system("hdiutil create -srcfolder %s -volname Teeworlds -quiet %s_temp" % (package_dir, package))
+	os.system("hdiutil convert %s_temp.dmg -format UDBZ -o %s.dmg -quiet" % (package, package))
+	os.system("rm -f %s_temp.dmg" % package)
 	
 print "done"
diff --git a/src/engine/client/ec_snd.c b/src/engine/client/ec_snd.c
index a7219b65..ed66cc1f 100644
--- a/src/engine/client/ec_snd.c
+++ b/src/engine/client/ec_snd.c
@@ -36,7 +36,7 @@ typedef struct
 	int pan;
 } CHANNEL;
 
-typedef struct VOICE_t
+typedef struct
 {
 	SAMPLE *snd;
 	CHANNEL *channel;
@@ -59,6 +59,8 @@ static int center_y = 0;
 static int mixing_rate = 48000;
 static volatile int sound_volume = 100;
 
+static int next_voice = 0;
+
 void snd_set_channel(int cid, float vol, float pan)
 {
 	channels[cid].vol = (int)(vol*255.0f);
@@ -73,12 +75,13 @@ static int play(int cid, int sid, int flags, float x, float y)
 	lock_wait(sound_lock);
 	
 	/* search for voice */
-	/* TODO: fix this linear search */
 	for(i = 0; i < NUM_VOICES; i++)
 	{
-		if(!voices[i].snd)
+		int id = (next_voice + i) % NUM_VOICES;
+		if(!voices[id].snd)
 		{
-			vid = i;
+			vid = id;
+			next_voice = id+1;
 			break;
 		}
 	}
diff --git a/src/game/client/components/menus.cpp b/src/game/client/components/menus.cpp
index 3122a3bd..29372b62 100644
--- a/src/game/client/components/menus.cpp
+++ b/src/game/client/components/menus.cpp
@@ -240,7 +240,7 @@ int MENUS::ui_do_edit_box(void *id, const RECT *rect, char *str, int str_size, f
 			if (at_index > len)
 				at_index = len;
 			
-			if (!(c >= 0 && c < 32))
+			if (!(c >= 0 && c < 32) && c != 127)
 			{
 				if (len < str_size - 1 && at_index < str_size - 1)
 				{
diff --git a/src/game/editor/ed_editor.cpp b/src/game/editor/ed_editor.cpp
index 6908484b..bc02d2b4 100644
--- a/src/game/editor/ed_editor.cpp
+++ b/src/game/editor/ed_editor.cpp
@@ -217,7 +217,7 @@ int ui_do_edit_box(void *id, const RECT *rect, char *str, int str_size, float fo
 			if (at_index > len)
 				at_index = len;
 			
-			if (!(c >= 0 && c < 32))
+			if (!(c >= 0 && c < 32) && c != 127)
 			{
 				if (len < str_size - 1 && at_index < str_size - 1)
 				{