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 )