1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-06-09 01:44:08 +00:00

Merge pull request #134 from still-flow/fix_hyperroid

Fix hyperroid builds
This commit is contained in:
Zeno Rogue 2020-11-06 15:42:04 +01:00 committed by GitHub
commit 971b002caf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 2954 additions and 2876 deletions

68
.github/workflows/gh_ci_android.yml vendored Normal file
View File

@ -0,0 +1,68 @@
name: Github CI on Android
on:
workflow_dispatch:
push:
branches: [master]
pull_request:
branches: [master]
jobs:
android_build:
name: Test build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Validate gradle-wrapper.jar
uses: gradle/wrapper-validation-action@v1
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get -y install gcc libsdl1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libglew-dev libpng-dev
- name: Build
run: |
cd hyperroid
./copy.sh
./gradlew assembleDebug
- name: Upload APK
uses: actions/upload-artifact@v2
with:
name: hyperroid_debug
path: hyperroid/app/build/outputs/apk/debug/app-debug.apk
android_test:
needs: android_build
name: Test-run in emulator
runs-on: macos-latest
steps:
- name: Download APK
uses: actions/download-artifact@v2
with:
name: hyperroid_debug
- name: Create a helper wait script
run: |
cat > wait-for-load.sh << ENDOFSCRIPT
#!/bin/sh
while ! adb logcat -d "HyperRogue:V" "*:S" | grep "Game initialized"
do
sleep 2
done
ENDOFSCRIPT
chmod u+x wait-for-load.sh
- name: Run in emulator
uses: ReactiveCircus/android-emulator-runner@v2.11.1
with:
api-level: 28
emulator-options: -no-window -gpu swiftshader_indirect -no-snapshot -no-snapstorage -noaudio -no-boot-anim -skin 1440x2560
script: |
adb wait-for-device
adb install -t app-debug.apk
adb shell am start -W -n com.roguetemple.hyperroid/com.roguetemple.hyperroid.HyperRogue
./wait-for-load.sh
adb shell input keyevent 41 # send "M" keypress to display main menu
adb shell screencap /sdcard/hyperroid.png
adb pull /sdcard/hyperroid.png
- name: Upload screenshot
uses: actions/upload-artifact@v2
with:
name: screenshot
path: hyperroid.png

View File

@ -615,6 +615,7 @@ EX void configure() {
}; };
} }
#if CAP_COMMANDLINE
int readArgs() { int readArgs() {
using namespace arg; using namespace arg;
@ -631,6 +632,7 @@ int readArgs() {
} }
auto fundamentalhook = addHook(hooks_args, 100, readArgs); auto fundamentalhook = addHook(hooks_args, 100, readArgs);
#endif
EX } EX }

View File

@ -1,8 +1,8 @@
This directory contains the sources of the Android port of HyperRogue. This directory contains the sources of the Android port of HyperRogue.
You should copy the sound and music files from HyperRogue's main directory to You should copy the sound and music files from HyperRogue's main directory to
the directories here; also `language-data.cpp` file generated during HyperRogue's build the directories here; also `autohdr.h` and `language-data.cpp` files generated during HyperRogue's build
process is required. This is done by the script `copy.sh`. process are required. This is done by the script `copy.sh`.
The 'low quality' versions of music files are already in their location (copying them The 'low quality' versions of music files are already in their location (copying them
is uncommented in copy.sh). is uncommented in copy.sh).

View File

@ -169,6 +169,8 @@ Java_com_roguetemple_hyperroid_HyperRogue_glhrinit(MOBPAR_FORMAL)
{ {
__android_log_print(ANDROID_LOG_WARN, "HyperRogue", "glhr::init %d\n", 0); __android_log_print(ANDROID_LOG_WARN, "HyperRogue", "glhr::init %d\n", 0);
#if HNEW #if HNEW
// matched_programs get clobbered on activity destruction -- force their re-creation
if (!matched_programs.empty()) matched_programs.clear();
glhr::init(); glhr::init();
#endif #endif
__android_log_print(ANDROID_LOG_WARN, "HyperRogue", "glhr::init done %d\n", 0); __android_log_print(ANDROID_LOG_WARN, "HyperRogue", "glhr::init done %d\n", 0);
@ -310,7 +312,7 @@ extern "C" void Java_com_roguetemple_hyperroid_HyperRogue_draw(MOBPAR_FORMAL) {
// text is drawn with 'textured' // text is drawn with 'textured'
dynamicval<eModel> p(pmodel, mdManual); dynamicval<eModel> p(pmodel, mdManual);
current_display->next_shader_flags = GF_TEXTURE; current_display->next_shader_flags = GF_TEXTURE;
current_display->set_all(0); current_display->set_all(0, 0);
glhr::set_depthtest(false); glhr::set_depthtest(false);
current_display->set_viewport(0); current_display->set_viewport(0);
current_display->set_mask(0); current_display->set_mask(0);

View File

@ -7,12 +7,12 @@ mkdir -p app/src/main/res/raw/
#do cp ../music/hr3-$x.ogg app/src/main/res/raw/$x.ogg #do cp ../music/hr3-$x.ogg app/src/main/res/raw/$x.ogg
#done #done
# make sure that language-data.cpp is generated # make sure autohdr.h is generated
if [ ! -f ../language-data.cpp ]; then # language-data.cpp is a make dependency of autohdr.h, so it's generated as well
echo "File language-data.cpp not found! Trying to compile and run langen" if [ ! -f ../autohdr.h ]; then
cd .. echo "generating autohdr.h..."
g++ langen.cpp -o langen LAST_PWD=$(pwd); cd ..
./langen > language-data.cpp make -f Makefile.simple autohdr.h
ls -l langen language-data.cpp cd $LAST_PWD
cd hyperroid
fi fi

Binary file not shown.

74
hyperroid/gradlew vendored Normal file → Executable file
View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env sh
############################################################################## ##############################################################################
## ##
@ -6,12 +6,30 @@
## ##
############################################################################## ##############################################################################
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. # Attempt to set APP_HOME
DEFAULT_JVM_OPTS="" # Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle" APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"` APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
# Use the maximum available, or set MAX_FD != -1 to use that value. # Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum" MAX_FD="maximum"
@ -30,6 +48,7 @@ die ( ) {
cygwin=false cygwin=false
msys=false msys=false
darwin=false darwin=false
nonstop=false
case "`uname`" in case "`uname`" in
CYGWIN* ) CYGWIN* )
cygwin=true cygwin=true
@ -40,31 +59,11 @@ case "`uname`" in
MINGW* ) MINGW* )
msys=true msys=true
;; ;;
NONSTOP* )
nonstop=true
;;
esac esac
# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >&-
APP_HOME="`pwd -P`"
cd "$SAVED" >&-
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM. # Determine the Java command to use to start the JVM.
@ -90,7 +89,7 @@ location of your Java installation."
fi fi
# Increase the maximum file descriptors if we can. # Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n` MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
@ -114,6 +113,7 @@ fi
if $cygwin ; then if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"` APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath # We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
@ -154,11 +154,19 @@ if $cygwin ; then
esac esac
fi fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules # Escape application args
function splitJvmOpts() { save () {
JVM_OPTS=("$@") for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
} }
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS APP_ARGS=$(save "$@")
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" # Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi
exec "$JAVACMD" "$@"

14
hyperroid/gradlew.bat vendored
View File

@ -8,14 +8,14 @@
@rem Set local scope for the variables with windows NT shell @rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal if "%OS%"=="Windows_NT" setlocal
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DIRNAME=%~dp0 set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=. if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0 set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME% set APP_HOME=%DIRNAME%
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
@rem Find java.exe @rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome if defined JAVA_HOME goto findJavaFromJavaHome
@ -46,10 +46,9 @@ echo location of your Java installation.
goto fail goto fail
:init :init
@rem Get command-line arguments, handling Windowz variants @rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args :win9xME_args
@rem Slurp the command line arguments. @rem Slurp the command line arguments.
@ -60,11 +59,6 @@ set _SKIP=2
if "x%~1" == "x" goto execute if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%* set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute :execute
@rem Setup the command line @rem Setup the command line

View File

@ -250,7 +250,7 @@ EX void mobile_draw(MOBPAR_FORMAL) {
if(h < rad*SKIPFAC) { lmouseover = cwt.at; mousedest.d = -1; } if(h < rad*SKIPFAC) { lmouseover = cwt.at; mousedest.d = -1; }
else { else {
double d = vid.revcontrol ? -1 : 1; double d = vid.revcontrol ? -1 : 1;
mouseh = hpxy(dx * d / rad, dy * d / rad); mouseh = shiftless(hpxy(dx * d / rad, dy * d / rad));
calcMousedest(); calcMousedest();
} }
} }
@ -270,7 +270,7 @@ EX void mobile_draw(MOBPAR_FORMAL) {
inmenu = isize(screens) > 1; inmenu = isize(screens) > 1;
if(!inmenu && vid.stereo_mode == sLR && ors::mode) if(!inmenu && vid.stereo_mode == sLR && ors::mode)
mousex = vid.xres/2, mousey = vid.yres/2, mouseh = sphereflip * C0; mousex = vid.xres/2, mousey = vid.yres/2, mouseh = shiftless(sphereflip * C0);
frames++; frames++;
models::configure(); models::configure();
@ -352,7 +352,7 @@ EX void mobile_draw(MOBPAR_FORMAL) {
#if CAP_RUG #if CAP_RUG
if(andmode == 1 && normal_reaction && rug::rugged && clicked) if(andmode == 1 && normal_reaction && rug::rugged && clicked)
rug::move_forward((ticks - lticks_rug) / 2500.); rug::finger_on(2, (ticks - lticks_rug) / 2500.);
#endif #endif
lticks_rug = ticks; lticks_rug = ticks;

View File

@ -446,7 +446,9 @@ EX void make_air() {
if(vid.antialias & AA_LINES) if(vid.antialias & AA_LINES)
glEnable(GL_LINE_SMOOTH); glEnable(GL_LINE_SMOOTH);
#if CAP_SDL
if(anyshiftclick) IMAGESAVE(airbuf->render(), "air.png"); if(anyshiftclick) IMAGESAVE(airbuf->render(), "air.png");
#endif
rb.reset(); rb.reset();
} }

View File

@ -843,7 +843,9 @@ int surface_args() {
} }
#endif #endif
#if CAP_COMMANDLINE
auto surface_hook = addHook(hooks_args, 100, surface_args); auto surface_hook = addHook(hooks_args, 100, surface_args);
#endif
void display_coverage() { void display_coverage() {