Merge branch 'master' into divVerent/crypto2

Conflicts:
	all
This commit is contained in:
Rudolf Polzer 2010-10-02 21:25:02 +02:00
commit 87a39db1a5
9 changed files with 504 additions and 24 deletions

47
all
View File

@ -119,7 +119,7 @@ div0-gittools |
d0_blind_id | http://github.com/divVerent/d0_blind_id.git | master | d0_blind_id | http://github.com/divVerent/d0_blind_id.git | master |
data/xonotic-maps.pk3dir | | master | data/xonotic-maps.pk3dir | | master |
mediasource | | master | no mediasource | | master | no
fteqcc | git://github.com/Blub/qclib.git | master | fteqcc | http://github.com/Blub/qclib.git | master |
" "
# todo: in darkplaces, change repobranch to div0-stable # todo: in darkplaces, change repobranch to div0-stable
@ -667,9 +667,7 @@ case "$cmd" in
exit 1 exit 1
fi fi
fi fi
set -- "darkplaces/darkplaces$client" -nexuiz -customgamename Xonotic -customgamedirname1 data -customgamedirname2 "" -customgamescreenshotname xonotic -customgameuserdirname xonotic -mygames "$@" set -- "darkplaces/darkplaces$client" -xonotic -mygames "$@"
# change this to:
#set -- "darkplaces/darkplaces$client" -xonotic -mygames "$@"
# if pulseaudio is running: USE IT # if pulseaudio is running: USE IT
if [ -z "$SDL_AUDIODRIVER" ] && ! [ -n "$WE_HATE_OUR_USERS" ] && ! [ x"`uname`" = x"Darwin" ]; then if [ -z "$SDL_AUDIODRIVER" ] && ! [ -n "$WE_HATE_OUR_USERS" ] && ! [ x"`uname`" = x"Darwin" ]; then
@ -680,10 +678,29 @@ case "$cmd" in
fi fi
fi fi
binary=$1
if [ -n "$USE_GDB" ]; then if [ -n "$USE_GDB" ]; then
set -- gdb --args "$@" set -- gdb --args "$@"
elif which gdb >/dev/null 2>&1; then
set -- gdb --batch -x savecore.gdb --args "$@"
elif which catchsegv >/dev/null 2>&1; then
set -- catchsegv "$@"
fi
rm -f xonotic.core
"$@" || true
if [ -f xonotic.core ]; then
if yesno "The program has CRASHED. Do you want to examine the core dump?"; then
gdb "$binary" xonotic.core
#elif yesno "You did not want to examine the core dump. Do you want to provide it - including your DarkPlaces checkout - to the Xonotic developers?"; then
# tar cvzf xonotic.core.tar.gz xonotic.core darkplaces/*.c darkplaces/*.h
# # somehow send it
# rm -f xonotic.core.tar.gz
else
echo "The core dump can be examined later by"
echo " gdb $binary xonotic.core"
fi
fi fi
"$@"
;; ;;
each|foreach) each|foreach)
keep_going=false keep_going=false
@ -847,7 +864,7 @@ case "$cmd" in
GIT_NOTES_REF=refs/notes/admin-merge git notes edit -m "Merge failed:$LF`cat "$t"`" "$ref" GIT_NOTES_REF=refs/notes/admin-merge git notes edit -m "Merge failed:$LF`cat "$t"`" "$ref"
reportdo4 cat "$t" reportdo4 cat "$t"
reportecho4 "--> merge failed" reportecho4 "--> merge failed"
elif ! "$SELF" compile -n 2>&1 | tee "$t"; then elif ! "$SELF" compile 2>&1 | tee "$t"; then
git reset --hard "$org" git reset --hard "$org"
GIT_NOTES_REF=refs/notes/admin-merge git notes edit -m "Compile failed:$LF`cat "$t"`" "$ref" GIT_NOTES_REF=refs/notes/admin-merge git notes edit -m "Compile failed:$LF`cat "$t"`" "$ref"
reportdo4 cat "$t" reportdo4 cat "$t"
@ -964,6 +981,7 @@ case "$cmd" in
if $gotomaster; then if $gotomaster; then
if $fetchupstream; then if $fetchupstream; then
verbose git fetch origin verbose git fetch origin
verbose git remote prune origin
fi fi
verbose git checkout -f "`repobranch "$d"`" verbose git checkout -f "`repobranch "$d"`"
verbose git reset --hard origin/"`repobranch "$d"`" verbose git reset --hard origin/"`repobranch "$d"`"
@ -975,6 +993,7 @@ case "$cmd" in
upstream="$rem/${bra#refs/heads/}" upstream="$rem/${bra#refs/heads/}"
if $fetchupstream; then if $fetchupstream; then
verbose git fetch "$rem" verbose git fetch "$rem"
verbose git remote prune "$rem"
fi fi
if ! git rev-parse "$upstream" >/dev/null 2>&1; then if ! git rev-parse "$upstream" >/dev/null 2>&1; then
upstream="origin/`repobranch "$d"`" upstream="origin/`repobranch "$d"`"
@ -1134,44 +1153,44 @@ case "$cmd" in
;; ;;
release-engine-win32) release-engine-win32)
verbose "$SELF" release-compile win32 \ verbose "$SELF" release-compile win32 \
'STRIP=: DP_MAKE_TARGET=mingw CC="i586-mingw32msvc-gcc -g -Wl,--dynamicbase -Wl,--nxcompat -I.deps/include -L.deps/lib" WINDRES="i586-mingw32msvc-windres" SDL_CONFIG=".deps/bin/sdl-config" LIB_JPEG= CFLAGS_LIBJPEG= WIN32RELEASE=1 D3D=0' \ 'STRIP=: DP_MAKE_TARGET=mingw CC="i586-mingw32msvc-gcc -g -Wl,--dynamicbase -Wl,--nxcompat -I.deps/include -L.deps/lib -DUSE_WSPIAPI_H -DSUPPORTIPV6" WINDRES="i586-mingw32msvc-windres" SDL_CONFIG=".deps/bin/sdl-config" LIB_JPEG= CFLAGS_LIBJPEG= WIN32RELEASE=1 D3D=0' \
win 'fteqcc.exe:Xonotic/fteqcc/fteqcc.exe' \ win 'fteqcc.exe:Xonotic/fteqcc/fteqcc.exe' \
'' '' '' ''
verbose "$SELF" release-compile win32 \ verbose "$SELF" release-compile win32 \
'STRIP=: DP_MAKE_TARGET=mingw CC="i586-mingw32msvc-gcc -g -Wl,--dynamicbase -Wl,--nxcompat -I.deps/include -L.deps/lib" WINDRES="i586-mingw32msvc-windres" SDL_CONFIG=".deps/bin/sdl-config" LIB_JPEG= CFLAGS_LIBJPEG= WIN32RELEASE=1 D3D=0' \ 'STRIP=: DP_MAKE_TARGET=mingw CC="i586-mingw32msvc-gcc -g -Wl,--dynamicbase -Wl,--nxcompat -I.deps/include -L.deps/lib -DUSE_WSPIAPI_H -DSUPPORTIPV6" WINDRES="i586-mingw32msvc-windres" SDL_CONFIG=".deps/bin/sdl-config" LIB_JPEG= CFLAGS_LIBJPEG= WIN32RELEASE=1 D3D=0' \
'' '' \ '' '' \
release 'darkplaces.exe:Xonotic/xonotic.exe darkplaces-sdl.exe:Xonotic/xonotic-sdl.exe darkplaces-dedicated.exe:Xonotic/xonotic-dedicated.exe' release 'darkplaces.exe:Xonotic/xonotic.exe darkplaces-sdl.exe:Xonotic/xonotic-sdl.exe darkplaces-dedicated.exe:Xonotic/xonotic-dedicated.exe'
;; ;;
release-engine-win64) release-engine-win64)
verbose "$SELF" release-compile win64 \ verbose "$SELF" release-compile win64 \
'STRIP=: DP_MAKE_TARGET=mingw CC="amd64-mingw32msvc-gcc -g -Wl,--dynamicbase -Wl,--nxcompat -I.deps/include -L.deps/lib" WINDRES="amd64-mingw32msvc-windres" SDL_CONFIG=".deps/bin/sdl-config" LIB_JPEG= CFLAGS_LIBJPEG= WIN64RELEASE=1 D3D=0' \ 'STRIP=: DP_MAKE_TARGET=mingw CC="amd64-mingw32msvc-gcc -g -Wl,--dynamicbase -Wl,--nxcompat -I.deps/include -L.deps/lib -DSUPPORTIPV6" WINDRES="amd64-mingw32msvc-windres" SDL_CONFIG=".deps/bin/sdl-config" LIB_JPEG= CFLAGS_LIBJPEG= WIN64RELEASE=1 D3D=0' \
win 'fteqcc.exe:Xonotic/fteqcc/fteqcc-x64.exe' \ win 'fteqcc.exe:Xonotic/fteqcc/fteqcc-x64.exe' \
'sv-release sdl-release' 'darkplaces-sdl.exe:Xonotic/xonotic-x64-sdl.exe darkplaces-dedicated.exe:Xonotic/xonotic-x64-dedicated.exe' 'sv-release sdl-release' 'darkplaces-sdl.exe:Xonotic/xonotic-x64-sdl.exe darkplaces-dedicated.exe:Xonotic/xonotic-x64-dedicated.exe'
verbose "$SELF" release-compile win64 \ verbose "$SELF" release-compile win64 \
'STRIP=: DP_MAKE_TARGET=mingw CC="x86_64-w64-mingw32-gcc -g -Wl,--dynamicbase -Wl,--nxcompat -I.deps/include -L.deps/lib" WINDRES="x86_64-w64-mingw32-windres" SDL_CONFIG=".deps/bin/sdl-config" LIB_JPEG= CFLAGS_LIBJPEG= WIN64RELEASE=1 D3D=0' \ 'STRIP=: DP_MAKE_TARGET=mingw CC="x86_64-w64-mingw32-gcc -g -Wl,--dynamicbase -Wl,--nxcompat -I.deps/include -L.deps/lib -DSUPPORTIPV6" WINDRES="x86_64-w64-mingw32-windres" SDL_CONFIG=".deps/bin/sdl-config" LIB_JPEG= CFLAGS_LIBJPEG= WIN64RELEASE=1 D3D=0' \
'' '' \ '' '' \
cl-release 'darkplaces.exe:Xonotic/xonotic-x64.exe' cl-release 'darkplaces.exe:Xonotic/xonotic-x64.exe'
;; ;;
release-engine-osx) release-engine-osx)
# gcc on OSX is buggy, needs -fno-reorder-blocks for a release build to succeed # gcc on OSX is buggy, needs -fno-reorder-blocks for a release build to succeed
verbose "$SELF" release-compile osx \ verbose "$SELF" release-compile osx \
'STRIP=: CC="gcc -g -arch i386 -arch ppc -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.4 -I.deps/include -L.deps/lib -fno-reorder-blocks"' \ 'STRIP=: CC="gcc -g -arch i386 -arch ppc -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.4 -I.deps/include -L.deps/lib -fno-reorder-blocks -DSUPPORTIPV6"' \
all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.osx' \ all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.osx' \
'sv-release sdl-release' 'darkplaces-sdl:Xonotic/Xonotic-SDL.app/Contents/MacOS/xonotic-osx-sdl-bin darkplaces-dedicated:Xonotic/xonotic-osx-dedicated' 'sv-release sdl-release' 'darkplaces-sdl:Xonotic/Xonotic-SDL.app/Contents/MacOS/xonotic-osx-sdl-bin darkplaces-dedicated:Xonotic/xonotic-osx-dedicated'
verbose "$SELF" release-compile osx \ verbose "$SELF" release-compile osx \
'STRIP=: CC="gcc -g -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.4 -I.deps/include -L.deps/lib -fno-reorder-blocks"' \ 'STRIP=: CC="gcc -g -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.4 -I.deps/include -L.deps/lib -fno-reorder-blocks -DSUPPORTIPV6"' \
'' '' \ '' '' \
'cl-release' 'darkplaces-agl:Xonotic/Xonotic.app/Contents/MacOS/xonotic-osx-agl-bin' 'cl-release' 'darkplaces-agl:Xonotic/Xonotic.app/Contents/MacOS/xonotic-osx-agl-bin'
;; ;;
release-engine-linux32) release-engine-linux32)
verbose "$SELF" release-compile linux32 \ verbose "$SELF" release-compile linux32 \
'STRIP=: CC="gcc -m32 -g -I.deps/include -L.deps/lib" DP_MODPLUG_STATIC_LIBDIR=.deps/lib LIB_JPEG=.deps/lib/libjpeg.a DP_CRYPTO_STATIC_LIBDIR=.deps/lib' \ 'STRIP=: CC="gcc -m32 -g -I.deps/include -L.deps/lib -DSUPPORTIPV6" DP_MODPLUG_STATIC_LIBDIR=.deps/lib LIB_JPEG=.deps/lib/libjpeg.a DP_CRYPTO_STATIC_LIBDIR=.deps/lib' \
all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux32' \ all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux32' \
release 'darkplaces-glx:Xonotic/xonotic-linux32-glx darkplaces-sdl:Xonotic/xonotic-linux32-sdl darkplaces-dedicated:Xonotic/xonotic-linux32-dedicated' release 'darkplaces-glx:Xonotic/xonotic-linux32-glx darkplaces-sdl:Xonotic/xonotic-linux32-sdl darkplaces-dedicated:Xonotic/xonotic-linux32-dedicated'
;; ;;
release-engine-linux64) release-engine-linux64)
verbose "$SELF" release-compile linux64 \ verbose "$SELF" release-compile linux64 \
'STRIP=: CC="gcc -m64 -g -I.deps/include -L.deps/lib" DP_MODPLUG_STATIC_LIBDIR=.deps/lib LIB_JPEG=.deps/lib/libjpeg.a DP_CRYPTO_STATIC_LIBDIR=.deps/lib' \ 'STRIP=: CC="gcc -m64 -g -I.deps/include -L.deps/lib -DSUPPORTIPV6" DP_MODPLUG_STATIC_LIBDIR=.deps/lib LIB_JPEG=.deps/lib/libjpeg.a DP_CRYPTO_STATIC_LIBDIR=.deps/lib' \
all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux64' \ all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux64' \
release 'darkplaces-glx:Xonotic/xonotic-linux64-glx darkplaces-sdl:Xonotic/xonotic-linux64-sdl darkplaces-dedicated:Xonotic/xonotic-linux64-dedicated' release 'darkplaces-glx:Xonotic/xonotic-linux64-glx darkplaces-sdl:Xonotic/xonotic-linux64-sdl darkplaces-dedicated:Xonotic/xonotic-linux64-dedicated'
;; ;;

View File

@ -9,6 +9,6 @@ loadfont chat fonts/n019004l.pfb,gfx/vera-sans $con_chatsize
loadfont centerprint fonts/unifont-5.1.20080907,gfx/vera-sans 9 loadfont centerprint fonts/unifont-5.1.20080907,gfx/vera-sans 9
loadfont infobar gfx/vera-sans 8 loadfont infobar gfx/vera-sans 8
loadfont user0 fonts/n019004l.pfb,fonts/unifont-5.1.20080907,gfx/vera-sans 9.6 12 12.8 16 loadfont user0 fonts/n019004l.pfb,fonts/unifont-5.1.20080907,gfx/vera-sans 9.6 12 12.8 16
loadfont user1 fonts/n019004l.pfb,fonts/unifont-5.1.20080907,gfx/vera-sans 4 5 6 7 8 9 10 12 $sbar_fontsize $scr_centersize // csqc font loadfont user1 fonts/n019004l.pfb,fonts/unifont-5.1.20080907,gfx/vera-sans 4 6 8 10 12 $hud_fontsize $scr_centersize // csqc font
loadfont user2 fonts/n019004l.pfb,fonts/unifont-5.1.20080907,gfx/vera-sans 10 12 14 16 20 24 28 32 // csqc bigfont loadfont user2 fonts/n019004l.pfb,fonts/unifont-5.1.20080907,gfx/vera-sans 10 12 14 16 20 24 28 32 // csqc bigfont
scoreboard_columns_set scoreboard_columns_set

View File

@ -0,0 +1,9 @@
First make sure your textures are in the correct paths, eg
Correct: textures/yourset/wall/bricks.tga
Wrong: textures/yourset/bricks.tga
Copy shade.vbs and template.shader to textures/yourset/
Edit the template.shader if you need non standard stuff
Run the shade.vbs, copy textures/yourset/yourset.shader to scripts/yourset.shader, add yourset to scripts/shaderlist.txt

View File

@ -0,0 +1,120 @@
#!/bin/sh
case "$#" in
2)
;;
*)
echo "Usage: from xonotic-maps.pk3dir directory, copy and edit shader.template, then"
echo " $0 texturepackname myshader.template"
exit 1
;;
esac
LF="
"
exec 3>"scripts/$1.shader"
template=`cat "$2"`
find "textures/$1" -type f -path "textures/*/*/*.*" -not -name '*_norm.*' -not -name '*_glow.*' -not -name '*_gloss.*' -not -name '*_reflect.*' -not -name '*.xcf' | while IFS= read -r F; do
F=${F%.*}
noLightmap=false
isLiquid=false
isTransparent=false
bounceScale=1.00
shaderString="$template"
shaderHead=
shaderTail=
shaderQUI=
shaderDiffuse=
diffuseExtra=
case "$F" in
*decal*)
noLightmap=true
;;
esac
# material type
case "$F" in
*water*)
noLightmap=true
isLiquid=true
shaderHead="$shaderHead surfaceparm trans\n surfaceparm water\n qer_trans 20\n"
;;
*slime*)
noLightmap=true
isLiquid=true
shaderHead="$shaderHead surfaceparm trans\n surfaceparm slime\n qer_trans 20\n"
;;
*lava*)
noLightmap=true
isLiquid=true
shaderHead="$shaderHead surfaceparm trans\n surfaceparm lava\n qer_trans 20\n"
;;
*glass*)
noLightmap=true
shaderHead="$shaderHead surfaceparm trans\n"
diffuseExtra="$diffuseExtra blendfunc add\n"
;;
*metal*)
bounceScale=`echo "$bounceScale + 0.25" | bc -l`
shaderHead="$shaderHead surfaceparm metalsteps\n"
;;
esac
# what is it used for
case "$F" in
*grate*)
bounceScale=`echo "$bounceScale + 0.25" | bc -l`
shaderHead="$shaderHead surfaceparm trans\n"
diffuseExtra="$diffuseExtra blendfunc blend\n"
;;
esac
# further properties
case "$F" in
*shiny*)
bounceScale=`echo "$bounceScale + 0.25" | bc -l`
;;
esac
case "$F" in
*dirt*|*terrain*|*old*)
bounceScale=`echo "$bounceScale - 0.25" | bc -l`
shaderHead="$shaderHead surfaceparm dust\n"
;;
esac
shaderDiffuse="$F"
if [ -f "$F""_gloss.tga" ] || [ -f "$F""_gloss.jpg" ] || [ -f "$F""_gloss.png" ]; then
bounceScale=`echo "$bounceScale + 0.25" | bc -l`
fi
if [ -f "$F""_qei.tga" ] || [ -f "$F""_qei.jpg" ] || [ -f "$F""_qei.png" ]; then
shaderQUI="$F""_qei"
else
shaderQUI="$F"
fi
if ! $noLightmap; then
shaderTail=" {\n map \$lightmap\n rgbGen identity\n tcGen lightmap\n blendfunc filter\n }"
fi
case "$bounceScale" in
1|1.0|1.00)
;;
*)
shaderHead="$shaderHead q3map_bouncescale $bounceScale\n"
;;
esac
shaderName="`echo "$F" | cut -d / -f 1-2`/`echo "$F" | cut -d / -f 3`-`echo "$F" | cut -d / -f 4`"
echo "$shaderString$LF$LF" | sed -e "
s,%shader_name%,$shaderName,g;
s,%qei_name%,$shaderQUI,g;
s,%shader_head%,$shaderHead,g;
s,%diffuse_map%,$shaderDiffuse,g;
s,%diffuse_map_extra%,$diffuseExtra,g;
s,%shader_tail%,$shaderTail,g;
" >&3
done

View File

@ -0,0 +1,172 @@
option explicit
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
dim CRLF
CRLF = Chr(13) & Chr(10)
dim scriptFullName, scriptPath
scriptFullName = WScript.ScriptFullName
scriptPath = Left ( scriptFullName, InStrRev ( scriptFullName, WScript.ScriptName) - 1 )
dim objFSO, setfolder, re, shader, objShaderTemplate, shaderTemplate
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set setfolder = objFSO.GetFolder(scriptPath)
Set re = New RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = ""
Set shader = objFSO.OpenTextFile (scriptPath & "\" & setfolder.name & ".shader", ForWriting, True)
Set objShaderTemplate = objFSO.OpenTextFile(scriptPath & "\template.shader", ForReading)
shaderTemplate = objShaderTemplate.ReadAll()
function filetitle(sfilename)
filetitle = Left(sfilename, len(sfilename) - 4)
end function
dim noLightmap, isLiquid, isTransparent, bounceScale, shaderString
dim shaderHead, shaderTail, shaderQUI, shaderDiffuse, diffuseExtra
dim subfold, texfile, fn
For Each subfold in setfolder.Subfolders
' shader.write "Folder: " & subfold.Name & CRLF
For Each texfile In subfold.Files
'Defaults
noLightmap = false
isLiquid = false
isTransparent = false
bounceScale = 1
shaderString = shaderTemplate
shaderHead = ""
shaderTail = ""
shaderQUI = ""
shaderDiffuse = ""
diffuseExtra = ""
' First ignore any extra map or Thumbs.db
re.Pattern = "_bump.|_gloss.|_norm.|_glow.|Thumbs.db"
if not re.test(texfile.name) then
re.pattern = "decal"
if re.test(texfile.name) then
noLightmap = true
end if
re.pattern = "water"
if re.test(texfile.name) then
noLightmap = true
isLiquid = true
shaderHead = shaderHead & " surfaceparm trans" & CRLF
shaderHead = shaderHead & " surfaceparm water" & CRLF
shaderHead = shaderHead & " qer_trans 20" & CRLF
diffuseExtra = "blendfunc blend"
end if
re.pattern = "slime"
if re.test(texfile.name) then
noLightmap = true
isLiquid = true
shaderHead = shaderHead & " surfaceparm trans" & CRLF
shaderHead = shaderHead & " surfaceparm slime" & CRLF
shaderHead = shaderHead & " qer_trans 20" & CRLF
end if
re.pattern = "lava"
if re.test(texfile.name) then
noLightmap = true
isLiquid = true
shaderHead = shaderHead & " surfaceparm trans" & CRLF
shaderHead = shaderHead & " surfaceparm lava" & CRLF
shaderHead = shaderHead & " qer_trans 20" & CRLF
diffuseExtra = " blendfunc add"
end if
re.pattern = "glass"
if re.test(texfile.name) then
noLightmap = true
shaderHead = shaderHead & " surfaceparm trans" & CRLF
diffuseExtra = " blendfunc add"
end if
re.pattern = "metal"
if re.test(texfile.name) then
bounceScale = bounceScale + 0.25
shaderHead = shaderHead & " surfaceparm metalsteps" & CRLF
end if
re.pattern = "grate"
if re.test(texfile.name) then
bounceScale = bounceScale + 0.25
shaderHead = shaderHead & " surfaceparm trans" & CRLF
diffuseExtra = " blendfunc blend"
end if
re.pattern = "shiny"
if re.test(texfile.name) then
bounceScale = bounceScale + 0.25
end if
re.pattern = "dirt|terrain|old"
if re.test(texfile.name) then
bounceScale = bounceScale - 0.25
shaderHead = shaderHead & " surfaceparm dust" & CRLF
end if
shaderDiffuse = "textures/" & setfolder.name & "/" & subfold.name & "/" & texfile.name
fn = scriptPath & "/" & subfold.name & "/" & filetitle(texfile.name) & "_gloss.tga"
if objFSO.FileExists(fn) Then
bounceScale = bounceScale + 0.25
end if
fn = scriptPath & "/" & subfold.name & "/" & filetitle(texfile.name) & "_qei.tga"
if objFSO.FileExists(fn) Then
shaderQUI = "textures/" & setfolder.name & "/" & subfold.name & "/" & filetitle(texfile.name) & "_qei.tga"
else
shaderQUI = shaderDiffuse
end if
if not noLightmap then
shaderTail = " {" & CRLF & " map $lightmap" & CRLF & " rgbGen identity" & CRLF & " tcGen lightmap" & CRLF & " blendfunc filter" & CRLF & " }"
end if
if not bounceScale = 1 then
re.pattern = ","
shaderHead = shaderHead & " q3map_bounceScale " & re.Replace(bounceScale, ".") & CRLF
end if
re.Pattern = "%shader_name%"
shaderString = re.Replace(shaderTemplate, "textures/" & setfolder.name & "/" & subfold.name & "-" & filetitle(texfile.name))
re.Pattern = "%qei_name%"
shaderString = re.Replace(shaderString, shaderQUI)
re.Pattern = "%shader_head%"
shaderString = re.Replace(shaderString, shaderHead)
re.Pattern = "%diffuse_map%"
shaderString = re.Replace(shaderString, shaderDiffuse)
re.Pattern = "%diffuse_map_extra%"
shaderString = re.Replace(shaderString, diffuseExtra)
re.Pattern = "%shader_tail%"
shaderString = re.Replace(shaderString, shaderTail)
shader.write shaderString & CRLF & CRLF
end if
Next
Next
shader.Close

View File

@ -0,0 +1,15 @@
%shader_name%
{
qer_editorimage %qei_name%
dpoffsetmapping - 2
dpglossintensitymod 3
dpglossexponentmod 4
%shader_head%
{
map %diffuse_map%
%diffuse_map_extra%
}
%shader_tail%
}

View File

@ -3,10 +3,14 @@
set -e set -e
bspdir="$PWD/data" bspdir="$PWD/data"
url=http://beta.xonotic.org/autobuild-bsp/ url_http=http://beta.xonotic.org/autobuild-bsp/
url_ssh=xonotic-beta:autobuild-bsp/ url_ssh=xonotic-beta:autobuild-bsp/
cachedir="$HOME/xonotic-map-compiler.cache/" build_cachedir="$HOME/xonotic-map-compiler.cache/"
override="-bsp_timeout 900 -vis_timeout 3600 -light_timeout 14400 -minimap_timeout 900 -scale_timeout 900" screenshot_cachedir="$HOME/xonotic-map-screenshot.cache/"
build_override="-bsp_timeout 900 -vis_timeout 3600 -light_timeout 14400 -minimap_timeout 900 -scale_timeout 900"
screenshot_override="9 600 +g_ctf 1"
getthemap_fail=false
allmaps() allmaps()
{ {
@ -39,6 +43,32 @@ pre2spam()
echo "[$branch $hash] starting map compile of $map" echo "[$branch $hash] starting map compile of $map"
} }
ss2spam()
{
map=$1
url=$2
branch=$3
hash=$4
status=$5
branch=${branch##refs/heads/}
branch=${branch##refs/remotes/}
branch=${branch##origin/}
hash=`echo "$hash" | cut -c 1-7`
s_error=
if [ "$status" -ne 0 ]; then
s_error="exited with status $status"
fi
if [ -n "$s_error" ]; then
echo "[$branch $hash] 4screenshots of $map could not be made: $s_error"
else
echo "[$branch $hash] screenshots of $map are available on $url"
fi
}
log2spam() log2spam()
{ {
map=$1 map=$1
@ -127,7 +157,7 @@ buildthemap()
t0=`date +%s` t0=`date +%s`
( (
cd maps cd maps
../../../misc/tools/xonotic-map-compiler "$M" `grep ^- "$M.map.options" | cut -d '#' -f 1` $override > "$M.log" ../../../misc/tools/xonotic-map-compiler "$M" `grep ^- "$M.map.options" | cut -d '#' -f 1` $build_override > "$M.log"
) )
t1=`date +%s` t1=`date +%s`
dt=$(($t1 - $t0)) dt=$(($t1 - $t0))
@ -147,6 +177,45 @@ buildthemap()
fi fi
} }
screenshotthemap()
{
REFNAME=$1
HASH=$2
url=$3
M=$4
blobhash=$5
if HEAD "$url$M-$blobhash/"; then
continue
fi
rm -rf ~/.xonotic
(
cd ../..
if [ -n "$DISPLAY" ]; then
misc/tools/xonotic-map-screenshot "$M" $screenshot_override +"scr_screenshot_name \"$M-\""
else
startx "$PWD/misc/tools/xonotic-map-screenshot" "$M" $screenshot_override +"scr_screenshot_name \"$M-\"" -- :8
fi
)
if ! mv ~/.xonotic/data/screenshots "$M-$blobhash"; then
if [ -n "$IRCSPAM" ]; then
#ss2spam "$M" "$url$M-$blobhash/" "$REFNAME" "$HASH" 1 > "maps/$M.ircss"
ss2spam "$M" "$url?d" "$REFNAME" "$HASH" 1 > "maps/$M.ircss"
fi
return 1
fi
if [ -n "$IRCSPAM" ]; then
#ss2spam "$M" "$url$M-$blobhash/" "$REFNAME" "$HASH" 0 > "maps/$M.ircss"
ss2spam "$M" "$url?d" "$REFNAME" "$HASH" 0 > "maps/$M.ircss"
fi
chmod 1777 "$M-$blobhash"
ln -snf "../$M-$blobhash" "$M" # from ALL branches, so beware!
rsync -vaSHP "$M-$blobhash" "$url_ssh"
rsync -vaSHP "$M" "$url_ssh""latest/"
if [ -n "$IRCSPAM" ]; then
$IRCSPAM < "maps/$M.ircss"
fi
}
getthemap() getthemap()
{ {
url=$1 url=$1
@ -161,12 +230,14 @@ getthemap()
if ! curl -o "$bspdir/$M-$blobhash.pk3" "$url$M-$blobhash.pk3"; then if ! curl -o "$bspdir/$M-$blobhash.pk3" "$url$M-$blobhash.pk3"; then
rm -f "$bspdir/$M-$blobhash.pk3" rm -f "$bspdir/$M-$blobhash.pk3"
echo "WARNING: could not download $url$M-$blobhash.pk3, maybe not ready yet" echo "WARNING: could not download $url$M-$blobhash.pk3, maybe not ready yet"
getthemap_fail=true
return 0 return 0
fi fi
fi fi
if ! unzip -l "$bspdir/$M-$blobhash.pk3"; then if ! unzip -l "$bspdir/$M-$blobhash.pk3"; then
rm -f "$bspdir/$M-$blobhash.pk3" rm -f "$bspdir/$M-$blobhash.pk3"
echo "WARNING: could not download $url$M-$blobhash.pk3, invalid zip file" echo "WARNING: could not download $url$M-$blobhash.pk3, invalid zip file"
getthemap_fail=true
return 0 return 0
fi fi
} }
@ -175,14 +246,51 @@ case "$1" in
build) build)
cd data/xonotic-maps.pk3dir cd data/xonotic-maps.pk3dir
git for-each-ref 'refs/remotes' | while read -r HASH TYPE REFNAME; do git for-each-ref 'refs/remotes' | while read -r HASH TYPE REFNAME; do
if [ -f "$cachedir/$HASH" ]; then case "$REFNAME" in
*/archived/*)
continue
;;
esac
if [ -f "$build_cachedir/$HASH" ]; then
continue continue
fi fi
git reset --hard git reset --hard
git clean -xfd git clean -xfd
git checkout -f "$HASH" git checkout -f "$HASH"
allmaps buildthemap "$REFNAME" "$HASH" "$url" allmaps buildthemap "$REFNAME" "$HASH" "$url_http"
touch "$cachedir/$HASH" touch "$build_cachedir/$HASH"
done
git checkout -f master
;;
screenshot)
cd data/xonotic-maps.pk3dir
git for-each-ref 'refs/remotes' | while read -r HASH TYPE REFNAME; do
case "$REFNAME" in
*/archived/*)
continue
;;
esac
if [ -f "$screenshot_cachedir/$HASH" ]; then
continue
fi
git reset --hard
git clean -xfd
git checkout -f "$HASH"
cd ../..
mkdir -p "$bspdir" "$bspdir.old"
for b in "$bspdir"/*-????????????????????????????????????????-????????????????????????????????????????.pk3; do
if [ -e "$b" ]; then
mv "$b" "$bspdir.old"/
fi
done
cd data/xonotic-maps.pk3dir
allmaps getthemap "$url_http" "$bspdir.old" "$bspdir"
if ! $getthemap_fail; then
allmaps screenshotthemap "$REFNAME" "$HASH" "$url_http"
touch "$screenshot_cachedir/$HASH"
fi
done done
git checkout -f master git checkout -f master
;; ;;
@ -194,7 +302,7 @@ case "$1" in
fi fi
done done
cd data/xonotic-maps.pk3dir cd data/xonotic-maps.pk3dir
allmaps getthemap "$url" "$bspdir.old" "$bspdir" allmaps getthemap "$url_http" "$bspdir.old" "$bspdir"
echo "List of maps that got deleted (if any) and currently are in $bspdir.old:" echo "List of maps that got deleted (if any) and currently are in $bspdir.old:"
ls -l "$bspdir.old" ls -l "$bspdir.old"
;; ;;
@ -202,7 +310,7 @@ case "$1" in
mkdir -p "$bspdir" mkdir -p "$bspdir"
cd "$bspdir" cd "$bspdir"
rm -f *-????????????????????????????????????????-????????????????????????????????????????.pk3 rm -f *-????????????????????????????????????????-????????????????????????????????????????.pk3
wget -r -l1 -A "*.pk3" -N --no-parent --no-directories "$url""latest" wget -r -l1 -A "*.pk3" -N --no-parent --no-directories "$url_http""latest"
;; ;;
log2spam-test) log2spam-test)
log2spam "mapname" "http://mapurl" "branch" "commit" "0" log2spam "mapname" "http://mapurl" "branch" "commit" "0"

View File

@ -0,0 +1,28 @@
#!/bin/sh
map=$1; shift
count=$1; shift
watchdog=$1; shift
# convert count to unary
count=`yes x | head -n "$count" | tr -cd x`
./all run \
-nosound \
+'vid_fullscreen 0' \
+'exec effects-ultimate.cfg' \
"$@" \
+'r_motionblur 0' \
+'r_damageblur 0' \
+'r_letterbox -1' \
+'r_drawviewmodel 0' \
+'crosshair 0' \
+'sv_cheats 2' \
+'set catchme "catchme_"' \
+"alias catchme_$count \"quit\"" \
+'alias "autoscreenshot" "$catchme; set catchme \"${catchme}x\"; impulse 911; defer 2 \"screenshot; autoscreenshot\""' \
+'alias cl_hook_gamestart_all "cmd join; defer 1 god; defer 2 noclip; defer 3 autoscreenshot"' \
+"defer \"$watchdog\" quit" \
+"map \"$map\"" \
+'timelimit 0' \
+'fraglimit 0'

9
savecore.gdb Normal file
View File

@ -0,0 +1,9 @@
handle SIGHUP nostop print pass
handle SIGINT nostop print pass
handle SIGCONT nostop print pass
handle SIGTSTP nostop print pass
run
set pagination off
echo \n\nIf the following commands show errors, that can be ignored:\n
bt full
generate-core-file xonotic.core