diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c59e5e4b..2c2cdd74 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -16,16 +16,16 @@ + android:windowSoftInputMode="adjustResize" + android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"> - - + --> @@ -85,9 +84,7 @@ - + diff --git a/build-test.sh b/build-test.sh index c9a4e755..29b15e48 100644 --- a/build-test.sh +++ b/build-test.sh @@ -3,14 +3,23 @@ AAPT=./../aapt DX=./../dx APKBUILDER=./../apkbuilder mkdir gen -mkdir bin +mkdir -p bin/classes + +JAVAC=$JAVA_HOME/bin/javac + +if [ -z "$JAVA_HOME" ]; then + export JAVAC=$(which javac) +fi + +: ${OUTPUT:=$1} +: ${OUTPUT:=bin/xash3d-signed.apk} sh gen-version.sh test build rm assets/extras.pak python2.7 makepak.py xash-extras assets/extras.pak $AAPT package -m -J gen/ --rename-manifest-package in.celest.xash3d.hl -M AndroidManifest.xml -S test/res -I $ANDROID_JAR -$JAVA_HOME/bin/javac -d bin/classes -s bin/classes -cp $ANDROID_JAR gen/in/celest/xash3d/hl/R.java src/in/celest/xash3d/*.java +$JAVAC -d bin/classes -s bin/classes -cp $ANDROID_JAR gen/in/celest/xash3d/hl/R.java src/in/celest/xash3d/*.java $DX --dex --output=bin/classes.dex bin/classes/ -/mnt/app/apktool/aapt package -f -M test/AndroidManifest.xml -S test/res -I $ANDROID_JAR -F bin/xash3d.apk.unaligned +$AAPT package -f -M test/AndroidManifest.xml -S test/res -I $ANDROID_JAR -F bin/xash3d.apk.unaligned zip bin/xash3d.apk.unaligned assets/* $APKBUILDER bin/xash3d.apk -u -nf libs/ -rj libs -f bin/classes.dex -z bin/xash3d.apk.unaligned -java -jar /mnt/app/apktool/signapk.jar /mnt/app/apktool/testkey.x509.pem /mnt/app/apktool/testkey.pk8 bin/xash3d.apk bin/xash3d-signed.apk +java -jar /mnt/app/apktool/signapk.jar /mnt/app/apktool/testkey.x509.pem /mnt/app/apktool/testkey.pk8 bin/xash3d.apk $OUTPUT diff --git a/gen-version.sh b/gen-version.sh index 151f82c1..ce2ef2a0 100755 --- a/gen-version.sh +++ b/gen-version.sh @@ -6,7 +6,6 @@ echo -n 'Version information: ' $*_endl| sed -e s/_endl/'\\n'/ >> res/val echo -n 'android:' $(git log --abbrev-commit --pretty=oneline -1) _endl\ 'engine:' $(cd jni/src/Xash3D/*/;git log --abbrev-commit --pretty=oneline -1) _endl\ 'hlsdk:' $(cd jni/src/hlsdk-xash3d/;git log --abbrev-commit --pretty=oneline -1) _endl\ -'SDL2:' $(cd jni/src/SDL2/*/;git log --abbrev-commit --pretty=oneline -1) _endl\ 'extras:' $(cd xash-extras/;git log --abbrev-commit --pretty=oneline -1) _endl\ 'nanogl:' $(cd jni/src/NanoGL/*/;git log --abbrev-commit --pretty=oneline -1)_endl\ | sed -e s/\'//g -e s/_endl/'\\n'/g >> res/values/git-rev.xml diff --git a/jni/Application.mk b/jni/Application.mk index 9e105286..9340fe30 100644 --- a/jni/Application.mk +++ b/jni/Application.mk @@ -10,6 +10,9 @@ else APP_PLATFORM := android-9 endif +# if non-zero, works only if single ABI selected +XASH_THREAD_NUM ?= 0 + CFLAGS_OPT := -O3 -fomit-frame-pointer -ggdb -funsafe-math-optimizations -ftree-vectorize -fgraphite-identity -floop-interchange -funsafe-loop-optimizations -finline-limit=256 -pipe CFLAGS_OPT_ARM := -mthumb -mfpu=neon -mcpu=cortex-a9 -pipe -mvectorize-with-neon-quad -DVECTORIZE_SINCOS -fPIC -DHAVE_EFFICIENT_UNALIGNED_ACCESS diff --git a/jni/src/SDL2/Android.mk b/jni/src/SDL2/Android.mk deleted file mode 100644 index f9456473..00000000 --- a/jni/src/SDL2/Android.mk +++ /dev/null @@ -1,73 +0,0 @@ -LOCAL_PATH := $(call my-dir)/SDL-mirror - -########################### -# -# SDL shared library -# -########################### - -include $(CLEAR_VARS) - -LOCAL_MODULE := SDL2 - -LOCAL_C_INCLUDES := $(LOCAL_PATH)/include - -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES) - -LOCAL_SRC_FILES := \ - $(subst $(LOCAL_PATH)/,, \ - $(wildcard $(LOCAL_PATH)/src/*.c) \ - $(wildcard $(LOCAL_PATH)/src/audio/*.c) \ - $(wildcard $(LOCAL_PATH)/src/audio/android/*.c) \ - $(wildcard $(LOCAL_PATH)/src/audio/dummy/*.c) \ - $(LOCAL_PATH)/src/atomic/SDL_atomic.c \ - $(LOCAL_PATH)/src/atomic/SDL_spinlock.c.arm \ - $(wildcard $(LOCAL_PATH)/src/core/android/*.c) \ - $(wildcard $(LOCAL_PATH)/src/cpuinfo/*.c) \ - $(wildcard $(LOCAL_PATH)/src/dynapi/*.c) \ - $(wildcard $(LOCAL_PATH)/src/events/*.c) \ - $(wildcard $(LOCAL_PATH)/src/file/*.c) \ - $(wildcard $(LOCAL_PATH)/src/haptic/*.c) \ - $(wildcard $(LOCAL_PATH)/src/haptic/dummy/*.c) \ - $(wildcard $(LOCAL_PATH)/src/joystick/*.c) \ - $(wildcard $(LOCAL_PATH)/src/joystick/android/*.c) \ - $(wildcard $(LOCAL_PATH)/src/loadso/dlopen/*.c) \ - $(wildcard $(LOCAL_PATH)/src/power/*.c) \ - $(wildcard $(LOCAL_PATH)/src/power/android/*.c) \ - $(wildcard $(LOCAL_PATH)/src/filesystem/android/*.c) \ - $(wildcard $(LOCAL_PATH)/src/render/*.c) \ - $(wildcard $(LOCAL_PATH)/src/render/*/*.c) \ - $(wildcard $(LOCAL_PATH)/src/stdlib/*.c) \ - $(wildcard $(LOCAL_PATH)/src/thread/*.c) \ - $(wildcard $(LOCAL_PATH)/src/thread/pthread/*.c) \ - $(wildcard $(LOCAL_PATH)/src/timer/*.c) \ - $(wildcard $(LOCAL_PATH)/src/timer/unix/*.c) \ - $(wildcard $(LOCAL_PATH)/src/video/*.c) \ - $(wildcard $(LOCAL_PATH)/src/video/android/*.c) \ - $(wildcard $(LOCAL_PATH)/src/test/*.c)) - -ifneq ($(XASH3D_CONFIG),) -include $(XASH3D_CONFIG) -endif - -LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -LOCAL_LDLIBS := -ldl -lGLESv1_CM -lGLESv2 -llog -landroid - -include $(BUILD_SHARED_LIBRARY) - -########################### -# -# SDL static library -# -########################### - -LOCAL_MODULE := SDL2_static - -LOCAL_MODULE_FILENAME := libSDL2 - -LOCAL_SRC_FILES += $(subst $(LOCAL_PATH)/,,$(LOCAL_PATH)/src/main/android/SDL_android_main.c) - -LOCAL_LDLIBS := -LOCAL_EXPORT_LDLIBS := -Wl,--undefined=Java_org_libsdl_app_SDLActivity_nativeInit -ldl -lGLESv1_CM -lGLESv2 -llog -landroid - -include $(BUILD_STATIC_LIBRARY) diff --git a/jni/src/SDL2/SDL-mirror b/jni/src/SDL2/SDL-mirror deleted file mode 100644 index 38ec3fce..00000000 --- a/jni/src/SDL2/SDL-mirror +++ /dev/null @@ -1 +0,0 @@ -Place here SDL2 source code, if you want build SDL2 version of Xash3D Android. Note that this is neither maintained nor supported officially anymore. diff --git a/jni/src/Xash3D/xash3d b/jni/src/Xash3D/xash3d index 6c417363..d0a24c0d 160000 --- a/jni/src/Xash3D/xash3d +++ b/jni/src/Xash3D/xash3d @@ -1 +1 @@ -Subproject commit 6c4173633cbb079720f91a0e6a73336af0b9c573 +Subproject commit d0a24c0dc5d142a87c61bdf3ad88039914c8afe4 diff --git a/jni/xash3d_config.mk b/jni/xash3d_config.mk index d569969c..1d02ea4a 100644 --- a/jni/xash3d_config.mk +++ b/jni/xash3d_config.mk @@ -11,3 +11,65 @@ endif ifeq ($(TARGET_ARCH_ABI),x86) LOCAL_CFLAGS += $(CFLAGS_OPT_X86) endif +ifneq ($(XASH_THREAD_NUM),0) +ifneq (,$(findstring $(LOCAL_MODULE),nanogl server client)) +#LOCAL_LDFLAGS += -fopenmp -ftree-parallelize-loops=$(XASH_THREAD_NUM) +LOCAL_CFLAGS += -ftree-parallelize-loops=$(XASH_THREAD_NUM) +endif +LOCAL_LDFLAGS += -fopenmp -ftree-parallelize-loops=$(XASH_THREAD_NUM) +# this works only if single ABI selected +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/gl_studio.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/cl_game.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/cl_frame.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/cl_parse.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/gl_warp.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +#obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/cl_main.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +#obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/cl_tent.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/cl_events.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/gl_sprite.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/gl_image.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/gl_cull.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +#obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/gl_rpart.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +#obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/gl_beams.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) + +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/gl_rlight.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +#obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/gl_rsurf.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/gl_rmain.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) + +#obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/s_dsp.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +#obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/s_utils.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/s_vox.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/s_mouth.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/s_stream.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/s_load.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +#obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/s_mix.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/gl_draw.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/client/gl_decals.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/soundlib/snd_wav.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/imagelib/img_tga.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/imagelib/img_wad.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/imagelib/img_bmp.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/imagelib/img_quant.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +#obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/console.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/net_buffer.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/net_encode.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/mod_studio.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/pm_trace.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/pm_surface.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/cvar.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/cmd.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/network.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/crtlib.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/crclib.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/filesystem.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/infostring.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/gamma.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/mathlib.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/matrixlib.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/common/touch.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/server/sv_move.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/server/sv_pmove.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/server/sv_world.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/server/sv_phys.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +obj/local/$(TARGET_ARCH_ABI)/objs/xash/server/sv_frame.o: override PRIVATE_CC = $(TARGET_CC) -ftree-parallelize-loops=$(XASH_THREAD_NUM) +endif diff --git a/res/layout/about.xml b/res/layout/about.xml index 26d7fe78..9cc32fb2 100644 --- a/res/layout/about.xml +++ b/res/layout/about.xml @@ -28,7 +28,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" - android:text="https://sdlash3d.github.io" + android:text="https://FWGS.github.io" android:id="@+id/textView9" android:autoText="false" android:autoLink="web" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 67b7e0d7..6f21024e 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -14,20 +14,19 @@ Kurzbefehl Name - SDLash3D steht in keinem Zusammenhang zu Valve oder einem ihrer Partners. All copyrights reserved to their respective owners. - Portierung auf Android by SDLash3D team: \n + FWGS steht in keinem Zusammenhang zu Valve oder einem ihrer Partners. All copyrights reserved to their respective owners. + Portierung auf Android by FWGS team: \n • a1batross\n • mittorn \n • nicknekit.\n Spezieller Dank an:\n • Uncle Mike für Xash3D engine\n -• Valve for Half-Life\n -• libSDL2 developers.\n +• Valve for Half-Life\n Folge uns auf:\n • VK\n • ModDB\n - • GitHub + • GitHub Über Xash3D Android mod Kurzbefehl ersellen (auswahl) diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 2d68a8c2..cdca7983 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -13,8 +13,8 @@ Nombre del paquete del mod (sólo expertos) Nombre del acceso directo - SDLash3D no está afiliado con Valve o cualquiera de sus socios. Todos los derechos reservados a sus respectivos dueños. - Adaptación para Android por SDLash3D team: \n + FWGS no está afiliado con Valve o cualquiera de sus socios. Todos los derechos reservados a sus respectivos dueños. + Adaptación para Android por FWGS team: \n • a1batross\n • mittorn \n • nicknekit.\n @@ -22,11 +22,11 @@ Especial agradecimiento a:\n • Uncle Mike por Xash3D engine\n • Valve por Half-Life\n -• Desarrolladores de libSDL2.\n + Siguenos en: \n • VK\n • ModDB\n - • GitHub + • GitHub Acerca de Xash3D Android Crear acceso directo del mod (seleccionar) diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 25b5935b..0be55c0a 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -12,9 +12,9 @@ مسیر مود نام بسته مود (فقط برای حرفه ای ها): نام میانبر - یا شرکای آن ندارد. تمامی حقوق کپی برای صاحبان هر کدام محفوظ است. Valve هیچ نسبتی با SDLash3D - :SDLash3D پورت شده به اندروید توسط تیم \n • a1batross\n • mittorn \n • nicknekit.\n تشکر ویژه از:\n • Xash3Dبرای موتور Uncle Mike\n • Half-Life برای Valve\n • libSDL2 توسعه دهندگان.\n - ما را دنبال کنید در :\n •VK\n•ModDB\n•GitHub + یا شرکای آن ندارد. تمامی حقوق کپی برای صاحبان هر کدام محفوظ است. Valve هیچ نسبتی با FWGS + :FWGS پورت شده به اندروید توسط تیم \n • a1batross\n • mittorn \n • nicknekit.\n تشکر ویژه از:\n • Xash3Dبرای موتور Uncle Mike\n • Half-Life برای Valve\n + ما را دنبال کنید در :\n •VK\n•ModDB\n•GitHub Xash3D Android درباره ایجاد میانبر مود (انتخاب) diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 87f25934..421ddfc1 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -13,8 +13,8 @@ 모드 디렉토리 모드 패키지 이름(고급설정) 바로가기 이름 - 우리 SDLash3D는 밸브와 상업적으로 관련이 없습니다. 모든 저작권은 소유주로 보류되어있음을 알립니다.. - 안드로이드 이식 by SDLash3D팀: \n + 우리 FWGS는 밸브와 상업적으로 관련이 없습니다. 모든 저작권은 소유주로 보류되어있음을 알립니다.. + 안드로이드 이식 by FWGS팀: \n • a1batross\n • mittorn \n • nicknekit.\n @@ -22,12 +22,11 @@ 특별히 감사드리는 것들:\n • 마이클삼촌의 XASH3D엔진\n • 밸브의 하프라이프\n -• libSDL2 개발자분들\n • 한글화 byAIC from X3A NaverCafe \n 여기서 우리를: • VK\n • 모드디비\n -• 깃허브 +• 깃허브 Xash3D 안드로이드 정보 바로가기 만들기 diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index 337dc49d..12720637 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -13,20 +13,19 @@ Nome do pacote de Mod (apenas expecialistas) Nome do atalho - SDLash3D não é afiliado com a Valve ou qualquer um dos seus parceiros. Todos os direitos autorais reservados aos respectivos proprietários. - Porta para android pelo time SDLash3D: \n + FWGS não é afiliado com a Valve ou qualquer um dos seus parceiros. Todos os direitos autorais reservados aos respectivos proprietários. + Porta para android pelo time FWGS: \n • a1batross\n • mittorn \n • nicknekit.\n Agradecimentos especiais para:\n • Uncle Mike pelo motor Xash3D\n -• Valve pelo Half-Life\n -• Desenvolvedores libSDL2.\n +• Valve pelo Half-Life\n Siga-nos no:\n • VK\n • ModDB\n - • GitHub + • GitHub Sobre Android Xash3D Criar atalho para o mod (selecionar) diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 5e8fa27f..f9720fcb 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -20,10 +20,10 @@ Название ярлыка - SDLash3D не связан с Valve или с любыми из их партнеров. Все авторские права принадлежат их соотвественным обладателям. + FWGS не связан с Valve или с любыми из их партнеров. Все авторские права принадлежат их соотвественным обладателям. - Порт на Android осуществлен командой SDLash3D:\n + Порт на Android осуществлен командой FWGS:\n • a1batross\n • mittorn\n • nicknekit\n @@ -31,13 +31,12 @@ Особые благодарности:\n • Дяде Мише за Xash3D\n • Valve за Half-Life\n - • Разработчикам libSDL2 Подпишись на нас: \n • VK\n • ModDB\n - • GitHub + • GitHub О Xash3D Android Создать ярлык diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 718018e9..502e9b7c 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -13,20 +13,19 @@ Mod\'un paket adı (uzmanlar için) Kısayol adı - SDLash3D, Valve veya Valve\'ın herhangi bir partnerine bağlı değildir. Tüm telif hakları kendi sahiplerine aittir. - SDLash3D takımından Android Port\'u: \n + FWGS, Valve veya Valve\'ın herhangi bir partnerine bağlı değildir. Tüm telif hakları kendi sahiplerine aittir. + FWGS takımından Android Port\'u: \n • a1batross\n • mittorn \n • nicknekit.\n Özel teşekkürler:\n • Uncle Mike for Xash3D engine\n -• Valve for Half-Life\n -• libSDL2 developers.\n +• Valve for Half-Life\n/string> Bizi buralardan takip edin: \n • VK\n • ModDB\n - • GitHub + • GitHub Xash3D Android Hakkında Mod kısayolu oluştur (seç) diff --git a/res/values-ua/strings.xml b/res/values-ua/strings.xml index c869bee8..107d96f9 100644 --- a/res/values-ua/strings.xml +++ b/res/values-ua/strings.xml @@ -12,20 +12,19 @@ Каталог мода Пакет мода (тільки для експертів) Назва ярлика - SDLash3D не пов\'язаний з Valve або з будь-якими з їх партнерів. Всі авторські права належать їх відповідним власникам. - Порт на Android здійснений командою SDLash3D:\n + FWGS не пов\'язаний з Valve або з будь-якими з їх партнерів. Всі авторські права належать їх відповідним власникам. + Порт на Android здійснений командою FWGS:\n • a1batross\n • mittorn\n • nicknekit\n Особливі подяки:\n • Дяде Мише за Xash3D\n -• Valve за Half-Life\n -• Розробникам libSDL2.\n +• Valve за Half-Life\n Слідуйте за нами в:\n • VK\n • ModDB\n - • GitHub + • GitHub О Xash3D Android Створити ярлик мода (вибрати) diff --git a/res/values-zh/strings.xml b/res/values-zh/strings.xml index e0e63847..fae4d56d 100644 --- a/res/values-zh/strings.xml +++ b/res/values-zh/strings.xml @@ -12,20 +12,19 @@ Mod 目录 Mod 资源包名字(高级) 快捷方式名字 - SDLash3D不隶属于Valve或其合作伙伴。 版权归各自所有。 - 由SDLash3D团队移植到Android系统,成员: \n + FWGS不隶属于Valve或其合作伙伴。 版权归各自所有。 + 由FWGS团队移植到Android系统,成员: \n • a1batross\n • mittorn \n • nicknekit.\n 特别感谢:\n • Uncle Mike 制作的 Xash3D 引擎\n -• Valve 制作的 《半条命》\n -• libSDL2 开发商\n +• Valve 制作的 《半条命》\ 联系我们: \n • VK\n • ModDB\n - • GitHub + • GitHub 关于 Xash3D Android 创建mod快捷方式 (选择) diff --git a/res/values/strings.xml b/res/values/strings.xml index 2ff12d87..2546795a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -17,10 +17,10 @@ Shortcut name Xash3D Android - SDLash3D is not affiliated with Valve or any of their partners. All copyrights reserved to their respective owners. + FWGS is not affiliated with Valve or any of their partners. All copyrights reserved to their respective owners. - Port to Android by SDLash3D team: \n + Port to Android by FWGS team: \n • a1batross\n • mittorn \n • nicknekit.\n @@ -28,13 +28,12 @@ Special thanks to:\n • Uncle Mike for Xash3D engine\n • Valve for Half-Life\n - • libSDL2 developers.\n Follow us in: \n • VK\n • ModDB\n - • GitHub + • GitHub About Create mod shortcut diff --git a/src/in/celest/xash3d/InstallReceiver.java b/src/in/celest/xash3d/InstallReceiver.java index b395a1d2..bf8fb719 100644 --- a/src/in/celest/xash3d/InstallReceiver.java +++ b/src/in/celest/xash3d/InstallReceiver.java @@ -18,28 +18,31 @@ public class InstallReceiver extends BroadcastReceiver { } public static SharedPreferences mPref = null; private static final int PAK_VERSION = 5; - public static void extractPAK(Context context, Boolean force) { + public static synchronized void extractPAK(Context context, Boolean force) { InputStream is = null; FileOutputStream os = null; try { if( mPref == null ) mPref = context.getSharedPreferences("engine", 0); - if( mPref.getInt( "pakversion", 0 ) == PAK_VERSION && !force ) - return; - String path = context.getFilesDir().getPath()+"/extras.pak"; + synchronized( mPref ) + { + if( mPref.getInt( "pakversion", 0 ) == PAK_VERSION && !force ) + return; + String path = context.getFilesDir().getPath()+"/extras.pak"; - is = context.getAssets().open("extras.pak"); - os = new FileOutputStream(path); - byte[] buffer = new byte[1024]; - int length; - while ((length = is.read(buffer)) > 0) { - os.write(buffer, 0, length); + is = context.getAssets().open("extras.pak"); + os = new FileOutputStream(path); + byte[] buffer = new byte[1024]; + int length; + while ((length = is.read(buffer)) > 0) { + os.write(buffer, 0, length); + } + os.close(); + is.close(); + SharedPreferences.Editor editor = mPref.edit(); + editor.putInt( "pakversion", PAK_VERSION ); + editor.commit(); } - os.close(); - is.close(); - SharedPreferences.Editor editor = mPref.edit(); - editor.putInt( "pakversion", PAK_VERSION ); - editor.commit(); } catch( Exception e ) { Log.e( TAG, "Failed to extract PAK:" + e.toString() ); diff --git a/src/in/celest/xash3d/LauncherActivity.java b/src/in/celest/xash3d/LauncherActivity.java index d30b5be8..e6d542f3 100644 --- a/src/in/celest/xash3d/LauncherActivity.java +++ b/src/in/celest/xash3d/LauncherActivity.java @@ -127,6 +127,31 @@ public class LauncherActivity extends Activity { ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, list); adapter.setDropDownViewResource(android.R.layout.simple_spinner_item); pixelSpinner.setAdapter(adapter); + Button selectFolderButton = ( Button ) findViewById( R.id.button_select ); + selectFolderButton.setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View v) { + selectFolder(v); + } + }); + ((Button)findViewById( R.id.button_launch )).setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View v) { + startXash(v); + } + }); + ((Button)findViewById( R.id.button_shortcut )).setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View v) { + createShortcut(v); + } + }); + ((Button)findViewById( R.id.button_about )).setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View v) { + aboutXash(v); + } + }); useVolume.setChecked(mPref.getBoolean("usevolume",true)); checkUpdates.setChecked(mPref.getBoolean("check_updates",true)); updateToBeta.setChecked(mPref.getBoolean("check_betas", false)); diff --git a/src/in/celest/xash3d/XashActivity.java b/src/in/celest/xash3d/XashActivity.java index 39761217..f78b7720 100644 --- a/src/in/celest/xash3d/XashActivity.java +++ b/src/in/celest/xash3d/XashActivity.java @@ -39,6 +39,8 @@ public class XashActivity extends Activity { public static int mPixelFormat; protected static ViewGroup mLayout; public static JoystickHandler handler; + public static ImmersiveMode mImmersiveMode; + public static boolean keyboardVisible = false; // Joystick constants public final static byte JOY_HAT_CENTERED = 0; // bitmasks for hat current status @@ -58,7 +60,7 @@ public class XashActivity extends Activity { public static SharedPreferences mPref = null; private static boolean mUseVolume; private static boolean mEnableImmersive; - private static View mDecorView; + public static View mDecorView; // Audio private static Thread mAudioThread; @@ -95,7 +97,7 @@ public class XashActivity extends Activity { mSurface = new EngineSurface(getApplication()); if( sdk < 12 ) - handler = new JoystickHandler_stub(); + handler = new JoystickHandler(); else handler = new JoystickHandler_v12(); handler.init(); @@ -159,6 +161,8 @@ public class XashActivity extends Activity { // Immersive Mode is available only at >KitKat mEnableImmersive = (sdk >= 19 && mPref.getBoolean("immersive_mode", true)); + if( mEnableImmersive ) + mImmersiveMode = new ImmersiveMode_v19(); mDecorView = getWindow().getDecorView(); } @@ -180,16 +184,8 @@ public class XashActivity extends Activity { { super.onWindowFocusChanged(hasFocus); - if( mEnableImmersive && hasFocus ) - { - mDecorView.setSystemUiVisibility( - View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar - | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar - | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); - } + if( mImmersiveMode != null ) + mImmersiveMode.apply(); } public static native int nativeInit(Object arguments); @@ -299,7 +295,7 @@ public class XashActivity extends Activity { case KeyEvent.KEYCODE_DPAD_RIGHT: val = JOY_HAT_RIGHT; break; case KeyEvent.KEYCODE_DPAD_DOWN: val = JOY_HAT_DOWN; break; case KeyEvent.KEYCODE_DPAD_LEFT: val = JOY_HAT_LEFT; break; - default: return false; + default: return performEngineKeyEvent( action, keyCode, event ); } if(action == KeyEvent.ACTION_DOWN) @@ -348,20 +344,8 @@ public class XashActivity extends Activity { } else { - if (action == KeyEvent.ACTION_DOWN) - { - if (event.isPrintingKey() || keyCode == 62)// space is printing too - XashActivity.nativeString(String.valueOf((char) event.getUnicodeChar())); - - XashActivity.nativeKey(1, keyCode); - + if( performEngineKeyEvent( action, keyCode, event ) ) return true; - } - else if (action == KeyEvent.ACTION_UP) - { - XashActivity.nativeKey(0, keyCode); - return true; - } } } @@ -373,18 +357,23 @@ public class XashActivity extends Activity { return true; } - if (action == KeyEvent.ACTION_DOWN) - { - if (event.isPrintingKey() || keyCode == 62)// space is printing too - XashActivity.nativeString(String.valueOf((char) event.getUnicodeChar())); + return performEngineKeyEvent( action, keyCode, event ); + } - XashActivity.nativeKey(1, keyCode); + public static boolean performEngineKeyEvent( int action, int keyCode, KeyEvent event) + { + if( action == KeyEvent.ACTION_DOWN ) + { + if( event.isPrintingKey() || keyCode == 62 )// space is printing too + XashActivity.nativeString( String.valueOf( (char) event.getUnicodeChar() ) ); + + XashActivity.nativeKey( 1, keyCode ); return true; } - else if (action == KeyEvent.ACTION_UP) + else if( action == KeyEvent.ACTION_UP ) { - XashActivity.nativeKey(0, keyCode); + XashActivity.nativeKey( 0, keyCode ); return true; } return false; @@ -460,11 +449,17 @@ public class XashActivity extends Activity { mTextEdit.requestFocus(); imm.showSoftInput(mTextEdit, 0); + keyboardVisible = true; + if( XashActivity.mImmersiveMode != null ) + XashActivity.mImmersiveMode.apply(); } else { mTextEdit.setVisibility(View.GONE); imm.hideSoftInputFromWindow(mTextEdit.getWindowToken(), 0); + keyboardVisible = false; + if( XashActivity.mImmersiveMode != null ) + XashActivity.mImmersiveMode.apply(); } } } @@ -500,7 +495,7 @@ class EngineSurface extends SurfaceView implements SurfaceHolder.Callback, View.OnKeyListener { // This is what Xash3D runs in. It invokes main(), eventually - private Thread mEngThread; + private static Thread mEngThread = null; // EGL private objects private EGLContext mEGLContext; @@ -896,10 +891,14 @@ class AndroidBug5497Workaround { if (heightDifference > (usableHeightSansKeyboard/4)) { // keyboard probably just became visible frameLayoutParams.height = usableHeightSansKeyboard - heightDifference; + XashActivity.keyboardVisible = true; } else { // keyboard probably just became hidden frameLayoutParams.height = usableHeightSansKeyboard; + XashActivity.keyboardVisible = false; } + if( XashActivity.mImmersiveMode != null ) + XashActivity.mImmersiveMode.apply(); mChildOfContent.requestLayout(); usableHeightPrevious = usableHeightNow; } @@ -913,7 +912,7 @@ class AndroidBug5497Workaround { } -interface JoystickHandler +/*interface JoystickHandler { public int getSource(KeyEvent event); public int getSource(MotionEvent event); @@ -921,8 +920,8 @@ interface JoystickHandler public boolean isGamepadButton(int keyCode); public String keyCodeToString(int keyCode); public void init(); -} -class JoystickHandler_stub implements JoystickHandler +}*/ +class JoystickHandler { public int getSource(KeyEvent event) { @@ -949,7 +948,7 @@ class JoystickHandler_stub implements JoystickHandler } } -class JoystickHandler_v12 implements JoystickHandler +class JoystickHandler_v12 extends JoystickHandler { @@ -1025,3 +1024,30 @@ class JoystickHandler_v12 implements JoystickHandler } +class ImmersiveMode +{ + void apply() + { + //stub + } +} + +class ImmersiveMode_v19 extends ImmersiveMode +{ + @Override + void apply() + { + if( !XashActivity.keyboardVisible ) + XashActivity.mDecorView.setSystemUiVisibility( + 0x00000100 // View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | 0x00000200 // View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | 0x00000400 // View.SYSTEM_UI_FLAG_LAYOUT_FULSCREEN + | 0x00000002 // View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar + | 0x00000004 // View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar + | 0x00001000 // View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY + ); + else + XashActivity.mDecorView.setSystemUiVisibility( 0 ); + + } +} diff --git a/test/AndroidManifest.xml b/test/AndroidManifest.xml index d956b7b4..cd8b203d 100644 --- a/test/AndroidManifest.xml +++ b/test/AndroidManifest.xml @@ -36,8 +36,8 @@ + android:windowSoftInputMode="adjustResize" + android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"> @@ -75,7 +75,7 @@ --> diff --git a/unused/in/celest/xash3d/SteamActivity.java b/unused/SteamActivity.java similarity index 100% rename from unused/in/celest/xash3d/SteamActivity.java rename to unused/SteamActivity.java diff --git a/unused/in/celest/xash3d/SteamService.java b/unused/SteamService.java similarity index 99% rename from unused/in/celest/xash3d/SteamService.java rename to unused/SteamService.java index 322a80f8..9b615075 100644 --- a/unused/in/celest/xash3d/SteamService.java +++ b/unused/SteamService.java @@ -480,6 +480,7 @@ public class SteamService extends Service // called on every char in line until return true private boolean processPartial( String str ) throws CancelException, IOException { + //printText(str); { if( str.contains( "Steam>" ) ) { @@ -529,7 +530,7 @@ public class SteamService extends Service processInput.write( (passwd + '\n').getBytes() ); return true; } - if( str.startsWith("Steam Guard code:" )) + if( str.startsWith("Steam Guard code:" )|| str.startsWith("Two-factor code:") ) { String passwd = promptDialog("Steam Guard code", "Please enter your SteamGuard code", true); if( passwd == null )