From de02724219c72c6f1deb358c934d05a2e5e9f5c7 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Mon, 21 Jan 2019 02:07:44 +0000 Subject: [PATCH 001/175] Add .gitlab-ci.yml --- .gitlab-ci.yml | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..f7eb815 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,50 @@ +image: rabis/qt:5.9-desktop + +before_script: + - sudo apt install --no-install-recommends upx zip + - qmake --version + - ./scripts/configure_ubuntu.sh + +build ubuntu x86_64: + stage: build + tags: + - ubuntu + - x86_64 + script: + - qmake + - make -j4 + - upx --lzma -9 --force bin/Attorney_Online + +deploy: + stage: deploy + tags: + - ubuntu + - x86_64 + script: + - mkdir artifact + - cd artifact + + # Base folder + - mkdir base + - mkdir base/themes + - cp -a ../base/themes/default base/themes/ + - cp -a ../base/config.ini base/config.sample.ini + - cp -a ../base/serverlist.txt base/serverlist.sample.txt + + # Miscellaneous files + - cp -a ../README.md README.md.txt + - cp -a ../LICENSE.MIT LICENSE.txt + + # Shared libraries + - cp -a ../lib/* . + + # Platform-specific + - cp -a ../bin/Attorney_Online . + - echo "#!/bin/sh" >> ./run.sh + - echo "LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ./Attorney_Online" >> ./run.sh + - chmod +x ./run.sh + + # Zipping + # zip -r -9 -l Attorney_Online_$(git describe --tags)_linux_x86_64.zip . + - tar cavf Attorney_Online_$(git describe --tags)_x64.tar.xz * + - echo "Deployment completed - can we move on with the script now?" \ No newline at end of file From 429b55227e0c9b5fba05c89e02ed39953ba4589b Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Mon, 21 Jan 2019 02:19:17 +0000 Subject: [PATCH 002/175] Fix tags in .gitlab-ci.yml --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f7eb815..c3bff37 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,10 +5,10 @@ before_script: - qmake --version - ./scripts/configure_ubuntu.sh -build ubuntu x86_64: +build linux x86_64: stage: build tags: - - ubuntu + - linux - x86_64 script: - qmake @@ -18,7 +18,7 @@ build ubuntu x86_64: deploy: stage: deploy tags: - - ubuntu + - linux - x86_64 script: - mkdir artifact From c3e75f205f076f7a87e10942c24b4272cca833cd Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Mon, 21 Jan 2019 02:22:33 +0000 Subject: [PATCH 003/175] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c3bff37..e4176f7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,8 +8,8 @@ before_script: build linux x86_64: stage: build tags: + - docker - linux - - x86_64 script: - qmake - make -j4 @@ -18,8 +18,8 @@ build linux x86_64: deploy: stage: deploy tags: + - docker - linux - - x86_64 script: - mkdir artifact - cd artifact From deee5aad76e1e626a529a1480d94a1c4510d2055 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Mon, 21 Jan 2019 02:23:06 +0000 Subject: [PATCH 004/175] Fix Docker image name in .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e4176f7..aaaecdd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: rabis/qt:5.9-desktop +image: rabits/qt:5.9-desktop before_script: - sudo apt install --no-install-recommends upx zip From 0f61d8fcee9b4dda16a9851cd1fa6661b060240e Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Mon, 21 Jan 2019 02:25:01 +0000 Subject: [PATCH 005/175] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index aaaecdd..15f039c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ image: rabits/qt:5.9-desktop before_script: - - sudo apt install --no-install-recommends upx zip + - sudo apt-get install --no-install-recommends -y upx zip - qmake --version - ./scripts/configure_ubuntu.sh From 9f816e16fd59dc0d84b0f8e2c19e6cedc3971e24 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Mon, 21 Jan 2019 02:26:41 +0000 Subject: [PATCH 006/175] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 15f039c..696ea52 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ image: rabits/qt:5.9-desktop before_script: - - sudo apt-get install --no-install-recommends -y upx zip + - sudo apt-get install --no-install-recommends -y upx zip unzip - qmake --version - ./scripts/configure_ubuntu.sh From a37212ae7cc483220dc3790fb8800c0a009adce2 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Mon, 21 Jan 2019 02:29:21 +0000 Subject: [PATCH 007/175] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 696ea52..01ee7da 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,6 +3,7 @@ image: rabits/qt:5.9-desktop before_script: - sudo apt-get install --no-install-recommends -y upx zip unzip - qmake --version + - mkdir lib - ./scripts/configure_ubuntu.sh build linux x86_64: From 15247eeb767f35b9257c69335482c0676e982498 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Mon, 21 Jan 2019 02:33:22 +0000 Subject: [PATCH 008/175] Update .gitlab-ci.yml --- .gitlab-ci.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 01ee7da..9381c87 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,10 +1,12 @@ image: rabits/qt:5.9-desktop before_script: - - sudo apt-get install --no-install-recommends -y upx zip unzip + - echo Current working directory is $(pwd) - qmake --version - - mkdir lib - - ./scripts/configure_ubuntu.sh + - sudo apt-get install --no-install-recommends -y upx zip unzip + - cd scripts + - ./configure_ubuntu.sh + - cd .. build linux x86_64: stage: build From 032ba33ecff1b108fb1c12d06c14e26d86b21a60 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Mon, 21 Jan 2019 02:43:57 +0000 Subject: [PATCH 009/175] Update Attorney_Online.pro for C++14 --- Attorney_Online.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index 39366c0..c0bc4ab 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -14,7 +14,7 @@ SOURCES += $$files($$PWD/src/*.cpp) HEADERS += $$files($$PWD/include/*.h) LIBS += -L$$PWD/lib -lbass -ldiscord-rpc -CONFIG += c++11 +CONFIG += c++14 RESOURCES += resources.qrc From 291206587013c1c565563cb630d5ab0db2281b63 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Mon, 21 Jan 2019 02:44:27 +0000 Subject: [PATCH 010/175] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9381c87..533533f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,6 +3,7 @@ image: rabits/qt:5.9-desktop before_script: - echo Current working directory is $(pwd) - qmake --version + - gcc --version - sudo apt-get install --no-install-recommends -y upx zip unzip - cd scripts - ./configure_ubuntu.sh From 4860be3cdf27662a27bc732ddf120b0301aa0663 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Mon, 21 Jan 2019 02:43:57 +0000 Subject: [PATCH 011/175] Update Attorney_Online.pro for C++14 (cherry picked from commit 032ba33ecff1b108fb1c12d06c14e26d86b21a60) --- Attorney_Online.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index 39366c0..c0bc4ab 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -14,7 +14,7 @@ SOURCES += $$files($$PWD/src/*.cpp) HEADERS += $$files($$PWD/include/*.h) LIBS += -L$$PWD/lib -lbass -ldiscord-rpc -CONFIG += c++11 +CONFIG += c++14 RESOURCES += resources.qrc From 9008ec8d9d41e8ce523ecad5ad310fed2dfb3d8c Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Mon, 21 Jan 2019 02:49:00 +0000 Subject: [PATCH 012/175] Remove constexpr from aoapplication.h --- include/aoapplication.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/aoapplication.h b/include/aoapplication.h index 44aef7a..e698030 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -94,9 +94,9 @@ public: //////////////////versioning/////////////// - constexpr int get_release() const { return RELEASE; } - constexpr int get_major_version() const { return MAJOR_VERSION; } - constexpr int get_minor_version() const { return MINOR_VERSION; } + int get_release() const { return RELEASE; } + int get_major_version() const { return MAJOR_VERSION; } + int get_minor_version() const { return MINOR_VERSION; } QString get_version_string(); /////////////////////////////////////////// From 21c9632de0e7132013291c22bff9117fac4f6c70 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Mon, 21 Jan 2019 03:06:30 +0000 Subject: [PATCH 013/175] Add cache and artifacts to .gitlab-ci.yml --- .gitlab-ci.yml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 533533f..b9c966d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,10 @@ image: rabits/qt:5.9-desktop +cache: + key: ${CI_COMMIT_REF_SLUG} + paths: + - lib/ + before_script: - echo Current working directory is $(pwd) - qmake --version @@ -18,9 +23,14 @@ build linux x86_64: - qmake - make -j4 - upx --lzma -9 --force bin/Attorney_Online + artifacts: + paths: + - bin/ deploy: stage: deploy + dependencies: + - build linux x86_64 tags: - docker - linux @@ -50,5 +60,10 @@ deploy: # Zipping # zip -r -9 -l Attorney_Online_$(git describe --tags)_linux_x86_64.zip . - - tar cavf Attorney_Online_$(git describe --tags)_x64.tar.xz * - - echo "Deployment completed - can we move on with the script now?" \ No newline at end of file + - mkdir ../zip + - tar cavf ../zip/Attorney_Online_$(git describe --tags)_x64.tar.xz * + - sha1sum ../zip/* + + artifacts: + paths: + - zip/ \ No newline at end of file From 9c895ae6c4410f6b352986481f47cff59993a819 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Fri, 25 Jan 2019 02:13:49 +0000 Subject: [PATCH 014/175] Add Windows static target to .gitlab-ci.yml (incomplete) --- .gitlab-ci.yml | 73 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 56 insertions(+), 17 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b9c966d..f1ba670 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,3 @@ -image: rabits/qt:5.9-desktop - cache: key: ${CI_COMMIT_REF_SLUG} paths: @@ -15,6 +13,7 @@ before_script: - cd .. build linux x86_64: + image: rabits/qt:5.9-desktop stage: build tags: - docker @@ -27,7 +26,35 @@ build linux x86_64: paths: - bin/ -deploy: +build windows i686: + image: fffaraz/qt + stage: build + tags: + - docker + - linux + script: + - qmake + - make -j4 + - upx --lzma -9 --force bin/Attorney_Online.exe + +# Base folder +.deploy_base: &deploy_base + - mkdir base + - mkdir base/themes + - cp -a ../base/themes/default base/themes/ + - cp -a ../base/config.ini base/config.sample.ini + - cp -a ../base/serverlist.txt base/serverlist.sample.txt + +# Miscellaneous files +.deploy_misc: &deploy_misc + - cp -a ../README.md README.md.txt + - cp -a ../LICENSE.MIT LICENSE.txt + +# Shared libraries +.deploy_libs: &deploy_libs + - cp -a ../lib/* . + +deploy linux: stage: deploy dependencies: - build linux x86_64 @@ -37,20 +64,9 @@ deploy: script: - mkdir artifact - cd artifact - - # Base folder - - mkdir base - - mkdir base/themes - - cp -a ../base/themes/default base/themes/ - - cp -a ../base/config.ini base/config.sample.ini - - cp -a ../base/serverlist.txt base/serverlist.sample.txt - - # Miscellaneous files - - cp -a ../README.md README.md.txt - - cp -a ../LICENSE.MIT LICENSE.txt - - # Shared libraries - - cp -a ../lib/* . + - *deploy_base + - *deploy_misc + - *deploy_libs # Platform-specific - cp -a ../bin/Attorney_Online . @@ -63,7 +79,30 @@ deploy: - mkdir ../zip - tar cavf ../zip/Attorney_Online_$(git describe --tags)_x64.tar.xz * - sha1sum ../zip/* + artifacts: + paths: + - zip/ +deploy windows: + stage: deploy + dependencies: + - build windows i686 + tags: + - docker + - linux + script: + - mkdir artifact + - cd artifact + - *deploy_base + - *deploy_misc + - *deploy_libs + + # Platform-specific + - cp -a ../bin/Attorney_Online.exe . + + # Zipping + # -r: recursive; -9: max compression; -l: convert to CR LF + - zip -r -9 -l Attorney_Online_$(git describe --tags)_windows_i386.zip . artifacts: paths: - zip/ \ No newline at end of file From 5fa37e2557513550ab747f2a15a58bb4a7d130b7 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Wed, 6 Feb 2019 20:45:28 +0000 Subject: [PATCH 015/175] Try to fix anchors in .gitlab-ci.yml --- .gitlab-ci.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f1ba670..13f091d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,21 +38,21 @@ build windows i686: - upx --lzma -9 --force bin/Attorney_Online.exe # Base folder -.deploy_base: &deploy_base - - mkdir base - - mkdir base/themes - - cp -a ../base/themes/default base/themes/ - - cp -a ../base/config.ini base/config.sample.ini - - cp -a ../base/serverlist.txt base/serverlist.sample.txt +.deploy_base: &deploy_base | + mkdir base + mkdir base/themes + cp -a ../base/themes/default base/themes/ + cp -a ../base/config.ini base/config.sample.ini + cp -a ../base/serverlist.txt base/serverlist.sample.txt # Miscellaneous files -.deploy_misc: &deploy_misc - - cp -a ../README.md README.md.txt - - cp -a ../LICENSE.MIT LICENSE.txt +.deploy_misc: &deploy_misc | + cp -a ../README.md README.md.txt + cp -a ../LICENSE.MIT LICENSE.txt # Shared libraries -.deploy_libs: &deploy_libs - - cp -a ../lib/* . +.deploy_libs: &deploy_libs | + cp -a ../lib/* . deploy linux: stage: deploy From 8a5be72f913b75403387485e299ea306a81c24e9 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Wed, 6 Feb 2019 20:47:41 +0000 Subject: [PATCH 016/175] Don't use sudo in .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 13f091d..b40d525 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,7 +7,7 @@ before_script: - echo Current working directory is $(pwd) - qmake --version - gcc --version - - sudo apt-get install --no-install-recommends -y upx zip unzip + - apt-get install --no-install-recommends -y upx zip unzip - cd scripts - ./configure_ubuntu.sh - cd .. From 72dbc4f3ae160d273649f6596ee12221f47a4003 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Wed, 6 Feb 2019 22:42:47 +0000 Subject: [PATCH 017/175] Use a locally-sourced image for Windows builds --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b40d525..198ceab 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,9 +5,10 @@ cache: before_script: - echo Current working directory is $(pwd) + - echo Current user is $(whoami) - qmake --version - gcc --version - - apt-get install --no-install-recommends -y upx zip unzip + - sudo apt-get install --no-install-recommends -y upx zip unzip - cd scripts - ./configure_ubuntu.sh - cd .. @@ -27,7 +28,7 @@ build linux x86_64: - bin/ build windows i686: - image: fffaraz/qt + image: ${CI_REGISTRY_IMAGE}/builder-windows-i686 stage: build tags: - docker From 565f18352424d89ef0ab02ec9b3a12b5c7e703be Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Wed, 6 Feb 2019 22:50:14 +0000 Subject: [PATCH 018/175] Remove version commands from before_script --- .gitlab-ci.yml | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 198ceab..f8974a0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,13 +5,7 @@ cache: before_script: - echo Current working directory is $(pwd) - - echo Current user is $(whoami) - - qmake --version - - gcc --version - sudo apt-get install --no-install-recommends -y upx zip unzip - - cd scripts - - ./configure_ubuntu.sh - - cd .. build linux x86_64: image: rabits/qt:5.9-desktop @@ -20,6 +14,13 @@ build linux x86_64: - docker - linux script: + - qmake --version + - gcc --version + + - cd scripts + - ./configure_ubuntu.sh + - cd .. + - qmake - make -j4 - upx --lzma -9 --force bin/Attorney_Online @@ -34,8 +35,18 @@ build windows i686: - docker - linux script: + # Extract BASS + - mkdir bass + - curl http://www.un4seen.com/files/bass24.zip -o bass.zip + - unzip bass.zip + - cp bass.dll ../../lib + - cd .. + + # Build - qmake - make -j4 + + # Post-processing - upx --lzma -9 --force bin/Attorney_Online.exe # Base folder From a815bb67f90fa2e8866f5904741f8056c2f2e596 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Wed, 6 Feb 2019 22:56:03 +0000 Subject: [PATCH 019/175] Move yet another line out of before_script --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f8974a0..7f2a517 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,6 @@ cache: before_script: - echo Current working directory is $(pwd) - - sudo apt-get install --no-install-recommends -y upx zip unzip build linux x86_64: image: rabits/qt:5.9-desktop @@ -16,6 +15,7 @@ build linux x86_64: script: - qmake --version - gcc --version + - sudo apt-get install --no-install-recommends -y upx zip unzip - cd scripts - ./configure_ubuntu.sh From 1008a2e8ac38f89c4c320b25c21afbb5912d24c7 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Wed, 6 Feb 2019 23:00:52 +0000 Subject: [PATCH 020/175] Use TARGET_SPEC in Windows build --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7f2a517..74ab320 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -43,7 +43,7 @@ build windows i686: - cd .. # Build - - qmake + - /opt/mxe/usr/${TARGET_SPEC}/qt5/bin/qmake - make -j4 # Post-processing From c47521baa3d04af86b886506d5d4f23fe23fa86d Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Wed, 6 Feb 2019 23:03:20 +0000 Subject: [PATCH 021/175] Missing `cd bass` --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 74ab320..1780a60 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -37,6 +37,7 @@ build windows i686: script: # Extract BASS - mkdir bass + - cd bass - curl http://www.un4seen.com/files/bass24.zip -o bass.zip - unzip bass.zip - cp bass.dll ../../lib From 470e0f1902c664f8c192e8251cd123aaa0cf4b2e Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Wed, 6 Feb 2019 23:09:28 +0000 Subject: [PATCH 022/175] One less `..` on copying bass.dll .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1780a60..9307863 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -40,7 +40,7 @@ build windows i686: - cd bass - curl http://www.un4seen.com/files/bass24.zip -o bass.zip - unzip bass.zip - - cp bass.dll ../../lib + - cp bass.dll ../lib - cd .. # Build From 21465def688370eb8a4132352ae789e7a1fca9cb Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Wed, 6 Feb 2019 23:16:28 +0000 Subject: [PATCH 023/175] Add bin/ folder as artifact on Windows target --- .gitlab-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9307863..7b8e68a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -49,6 +49,9 @@ build windows i686: # Post-processing - upx --lzma -9 --force bin/Attorney_Online.exe + artifacts: + paths: + - bin/ # Base folder .deploy_base: &deploy_base | From 3cbbcd9a5c7a4574fb1edd1e7075345592c3dd75 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Wed, 6 Feb 2019 23:23:55 +0000 Subject: [PATCH 024/175] Add zip dependency to Windows deploy --- .gitlab-ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7b8e68a..5f10805 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,7 +15,7 @@ build linux x86_64: script: - qmake --version - gcc --version - - sudo apt-get install --no-install-recommends -y upx zip unzip + - sudo apt-get install --no-install-recommends -y upx unzip - cd scripts - ./configure_ubuntu.sh @@ -107,6 +107,8 @@ deploy windows: - docker - linux script: + - sudo apt-get install --no-install-recommends -y zip + - mkdir artifact - cd artifact - *deploy_base From a453951aead4a4fdc2c5fca9965bb369d5587302 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Wed, 6 Feb 2019 23:28:54 +0000 Subject: [PATCH 025/175] Use apt-get instead of sudo apt-get on Windows deploy --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5f10805..8c9b249 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -107,7 +107,7 @@ deploy windows: - docker - linux script: - - sudo apt-get install --no-install-recommends -y zip + - apt-get install --no-install-recommends -y zip - mkdir artifact - cd artifact From 0dca4f14fefb9349c68b3afccec9e997be61a768 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Wed, 6 Feb 2019 23:36:03 +0000 Subject: [PATCH 026/175] Use ubuntu instead of ruby or whatever GitLab CI defaults to --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8c9b249..4f038f4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -100,6 +100,7 @@ deploy linux: - zip/ deploy windows: + image: ubuntu stage: deploy dependencies: - build windows i686 @@ -107,6 +108,7 @@ deploy windows: - docker - linux script: + - apt-get update - apt-get install --no-install-recommends -y zip - mkdir artifact From bc0e22464056f3e6e9ef11b7d841f673fe7dff31 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Wed, 6 Feb 2019 23:42:08 +0000 Subject: [PATCH 027/175] Fix final zip command in Windows deploy --- .gitlab-ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4f038f4..43809de 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -109,7 +109,7 @@ deploy windows: - linux script: - apt-get update - - apt-get install --no-install-recommends -y zip + - apt-get install --no-install-recommends -y zip git - mkdir artifact - cd artifact @@ -122,7 +122,9 @@ deploy windows: # Zipping # -r: recursive; -9: max compression; -l: convert to CR LF - - zip -r -9 -l Attorney_Online_$(git describe --tags)_windows_i386.zip . + - mkdir ../zip + - zip -r -9 -l ../zip/Attorney_Online_$(git describe --tags)_windows_i386.zip . + - sha1sum ../zip/* artifacts: paths: - zip/ \ No newline at end of file From 68f88350bf7c703b34f24bf3f78735753af877d4 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Thu, 7 Feb 2019 00:52:18 +0000 Subject: [PATCH 028/175] Granularize shared library deployment --- .gitlab-ci.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 43809de..3711c18 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -66,10 +66,6 @@ build windows i686: cp -a ../README.md README.md.txt cp -a ../LICENSE.MIT LICENSE.txt -# Shared libraries -.deploy_libs: &deploy_libs | - cp -a ../lib/* . - deploy linux: stage: deploy dependencies: @@ -82,9 +78,9 @@ deploy linux: - cd artifact - *deploy_base - *deploy_misc - - *deploy_libs # Platform-specific + - cp -a ../lib/*.so . - cp -a ../bin/Attorney_Online . - echo "#!/bin/sh" >> ./run.sh - echo "LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ./Attorney_Online" >> ./run.sh @@ -115,9 +111,9 @@ deploy windows: - cd artifact - *deploy_base - *deploy_misc - - *deploy_libs # Platform-specific + - cp -a ../lib/*.dll . - cp -a ../bin/Attorney_Online.exe . # Zipping From b8191f7745b70f3841f2dba90d6576f5d81cfe34 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Thu, 7 Feb 2019 20:03:22 +0000 Subject: [PATCH 029/175] Compile Linux build with Qt 5.4 instead of 5.9 --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3711c18..1e2836d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,7 +7,7 @@ before_script: - echo Current working directory is $(pwd) build linux x86_64: - image: rabits/qt:5.9-desktop + image: rabits/qt:5.4-desktop stage: build tags: - docker From a2bcf70d1ea56f25edd295c49a98bdd414f941fe Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Thu, 7 Feb 2019 20:14:31 +0000 Subject: [PATCH 030/175] Revert "Compile Linux build with Qt 5.4 instead of 5.9" This reverts commit b8191f7745b70f3841f2dba90d6576f5d81cfe34 --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1e2836d..3711c18 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,7 +7,7 @@ before_script: - echo Current working directory is $(pwd) build linux x86_64: - image: rabits/qt:5.4-desktop + image: rabits/qt:5.9-desktop stage: build tags: - docker From 0057ff03da5a2370705252b89561a46a97cfddb1 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Sat, 9 Feb 2019 02:47:39 +0000 Subject: [PATCH 031/175] Use latest Ubuntu for Linux builds --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3711c18..8efe154 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,15 +7,15 @@ before_script: - echo Current working directory is $(pwd) build linux x86_64: - image: rabits/qt:5.9-desktop + image: ubuntu stage: build tags: - docker - linux script: + - apt-get install --no-install-recommends -y qt5-default clang make git upx unzip - qmake --version - - gcc --version - - sudo apt-get install --no-install-recommends -y upx unzip + - clang --version - cd scripts - ./configure_ubuntu.sh From c755e3d97d714613486aab3a7bd837b015067955 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Sat, 9 Feb 2019 02:49:57 +0000 Subject: [PATCH 032/175] apt-get update --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8efe154..3aa3ee2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,6 +13,7 @@ build linux x86_64: - docker - linux script: + - apt-get update - apt-get install --no-install-recommends -y qt5-default clang make git upx unzip - qmake --version - clang --version From 59f72ffa65a1634e9f4b27d6be88826c59bf1754 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Sat, 9 Feb 2019 02:56:10 +0000 Subject: [PATCH 033/175] Use clang-linux mkspec --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3aa3ee2..35a142a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,7 +14,7 @@ build linux x86_64: - linux script: - apt-get update - - apt-get install --no-install-recommends -y qt5-default clang make git upx unzip + - apt-get install --no-install-recommends -y qt5-default clang make git sudo curl upx unzip - qmake --version - clang --version @@ -22,7 +22,7 @@ build linux x86_64: - ./configure_ubuntu.sh - cd .. - - qmake + - qmake -spec clang-linux - make -j4 - upx --lzma -9 --force bin/Attorney_Online artifacts: From c8a3fd6560ced28c96f13c2b4c062a1ac93f4880 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Sat, 9 Feb 2019 03:10:39 +0000 Subject: [PATCH 034/175] clang-linux -> linux-clang --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 35a142a..41456e5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,7 +14,7 @@ build linux x86_64: - linux script: - apt-get update - - apt-get install --no-install-recommends -y qt5-default clang make git sudo curl upx unzip + - apt-get install --no-install-recommends -y qt5-default clang make git sudo curl ca-certificates pkg-config upx unzip - qmake --version - clang --version @@ -22,7 +22,7 @@ build linux x86_64: - ./configure_ubuntu.sh - cd .. - - qmake -spec clang-linux + - qmake -spec linux-clang - make -j4 - upx --lzma -9 --force bin/Attorney_Online artifacts: From 830dba62a16c748761c4cb498e58a336f4d288ff Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Sat, 9 Feb 2019 03:13:08 +0000 Subject: [PATCH 035/175] Add qtmultimedia5-dev --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 41456e5..bf3a9bf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,7 +14,7 @@ build linux x86_64: - linux script: - apt-get update - - apt-get install --no-install-recommends -y qt5-default clang make git sudo curl ca-certificates pkg-config upx unzip + - apt-get install --no-install-recommends -y qt5-default qtmultimedia5-dev clang make git sudo curl ca-certificates pkg-config upx unzip - qmake --version - clang --version From 3b718808b76f1970eb029f2c48bd4f33ae233052 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Sat, 9 Feb 2019 04:42:26 +0000 Subject: [PATCH 036/175] Move Ubuntu configure script to .gitlab-ci.yml Sorry, Omni. I'll probably move everything back to shell scripts in the future. --- .gitlab-ci.yml | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bf3a9bf..a94d28c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,17 +13,45 @@ build linux x86_64: - docker - linux script: + # Install dependencies - apt-get update - - apt-get install --no-install-recommends -y qt5-default qtmultimedia5-dev clang make git sudo curl ca-certificates pkg-config upx unzip + - > + apt-get install --no-install-recommends -y qt5-default qtmultimedia5-dev + clang make git sudo curl ca-certificates pkg-config upx unzip + + # Print versions - qmake --version - clang --version - - cd scripts - - ./configure_ubuntu.sh + # Extract BASS + - mkdir bass + - cd bass + - curl http://www.un4seen.com/files/bass24-linux.zip -o bass.zip + - unzip bass.zip + - cp x64/libbass.so ../lib - cd .. + # Extract Discord RPC + - mkdir discord-rpc + - cd discord-rpc + - curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-linux.zip -o discord_rpc_linux.zip + - unzip discord_rpc_linux.zip + - cp discord-rpc/linux-dynamic/lib/libdiscord-rpc.so ../lib + - cd .. + + # Extract QtApng + - mkdir qtapng + - cd qtapng + - curl -L https://github.com/Skycoder42/QtApng/releases/download/1.1.0-5/build_clang_64_5.12.0.tar.xz -o apng.tar.xz + - tar -xvf apng.tar.xz + - cp clang_64/plugins/imageformats/libqapng.so ../lib + - cd .. + + # Build - qmake -spec linux-clang - make -j4 + + # Post-processing - upx --lzma -9 --force bin/Attorney_Online artifacts: paths: @@ -61,7 +89,7 @@ build windows i686: cp -a ../base/themes/default base/themes/ cp -a ../base/config.ini base/config.sample.ini cp -a ../base/serverlist.txt base/serverlist.sample.txt - + # Miscellaneous files .deploy_misc: &deploy_misc | cp -a ../README.md README.md.txt @@ -84,7 +112,7 @@ deploy linux: - cp -a ../lib/*.so . - cp -a ../bin/Attorney_Online . - echo "#!/bin/sh" >> ./run.sh - - echo "LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ./Attorney_Online" >> ./run.sh + - echo "LD_LIBRARY_PATH=.:\$LD_LIBRARY_PATH ./Attorney_Online" >> ./run.sh - chmod +x ./run.sh # Zipping From 757da1624c660496e6cb858285be85c4fb4974b1 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Sat, 9 Feb 2019 04:51:44 +0000 Subject: [PATCH 037/175] Oh, so apparently the clang QtApng builds are for Mac... --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a94d28c..b010ba5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -42,9 +42,9 @@ build linux x86_64: # Extract QtApng - mkdir qtapng - cd qtapng - - curl -L https://github.com/Skycoder42/QtApng/releases/download/1.1.0-5/build_clang_64_5.12.0.tar.xz -o apng.tar.xz + - curl -L https://github.com/Skycoder42/QtApng/releases/download/1.1.0-5/build_gcc_64_5.12.0.tar.xz -o apng.tar.xz - tar -xvf apng.tar.xz - - cp clang_64/plugins/imageformats/libqapng.so ../lib + - cp gcc_64/plugins/imageformats/libqapng.so ../lib - cd .. # Build From 6261be1dc82e3f113a0392c2cf93449d784cfb08 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Sun, 10 Feb 2019 01:04:28 +0000 Subject: [PATCH 038/175] Add Travis script for Mac builds --- .travis.yml | 11 +++++++++++ scripts/macos_build.sh | 30 ++++++++++++++++++++++++++++++ scripts/macos_post_build.sh | 2 -- 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 .travis.yml create mode 100644 scripts/macos_build.sh diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..855b57d --- /dev/null +++ b/.travis.yml @@ -0,0 +1,11 @@ +language: cpp +os: osx + +before_install: + - brew update + - brew install qt5 + +script: + # XXX: please chmod +x the shell script. + - sh ./scripts/macos_build.sh + - ./scripts/macos_post_build.sh diff --git a/scripts/macos_build.sh b/scripts/macos_build.sh new file mode 100644 index 0000000..150c338 --- /dev/null +++ b/scripts/macos_build.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +set -Eeuxo pipefail + +export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig +export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opt/openssl/lib/pkgconfig +export PATH=$PATH:/usr/local/opt/qt5/bin:/usr/local/bin + +mkdir bass +cd bass +curl http://www.un4seen.com/files/bass24-osx.zip -o bass.zip +unzip bass.zip +cp libbass.dylib ../lib +cd .. + +mkdir discord-rpc +cd discord-rpc +curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-osx.zip +unzip discord_rpc_osx.zip +cp discord-rpc/osx-dynamic/lib/libdiscord-rpc.a ../lib +cd .. + +mkdir qtapng +cd qtapng +curl -L https://github.com/Skycoder42/QtApng/releases/download/1.1.0-5/build_clang_64_5.12.0.tar.xz -o apng.tar.xz +tar -xvf apng.tar.xz +cp clang_64/plugins/imageformats/libqapng.dylib ../lib +cd .. + +qmake && make -j2 diff --git a/scripts/macos_post_build.sh b/scripts/macos_post_build.sh index d69da0b..700361e 100644 --- a/scripts/macos_post_build.sh +++ b/scripts/macos_post_build.sh @@ -2,8 +2,6 @@ DST_FOLDER="./bin/Attorney_Online.app/Contents/Frameworks" -cd .. - mkdir $DST_FOLDER cp ./lib/libbass.dylib $DST_FOLDER From f23d163a277f8546953c2f5c3e334d2e09ec21f6 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Sun, 10 Feb 2019 01:52:16 +0000 Subject: [PATCH 039/175] Okay, let's try this again... --- .travis.yml | 4 ++-- scripts/macos_build.sh | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 855b57d..e1fcb36 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,5 +7,5 @@ before_install: script: # XXX: please chmod +x the shell script. - - sh ./scripts/macos_build.sh - - ./scripts/macos_post_build.sh + - bash ./scripts/macos_build.sh + - bash ./scripts/macos_post_build.sh diff --git a/scripts/macos_build.sh b/scripts/macos_build.sh index 150c338..86605c5 100644 --- a/scripts/macos_build.sh +++ b/scripts/macos_build.sh @@ -1,9 +1,8 @@ #!/bin/sh -set -Eeuxo pipefail +set -Eexo pipefail -export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig -export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opt/openssl/lib/pkgconfig +export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/local/opt/openssl/lib/pkgconfig export PATH=$PATH:/usr/local/opt/qt5/bin:/usr/local/bin mkdir bass From 200008fd81d305ea1641e4b643119071dc3a08a7 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Sun, 10 Feb 2019 02:00:13 +0000 Subject: [PATCH 040/175] Actually save the discord-rpc zip --- scripts/macos_build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/macos_build.sh b/scripts/macos_build.sh index 86605c5..efe0f7c 100644 --- a/scripts/macos_build.sh +++ b/scripts/macos_build.sh @@ -14,7 +14,7 @@ cd .. mkdir discord-rpc cd discord-rpc -curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-osx.zip +curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-osx.zip -o discord_rpc_osx.zip unzip discord_rpc_osx.zip cp discord-rpc/osx-dynamic/lib/libdiscord-rpc.a ../lib cd .. From f05c3defcfc1cd64147c2f3c7de0ca3c44140050 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Sun, 10 Feb 2019 02:08:48 +0000 Subject: [PATCH 041/175] Keep fixing issues with the Mac build script --- .travis.yml | 7 ++++--- scripts/macos_build.sh | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index e1fcb36..dfde416 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,10 @@ language: cpp os: osx -before_install: - - brew update - - brew install qt5 +addons: + homebrew: + packages: + - qt5 script: # XXX: please chmod +x the shell script. diff --git a/scripts/macos_build.sh b/scripts/macos_build.sh index efe0f7c..ebe93d3 100644 --- a/scripts/macos_build.sh +++ b/scripts/macos_build.sh @@ -16,7 +16,7 @@ mkdir discord-rpc cd discord-rpc curl -L https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-osx.zip -o discord_rpc_osx.zip unzip discord_rpc_osx.zip -cp discord-rpc/osx-dynamic/lib/libdiscord-rpc.a ../lib +cp discord-rpc/osx-static/lib/libdiscord-rpc.a ../lib cd .. mkdir qtapng From e4c4ecb0fde4c26a8e8dd3719fe2a3401fa6b3fc Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Sun, 10 Feb 2019 02:19:12 +0000 Subject: [PATCH 042/175] Use CoreFoundation library --- Attorney_Online.pro | 1 + 1 file changed, 1 insertion(+) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index c0bc4ab..f4e4cd6 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -13,6 +13,7 @@ MOC_DIR = $$PWD/build SOURCES += $$files($$PWD/src/*.cpp) HEADERS += $$files($$PWD/include/*.h) LIBS += -L$$PWD/lib -lbass -ldiscord-rpc +macx:LIBS += -framework CoreFoundation CONFIG += c++14 From 09ff1755a0238cedf2411a315d1de76a372e3960 Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Sun, 10 Feb 2019 02:32:11 +0000 Subject: [PATCH 043/175] Add more frameworks --- Attorney_Online.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index f4e4cd6..e1961a0 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -13,7 +13,7 @@ MOC_DIR = $$PWD/build SOURCES += $$files($$PWD/src/*.cpp) HEADERS += $$files($$PWD/include/*.h) LIBS += -L$$PWD/lib -lbass -ldiscord-rpc -macx:LIBS += -framework CoreFoundation +macx:LIBS += -framework CoreFoundation -framework Foundation -framework CoreServices CONFIG += c++14 From 9a32aa6e849cab35710aaddd5e2323276e8eccfb Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Sun, 10 Feb 2019 02:45:10 +0000 Subject: [PATCH 044/175] Add BASSOPUS to all target platforms --- .gitlab-ci.yml | 6 ++++++ scripts/macos_build.sh | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b010ba5..928352f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,6 +29,9 @@ build linux x86_64: - curl http://www.un4seen.com/files/bass24-linux.zip -o bass.zip - unzip bass.zip - cp x64/libbass.so ../lib + - curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus.zip + - unzip bassopus.zip + - cp x64/libbassopus.so ../lib - cd .. # Extract Discord RPC @@ -70,6 +73,9 @@ build windows i686: - curl http://www.un4seen.com/files/bass24.zip -o bass.zip - unzip bass.zip - cp bass.dll ../lib + - curl http://www.un4seen.com/files/bassopus24.zip -o bassopus.zip + - unzip bassopus.zip + - cp bassopus.dll ../lib - cd .. # Build diff --git a/scripts/macos_build.sh b/scripts/macos_build.sh index ebe93d3..22e2d45 100644 --- a/scripts/macos_build.sh +++ b/scripts/macos_build.sh @@ -10,6 +10,10 @@ cd bass curl http://www.un4seen.com/files/bass24-osx.zip -o bass.zip unzip bass.zip cp libbass.dylib ../lib + +curl http://www.un4seen.com/files/bassopus24-osx.zip -o bassopus.zip +unzip bassopus.zip +cp libbassopus.dylib ../lib cd .. mkdir discord-rpc From 8c2eeca9d790959bc5f0d6f1baf57884088b2dc2 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 11 Mar 2019 01:27:08 +0100 Subject: [PATCH 045/175] update project file --- Attorney_Online.pro | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index c0bc4ab..c063740 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -12,7 +12,15 @@ MOC_DIR = $$PWD/build SOURCES += $$files($$PWD/src/*.cpp) HEADERS += $$files($$PWD/include/*.h) -LIBS += -L$$PWD/lib -lbass -ldiscord-rpc + + +LIBS += -L$$PWD/lib -ldiscord-rpc + +#AUDIO = BASS + +equals(AUDIO, "BASS") { +LIBS += -L$$PWD/lib -lbass +} CONFIG += c++14 From 2f759752b0dfbb2a21bb0eac3feb0d6222fa2615 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 12 Mar 2019 00:26:01 +0100 Subject: [PATCH 046/175] update gitignore so it leaves my base folder alone --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 6ac11d6..02a6b7f 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ base_override.h base-full/ +base/ bass.lib bin/ From 49938eea0f86e13639b072355e1bd97900662e4f Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 12 Mar 2019 00:26:40 +0100 Subject: [PATCH 047/175] makes all the bass stuff optional --- src/aoblipplayer.cpp | 7 ++++++- src/aomusicplayer.cpp | 6 ++++++ src/aooptionsdialog.cpp | 4 +++- src/aosfxplayer.cpp | 6 ++++++ src/courtroom.cpp | 11 +++++++++-- 5 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/aoblipplayer.cpp b/src/aoblipplayer.cpp index 74757c5..0a8b427 100644 --- a/src/aoblipplayer.cpp +++ b/src/aoblipplayer.cpp @@ -12,9 +12,11 @@ void AOBlipPlayer::set_blips(QString p_sfx) for (int n_stream = 0 ; n_stream < 5 ; ++n_stream) { + #ifdef BASSAUDIO BASS_StreamFree(m_stream_list[n_stream]); m_stream_list[n_stream] = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_UNICODE | BASS_ASYNCFILE); + #endif } set_volume(m_volume); @@ -28,10 +30,11 @@ void AOBlipPlayer::blip_tick() m_cycle = 0; HSTREAM f_stream = m_stream_list[f_cycle]; - + #ifdef BASSAUDIO if (ao_app->get_audio_output_device() != "default") BASS_ChannelSetDevice(f_stream, BASS_GetDevice()); BASS_ChannelPlay(f_stream, false); + #endif } void AOBlipPlayer::set_volume(int p_value) @@ -42,6 +45,8 @@ void AOBlipPlayer::set_volume(int p_value) for (int n_stream = 0 ; n_stream < 5 ; ++n_stream) { + #ifdef BASSAUDIO BASS_ChannelSetAttribute(m_stream_list[n_stream], BASS_ATTRIB_VOL, volume); + #endif } } diff --git a/src/aomusicplayer.cpp b/src/aomusicplayer.cpp index 997d82d..521fae9 100644 --- a/src/aomusicplayer.cpp +++ b/src/aomusicplayer.cpp @@ -8,11 +8,14 @@ AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app) AOMusicPlayer::~AOMusicPlayer() { + #ifdef BASSAUDIO BASS_ChannelStop(m_stream); + #endif } void AOMusicPlayer::play(QString p_song) { + #ifdef BASSAUDIO BASS_ChannelStop(m_stream); QString f_path = ao_app->get_music_path(p_song); @@ -24,11 +27,14 @@ void AOMusicPlayer::play(QString p_song) if (ao_app->get_audio_output_device() != "default") BASS_ChannelSetDevice(m_stream, BASS_GetDevice()); BASS_ChannelPlay(m_stream, false); +#endif } void AOMusicPlayer::set_volume(int p_value) { m_volume = p_value; float volume = m_volume / 100.0f; + #ifdef BASSAUDIO BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume); + #endif } diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp index cd69c76..0f6a054 100644 --- a/src/aooptionsdialog.cpp +++ b/src/aooptionsdialog.cpp @@ -199,6 +199,7 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_callwords_layout->addWidget(ui_callwords_explain_lbl); // The audio tab. + #ifdef BASSAUDIO ui_audio_tab = new QWidget(); ui_settings_tabs->addTab(ui_audio_tab, tr("Audio")); @@ -218,7 +219,7 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_audio_device_combobox = new QComboBox(ui_audio_widget); - // Let's fill out the combobox with the available audio devices. + // Let's fill out the combobox with the available audio devices. Or don't if there is no audio int a = 0; BASS_DEVICEINFO info; @@ -311,6 +312,7 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_blank_blips_cb->setChecked(p_ao_app->get_blank_blip()); ui_audio_layout->setWidget(7, QFormLayout::FieldRole, ui_blank_blips_cb); + #endif // The casing tab! ui_casing_tab = new QWidget(); diff --git a/src/aosfxplayer.cpp b/src/aosfxplayer.cpp index 7fe7987..869fa9b 100644 --- a/src/aosfxplayer.cpp +++ b/src/aosfxplayer.cpp @@ -9,6 +9,7 @@ AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) { + #ifdef BASSAUDIO BASS_ChannelStop(m_stream); QString misc_path = ""; @@ -36,16 +37,21 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) if (ao_app->get_audio_output_device() != "default") BASS_ChannelSetDevice(m_stream, BASS_GetDevice()); BASS_ChannelPlay(m_stream, false); +#endif } void AOSfxPlayer::stop() { + #ifdef BASSAUDIO BASS_ChannelStop(m_stream); + #endif } void AOSfxPlayer::set_volume(int p_value) { m_volume = p_value; float volume = p_value / 100.0f; + #ifdef BASSAUDIO BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume); + #endif } diff --git a/src/courtroom.cpp b/src/courtroom.cpp index be7629b..6a5379a 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -3,7 +3,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() { ao_app = p_ao_app; - + #ifdef BASSAUDIO // Change the default audio output device to be the one the user has given // in his config.ini file for now. int a = 0; @@ -28,6 +28,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() } } } + #endif keepalive_timer = new QTimer(this); keepalive_timer->start(60000); @@ -3498,23 +3499,29 @@ Courtroom::~Courtroom() delete blip_player; } + #if (defined (_WIN32) || defined (_WIN64)) void Courtroom::load_bass_opus_plugin() { + #ifdef BASSAUDIO BASS_PluginLoad("bassopus.dll", 0); + #endif } #elif (defined (LINUX) || defined (__linux__)) void Courtroom::load_bass_opus_plugin() { + #ifdef BASSAUDIO BASS_PluginLoad("libbassopus.so", 0); + #endif } #elif defined __APPLE__ void Courtroom::load_bass_opus_plugin() { QString libpath = ao_app->get_base_path() + "../../Frameworks/libbassopus.dylib"; QByteArray ba = libpath.toLocal8Bit(); - + #ifdef BASSAUDIO BASS_PluginLoad(ba.data(), 0); + #endif } #else #error This operating system is unsupported for bass plugins. From e4edb7e127b0513aec7ebe62da5c542ef6def7ce Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 12 Mar 2019 00:27:00 +0100 Subject: [PATCH 048/175] project rules where i can configure stuff --- Attorney_Online.pro | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index c063740..e5ea474 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -14,15 +14,21 @@ SOURCES += $$files($$PWD/src/*.cpp) HEADERS += $$files($$PWD/include/*.h) -LIBS += -L$$PWD/lib -ldiscord-rpc +LIBS += -L$$PWD/lib -#AUDIO = BASS +DISCORD = NO -equals(AUDIO, "BASS") { -LIBS += -L$$PWD/lib -lbass +equals(DISCORD, "YES") { +LIBS += -ldiscord-rpc +DEFINES += DISCORD } -CONFIG += c++14 +AUDIO += NO + +equals(AUDIO, "BASSAUDIO") { +LIBS += -lbass +DEFINES += BASSAUDIO +} RESOURCES += resources.qrc From 744c100159ff7b79e01c40ec57e42d37650d139b Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 12 Mar 2019 00:27:11 +0100 Subject: [PATCH 049/175] make discord optional --- src/discord_rich_presence.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/discord_rich_presence.cpp b/src/discord_rich_presence.cpp index 10f5833..0bb7f9f 100644 --- a/src/discord_rich_presence.cpp +++ b/src/discord_rich_presence.cpp @@ -4,6 +4,7 @@ namespace AttorneyOnline { Discord::Discord() { + #ifdef DISCORD DiscordEventHandlers handlers; std::memset(&handlers, 0, sizeof(handlers)); handlers = {}; @@ -18,15 +19,19 @@ Discord::Discord() }; qInfo() << "Initializing Discord RPC"; Discord_Initialize(APPLICATION_ID, &handlers, 1, nullptr); + #endif } Discord::~Discord() { + #ifdef DISCORD Discord_Shutdown(); + #endif } void Discord::state_lobby() { + #ifdef DISCORD DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; @@ -36,12 +41,13 @@ void Discord::state_lobby() presence.state = "In Lobby"; presence.details = "Idle"; Discord_UpdatePresence(&presence); + #endif } void Discord::state_server(std::string name, std::string server_id) { qDebug() << "Discord RPC: Setting server state"; - + #ifdef DISCORD DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; @@ -59,6 +65,7 @@ void Discord::state_server(std::string name, std::string server_id) this->server_name = name; this->timestamp = timestamp; Discord_UpdatePresence(&presence); + #endif } void Discord::state_character(std::string name) @@ -67,7 +74,7 @@ void Discord::state_character(std::string name) auto name_friendly = QString(name.c_str()).replace('_', ' ').toStdString(); const std::string playing_as = "Playing as " + name_friendly; qDebug() << "Discord RPC: Setting character state (" << playing_as.c_str() << ")"; - + #ifdef DISCORD DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; @@ -81,12 +88,13 @@ void Discord::state_character(std::string name) presence.smallImageKey = name_internal.c_str(); // presence.smallImageText = name_internal.c_str(); Discord_UpdatePresence(&presence); + #endif } void Discord::state_spectate() { qDebug() << "Discord RPC: Setting specator state"; - + #ifdef DISCORD DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; @@ -98,6 +106,7 @@ void Discord::state_spectate() presence.state = "Spectating"; Discord_UpdatePresence(&presence); + #endif } } From 8a23f1004027d3f3de9d97e55e9a97fd73f3eb74 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 12 Mar 2019 00:27:22 +0100 Subject: [PATCH 050/175] gcc didn't like that --- include/aoapplication.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/aoapplication.h b/include/aoapplication.h index 44aef7a..6c8039c 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -94,9 +94,9 @@ public: //////////////////versioning/////////////// - constexpr int get_release() const { return RELEASE; } - constexpr int get_major_version() const { return MAJOR_VERSION; } - constexpr int get_minor_version() const { return MINOR_VERSION; } + const int get_release() const { return RELEASE; } + const int get_major_version() const { return MAJOR_VERSION; } + const int get_minor_version() const { return MINOR_VERSION; } QString get_version_string(); /////////////////////////////////////////// From dbb05f2b4b0b32ae1b49735847211df6464c59af Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 12 Mar 2019 00:31:01 +0100 Subject: [PATCH 051/175] c++ 14 i guess this is important --- Attorney_Online.pro | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index e5ea474..357958f 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -30,6 +30,8 @@ LIBS += -lbass DEFINES += BASSAUDIO } +CONFIG += c++14 + RESOURCES += resources.qrc win32:RC_ICONS = resource/logo.ico From fced80661c1342e8622dba9f35c7db43d69e52a9 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 12 Mar 2019 00:46:27 +0100 Subject: [PATCH 052/175] looks like multimedia isn't really necessary --- Attorney_Online.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index 357958f..c2bd7e9 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -1,4 +1,4 @@ -QT += core gui widgets multimedia network +QT += core gui widgets network TARGET = Attorney_Online TEMPLATE = app From 92c54ba2ebee12a87360d00f2982a9083f06166d Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 12 Mar 2019 19:27:13 +0100 Subject: [PATCH 053/175] Revert "make discord optional" This reverts commit 744c100159ff7b79e01c40ec57e42d37650d139b. --- src/discord_rich_presence.cpp | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/discord_rich_presence.cpp b/src/discord_rich_presence.cpp index 0bb7f9f..10f5833 100644 --- a/src/discord_rich_presence.cpp +++ b/src/discord_rich_presence.cpp @@ -4,7 +4,6 @@ namespace AttorneyOnline { Discord::Discord() { - #ifdef DISCORD DiscordEventHandlers handlers; std::memset(&handlers, 0, sizeof(handlers)); handlers = {}; @@ -19,19 +18,15 @@ Discord::Discord() }; qInfo() << "Initializing Discord RPC"; Discord_Initialize(APPLICATION_ID, &handlers, 1, nullptr); - #endif } Discord::~Discord() { - #ifdef DISCORD Discord_Shutdown(); - #endif } void Discord::state_lobby() { - #ifdef DISCORD DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; @@ -41,13 +36,12 @@ void Discord::state_lobby() presence.state = "In Lobby"; presence.details = "Idle"; Discord_UpdatePresence(&presence); - #endif } void Discord::state_server(std::string name, std::string server_id) { qDebug() << "Discord RPC: Setting server state"; - #ifdef DISCORD + DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; @@ -65,7 +59,6 @@ void Discord::state_server(std::string name, std::string server_id) this->server_name = name; this->timestamp = timestamp; Discord_UpdatePresence(&presence); - #endif } void Discord::state_character(std::string name) @@ -74,7 +67,7 @@ void Discord::state_character(std::string name) auto name_friendly = QString(name.c_str()).replace('_', ' ').toStdString(); const std::string playing_as = "Playing as " + name_friendly; qDebug() << "Discord RPC: Setting character state (" << playing_as.c_str() << ")"; - #ifdef DISCORD + DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; @@ -88,13 +81,12 @@ void Discord::state_character(std::string name) presence.smallImageKey = name_internal.c_str(); // presence.smallImageText = name_internal.c_str(); Discord_UpdatePresence(&presence); - #endif } void Discord::state_spectate() { qDebug() << "Discord RPC: Setting specator state"; - #ifdef DISCORD + DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; @@ -106,7 +98,6 @@ void Discord::state_spectate() presence.state = "Spectating"; Discord_UpdatePresence(&presence); - #endif } } From 3fb6b50d104b5ed247ffe7a0ac03d0a7049d522a Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 12 Mar 2019 19:27:38 +0100 Subject: [PATCH 054/175] cleanup qmakefile --- Attorney_Online.pro | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index c2bd7e9..351f2b3 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -16,18 +16,22 @@ HEADERS += $$files($$PWD/include/*.h) LIBS += -L$$PWD/lib -DISCORD = NO +#DEFINES += DISCORD -equals(DISCORD, "YES") { +contains(DEFINES, DISCORD) { LIBS += -ldiscord-rpc -DEFINES += DISCORD } -AUDIO += NO +#DEFINES += BASSAUDIO -equals(AUDIO, "BASSAUDIO") { +contains(DEFINES, BASSAUDIO) { LIBS += -lbass -DEFINES += BASSAUDIO +} + +#DEFINES += QTAUDIO + +contains(DEFINES, QTAUDIO) { +QT += multimedia } CONFIG += c++14 From 6e93d6e1bea8fd539499625f2a980acd83ef424e Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 12 Mar 2019 19:30:03 +0100 Subject: [PATCH 055/175] discord optional v2 --- src/discord_rich_presence.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/discord_rich_presence.cpp b/src/discord_rich_presence.cpp index 10f5833..a310a68 100644 --- a/src/discord_rich_presence.cpp +++ b/src/discord_rich_presence.cpp @@ -2,6 +2,7 @@ namespace AttorneyOnline { +#ifdef DISCORD Discord::Discord() { DiscordEventHandlers handlers; @@ -99,5 +100,36 @@ void Discord::state_spectate() presence.state = "Spectating"; Discord_UpdatePresence(&presence); } +#else +Discord::Discord() +{ } + +Discord::~Discord() +{ + +} + +void Discord::state_lobby() +{ + +} + +void Discord::state_server(std::string name, std::string server_id) +{ + qDebug() << "Discord RPC: Setting server state"; +} + +void Discord::state_character(std::string name) +{ + qDebug() << "Discord RPC: Setting character state"; +} + +void Discord::state_spectate() +{ + qDebug() << "Discord RPC: Setting specator state"; + +} +#endif +} From 0b6f376f8f635bfcfd72f621a1077a35efc72342 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 12 Mar 2019 19:53:06 +0100 Subject: [PATCH 056/175] qt can play the blips just fine --- include/aoblipplayer.h | 42 +++++++++++++++++++++++++ src/aoblipplayer.cpp | 70 ++++++++++++++++++++++++++++++++++++++---- 2 files changed, 106 insertions(+), 6 deletions(-) diff --git a/include/aoblipplayer.h b/include/aoblipplayer.h index aebba77..2bbe718 100644 --- a/include/aoblipplayer.h +++ b/include/aoblipplayer.h @@ -1,13 +1,19 @@ #ifndef AOBLIPPLAYER_H #define AOBLIPPLAYER_H +#if defined(BASSAUDIO) #include "bass.h" +#elif defined(QTAUDIO) +#include +#endif + #include "aoapplication.h" #include #include #include +#if defined(BASSAUDIO) class AOBlipPlayer { public: @@ -26,5 +32,41 @@ private: int m_volume; HSTREAM m_stream_list[5]; }; +#elif defined(QTAUDIO) +class AOBlipPlayer +{ +public: + AOBlipPlayer(QWidget *parent, AOApplication *p_ao_app); + + void set_blips(QString p_sfx); + void blip_tick(); + void set_volume(int p_volume); + + int m_cycle = 0; + +private: + QSoundEffect m_blips; + QWidget *m_parent; + AOApplication *ao_app; + + int m_volume; + //HSTREAM m_stream_list[5]; +}; +#else +class AOBlipPlayer +{ +public: + AOBlipPlayer(QWidget *parent, AOApplication *p_ao_app); + + void set_blips(QString p_sfx); + void blip_tick(); + void set_volume(int p_volume); + +private: + QWidget *m_parent; + AOApplication *ao_app; +}; +#endif + #endif // AOBLIPPLAYER_H diff --git a/src/aoblipplayer.cpp b/src/aoblipplayer.cpp index 0a8b427..b95f32a 100644 --- a/src/aoblipplayer.cpp +++ b/src/aoblipplayer.cpp @@ -1,5 +1,6 @@ #include "aoblipplayer.h" +#if defined(BASSAUDIO) //Using bass.dll for the blips AOBlipPlayer::AOBlipPlayer(QWidget *parent, AOApplication *p_ao_app) { m_parent = parent; @@ -12,11 +13,9 @@ void AOBlipPlayer::set_blips(QString p_sfx) for (int n_stream = 0 ; n_stream < 5 ; ++n_stream) { - #ifdef BASSAUDIO BASS_StreamFree(m_stream_list[n_stream]); m_stream_list[n_stream] = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_UNICODE | BASS_ASYNCFILE); - #endif } set_volume(m_volume); @@ -30,11 +29,9 @@ void AOBlipPlayer::blip_tick() m_cycle = 0; HSTREAM f_stream = m_stream_list[f_cycle]; - #ifdef BASSAUDIO if (ao_app->get_audio_output_device() != "default") BASS_ChannelSetDevice(f_stream, BASS_GetDevice()); BASS_ChannelPlay(f_stream, false); - #endif } void AOBlipPlayer::set_volume(int p_value) @@ -45,8 +42,69 @@ void AOBlipPlayer::set_volume(int p_value) for (int n_stream = 0 ; n_stream < 5 ; ++n_stream) { - #ifdef BASSAUDIO BASS_ChannelSetAttribute(m_stream_list[n_stream], BASS_ATTRIB_VOL, volume); - #endif } } +#elif defined(QTAUDIO) //Using Qt's QSoundEffect class +AOBlipPlayer::AOBlipPlayer(QWidget *parent, AOApplication *p_ao_app) +{ + m_parent = parent; + ao_app = p_ao_app; +} + +void AOBlipPlayer::set_blips(QString p_sfx) +{ + QString f_path = ao_app->get_sounds_path(p_sfx); + + for (int n_stream = 0 ; n_stream < 5 ; ++n_stream) + { + m_blips.setSource(QUrl::fromLocalFile(f_path)); + } + + set_volume(m_volume); +} + +void AOBlipPlayer::blip_tick() +{ + int f_cycle = m_cycle++; + + if (m_cycle == 5) + m_cycle = 0; + + //HSTREAM f_stream = m_stream_list[f_cycle]; + //if (ao_app->get_audio_output_device() != "default") + //BASS_ChannelSetDevice(f_stream, BASS_GetDevice()); + //BASS_ChannelPlay(f_stream, false); + m_blips.play(); +} + +void AOBlipPlayer::set_volume(int p_value) +{ + m_volume = p_value; + + float volume = p_value / 100.0f; + + m_blips.setVolume(volume); +} +#else //No audio +AOBlipPlayer::AOBlipPlayer(QWidget *parent, AOApplication *p_ao_app) +{ + m_parent = parent; + ao_app = p_ao_app; +} + +void AOBlipPlayer::set_blips(QString p_sfx) +{ + +} + +void AOBlipPlayer::blip_tick() +{ + +} + +void AOBlipPlayer::set_volume(int p_value) +{ + +} +#endif From 71da60b5d6f77629b73fd232f97bed2ecaefb4c3 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 12 Mar 2019 20:14:54 +0100 Subject: [PATCH 057/175] sfx tested and works --- include/aosfxplayer.h | 40 +++++++++++++++++++++++ src/aosfxplayer.cpp | 76 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 110 insertions(+), 6 deletions(-) diff --git a/include/aosfxplayer.h b/include/aosfxplayer.h index 30cbe9d..5b82534 100644 --- a/include/aosfxplayer.h +++ b/include/aosfxplayer.h @@ -1,13 +1,19 @@ #ifndef AOSFXPLAYER_H #define AOSFXPLAYER_H +#if defined(BASSAUDIO) #include "bass.h" +#elif defined(QTAUDIO) +#include +#endif + #include "aoapplication.h" #include #include #include +#if defined(BASSAUDIO) class AOSfxPlayer { public: @@ -24,5 +30,39 @@ private: int m_volume = 0; HSTREAM m_stream; }; +#elif defined(QTAUDIO) +class AOSfxPlayer +{ +public: + AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app); + + void play(QString p_sfx, QString p_char = "", QString shout = ""); + void stop(); + void set_volume(int p_volume); + +private: + QSoundEffect m_sfx; + QWidget *m_parent; + AOApplication *ao_app; + + int m_volume = 0; +}; +#else +class AOSfxPlayer +{ +public: + AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app); + + void play(QString p_sfx, QString p_char = "", QString shout = ""); + void stop(); + void set_volume(int p_volume); + +private: + QWidget *m_parent; + AOApplication *ao_app; + + int m_volume = 0; +}; +#endif #endif // AOSFXPLAYER_H diff --git a/src/aosfxplayer.cpp b/src/aosfxplayer.cpp index 869fa9b..077767b 100644 --- a/src/aosfxplayer.cpp +++ b/src/aosfxplayer.cpp @@ -1,6 +1,7 @@ #include "aosfxplayer.h" #include "file_functions.h" +#if defined(BASSAUDIO) //Using bass.dll for sfx AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) { m_parent = parent; @@ -9,7 +10,6 @@ AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) { - #ifdef BASSAUDIO BASS_ChannelStop(m_stream); QString misc_path = ""; @@ -37,21 +37,85 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) if (ao_app->get_audio_output_device() != "default") BASS_ChannelSetDevice(m_stream, BASS_GetDevice()); BASS_ChannelPlay(m_stream, false); -#endif } void AOSfxPlayer::stop() { - #ifdef BASSAUDIO BASS_ChannelStop(m_stream); - #endif } void AOSfxPlayer::set_volume(int p_value) { m_volume = p_value; float volume = p_value / 100.0f; - #ifdef BASSAUDIO BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume); - #endif } +#elif defined(QTAUDIO) //Using Qt's QSoundEffect class +AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) +{ + m_parent = parent; + ao_app = p_ao_app; +} + +void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) +{ + m_sfx.stop(); + + QString misc_path = ""; + QString char_path = ""; + QString sound_path = ao_app->get_sounds_path(p_sfx); + + if (shout != "") + misc_path = ao_app->get_base_path() + "misc/" + shout + "/" + p_sfx; + if (p_char != "") + char_path = ao_app->get_character_path(p_char, p_sfx); + + QString f_path; + + if (file_exists(char_path)) + f_path = char_path; + else if (file_exists(misc_path)) + f_path = misc_path; + else + f_path = sound_path; + + m_sfx.setSource(QUrl::fromLocalFile(f_path)); + + set_volume(m_volume); + + m_sfx.play(); +} + +void AOSfxPlayer::stop() +{ + m_sfx.stop(); +} + +void AOSfxPlayer::set_volume(int p_value) +{ + m_volume = p_value; + float volume = p_value / 100.0f; + m_sfx.setVolume(volume); +} +#else +AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) +{ + m_parent = parent; + ao_app = p_ao_app; +} + +void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) +{ + +} + +void AOSfxPlayer::stop() +{ + +} + +void AOSfxPlayer::set_volume(int p_value) +{ + +} +#endif From 1514ffea6ad747fc93f98752abb8f82acc9dc9bd Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 12 Mar 2019 20:47:47 +0100 Subject: [PATCH 058/175] qt music --- include/aomusicplayer.h | 37 ++++++++++++++++++++++++++ src/aomusicplayer.cpp | 59 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 90 insertions(+), 6 deletions(-) diff --git a/include/aomusicplayer.h b/include/aomusicplayer.h index 560a7f9..b34267c 100644 --- a/include/aomusicplayer.h +++ b/include/aomusicplayer.h @@ -1,13 +1,18 @@ #ifndef AOMUSICPLAYER_H #define AOMUSICPLAYER_H +#if defined(BASSAUDIO) #include "bass.h" +#elif defined(QTAUDIO) +#include +#endif #include "aoapplication.h" #include #include #include +#if defined(BASSAUDIO) class AOMusicPlayer { public: @@ -24,5 +29,37 @@ private: int m_volume = 0; HSTREAM m_stream; }; +#elif defined(QTAUDIO) +class AOMusicPlayer +{ +public: + AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app); + ~AOMusicPlayer(); + + void play(QString p_song); + void set_volume(int p_value); + +private: + QMediaPlayer m_player; + QWidget *m_parent; + AOApplication *ao_app; + + int m_volume = 0; +}; +#else +class AOMusicPlayer +{ +public: + AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app); + ~AOMusicPlayer(); + + void play(QString p_song); + void set_volume(int p_value); + +private: + QWidget *m_parent; + AOApplication *ao_app; +}; +#endif #endif // AOMUSICPLAYER_H diff --git a/src/aomusicplayer.cpp b/src/aomusicplayer.cpp index 521fae9..2791809 100644 --- a/src/aomusicplayer.cpp +++ b/src/aomusicplayer.cpp @@ -1,5 +1,6 @@ #include "aomusicplayer.h" +#if defined(BASSAUDIO) AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app) { m_parent = parent; @@ -8,14 +9,11 @@ AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app) AOMusicPlayer::~AOMusicPlayer() { - #ifdef BASSAUDIO BASS_ChannelStop(m_stream); - #endif } void AOMusicPlayer::play(QString p_song) { - #ifdef BASSAUDIO BASS_ChannelStop(m_stream); QString f_path = ao_app->get_music_path(p_song); @@ -27,14 +25,63 @@ void AOMusicPlayer::play(QString p_song) if (ao_app->get_audio_output_device() != "default") BASS_ChannelSetDevice(m_stream, BASS_GetDevice()); BASS_ChannelPlay(m_stream, false); -#endif } void AOMusicPlayer::set_volume(int p_value) { m_volume = p_value; float volume = m_volume / 100.0f; - #ifdef BASSAUDIO BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume); - #endif } +#elif defined(QTAUDIO) +AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app) +{ + m_parent = parent; + ao_app = p_ao_app; +} + +AOMusicPlayer::~AOMusicPlayer() +{ + m_player.stop(); +} + +void AOMusicPlayer::play(QString p_song) +{ + m_player.stop(); + + QString f_path = ao_app->get_music_path(p_song); + + m_player.setMedia(QUrl::fromLocalFile(f_path)); + + this->set_volume(m_volume); + + m_player.play(); +} + +void AOMusicPlayer::set_volume(int p_value) +{ + m_volume = p_value; + m_player.setVolume(m_volume); +} +#else +AOMusicPlayer::AOMusicPlayer(QWidget *parent, AOApplication *p_ao_app) +{ + m_parent = parent; + ao_app = p_ao_app; +} + +AOMusicPlayer::~AOMusicPlayer() +{ + +} + +void AOMusicPlayer::play(QString p_song) +{ + +} + +void AOMusicPlayer::set_volume(int p_value) +{ + +} +#endif From 1504aaf6b2df422405b2cc6bd6e4f79de36e53c4 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Wed, 13 Mar 2019 13:05:10 +0100 Subject: [PATCH 059/175] saves space i guess --- include/aoblipplayer.h | 40 ++++------------------------------------ include/aosfxplayer.h | 38 +++----------------------------------- 2 files changed, 7 insertions(+), 71 deletions(-) diff --git a/include/aoblipplayer.h b/include/aoblipplayer.h index 2bbe718..102a040 100644 --- a/include/aoblipplayer.h +++ b/include/aoblipplayer.h @@ -13,7 +13,7 @@ #include #include -#if defined(BASSAUDIO) + class AOBlipPlayer { public: @@ -30,43 +30,11 @@ private: AOApplication *ao_app; int m_volume; + #if defined(BASSAUDIO) HSTREAM m_stream_list[5]; -}; -#elif defined(QTAUDIO) -class AOBlipPlayer -{ -public: - AOBlipPlayer(QWidget *parent, AOApplication *p_ao_app); - - void set_blips(QString p_sfx); - void blip_tick(); - void set_volume(int p_volume); - - int m_cycle = 0; - -private: + #elif defined(QTAUDIO) QSoundEffect m_blips; - QWidget *m_parent; - AOApplication *ao_app; - - int m_volume; - //HSTREAM m_stream_list[5]; + #endif }; -#else -class AOBlipPlayer -{ -public: - AOBlipPlayer(QWidget *parent, AOApplication *p_ao_app); - - void set_blips(QString p_sfx); - void blip_tick(); - void set_volume(int p_volume); - -private: - QWidget *m_parent; - AOApplication *ao_app; -}; -#endif - #endif // AOBLIPPLAYER_H diff --git a/include/aosfxplayer.h b/include/aosfxplayer.h index 5b82534..4b97685 100644 --- a/include/aosfxplayer.h +++ b/include/aosfxplayer.h @@ -13,7 +13,6 @@ #include #include -#if defined(BASSAUDIO) class AOSfxPlayer { public: @@ -26,43 +25,12 @@ public: private: QWidget *m_parent; AOApplication *ao_app; - - int m_volume = 0; + #if defined(BASSAUDIO) HSTREAM m_stream; -}; -#elif defined(QTAUDIO) -class AOSfxPlayer -{ -public: - AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app); - - void play(QString p_sfx, QString p_char = "", QString shout = ""); - void stop(); - void set_volume(int p_volume); - -private: + #elif defined(QTAUDIO) QSoundEffect m_sfx; - QWidget *m_parent; - AOApplication *ao_app; - + #endif int m_volume = 0; }; -#else -class AOSfxPlayer -{ -public: - AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app); - - void play(QString p_sfx, QString p_char = "", QString shout = ""); - void stop(); - void set_volume(int p_volume); - -private: - QWidget *m_parent; - AOApplication *ao_app; - - int m_volume = 0; -}; -#endif #endif // AOSFXPLAYER_H From ece08930e3767def9895dbfa23936ce23ec96c73 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Wed, 13 Mar 2019 13:06:11 +0100 Subject: [PATCH 060/175] setVolume doesn't take floats --- src/aoblipplayer.cpp | 5 +---- src/aosfxplayer.cpp | 3 +-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/aoblipplayer.cpp b/src/aoblipplayer.cpp index b95f32a..ffeb888 100644 --- a/src/aoblipplayer.cpp +++ b/src/aoblipplayer.cpp @@ -81,10 +81,7 @@ void AOBlipPlayer::blip_tick() void AOBlipPlayer::set_volume(int p_value) { m_volume = p_value; - - float volume = p_value / 100.0f; - - m_blips.setVolume(volume); + m_blips.setVolume(m_volume); } #else //No audio AOBlipPlayer::AOBlipPlayer(QWidget *parent, AOApplication *p_ao_app) diff --git a/src/aosfxplayer.cpp b/src/aosfxplayer.cpp index 077767b..9f47e01 100644 --- a/src/aosfxplayer.cpp +++ b/src/aosfxplayer.cpp @@ -94,8 +94,7 @@ void AOSfxPlayer::stop() void AOSfxPlayer::set_volume(int p_value) { m_volume = p_value; - float volume = p_value / 100.0f; - m_sfx.setVolume(volume); + m_sfx.setVolume(m_volume); } #else AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) From bdde8822f4bb2ce2ef4e95fecb23c17afc0adcac Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Wed, 13 Mar 2019 21:36:12 +0100 Subject: [PATCH 061/175] begone, commented code --- src/aoblipplayer.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/aoblipplayer.cpp b/src/aoblipplayer.cpp index ffeb888..4dfb895 100644 --- a/src/aoblipplayer.cpp +++ b/src/aoblipplayer.cpp @@ -71,10 +71,6 @@ void AOBlipPlayer::blip_tick() if (m_cycle == 5) m_cycle = 0; - //HSTREAM f_stream = m_stream_list[f_cycle]; - //if (ao_app->get_audio_output_device() != "default") - //BASS_ChannelSetDevice(f_stream, BASS_GetDevice()); - //BASS_ChannelPlay(f_stream, false); m_blips.play(); } From 44d433d941575da0a16d3ad9c905ba71ec20d19c Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Wed, 13 Mar 2019 22:05:24 +0100 Subject: [PATCH 062/175] sfx glitch --- src/aosfxplayer.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/aosfxplayer.cpp b/src/aosfxplayer.cpp index 9f47e01..710d7a8 100644 --- a/src/aosfxplayer.cpp +++ b/src/aosfxplayer.cpp @@ -79,11 +79,14 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) else f_path = sound_path; + if (file_exists(f_path)) //if its missing, it will glitch out + { m_sfx.setSource(QUrl::fromLocalFile(f_path)); set_volume(m_volume); m_sfx.play(); + } } void AOSfxPlayer::stop() From 785168f8d36fc7c075f36cd88f13984c933b903c Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Wed, 13 Mar 2019 22:05:36 +0100 Subject: [PATCH 063/175] add a default for this --- src/text_file_functions.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp index 1e920d7..45e2e79 100644 --- a/src/text_file_functions.cpp +++ b/src/text_file_functions.cpp @@ -443,8 +443,9 @@ QString AOApplication::get_chat(QString p_char) QString AOApplication::get_char_shouts(QString p_char) { QString f_result = read_char_ini(p_char, "shouts", "Options"); - - return f_result; + if (f_result == "") + return "default"; + else return f_result; } int AOApplication::get_preanim_duration(QString p_char, QString p_emote) From 5d0044b93cfd5ada490c7c1b296bdd0f1602a8f2 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Fri, 29 Mar 2019 21:03:43 -0500 Subject: [PATCH 064/175] Add a bunch of scripts --- .gitlab-ci.yml | 45 +++++++++++++--- .travis.yml | 5 +- scripts/macos_build.sh | 0 scripts/macos_post_build.sh | 0 scripts/package.json | 9 ++++ scripts/update_manifest.js | 84 ++++++++++++++++++++++++++++++ scripts/update_program_manifest.js | 39 ++++++++++++++ scripts/wasabi_asset.sh | 45 ++++++++++++++++ scripts/wasabi_program.sh | 35 +++++++++++++ scripts/windows/Dockerfile | 17 ++++++ scripts/windows/Dockerfile-mxe | 44 ++++++++++++++++ scripts/windows/how-to-push.md | 19 +++++++ 12 files changed, 332 insertions(+), 10 deletions(-) mode change 100644 => 100755 scripts/macos_build.sh mode change 100644 => 100755 scripts/macos_post_build.sh create mode 100644 scripts/package.json create mode 100755 scripts/update_manifest.js create mode 100755 scripts/update_program_manifest.js create mode 100755 scripts/wasabi_asset.sh create mode 100755 scripts/wasabi_program.sh create mode 100644 scripts/windows/Dockerfile create mode 100644 scripts/windows/Dockerfile-mxe create mode 100644 scripts/windows/how-to-push.md diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 928352f..d05a337 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,12 @@ +stages: + - build + - deploy + - publish + cache: key: ${CI_COMMIT_REF_SLUG} paths: - - lib/ + - lib/ before_script: - echo Current working directory is $(pwd) @@ -53,7 +58,7 @@ build linux x86_64: # Build - qmake -spec linux-clang - make -j4 - + # Post-processing - upx --lzma -9 --force bin/Attorney_Online artifacts: @@ -101,7 +106,7 @@ build windows i686: cp -a ../README.md README.md.txt cp -a ../LICENSE.MIT LICENSE.txt -deploy linux: +deploy linux x86_64: stage: deploy dependencies: - build linux x86_64 @@ -124,13 +129,13 @@ deploy linux: # Zipping # zip -r -9 -l Attorney_Online_$(git describe --tags)_linux_x86_64.zip . - mkdir ../zip - - tar cavf ../zip/Attorney_Online_$(git describe --tags)_x64.tar.xz * + - tar cavf ../zip/Attorney_Online_$(git describe --tags)_linux_x64.tar.xz * - sha1sum ../zip/* artifacts: paths: - zip/ -deploy windows: +deploy windows i686: image: ubuntu stage: deploy dependencies: @@ -154,8 +159,34 @@ deploy windows: # Zipping # -r: recursive; -9: max compression; -l: convert to CR LF - mkdir ../zip - - zip -r -9 -l ../zip/Attorney_Online_$(git describe --tags)_windows_i386.zip . + - zip -r -9 -l ../zip/Attorney_Online_$(git describe --tags)_windows_x86.zip . - sha1sum ../zip/* artifacts: paths: - - zip/ \ No newline at end of file + - zip/ + +publish linux x86_64: + image: ubuntu + stage: publish + dependencies: + - deploy linux x86_64 + when: manual + script: + - cd zip + - ../scripts/wasabi.sh + variables: + MANIFEST: program_linux_x86_64.json + ARTIFACT_SUFFIX: _linux_x64.tar.xz + +publish windows i686: + image: ubuntu + stage: publish + dependencies: + - deploy windows i686 + when: manual + script: + - cd zip + - ../scripts/wasabi.sh + variables: + MANIFEST: program_winnt_i386.json + ARTIFACT_SUFFIX: _windows_x86.zip diff --git a/.travis.yml b/.travis.yml index dfde416..4243b3b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,5 @@ addons: - qt5 script: - # XXX: please chmod +x the shell script. - - bash ./scripts/macos_build.sh - - bash ./scripts/macos_post_build.sh + - ./scripts/macos_build.sh + - ./scripts/macos_post_build.sh diff --git a/scripts/macos_build.sh b/scripts/macos_build.sh old mode 100644 new mode 100755 diff --git a/scripts/macos_post_build.sh b/scripts/macos_post_build.sh old mode 100644 new mode 100755 diff --git a/scripts/package.json b/scripts/package.json new file mode 100644 index 0000000..126a392 --- /dev/null +++ b/scripts/package.json @@ -0,0 +1,9 @@ +{ + "name": "ao-ci-scripts", + "version": "1.0.0", + "main": "update_manifest.js", + "dependencies": { + "argparse": "^1.0.10" + }, + "license": "ISC" +} diff --git a/scripts/update_manifest.js b/scripts/update_manifest.js new file mode 100755 index 0000000..5f64cfb --- /dev/null +++ b/scripts/update_manifest.js @@ -0,0 +1,84 @@ +#!/usr/bin/env node + +const fs = require("fs"); +const crypto = require("crypto"); +const ArgumentParser = require("argparse").ArgumentParser; + +function isFile(file) { + if (!fs.existsSync(file)) { + console.error(`File '${file}' not found. Try again.`); + throw Error(); + } + return file; +} + +const argParser = new ArgumentParser({ + addHelp: true, + description: "Adds a new latest version to the manifest file based on the " + + "provided zip file, including an incremental update." +}); +argParser.addArgument("manifestFile", { + metavar: "", type: isFile +}); +argParser.addArgument("version", { + metavar: "" +}); +argParser.addArgument([ "-f", "--full" ], { + metavar: "", type: isFile, nargs: 1, + dest: "fullZipFile" +}); +argParser.addArgument([ "-i", "--incremental" ], { + type: isFile, nargs: 2, dest: "incremental", + metavar: ["", ""] +}); +argParser.addArgument([ "-e", "--executable" ], { + metavar: "[executable file]", nargs: 1, + dest: "executable" +}); + +const { + manifestFile, + version, + fullZipFile, + incremental: [incrementalZipFile, deletionsFile], + executable +} = argParser.parseArgs(); + +const manifest = JSON.parse(fs.readFileSync(manifestFile)); + +const deleteActions = deletionsFile ? fs.readFileSync(deletionsFile) + .split("\n").map(file => { + // XXX: This does not delete empty directories. Finding them would + // actually be a substantial amount of work because Git does not + // give us a good way of finding directories that were deleted. + return { action: "delete", target: file }; + }) : []; + +const urlBase = "https://s3.wasabisys.com/ao-downloads/"; + +manifest.versions = [{ + version, + executable, + prev: manifest.version[0] ? manifest.version[0].version : undefined, + full: fullZipFile ? [ + { + action: "dl", + url: urlBase + encodeURIComponent(fullZipFile), + hash: crypto.createHash("sha1") + .update(fs.readFileSync(fullZipFile)) + .digest("hex") + } + ] : undefined, + update: incremental ? [ + ...deleteActions, + { + action: "dl", + url: urlBase + encodeURIComponent(incrementalZipFile), + hash: crypto.createHash("sha1") + .update(fs.readFileSync(incrementalZipFile)) + .digest("hex") + } + ] : undefined +}, ...manifest.versions]; + +fs.writeFileSync(manifestFile, JSON.stringify(manifest, null, 4)); diff --git a/scripts/update_program_manifest.js b/scripts/update_program_manifest.js new file mode 100755 index 0000000..9efc814 --- /dev/null +++ b/scripts/update_program_manifest.js @@ -0,0 +1,39 @@ +#!/usr/bin/env node + +const fs = require("fs"); +const crypto = require("crypto"); + +const [ _nodeExe, _jsPath, manifestFile, version, zipFile ] = process.argv; + +if (!manifestFile || !version || !zipFile) { + console.log(`Usage: update_program_manifest `); + console.log(`Adds a new latest version to the manifest file based on the ` + + `provided zip file.`); + process.exit(1); +} + +if (!fs.existsSync(manifestFile)) { + console.error(`Manifest file '${manifestFile}' not found. Try again.`); + process.exit(2); +} + +if (!fs.existsSync(zipFile)) { + console.error(`Zip file '${zipFile}' not found. Try again.`); + process.exit(2); +} + +const manifest = JSON.parse(fs.readFileSync(manifestFile)); + +manifest.versions = [{ + version, + executable: "Attorney_Online.exe", + full: [ + { + action: "dl", + url: "https://s3.wasabisys.com/ao-downloads/" + encodeURIComponent(zipFile), + hash: crypto.createHash("sha1").update(fs.readFileSync(zipFile)).digest("hex") + } + ] +}, ...manifest.versions]; + +fs.writeFileSync(manifestFile, JSON.stringify(manifest, null, 4)); \ No newline at end of file diff --git a/scripts/wasabi_asset.sh b/scripts/wasabi_asset.sh new file mode 100755 index 0000000..d424183 --- /dev/null +++ b/scripts/wasabi_asset.sh @@ -0,0 +1,45 @@ +#!/bin/bash +# Updates the specified program manifest to a new archive and version +# and uploads the new archive and manifest to S3/Wasabi. +# +# Requires: +# MANIFEST: name of the manifest file +# ARTIFACT_SUFFIX: suffix of the archive to be uploaded (including extension) +# S3_ACCESS_KEY and S3_SECRET_KEY + + +# -E: inherit ERR trap by shell functions +# -e: stop script on ERR trap +# -u: stop script on unbound variables +# -x: print command before running it +# -o pipefail: fail if any command in a pipeline fails +set -Eeuxo pipefail + +aws configure set aws_access_key_id ${S3_ACCESS_KEY} +aws configure set aws_secret_access_key ${S3_SECRET_KEY} +aws configure set default.region us-east-1 + +export S3_COPY="aws s3 cp --endpoint-url=https://s3.wasabisys.com" +export S3_MANIFESTS="s3://ao-manifests" +export S3_ARCHIVES="s3://ao-downloads" + +export VERSION=$(git describe --tags) +export ARCHIVE_FULL="vanilla_full_${VERSION}_${ARTIFACT_SUFFIX}" +export ARCHIVE_INCR="vanilla_update_${VERSION}_${ARTIFACT_SUFFIX}" + +git log --diff-filter=D --summary $(git rev-list --tags --skip=1 --max-count=1)..HEAD | \ + grep "delete mode" | cut -d' ' -f 5- > deletions.txt + +${S3_COPY} ${S3_MANIFESTS}/${MANIFEST} . +if [[ -n FULL_ZIP && FULL_ZIP != '0' ]]; then + node $(dirname $0)/update_manifest.js ${MANIFEST} ${VERSION} + -f ${ARCHIVE_FULL} -i ${ARCHIVE_INCR} deletions.txt + ${S3_COPY} ${ARCHIVE_FULL} ${S3_ARCHIVES} +else + node $(dirname $0)/update_manifest.js ${MANIFEST} ${VERSION} + -i ${ARCHIVE_INCR} deletions.txt +fi +${S3_COPY} ${ARCHIVE_INCR} ${S3_ARCHIVES} +${S3_COPY} ${MANIFEST} ${S3_MANIFESTS} + +rm -f ${MANIFEST} diff --git a/scripts/wasabi_program.sh b/scripts/wasabi_program.sh new file mode 100755 index 0000000..41e2e35 --- /dev/null +++ b/scripts/wasabi_program.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# Updates the specified program manifest to a new archive and version +# and uploads the new archive and manifest to S3/Wasabi. +# +# Requires: +# MANIFEST: name of the manifest file +# ARTIFACT_SUFFIX: suffix of the archive to be uploaded (including extension) +# S3_ACCESS_KEY and S3_SECRET_KEY + + +# -E: inherit ERR trap by shell functions +# -e: stop script on ERR trap +# -u: stop script on unbound variables +# -x: print command before running it +# -o pipefail: fail if any command in a pipeline fails +set -Eeuxo pipefail + +aws configure set aws_access_key_id ${S3_ACCESS_KEY} +aws configure set aws_secret_access_key ${S3_SECRET_KEY} +aws configure set default.region us-east-1 + +export S3_COPY="aws s3 cp --endpoint-url=https://s3.wasabisys.com" +export S3_MANIFESTS="s3://ao-manifests" +export S3_ARCHIVES="s3://ao-downloads" + +export VERSION=$(git describe --tags) +export ARCHIVE="Attorney_Online_${VERSION}_${ARTIFACT_SUFFIX}" + +${S3_COPY} ${S3_MANIFESTS}/${MANIFEST} . +node $(dirname $0)/update_manifest.js ${MANIFEST} ${VERSION} \ + -f ${ARCHIVE} -e Attorney_Online.exe +${S3_COPY} ${ARCHIVE} ${S3_ARCHIVES} +${S3_COPY} ${MANIFEST} ${S3_MANIFESTS} + +rm -f ${MANIFEST} diff --git a/scripts/windows/Dockerfile b/scripts/windows/Dockerfile new file mode 100644 index 0000000..90d6c27 --- /dev/null +++ b/scripts/windows/Dockerfile @@ -0,0 +1,17 @@ +FROM oldmud0/mxe-qt:5.12.1-win32-static-posix +#FROM fffaraz/qt:windows + +ENV TARGET_SPEC i686-w64-mingw32.static.posix + +# Build Discord RPC statically +RUN git clone https://github.com/discordapp/discord-rpc +WORKDIR discord-rpc/build +RUN /opt/mxe/usr/bin/${TARGET_SPEC}-cmake .. -DCMAKE_INSTALL_PREFIX=/opt/mxe/usr/${TARGET_SPEC} +RUN /opt/mxe/usr/bin/${TARGET_SPEC}-cmake --build . --config Release --target install +WORKDIR ../.. + +# Build QtApng statically +RUN git clone https://github.com/Skycoder42/QtApng +WORKDIR QtApng +RUN /opt/mxe/usr/${TARGET_SPEC}/qt5/bin/qmake && make qmake_all && make && make install +WORKDIR .. diff --git a/scripts/windows/Dockerfile-mxe b/scripts/windows/Dockerfile-mxe new file mode 100644 index 0000000..e6caec5 --- /dev/null +++ b/scripts/windows/Dockerfile-mxe @@ -0,0 +1,44 @@ +FROM ubuntu:18.04 + +RUN apt-get update +RUN apt-get install -y \ + autoconf \ + automake \ + autopoint \ + bash \ + bison \ + bzip2 \ + flex \ + g++ \ + g++-multilib \ + gettext \ + git \ + gperf \ + intltool \ + libc6-dev-i386 \ + libgdk-pixbuf2.0-dev \ + libltdl-dev \ + libssl-dev \ + libtool-bin \ + libxml-parser-perl \ + lzip \ + make \ + openssl \ + p7zip-full \ + patch \ + perl \ + pkg-config \ + python \ + ruby \ + sed \ + unzip \ + wget \ + xz-utils + +RUN git clone https://github.com/mxe/mxe.git +RUN mv mxe /opt/mxe +WORKDIR /opt/mxe +RUN make -j4 MXE_TARGETS="i686-w64-mingw32.static.posix" qtbase qtmultimedia +ENV PATH=/opt/mxe/usr/bin:$PATH + +WORKDIR / diff --git a/scripts/windows/how-to-push.md b/scripts/windows/how-to-push.md new file mode 100644 index 0000000..8c1c18d --- /dev/null +++ b/scripts/windows/how-to-push.md @@ -0,0 +1,19 @@ +When you want to build a new version of Qt: +```docker +docker build -t mxe-windows-static . -f Dockerfile-mxe +docker tag mxe-windows-static oldmud0/mxe-qt:5.12.1-win32-static-posix +docker push oldmud0/mxe-qt:5.12.1-win32-static-posix +``` + +Remember to log into Docker Hub before attempting to push. + +When you want to build a new version of any dependency required for building AO: +```docker +docker build -t mxe-windows-static-ao . -f Dockerfile +docker tag mxe-windows-static-ao registry.gitlab.com/attorneyonline/ao2-client/builder-windows-i686 +docker push registry.gitlab.com/attorneyonline/ao2-client/builder-windows-i686 +``` + +Remember to create an access token in GitLab before attempting to push. + +GitLab CI depends on `builder-windows-i686` image to be present in the repository's registry in order for the Windows build to succeed. From edb3c6b538e80c08595baf71d32356bf0cf97795 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Wed, 3 Apr 2019 15:28:30 -0500 Subject: [PATCH 065/175] Continue work on manifest scripts --- scripts/.gitignore | 6 ++++ scripts/update_manifest.js | 5 +-- scripts/wasabi.sh | 72 ++++++++++++++++++++++++++++++++++++++ scripts/wasabi_asset.sh | 45 ------------------------ 4 files changed, 81 insertions(+), 47 deletions(-) create mode 100644 scripts/.gitignore create mode 100755 scripts/wasabi.sh delete mode 100755 scripts/wasabi_asset.sh diff --git a/scripts/.gitignore b/scripts/.gitignore new file mode 100644 index 0000000..2f8a2b9 --- /dev/null +++ b/scripts/.gitignore @@ -0,0 +1,6 @@ +node_modules/ + +# Cursed file +package-lock.json + +s3_keys.sh diff --git a/scripts/update_manifest.js b/scripts/update_manifest.js index 5f64cfb..66df75f 100755 --- a/scripts/update_manifest.js +++ b/scripts/update_manifest.js @@ -2,6 +2,7 @@ const fs = require("fs"); const crypto = require("crypto"); +const path = require("path"); const ArgumentParser = require("argparse").ArgumentParser; function isFile(file) { @@ -63,7 +64,7 @@ manifest.versions = [{ full: fullZipFile ? [ { action: "dl", - url: urlBase + encodeURIComponent(fullZipFile), + url: urlBase + encodeURIComponent(path.basename(fullZipFile)), hash: crypto.createHash("sha1") .update(fs.readFileSync(fullZipFile)) .digest("hex") @@ -73,7 +74,7 @@ manifest.versions = [{ ...deleteActions, { action: "dl", - url: urlBase + encodeURIComponent(incrementalZipFile), + url: urlBase + encodeURIComponent(path.basename(incrementalZipFile)), hash: crypto.createHash("sha1") .update(fs.readFileSync(incrementalZipFile)) .digest("hex") diff --git a/scripts/wasabi.sh b/scripts/wasabi.sh new file mode 100755 index 0000000..5200652 --- /dev/null +++ b/scripts/wasabi.sh @@ -0,0 +1,72 @@ +#!/bin/bash +# Updates the specified program manifest to a new archive and version +# and uploads the new archive and manifest to S3/Wasabi. +# +# Requires: +# MANIFEST: name of the manifest file +# S3_ACCESS_KEY, S3_SECRET_KEY: S3 credentials +# ARCHIVE_FULL: name of the full archive (if desired) +# ARCHIVE_INCR: name of the incremental archive (if desired) +# VERSION: name of the new version + + +# -E: inherit ERR trap by shell functions +# -e: stop script on ERR trap +# -u: stop script on unbound variables +# -x: print command before running it +# -o pipefail: fail if any command in a pipeline fails +set -Eeuxo pipefail + +aws configure set aws_access_key_id ${S3_ACCESS_KEY} +aws configure set aws_secret_access_key ${S3_SECRET_KEY} +aws configure set default.region us-east-1 + +export S3_COPY="aws s3 cp --endpoint-url=https://s3.wasabisys.com" +export S3_MANIFESTS="s3://ao-manifests" +export S3_ARCHIVES="s3://ao-downloads" + +#export VERSION=$(git describe --tags) +#export ARCHIVE_FULL="vanilla_full_${VERSION}_${ARTIFACT_SUFFIX}" +export ARCHIVE_FULL_ARG="" +#export ARCHIVE_INCR="vanilla_update_${VERSION}_${ARTIFACT_SUFFIX}" +export ARCHIVE_INCR_ARG="" + +export LAST_TAGGED_VERSION=$(git rev-list --tags --skip=1 --max-count=1) +echo "Previous tagged version: ${LAST_TAGGED_VERSION}" +echo "Current tagged version: ${VERSION}" + +if [[ -n $ARCHIVE_INCR && -n $LAST_TAGGED_VERSION ]]; then + echo "Incremental archive: ${ARCHIVE_INCR}" + + # Get deleted files + export DELETIONS_FILE="deletions.txt" + git log --diff-filter=D --summary ${LAST_TAGGED_VERSION}..HEAD | \ + grep "delete mode" | cut -d' ' -f 5- > ${DELETIONS_FILE} + + # Get added/modified files + git log --name-only --oneline --diff-filter=d ec5c..HEAD | \ + grep -v -E "^[0-9a-f]{7} " | sort -u | zip ${ARCHIVE_INCR} -@ + + export ARCHIVE_INCR_ARG="-i ${ARCHIVE_INCR} ${DELETIONS_FILE}" +elif [[ -n $ARCHIVE_INCR && -z $LAST_TAGGED_VERSION ]]; then + echo "Incremental archive was requested, but there is no previous version" +fi + +if [[ -n $ARCHIVE_FULL ]]; then + echo "Full archive: ${ARCHIVE_INCR}" + export ARCHIVE_FULL_ARG="-f ${ARCHIVE_FULL}" +fi + +${S3_COPY} ${S3_MANIFESTS}/${MANIFEST} . +node $(dirname $0)/update_manifest.js ${MANIFEST} ${VERSION} \ + ${ARCHIVE_FULL_ARG} ${ARCHIVE_INCR_ARG} + +if [[ -n $ARCHIVE_INCR_ARG ]]; then + ${S3_COPY} ${ARCHIVE_INCR} ${S3_ARCHIVES} +fi + +if [[ -n $ARCHIVE_FULL_ARG ]]; then + ${S3_COPY} ${ARCHIVE_FULL} ${S3_ARCHIVES} +fi + +${S3_COPY} ${MANIFEST} ${S3_MANIFESTS} diff --git a/scripts/wasabi_asset.sh b/scripts/wasabi_asset.sh deleted file mode 100755 index d424183..0000000 --- a/scripts/wasabi_asset.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash -# Updates the specified program manifest to a new archive and version -# and uploads the new archive and manifest to S3/Wasabi. -# -# Requires: -# MANIFEST: name of the manifest file -# ARTIFACT_SUFFIX: suffix of the archive to be uploaded (including extension) -# S3_ACCESS_KEY and S3_SECRET_KEY - - -# -E: inherit ERR trap by shell functions -# -e: stop script on ERR trap -# -u: stop script on unbound variables -# -x: print command before running it -# -o pipefail: fail if any command in a pipeline fails -set -Eeuxo pipefail - -aws configure set aws_access_key_id ${S3_ACCESS_KEY} -aws configure set aws_secret_access_key ${S3_SECRET_KEY} -aws configure set default.region us-east-1 - -export S3_COPY="aws s3 cp --endpoint-url=https://s3.wasabisys.com" -export S3_MANIFESTS="s3://ao-manifests" -export S3_ARCHIVES="s3://ao-downloads" - -export VERSION=$(git describe --tags) -export ARCHIVE_FULL="vanilla_full_${VERSION}_${ARTIFACT_SUFFIX}" -export ARCHIVE_INCR="vanilla_update_${VERSION}_${ARTIFACT_SUFFIX}" - -git log --diff-filter=D --summary $(git rev-list --tags --skip=1 --max-count=1)..HEAD | \ - grep "delete mode" | cut -d' ' -f 5- > deletions.txt - -${S3_COPY} ${S3_MANIFESTS}/${MANIFEST} . -if [[ -n FULL_ZIP && FULL_ZIP != '0' ]]; then - node $(dirname $0)/update_manifest.js ${MANIFEST} ${VERSION} - -f ${ARCHIVE_FULL} -i ${ARCHIVE_INCR} deletions.txt - ${S3_COPY} ${ARCHIVE_FULL} ${S3_ARCHIVES} -else - node $(dirname $0)/update_manifest.js ${MANIFEST} ${VERSION} - -i ${ARCHIVE_INCR} deletions.txt -fi -${S3_COPY} ${ARCHIVE_INCR} ${S3_ARCHIVES} -${S3_COPY} ${MANIFEST} ${S3_MANIFESTS} - -rm -f ${MANIFEST} From 4561f1809feb16dff449daa972466e3ed2dfe494 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Wed, 3 Apr 2019 16:12:31 -0500 Subject: [PATCH 066/175] Fix some bugs in manifest script --- scripts/update_manifest.js | 5 +++-- scripts/wasabi.sh | 11 +++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/scripts/update_manifest.js b/scripts/update_manifest.js index 66df75f..ea1f85e 100755 --- a/scripts/update_manifest.js +++ b/scripts/update_manifest.js @@ -41,9 +41,10 @@ const { manifestFile, version, fullZipFile, - incremental: [incrementalZipFile, deletionsFile], + incremental, executable } = argParser.parseArgs(); +const [incrementalZipFile, deletionsFile] = incremental || []; const manifest = JSON.parse(fs.readFileSync(manifestFile)); @@ -60,7 +61,7 @@ const urlBase = "https://s3.wasabisys.com/ao-downloads/"; manifest.versions = [{ version, executable, - prev: manifest.version[0] ? manifest.version[0].version : undefined, + prev: manifest.versions[0] ? manifest.versions[0].version : undefined, full: fullZipFile ? [ { action: "dl", diff --git a/scripts/wasabi.sh b/scripts/wasabi.sh index 5200652..2e8932d 100755 --- a/scripts/wasabi.sh +++ b/scripts/wasabi.sh @@ -8,6 +8,7 @@ # ARCHIVE_FULL: name of the full archive (if desired) # ARCHIVE_INCR: name of the incremental archive (if desired) # VERSION: name of the new version +# EXECUTABLE: name of the executable (if program manifest) # -E: inherit ERR trap by shell functions @@ -25,11 +26,9 @@ export S3_COPY="aws s3 cp --endpoint-url=https://s3.wasabisys.com" export S3_MANIFESTS="s3://ao-manifests" export S3_ARCHIVES="s3://ao-downloads" -#export VERSION=$(git describe --tags) -#export ARCHIVE_FULL="vanilla_full_${VERSION}_${ARTIFACT_SUFFIX}" export ARCHIVE_FULL_ARG="" -#export ARCHIVE_INCR="vanilla_update_${VERSION}_${ARTIFACT_SUFFIX}" export ARCHIVE_INCR_ARG="" +export EXECUTABLE_ARG="" export LAST_TAGGED_VERSION=$(git rev-list --tags --skip=1 --max-count=1) echo "Previous tagged version: ${LAST_TAGGED_VERSION}" @@ -57,9 +56,13 @@ if [[ -n $ARCHIVE_FULL ]]; then export ARCHIVE_FULL_ARG="-f ${ARCHIVE_FULL}" fi +if [[ -n $EXECUTABLE ]]; then + export EXECUTABLE_ARG="-e ${EXECUTABLE}" +fi + ${S3_COPY} ${S3_MANIFESTS}/${MANIFEST} . node $(dirname $0)/update_manifest.js ${MANIFEST} ${VERSION} \ - ${ARCHIVE_FULL_ARG} ${ARCHIVE_INCR_ARG} + ${ARCHIVE_FULL_ARG} ${ARCHIVE_INCR_ARG} ${EXECUTABLE} if [[ -n $ARCHIVE_INCR_ARG ]]; then ${S3_COPY} ${ARCHIVE_INCR} ${S3_ARCHIVES} From 458eea04d31f749c0494cf78d040bf8e80ddf9da Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Wed, 3 Apr 2019 16:18:05 -0500 Subject: [PATCH 067/175] Fix unbound variable EXECUTABLE --- scripts/wasabi.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/wasabi.sh b/scripts/wasabi.sh index 2e8932d..0613ffd 100755 --- a/scripts/wasabi.sh +++ b/scripts/wasabi.sh @@ -56,13 +56,13 @@ if [[ -n $ARCHIVE_FULL ]]; then export ARCHIVE_FULL_ARG="-f ${ARCHIVE_FULL}" fi -if [[ -n $EXECUTABLE ]]; then +if [[ -v $EXECUTABLE ]]; then export EXECUTABLE_ARG="-e ${EXECUTABLE}" fi ${S3_COPY} ${S3_MANIFESTS}/${MANIFEST} . node $(dirname $0)/update_manifest.js ${MANIFEST} ${VERSION} \ - ${ARCHIVE_FULL_ARG} ${ARCHIVE_INCR_ARG} ${EXECUTABLE} + ${ARCHIVE_FULL_ARG} ${ARCHIVE_INCR_ARG} ${EXECUTABLE_ARG} if [[ -n $ARCHIVE_INCR_ARG ]]; then ${S3_COPY} ${ARCHIVE_INCR} ${S3_ARCHIVES} From d75cee4996af64336c7823968c8cdb475b5c5aff Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Wed, 3 Apr 2019 16:21:51 -0500 Subject: [PATCH 068/175] Fix unbound variable (again) --- scripts/wasabi.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/wasabi.sh b/scripts/wasabi.sh index 0613ffd..a322b6c 100755 --- a/scripts/wasabi.sh +++ b/scripts/wasabi.sh @@ -56,7 +56,7 @@ if [[ -n $ARCHIVE_FULL ]]; then export ARCHIVE_FULL_ARG="-f ${ARCHIVE_FULL}" fi -if [[ -v $EXECUTABLE ]]; then +if [[ -v EXECUTABLE ]]; then export EXECUTABLE_ARG="-e ${EXECUTABLE}" fi From 153c458f9e6d95a3e1ee205be28dbdbb32ee88eb Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Wed, 3 Apr 2019 16:32:10 -0500 Subject: [PATCH 069/175] Fix type errors during argument parsing --- scripts/update_manifest.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/scripts/update_manifest.js b/scripts/update_manifest.js index ea1f85e..bcb3ac7 100755 --- a/scripts/update_manifest.js +++ b/scripts/update_manifest.js @@ -40,11 +40,14 @@ argParser.addArgument([ "-e", "--executable" ], { const { manifestFile, version, - fullZipFile, - incremental, - executable + fullZipFileArgs, + incrementalArgs, + executableArgs } = argParser.parseArgs(); -const [incrementalZipFile, deletionsFile] = incremental || []; + +const [incrementalZipFile, deletionsFile] = incrementalArgs || []; +const [fullZipFile] = fullZipFileArgs || []; +const [executable] = executableArgs || []; const manifest = JSON.parse(fs.readFileSync(manifestFile)); @@ -71,7 +74,7 @@ manifest.versions = [{ .digest("hex") } ] : undefined, - update: incremental ? [ + update: incrementalArgs ? [ ...deleteActions, { action: "dl", From bc92942d29eb43b6f8a37ca8ae4ca303a5f28b96 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Wed, 3 Apr 2019 16:47:16 -0500 Subject: [PATCH 070/175] Allow overwriting versions of same name --- scripts/update_manifest.js | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/scripts/update_manifest.js b/scripts/update_manifest.js index bcb3ac7..71fa3f8 100755 --- a/scripts/update_manifest.js +++ b/scripts/update_manifest.js @@ -26,15 +26,15 @@ argParser.addArgument("version", { }); argParser.addArgument([ "-f", "--full" ], { metavar: "", type: isFile, nargs: 1, - dest: "fullZipFile" + dest: "fullZipFileArgs" }); argParser.addArgument([ "-i", "--incremental" ], { - type: isFile, nargs: 2, dest: "incremental", + type: isFile, nargs: 2, dest: "incrementalArgs", metavar: ["", ""] }); argParser.addArgument([ "-e", "--executable" ], { metavar: "[executable file]", nargs: 1, - dest: "executable" + dest: "executableArgs" }); const { @@ -49,6 +49,12 @@ const [incrementalZipFile, deletionsFile] = incrementalArgs || []; const [fullZipFile] = fullZipFileArgs || []; const [executable] = executableArgs || []; +// Do one final check +if (!incrementalZipFile && !fullZipFile) { + console.error("No download archive specified! Abort."); + process.exit(1); +} + const manifest = JSON.parse(fs.readFileSync(manifestFile)); const deleteActions = deletionsFile ? fs.readFileSync(deletionsFile) @@ -61,7 +67,7 @@ const deleteActions = deletionsFile ? fs.readFileSync(deletionsFile) const urlBase = "https://s3.wasabisys.com/ao-downloads/"; -manifest.versions = [{ +const versionEntry = { version, executable, prev: manifest.versions[0] ? manifest.versions[0].version : undefined, @@ -84,6 +90,18 @@ manifest.versions = [{ .digest("hex") } ] : undefined -}, ...manifest.versions]; +}; + +const existingVersion = manifest.versions.filter(v => v.version == version); +if (existingVersion) { + console.warn(`Warning: version ${version} already exists. Adding new values.`); + + // Don't overwrite prev - it will cause headaches + delete versionEntry.prev; + + Object.assign(existingVersion, versionEntry); +} else { + manifest.versions = [versionEntry, ...manifest.versions]; +} fs.writeFileSync(manifestFile, JSON.stringify(manifest, null, 4)); From a5435183e4a181c75624442866014c132238c7d8 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Wed, 3 Apr 2019 17:04:39 -0500 Subject: [PATCH 071/175] Stronger check for array length --- scripts/update_manifest.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/scripts/update_manifest.js b/scripts/update_manifest.js index 71fa3f8..adbdc34 100755 --- a/scripts/update_manifest.js +++ b/scripts/update_manifest.js @@ -92,14 +92,17 @@ const versionEntry = { ] : undefined }; -const existingVersion = manifest.versions.filter(v => v.version == version); -if (existingVersion) { +console.log("Generated version entry:", versionEntry); + +const existingVersions = manifest.versions.filter(v => v.version == version); +if (existingVersions.length > 0) { console.warn(`Warning: version ${version} already exists. Adding new values.`); // Don't overwrite prev - it will cause headaches delete versionEntry.prev; - Object.assign(existingVersion, versionEntry); + Object.assign(existingVersions[0], versionEntry); + console.log("Merged version entry:", existingVersions[0]); } else { manifest.versions = [versionEntry, ...manifest.versions]; } From 190b0d7c1e5e5461958ff7ec0576da7671a161c9 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Wed, 3 Apr 2019 17:10:24 -0500 Subject: [PATCH 072/175] Fix issues parsing deletions file --- scripts/update_manifest.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/update_manifest.js b/scripts/update_manifest.js index adbdc34..220439c 100755 --- a/scripts/update_manifest.js +++ b/scripts/update_manifest.js @@ -58,6 +58,8 @@ if (!incrementalZipFile && !fullZipFile) { const manifest = JSON.parse(fs.readFileSync(manifestFile)); const deleteActions = deletionsFile ? fs.readFileSync(deletionsFile) + .toString() + .trim() .split("\n").map(file => { // XXX: This does not delete empty directories. Finding them would // actually be a substantial amount of work because Git does not From ed41f3c4e5964600063bbab2bf27265ede9e4c19 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Wed, 3 Apr 2019 17:14:44 -0500 Subject: [PATCH 073/175] Remove S3_MANIFESTS and S3_ARCHIVES --- scripts/wasabi.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/wasabi.sh b/scripts/wasabi.sh index a322b6c..12b310e 100755 --- a/scripts/wasabi.sh +++ b/scripts/wasabi.sh @@ -5,6 +5,7 @@ # Requires: # MANIFEST: name of the manifest file # S3_ACCESS_KEY, S3_SECRET_KEY: S3 credentials +# S3_MANIFESTS, S3_ARCHIVES: S3 paths to manifests and downloads # ARCHIVE_FULL: name of the full archive (if desired) # ARCHIVE_INCR: name of the incremental archive (if desired) # VERSION: name of the new version @@ -23,8 +24,6 @@ aws configure set aws_secret_access_key ${S3_SECRET_KEY} aws configure set default.region us-east-1 export S3_COPY="aws s3 cp --endpoint-url=https://s3.wasabisys.com" -export S3_MANIFESTS="s3://ao-manifests" -export S3_ARCHIVES="s3://ao-downloads" export ARCHIVE_FULL_ARG="" export ARCHIVE_INCR_ARG="" From f4b31356df011decba4e157a6d8d2c24f17ade2e Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Wed, 3 Apr 2019 17:22:05 -0500 Subject: [PATCH 074/175] Fix typo in getting added/modified files --- scripts/wasabi.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/wasabi.sh b/scripts/wasabi.sh index 12b310e..2067e5e 100755 --- a/scripts/wasabi.sh +++ b/scripts/wasabi.sh @@ -42,7 +42,7 @@ if [[ -n $ARCHIVE_INCR && -n $LAST_TAGGED_VERSION ]]; then grep "delete mode" | cut -d' ' -f 5- > ${DELETIONS_FILE} # Get added/modified files - git log --name-only --oneline --diff-filter=d ec5c..HEAD | \ + git log --name-only --oneline --diff-filter=d ${LAST_TAGGED_VERSION}..HEAD | \ grep -v -E "^[0-9a-f]{7} " | sort -u | zip ${ARCHIVE_INCR} -@ export ARCHIVE_INCR_ARG="-i ${ARCHIVE_INCR} ${DELETIONS_FILE}" From 9b4c18e8dc151ca0387e8d4514b8d9886d03caa7 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Wed, 3 Apr 2019 22:58:05 -0500 Subject: [PATCH 075/175] Cover rename and deleted directory cases --- scripts/update_manifest.js | 59 +++++++++++++++++++++++++++++++------- scripts/wasabi.sh | 13 ++++----- 2 files changed, 55 insertions(+), 17 deletions(-) diff --git a/scripts/update_manifest.js b/scripts/update_manifest.js index 220439c..19e1b15 100755 --- a/scripts/update_manifest.js +++ b/scripts/update_manifest.js @@ -30,7 +30,7 @@ argParser.addArgument([ "-f", "--full" ], { }); argParser.addArgument([ "-i", "--incremental" ], { type: isFile, nargs: 2, dest: "incrementalArgs", - metavar: ["", ""] + metavar: ["", ""] }); argParser.addArgument([ "-e", "--executable" ], { metavar: "[executable file]", nargs: 1, @@ -45,7 +45,7 @@ const { executableArgs } = argParser.parseArgs(); -const [incrementalZipFile, deletionsFile] = incrementalArgs || []; +const [incrementalZipFile, changesFile] = incrementalArgs || []; const [fullZipFile] = fullZipFileArgs || []; const [executable] = executableArgs || []; @@ -55,17 +55,56 @@ if (!incrementalZipFile && !fullZipFile) { process.exit(1); } +// Do a quick litmus test to prevent deleting everything incorrectly +if (changesFile && !fs.existsSync("base")) { + console.error("The working directory must be set to an " + + "asset folder in order for deleted directories " + + "to be calculated correctly. Abort."); + process.exit(1); +} + const manifest = JSON.parse(fs.readFileSync(manifestFile)); -const deleteActions = deletionsFile ? fs.readFileSync(deletionsFile) +const dirsDeleted = new Set(); +const specialActions = changesFile ? + fs.readFileSync(changesFile) .toString() .trim() - .split("\n").map(file => { - // XXX: This does not delete empty directories. Finding them would - // actually be a substantial amount of work because Git does not - // give us a good way of finding directories that were deleted. - return { action: "delete", target: file }; - }) : []; + .split("\n") + .map(line => line.split("\t")) + .map(([mode, target, source]) => { + switch (mode[0]) { + case "D": // Deleted + // Check if the folder exists relative to the working + // directory, and if not, add it to the dirsDeleted list. + // Keep going up the tree to see how many directories were + // deleted. + let dir = path.dirname(target); + while (!dirsDeleted.has(dir) && !fs.existsSync(dir)) { + dirsDeleted.add(dir); + dir = path.dirname(dir); + } + + return { action: "delete", target }; + case "R": // Renamed + // NOTE: Make sure that the launcher's implementation of + // the move action also creates directories when needed. + return { action: "move", source, target}; + default: + return null; + } + }) + // Remove ignored file mode changes + .filter(action => action !== null) + // Create actions based on directories to be deleted. + // Always have deeper directories first, to guarantee that deleting + // higher-level directories will succeed. + + Array.from(dirsDeleted.values()) + .sort((a, b) => b.split("/").length - a.split("/").length) + .map(dir => { + return { action: "deleteDir", target: dir }; + }) + : []; const urlBase = "https://s3.wasabisys.com/ao-downloads/"; @@ -83,7 +122,7 @@ const versionEntry = { } ] : undefined, update: incrementalArgs ? [ - ...deleteActions, + ...specialActions, { action: "dl", url: urlBase + encodeURIComponent(path.basename(incrementalZipFile)), diff --git a/scripts/wasabi.sh b/scripts/wasabi.sh index 2067e5e..a20c0e0 100755 --- a/scripts/wasabi.sh +++ b/scripts/wasabi.sh @@ -36,16 +36,15 @@ echo "Current tagged version: ${VERSION}" if [[ -n $ARCHIVE_INCR && -n $LAST_TAGGED_VERSION ]]; then echo "Incremental archive: ${ARCHIVE_INCR}" - # Get deleted files - export DELETIONS_FILE="deletions.txt" - git log --diff-filter=D --summary ${LAST_TAGGED_VERSION}..HEAD | \ - grep "delete mode" | cut -d' ' -f 5- > ${DELETIONS_FILE} + # Get all files + export CHANGES_FILE="changes.txt" + git diff --summary ${LAST_TAGGED_VERSION}..HEAD > ${CHANGES_FILE} # Get added/modified files - git log --name-only --oneline --diff-filter=d ${LAST_TAGGED_VERSION}..HEAD | \ - grep -v -E "^[0-9a-f]{7} " | sort -u | zip ${ARCHIVE_INCR} -@ + git diff --name-only --diff-filter=dr ${LAST_TAGGED_VERSION}..HEAD | \ + zip ${ARCHIVE_INCR} -@ - export ARCHIVE_INCR_ARG="-i ${ARCHIVE_INCR} ${DELETIONS_FILE}" + export ARCHIVE_INCR_ARG="-i ${ARCHIVE_INCR} ${CHANGES_FILE}" elif [[ -n $ARCHIVE_INCR && -z $LAST_TAGGED_VERSION ]]; then echo "Incremental archive was requested, but there is no previous version" fi From eae8ed1552085fccbd87049fe438b2f6284b3b95 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Wed, 3 Apr 2019 23:18:28 -0500 Subject: [PATCH 076/175] I hate JavaScript sometimes --- scripts/update_manifest.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/update_manifest.js b/scripts/update_manifest.js index 19e1b15..1a06a2d 100755 --- a/scripts/update_manifest.js +++ b/scripts/update_manifest.js @@ -99,11 +99,11 @@ const specialActions = changesFile ? // Create actions based on directories to be deleted. // Always have deeper directories first, to guarantee that deleting // higher-level directories will succeed. - + Array.from(dirsDeleted.values()) + .concat(Array.from(dirsDeleted.values()) .sort((a, b) => b.split("/").length - a.split("/").length) .map(dir => { return { action: "deleteDir", target: dir }; - }) + })) : []; const urlBase = "https://s3.wasabisys.com/ao-downloads/"; From 93b482cbc794c343d9f61a8c37bf900dfd925d1c Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Wed, 3 Apr 2019 23:24:37 -0500 Subject: [PATCH 077/175] Use --name-status instead of --summary --- scripts/wasabi.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/wasabi.sh b/scripts/wasabi.sh index a20c0e0..95fb3ee 100755 --- a/scripts/wasabi.sh +++ b/scripts/wasabi.sh @@ -38,7 +38,7 @@ if [[ -n $ARCHIVE_INCR && -n $LAST_TAGGED_VERSION ]]; then # Get all files export CHANGES_FILE="changes.txt" - git diff --summary ${LAST_TAGGED_VERSION}..HEAD > ${CHANGES_FILE} + git diff --name-status ${LAST_TAGGED_VERSION}..HEAD > ${CHANGES_FILE} # Get added/modified files git diff --name-only --diff-filter=dr ${LAST_TAGGED_VERSION}..HEAD | \ From 744cf727f0102fc51dde5a2f0269433138270448 Mon Sep 17 00:00:00 2001 From: nnoodle Date: Thu, 11 Apr 2019 22:25:40 +0700 Subject: [PATCH 078/175] Use /bin/sh and exit immediately if a command fails. --- scripts/configure_ubuntu.sh | 3 ++- scripts/macos_post_build.sh | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) mode change 100644 => 100755 scripts/macos_post_build.sh diff --git a/scripts/configure_ubuntu.sh b/scripts/configure_ubuntu.sh index 3817997..848cf63 100755 --- a/scripts/configure_ubuntu.sh +++ b/scripts/configure_ubuntu.sh @@ -1,4 +1,5 @@ -#!/bin/bash +#!/bin/sh +set -e #assumes a somewhat recent 64-bit ubuntu diff --git a/scripts/macos_post_build.sh b/scripts/macos_post_build.sh old mode 100644 new mode 100755 index d69da0b..1db8c03 --- a/scripts/macos_post_build.sh +++ b/scripts/macos_post_build.sh @@ -1,4 +1,5 @@ -#!/bin/bash +#!/bin/sh +set -e DST_FOLDER="./bin/Attorney_Online.app/Contents/Frameworks" From 2e4f0117b067c6d795a7d42fe23162d41260ff74 Mon Sep 17 00:00:00 2001 From: Cerapter Date: Thu, 9 May 2019 23:49:20 +0200 Subject: [PATCH 079/175] Text is now advanced based on graphemes, rather than bytes. --- include/courtroom.h | 1 + src/courtroom.cpp | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/include/courtroom.h b/include/courtroom.h index ec9f9ef..cc08f65 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -48,6 +48,7 @@ #include #include #include +#include #include diff --git a/src/courtroom.cpp b/src/courtroom.cpp index be7629b..c313a98 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -2024,6 +2024,7 @@ void Courtroom::chat_tick() //do not perform heavy operations here QString f_message = m_chatmessage[MESSAGE]; + f_message.remove(0, tick_pos); // Due to our new text speed system, we always need to stop the timer now. chat_tick_timer->stop(); @@ -2038,7 +2039,7 @@ void Courtroom::chat_tick() f_message.remove(0,2); } - if (tick_pos >= f_message.size()) + if (f_message.size() == 0) { text_state = 2; if (anim_state != 4) @@ -2050,7 +2051,16 @@ void Courtroom::chat_tick() else { - QString f_character = f_message.at(tick_pos); + QTextBoundaryFinder tbf(QTextBoundaryFinder::Grapheme, f_message); + QString f_character; + + tbf.toNextBoundary(); + + if (tbf.position() == -1) + f_character = f_message; + else + f_character = f_message.left(tbf.position()); + f_character = f_character.toHtmlEscaped(); if (f_character == " ") @@ -2265,7 +2275,7 @@ void Courtroom::chat_tick() if(blank_blip) qDebug() << "blank_blip found true"; - if (f_message.at(tick_pos) != ' ' || blank_blip) + if (f_character != ' ' || blank_blip) { if (blip_pos % blip_rate == 0 && !formatting_char) @@ -2277,7 +2287,7 @@ void Courtroom::chat_tick() ++blip_pos; } - ++tick_pos; + tick_pos += f_character.length(); // Restart the timer, but according to the newly set speeds, if there were any. // Keep the speed at bay. @@ -2304,6 +2314,7 @@ void Courtroom::chat_tick() } } + void Courtroom::show_testimony() { if (!testimony_in_progress || m_chatmessage[SIDE] != "wit") From c8a4f69d144d4be59a1fd07151579d923bcc8a6e Mon Sep 17 00:00:00 2001 From: Cerapter Date: Fri, 10 May 2019 20:49:59 +0200 Subject: [PATCH 080/175] Fix escaped HTML characters fucking up the grapheme cluster sizes. --- src/courtroom.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index c313a98..ce82f88 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -2053,6 +2053,7 @@ void Courtroom::chat_tick() { QTextBoundaryFinder tbf(QTextBoundaryFinder::Grapheme, f_message); QString f_character; + int f_char_length; tbf.toNextBoundary(); @@ -2061,8 +2062,10 @@ void Courtroom::chat_tick() else f_character = f_message.left(tbf.position()); + f_char_length = f_character.length(); f_character = f_character.toHtmlEscaped(); + if (f_character == " ") ui_vp_message->insertPlainText(" "); @@ -2155,7 +2158,7 @@ void Courtroom::chat_tick() else { next_character_is_not_special = true; - tick_pos--; + tick_pos -= f_char_length; } } @@ -2176,7 +2179,7 @@ void Courtroom::chat_tick() else { next_character_is_not_special = true; - tick_pos--; + tick_pos -= f_char_length; } } @@ -2287,7 +2290,7 @@ void Courtroom::chat_tick() ++blip_pos; } - tick_pos += f_character.length(); + tick_pos += f_char_length; // Restart the timer, but according to the newly set speeds, if there were any. // Keep the speed at bay. From 1f9a1bdd5d17d56fc3bfd4f5a35e3df476e74477 Mon Sep 17 00:00:00 2001 From: cents02 Date: Fri, 31 May 2019 21:47:47 +0000 Subject: [PATCH 081/175] Fixed issues #47 on both client and server --- src/courtroom.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index c313a98..c798885 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -2707,6 +2707,7 @@ void Courtroom::on_ooc_return_pressed() } else { + other_charid = -1; append_server_chatmessage("CLIENT", "You are no longer paired with anyone.", "1"); } } @@ -2992,6 +2993,7 @@ void Courtroom::on_pair_list_clicked(QModelIndex p_index) QListWidgetItem *f_item = ui_pair_list->item(p_index.row()); QString f_char = f_item->text(); QString real_char; + int f_cid = -1; if (f_char.endsWith(" [x]")) { @@ -2999,17 +3001,19 @@ void Courtroom::on_pair_list_clicked(QModelIndex p_index) f_item->setText(real_char); } else - real_char = f_char; - - int f_cid = -1; - - for (int n_char = 0 ; n_char < char_list.size() ; n_char++) { + real_char = f_char; + for (int n_char = 0 ; n_char < char_list.size() ; n_char++) + { if (char_list.at(n_char).name == real_char) f_cid = n_char; + } } - if (f_cid < 0 || f_cid >= char_list.size()) + + + + if (f_cid < -2 || f_cid >= char_list.size()) { qDebug() << "W: " << real_char << " not present in char_list"; return; @@ -3028,8 +3032,10 @@ void Courtroom::on_pair_list_clicked(QModelIndex p_index) for (int i = 0; i < ui_pair_list->count(); i++) { ui_pair_list->item(i)->setText(sorted_pair_list.at(i)); } - + if(other_charid != -1) + { f_item->setText(real_char + " [x]"); + } } void Courtroom::on_music_list_double_clicked(QModelIndex p_model) From 09d8e9e7a45d8c7d9557253e1fb48f3e9bd9c894 Mon Sep 17 00:00:00 2001 From: cents02 Date: Fri, 31 May 2019 21:52:22 +0000 Subject: [PATCH 082/175] Update courtroom.cpp --- src/courtroom.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index c798885..9fd52d8 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -3009,10 +3009,6 @@ void Courtroom::on_pair_list_clicked(QModelIndex p_index) f_cid = n_char; } } - - - - if (f_cid < -2 || f_cid >= char_list.size()) { qDebug() << "W: " << real_char << " not present in char_list"; @@ -3037,7 +3033,6 @@ void Courtroom::on_pair_list_clicked(QModelIndex p_index) f_item->setText(real_char + " [x]"); } } - void Courtroom::on_music_list_double_clicked(QModelIndex p_model) { if (is_muted) From ae8552578020dcd515e1fe80f2b95e6be461744c Mon Sep 17 00:00:00 2001 From: cents02 Date: Mon, 3 Jun 2019 09:00:24 +0000 Subject: [PATCH 083/175] Resolved requests/issues. --- src/courtroom.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 9fd52d8..020a54c 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -3009,7 +3009,7 @@ void Courtroom::on_pair_list_clicked(QModelIndex p_index) f_cid = n_char; } } - if (f_cid < -2 || f_cid >= char_list.size()) + if (f_cid < -1 || f_cid >= char_list.size()) { qDebug() << "W: " << real_char << " not present in char_list"; return; @@ -3030,7 +3030,7 @@ void Courtroom::on_pair_list_clicked(QModelIndex p_index) } if(other_charid != -1) { - f_item->setText(real_char + " [x]"); + f_item->setText(real_char + " [x]"); } } void Courtroom::on_music_list_double_clicked(QModelIndex p_model) From f2a4ac013dd0cd1b054a8fa604bc75a659cff3ff Mon Sep 17 00:00:00 2001 From: David Skoland Date: Sat, 29 Jun 2019 00:27:31 +0000 Subject: [PATCH 084/175] Mac improvements Just modifying build scripts to make it less painful to build and release on Mac See merge request AttorneyOnline/AO2-Client!64 --- .gitignore | 1 + README_BUILD.md | 34 +++++++++++++++++++++++------- scripts/configure_macos.sh | 42 +++++++++++++++++++++++++++++++++++++ scripts/configure_ubuntu.sh | 10 +++++++-- scripts/macos_post_build.sh | 17 --------------- scripts/release_macos.sh | 22 +++++++++++++++++++ 6 files changed, 99 insertions(+), 27 deletions(-) create mode 100755 scripts/configure_macos.sh delete mode 100755 scripts/macos_post_build.sh create mode 100755 scripts/release_macos.sh diff --git a/.gitignore b/.gitignore index 6ac11d6..0b767f1 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ *.so *.pro.autosave base_override.h +.DS_Store base-full/ bass.lib diff --git a/README_BUILD.md b/README_BUILD.md index 685699c..f7441b8 100644 --- a/README_BUILD.md +++ b/README_BUILD.md @@ -8,22 +8,40 @@ This program has five main dependencies * Discord Rich Presence (https://github.com/discordapp/discord-rpc/releases) * Qt Apng Plugin (https://github.com/Skycoder42/QtApng/releases) +### Help + +If you're having issues with any of this, ask in the offical Discord: https://discord.gg/wWvQ3pw +Alternatively, you can ask OmniTroid#4004 on Discord. + ### How to build dynamically (the easy way) +#### General preparation + What you want to do is first download the latest version of Qt from the first link. (get the prebuilt dynamic version) -If you're on Ubuntu, go to the scripts/ folder and run configure_ubuntu.sh. This should fetch all the required dependencies automatically. -If not, go to each one of the links above and find the right dynamic library for your platform: -* Windows: .dll -* Linux: .so -* Mac: .dylib +After going through the OS-specific steps below, compiling in Qt creator should work. -And put them in BOTH lib/ and the repository root (lib/ is required for linking and root is required for runtime) +#### Windows -Launch Qt creator, open the .pro file and try running it. Ask in the Discord if you're having issues: https://discord.gg/wWvQ3pw +If you're on Windows, you need to go find all the dependencies (see above) and put them in the lib/ folder. + +#### MacOS + +If you're on MacOS, you can simply go to terminal and run ./scripts/configure_macos.sh +This will automatically fetch all the required dependencies. Additionally, if you need to create a standalone release, just run ./scripts/release_macos.sh +This will make the .app bundle in bin/ able to execute as a standalone. + +#### Ubuntu + +If you're on Ubuntu, just go to terminal and run ./scripts/configure_ubuntu.sh +This should fetch all the required dependencies automatically. + +#### Other Linux + +With some tweaks to the ubuntu script, it shouldn't be a big hassle to compile it on a modern linux. Look in the script and see what you may have to modify. ### How to build statically (the hard way) -You're gonna have a bad time. +You're gonna have a bad time. Building statically means you can distribute the final program without needing to pack alongside a lot of dynamic libraries. This is a tricky process and is not recommended unless you know what you're doing. diff --git a/scripts/configure_macos.sh b/scripts/configure_macos.sh new file mode 100755 index 0000000..af08966 --- /dev/null +++ b/scripts/configure_macos.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +# This script fetches all build dependencies for MacOS +# Tested on MacOS 10.14 (Mojave), Qt 5.13 and XCode 10.2 + +# Exit on errors and unset variables +set -eu + +ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/" + +cd ${ROOT_DIR} + +LIB_TARGET="../../lib" +BASS_LINK="http://uk.un4seen.com/files/bass24-osx.zip" +BASSOPUS_LINK="http://www.un4seen.com/files/bassopus24-osx.zip" +DISCORD_RPC_LINK="https://github.com/discordapp/discord-rpc/releases/download/v3.4.0/discord-rpc-osx.zip" +APNG_LINK="https://github.com/Skycoder42/QtApng/releases/download/1.1.2-2/qtapng_clang_64_5.13.0.tar.xz" + +# Easier if we don't need to worry about an existing tmp folder tbh smh +# v Add a slash here for free tmp folder cleanup in true javascript community style +rm -rf tmp +mkdir tmp +cd tmp + +curl -Ls ${BASS_LINK} -o bass.zip +unzip -qq bass.zip +cp libbass.dylib ${LIB_TARGET} + +curl -Ls ${BASSOPUS_LINK} -o bassopus.zip +unzip -qq bassopus.zip +cp libbassopus.dylib ${LIB_TARGET} + +curl -Ls ${DISCORD_RPC_LINK} -o discord_rpc.zip +unzip -qq discord_rpc.zip +cp discord-rpc/osx-dynamic/lib/libdiscord-rpc.dylib ${LIB_TARGET} + +curl -Ls ${APNG_LINK} -o apng.tar.xz +tar -xf apng.tar.xz +cp clang_64/plugins/imageformats/libqapng.dylib ../../lib + +cd .. +rm -rf tmp diff --git a/scripts/configure_ubuntu.sh b/scripts/configure_ubuntu.sh index 848cf63..159dc4d 100755 --- a/scripts/configure_ubuntu.sh +++ b/scripts/configure_ubuntu.sh @@ -1,7 +1,13 @@ #!/bin/sh -set -e -#assumes a somewhat recent 64-bit ubuntu +# Assumes a somewhat recent 64-bit ubuntu + +# Exit on errors and unset variables +set -eu + +ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/" + +cd ${ROOT_DIR} #need some openGL stuff sudo apt install libgl1-mesa-dev diff --git a/scripts/macos_post_build.sh b/scripts/macos_post_build.sh deleted file mode 100755 index 1db8c03..0000000 --- a/scripts/macos_post_build.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -set -e - -DST_FOLDER="./bin/Attorney_Online.app/Contents/Frameworks" - -cd .. - -mkdir $DST_FOLDER - -cp ./lib/libbass.dylib $DST_FOLDER -cp ./lib/libbassopus.dylib $DST_FOLDER - -install_name_tool -id @executable_path/../Frameworks/libbass.dylib $DST_FOLDER/libbass.dylib - -install_name_tool -id @executable_path/../Frameworks/libbassopus.dylib $DST_FOLDER/libbassopus.dylib - -install_name_tool -change @loader_path/libbass.dylib @executable_path/../Frameworks/libbass.dylib ./bin/Attorney_Online.app/Contents/MacOS/Attorney_Online diff --git a/scripts/release_macos.sh b/scripts/release_macos.sh new file mode 100755 index 0000000..50acb40 --- /dev/null +++ b/scripts/release_macos.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +# This script prepares the compiled bundle for shipping as a standalone release +# Assumes the Qt bin folder is in PATH +# Should be used on a "Release" build from QT creator +# Note that this DOES NOT add the base/ folder + +# Exit on errors and unset variables +set -eu + +ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/" + +cd ${ROOT_DIR} + +# This thing basically does all the work +macdeployqt ../bin/Attorney_Online.app + +# Need to add the dependencies +cp ../lib/* ../bin/Attorney_Online.app/Contents/Frameworks + +# libbass has a funny path for some reason, just use rpath +install_name_tool -change @loader_path/libbass.dylib @rpath/libbass.dylib ../bin/Attorney_Online.app/Contents/MacOS/Attorney_Online From f826ba390bcf11427aab5058728ad7dbd3f699a6 Mon Sep 17 00:00:00 2001 From: cents02 Date: Sun, 30 Jun 2019 21:47:48 +0000 Subject: [PATCH 085/175] New feature! /save_case . Takes two parameters, name and cr status. E.g: /save_case case1 lfp . It takes court evidence but leaves the doc and cmdoc options blank to be entered manually(if anybody actually puts anything). --- src/courtroom.cpp | 61 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 2 deletions(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 020a54c..581ce5a 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -2864,6 +2864,58 @@ void Courtroom::on_ooc_return_pressed() ui_ooc_chat_message->clear(); return; } + else if(ooc_message.startsWith("/save_case")) + { + QStringList command = ooc_message.split(" ", QString::SkipEmptyParts); + + QDir casefolder("base/cases"); + if (!casefolder.exists()) + { + QDir::current().mkdir("base/" + casefolder.dirName()); + append_server_chatmessage("CLIENT", "You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it.", "1"); + ui_ooc_chat_message->clear(); + return; + } + QStringList caseslist = casefolder.entryList(); + caseslist.removeOne("."); + caseslist.removeOne(".."); + caseslist.replaceInStrings(".ini",""); + + if (command.size() < 2) + { + append_server_chatmessage("CLIENT", "You need to give a filename to save (extension not needed) and the courtroom status!" + caseslist.join(", "), "1"); + ui_ooc_chat_message->clear(); + return; + } + + + if (command.size() > 3) + { + append_server_chatmessage("CLIENT", "Too many arguments to save a case! You only need a filename without extension and the courtroom status!", "1"); + ui_ooc_chat_message->clear(); + return; + } + QSettings casefile("base/cases/" + command[1] + ".ini", QSettings::IniFormat); + casefile.setValue("author",ui_ooc_chat_name->text()); + casefile.setValue("cmdoc",""); + casefile.setValue("doc", ""); + casefile.setValue("status",command[2]); + casefile.sync(); + for(int i = local_evidence_list.size() - 1; i >= 0; i--) + { + casefile.beginGroup(QString::number(i)); + casefile.sync(); + casefile.setValue("name",local_evidence_list[i].name); + casefile.setValue("description",local_evidence_list[i].description); + casefile.setValue("image",local_evidence_list[i].image); + casefile.endGroup(); + } + casefile.sync(); + append_server_chatmessage("CLIENT", "Succesfully saved, edit doc and cmdoc link on the ini!", "1"); + ui_ooc_chat_message->clear(); + return; + + } QStringList packet_contents; packet_contents.append(ui_ooc_chat_name->text()); @@ -3009,7 +3061,11 @@ void Courtroom::on_pair_list_clicked(QModelIndex p_index) f_cid = n_char; } } - if (f_cid < -1 || f_cid >= char_list.size()) + + + + + if (f_cid < -2 || f_cid >= char_list.size()) { qDebug() << "W: " << real_char << " not present in char_list"; return; @@ -3030,9 +3086,10 @@ void Courtroom::on_pair_list_clicked(QModelIndex p_index) } if(other_charid != -1) { - f_item->setText(real_char + " [x]"); + f_item->setText(real_char + " [x]"); } } + void Courtroom::on_music_list_double_clicked(QModelIndex p_model) { if (is_muted) From 099fea176c018c4aa6b9e7887e4f154866dc2c7d Mon Sep 17 00:00:00 2001 From: cents02 Date: Sun, 30 Jun 2019 22:09:12 +0000 Subject: [PATCH 086/175] Indentation --- src/courtroom.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 581ce5a..da05fe9 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -3086,7 +3086,7 @@ void Courtroom::on_pair_list_clicked(QModelIndex p_index) } if(other_charid != -1) { - f_item->setText(real_char + " [x]"); + f_item->setText(real_char + " [x]"); } } From ca3f113377f85296538f42c355ab2308c05ca982 Mon Sep 17 00:00:00 2001 From: cents02 Date: Mon, 1 Jul 2019 18:50:30 +0000 Subject: [PATCH 087/175] Fixed evidence not recognizing subfolder issue. Can support 1 folder tho. --- src/evidence.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/evidence.cpp b/src/evidence.cpp index 4e79664..14234d8 100644 --- a/src/evidence.cpp +++ b/src/evidence.cpp @@ -205,8 +205,16 @@ void Courtroom::on_evidence_image_button_clicked() QString filename = filenames.at(0); QStringList split_filename = filename.split("/"); + if(split_filename.at(split_filename.size() - 2) == "evidence") + { + filename = split_filename.at(split_filename.size() - 1); + } + else { + + filename = split_filename.at(split_filename.size() - 2) + "/" + split_filename.at(split_filename.size() - 1); + } + - filename = split_filename.at(split_filename.size() - 1); ui_evidence_image_name->setText(filename); From 6c1d5ea41ebb6631901f00adf11d273e2411997e Mon Sep 17 00:00:00 2001 From: oldmud0 <3421260-oldmud0@users.noreply.gitlab.com> Date: Wed, 3 Jul 2019 02:47:32 +0000 Subject: [PATCH 088/175] CI: install dependencies not in builder container (?!) --- .gitlab-ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d05a337..cf67615 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -72,6 +72,10 @@ build windows i686: - docker - linux script: + # Install dependencies + - apt-get update + - apt-get install --no-install-recommends -y make curl ca-certificates upx unzip + # Extract BASS - mkdir bass - cd bass From d07dd1d5fe42f0120d4d5ff1050fcd082123b2e9 Mon Sep 17 00:00:00 2001 From: cents02 Date: Wed, 3 Jul 2019 08:48:04 +0000 Subject: [PATCH 089/175] Permanent and not temporary solution for evidence. Supports up to infite subfolders. --- src/evidence.cpp | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/src/evidence.cpp b/src/evidence.cpp index 14234d8..ebef749 100644 --- a/src/evidence.cpp +++ b/src/evidence.cpp @@ -188,11 +188,12 @@ void Courtroom::on_evidence_image_name_edited() void Courtroom::on_evidence_image_button_clicked() { + QDir dir(ao_app->get_base_path() + "evidence"); QFileDialog dialog(this); dialog.setFileMode(QFileDialog::ExistingFile); dialog.setNameFilter(tr("Images (*.png)")); dialog.setViewMode(QFileDialog::List); - dialog.setDirectory(ao_app->get_base_path() + "evidence"); + dialog.setDirectory(dir); QStringList filenames; @@ -203,21 +204,8 @@ void Courtroom::on_evidence_image_button_clicked() return; QString filename = filenames.at(0); - - QStringList split_filename = filename.split("/"); - if(split_filename.at(split_filename.size() - 2) == "evidence") - { - filename = split_filename.at(split_filename.size() - 1); - } - else { - - filename = split_filename.at(split_filename.size() - 2) + "/" + split_filename.at(split_filename.size() - 1); - } - - - + filename = dir.relativeFilePath(filename); ui_evidence_image_name->setText(filename); - on_evidence_image_name_edited(); } From 432069844a2073f8d3d5fdfff5c760acacc9a734 Mon Sep 17 00:00:00 2001 From: cents02 Date: Sun, 7 Jul 2019 22:32:57 +0000 Subject: [PATCH 090/175] Revert "More bug fixing." This reverts commit ca84ba516fc892deaeafc18b23ad5a06822b29f5 --- src/courtroom.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 2d5cf15..344516a 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -2886,7 +2886,7 @@ void Courtroom::on_ooc_return_pressed() if (command.size() < 2) { - append_server_chatmessage("CLIENT", "You need to give a filename to save (extension not needed) and the courtroom status!" + caseslist.join(", "), "1"); + append_server_chatmessage("CLIENT", "You need to give a filename to save (extension not needed) and the courtroom status!", "1"); ui_ooc_chat_message->clear(); return; } @@ -2906,6 +2906,8 @@ void Courtroom::on_ooc_return_pressed() casefile.sync(); for(int i = local_evidence_list.size() - 1; i >= 0; i--) { + QString clean_evidence_dsc = local_evidence_list[i].description.replace(QRegularExpression("..."), ""); + clean_evidence_dsc = clean_evidence_dsc.replace(clean_evidence_dsc.lastIndexOf(">"), 1, ""); casefile.beginGroup(QString::number(i)); casefile.sync(); casefile.setValue("name",local_evidence_list[i].name); From b15c6f15f0b13bce4ef7305efa08c1d257401def Mon Sep 17 00:00:00 2001 From: Windrammer Date: Thu, 11 Jul 2019 09:05:26 -0600 Subject: [PATCH 091/175] Fix bug #82 causing a client crash if /save_case was used without providing a courtroom state --- src/courtroom.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 344516a..3d812e0 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -2884,7 +2884,7 @@ void Courtroom::on_ooc_return_pressed() caseslist.removeOne(".."); caseslist.replaceInStrings(".ini",""); - if (command.size() < 2) + if (command.size() < 3) { append_server_chatmessage("CLIENT", "You need to give a filename to save (extension not needed) and the courtroom status!", "1"); ui_ooc_chat_message->clear(); From 5eccabcad15a52691228aded1d9c1fd5074fb70e Mon Sep 17 00:00:00 2001 From: David Skoland Date: Fri, 12 Jul 2019 23:00:25 +0000 Subject: [PATCH 092/175] Less insane debugging; minor refactoring (!75) --- include/aoapplication.h | 1 + include/aoevidencebutton.h | 2 ++ include/courtroom.h | 12 ++++-------- include/networkmanager.h | 7 ++++--- src/aoapplication.cpp | 14 +++++++------- src/aoevidencebutton.cpp | 2 ++ src/charselect.cpp | 28 ++++++++++++++-------------- src/courtroom.cpp | 10 ++-------- src/discord_rich_presence.cpp | 4 ++-- src/hardware_functions.cpp | 7 +++---- src/networkmanager.cpp | 16 +++++++++------- src/packet_distribution.cpp | 10 ++++++++++ 12 files changed, 60 insertions(+), 53 deletions(-) diff --git a/include/aoapplication.h b/include/aoapplication.h index e698030..60856ee 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -22,6 +22,7 @@ #include #include #include +#include class NetworkManager; class Lobby; diff --git a/include/aoevidencebutton.h b/include/aoevidencebutton.h index 27fb84b..80b747c 100644 --- a/include/aoevidencebutton.h +++ b/include/aoevidencebutton.h @@ -35,8 +35,10 @@ protected: void enterEvent(QEvent *e); void leaveEvent(QEvent *e); void mouseDoubleClickEvent(QMouseEvent *e); + /* void dragLeaveEvent(QMouseEvent *e); void dragEnterEvent(QMouseEvent *e); + */ signals: void evidence_clicked(int p_id); diff --git a/include/courtroom.h b/include/courtroom.h index cc08f65..99a090b 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -35,7 +35,6 @@ #include #include #include -#include #include #include #include @@ -273,8 +272,6 @@ private: QVector arup_cms; QVector arup_locks; - QSignalMapper *char_button_mapper; - QVector ic_chatlog_history; // These map music row items and area row items to their actual IDs. @@ -538,6 +535,7 @@ private: void construct_char_select(); void set_char_select(); void set_char_select_page(); + void char_clicked(int n_char); void put_button_in_place(int starting, int chars_on_this_page); void filter_character_list(); @@ -652,14 +650,12 @@ private slots: void on_char_select_left_clicked(); void on_char_select_right_clicked(); - void on_char_search_changed(const QString& newtext); - void on_char_taken_clicked(int newstate); - void on_char_passworded_clicked(int newstate); + void on_char_search_changed(); + void on_char_taken_clicked(); + void on_char_passworded_clicked(); void on_spectator_clicked(); - void char_clicked(int n_char); - void on_switch_area_music_clicked(); void on_casing_clicked(); diff --git a/include/networkmanager.h b/include/networkmanager.h index e28abfd..f26e658 100644 --- a/include/networkmanager.h +++ b/include/networkmanager.h @@ -44,13 +44,14 @@ public: QString ms_nosrv_hostname = "master.aceattorneyonline.com"; #endif - const int ms_port = 27016; + const quint16 ms_port = 27016; const int timeout_milliseconds = 2000; - const int ms_reconnect_delay_ms = 7000; + // in seconds + const int ms_reconnect_delay = 7; // kind of arbitrary max buffer size - const size_t buffer_max_size = 16384; + #define BUFFER_MAX_SIZE 16384 bool ms_partial_packet = false; QString ms_temp_packet = ""; diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp index d7c3e66..4ef1edd 100644 --- a/src/aoapplication.cpp +++ b/src/aoapplication.cpp @@ -37,9 +37,9 @@ void AOApplication::construct_lobby() w_lobby = new Lobby(this); lobby_constructed = true; - QRect screenGeometry = QApplication::desktop()->screenGeometry(); - int x = (screenGeometry.width()-w_lobby->width()) / 2; - int y = (screenGeometry.height()-w_lobby->height()) / 2; + QRect geometry = QGuiApplication::primaryScreen()->geometry(); + int x = (geometry.width()-w_lobby->width()) / 2; + int y = (geometry.height()-w_lobby->height()) / 2; w_lobby->move(x, y); if (is_discord_enabled()) @@ -72,9 +72,9 @@ void AOApplication::construct_courtroom() w_courtroom = new Courtroom(this); courtroom_constructed = true; - QRect screenGeometry = QApplication::desktop()->screenGeometry(); - int x = (screenGeometry.width()-w_courtroom->width()) / 2; - int y = (screenGeometry.height()-w_courtroom->height()) / 2; + QRect geometry = QGuiApplication::primaryScreen()->geometry(); + int x = (geometry.width()-w_courtroom->width()) / 2; + int y = (geometry.height()-w_courtroom->height()) / 2; w_courtroom->move(x, y); } @@ -161,7 +161,7 @@ void AOApplication::ms_connect_finished(bool connected, bool will_retry) { if (lobby_constructed) w_lobby->append_error("Error connecting to master server. Will try again in " - + QString::number(net_manager->ms_reconnect_delay_ms / 1000.f) + " seconds."); + + QString::number(net_manager->ms_reconnect_delay) + " seconds."); } else { diff --git a/src/aoevidencebutton.cpp b/src/aoevidencebutton.cpp index 924aeb8..15b598f 100644 --- a/src/aoevidencebutton.cpp +++ b/src/aoevidencebutton.cpp @@ -86,6 +86,7 @@ void AOEvidenceButton::mouseDoubleClickEvent(QMouseEvent *e) evidence_double_clicked(m_id); } +/* void AOEvidenceButton::dragLeaveEvent(QMouseEvent *e) { //QWidget::dragLeaveEvent(e); @@ -99,6 +100,7 @@ void AOEvidenceButton::dragEnterEvent(QMouseEvent *e) qDebug() << "drag enter event"; } +*/ void AOEvidenceButton::enterEvent(QEvent * e) { diff --git a/src/charselect.cpp b/src/charselect.cpp index 8e1b912..4987cf5 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -44,7 +44,6 @@ void Courtroom::construct_char_select() set_size_and_pos(ui_char_buttons, "char_buttons"); - connect (char_button_mapper, SIGNAL(mapped(int)), this, SLOT(char_clicked(int))); connect(ui_back_to_lobby, SIGNAL(clicked()), this, SLOT(on_back_to_lobby_clicked())); connect(ui_char_select_left, SIGNAL(clicked()), this, SLOT(on_char_select_left_clicked())); @@ -52,9 +51,9 @@ void Courtroom::construct_char_select() connect(ui_spectator, SIGNAL(clicked()), this, SLOT(on_spectator_clicked())); - connect(ui_char_search, SIGNAL(textEdited(const QString&)), this, SLOT(on_char_search_changed(const QString&))); - connect(ui_char_passworded, SIGNAL(stateChanged(int)), this, SLOT(on_char_passworded_clicked(int))); - connect(ui_char_taken, SIGNAL(stateChanged(int)), this, SLOT(on_char_taken_clicked(int))); + connect(ui_char_search, SIGNAL(textEdited(const QString&)), this, SLOT(on_char_search_changed())); + connect(ui_char_passworded, SIGNAL(stateChanged(int)), this, SLOT(on_char_passworded_clicked())); + connect(ui_char_taken, SIGNAL(stateChanged(int)), this, SLOT(on_char_taken_clicked())); } void Courtroom::set_char_select() @@ -197,14 +196,15 @@ void Courtroom::character_loading_finished() // Later on, we'll be revealing buttons as we need them. for (int n = 0; n < char_list.size(); n++) { - AOCharButton* character = new AOCharButton(ui_char_buttons, ao_app, 0, 0, char_list.at(n).taken); - character->reset(); - character->hide(); - character->set_image(char_list.at(n).name); - ui_char_button_list.append(character); + AOCharButton* char_button = new AOCharButton(ui_char_buttons, ao_app, 0, 0, char_list.at(n).taken); + char_button->reset(); + char_button->hide(); + char_button->set_image(char_list.at(n).name); + ui_char_button_list.append(char_button); - connect(character, SIGNAL(clicked()), char_button_mapper, SLOT(map())); - char_button_mapper->setMapping(character, ui_char_button_list.size() - 1); + connect(char_button, &AOCharButton::clicked, [this, n](){ + this->char_clicked(n); + }); // This part here serves as a way of showing to the player that the game is still running, it is // just loading the pictures of the characters. @@ -252,17 +252,17 @@ void Courtroom::filter_character_list() set_char_select_page(); } -void Courtroom::on_char_search_changed(const QString& newtext) +void Courtroom::on_char_search_changed() { filter_character_list(); } -void Courtroom::on_char_passworded_clicked(int newstate) +void Courtroom::on_char_passworded_clicked() { filter_character_list(); } -void Courtroom::on_char_taken_clicked(int newstate) +void Courtroom::on_char_taken_clicked() { filter_character_list(); } diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 3d812e0..a8e9739 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -6,7 +6,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() // Change the default audio output device to be the one the user has given // in his config.ini file for now. - int a = 0; + unsigned int a = 0; BASS_DEVICEINFO info; if (ao_app->get_audio_output_device() == "default") @@ -21,7 +21,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() if (ao_app->get_audio_output_device() == info.name) { BASS_SetDevice(a); - BASS_Init(a, 48000, BASS_DEVICE_LATENCY, nullptr, nullptr); + BASS_Init(static_cast(a), 48000, BASS_DEVICE_LATENCY, nullptr, nullptr); load_bass_opus_plugin(); qDebug() << info.name << "was set as the default audio output device."; break; @@ -49,8 +49,6 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() testimony_hide_timer = new QTimer(this); testimony_hide_timer->setSingleShot(true); - char_button_mapper = new QSignalMapper(this); - music_player = new AOMusicPlayer(this, ao_app); music_player->set_volume(0); sfx_player = new AOSfxPlayer(this, ao_app); @@ -2223,11 +2221,7 @@ void Courtroom::chat_tick() case INLINE_GREY: ui_vp_message->insertHtml("" + f_character + ""); break; - default: - ui_vp_message->insertHtml(f_character); - break; } - } else { diff --git a/src/discord_rich_presence.cpp b/src/discord_rich_presence.cpp index 10f5833..ac14bb2 100644 --- a/src/discord_rich_presence.cpp +++ b/src/discord_rich_presence.cpp @@ -11,10 +11,10 @@ Discord::Discord() qInfo() << "Discord RPC ready"; }; handlers.disconnected = [](int errorCode, const char* message) { - qInfo() << "Discord RPC disconnected! " << message; + qInfo() << "Discord RPC disconnected! " << message << errorCode; }; handlers.errored = [](int errorCode, const char* message) { - qWarning() << "Discord RPC errored out! " << message; + qWarning() << "Discord RPC errored out! " << message << errorCode; }; qInfo() << "Initializing Discord RPC"; Discord_Initialize(APPLICATION_ID, &handlers, 1, nullptr); diff --git a/src/hardware_functions.cpp b/src/hardware_functions.cpp index ebba6ab..5d6b6ff 100644 --- a/src/hardware_functions.cpp +++ b/src/hardware_functions.cpp @@ -5,12 +5,12 @@ #if (defined (_WIN32) || defined (_WIN64)) #include -DWORD dwVolSerial; -BOOL bIsRetrieved; +static DWORD dwVolSerial; +static BOOL bIsRetrieved; QString get_hdid() { - bIsRetrieved = GetVolumeInformation(TEXT("C:\\"), NULL, NULL, &dwVolSerial, NULL, NULL, NULL, NULL); + bIsRetrieved = GetVolumeInformation(TEXT("C:\\"), nullptr, 0, &dwVolSerial, nullptr, nullptr, nullptr, 0); if (bIsRetrieved) return QString::number(dwVolSerial, 16); @@ -18,7 +18,6 @@ QString get_hdid() //a totally random string //what could possibly go wrong return "gxsps32sa9fnwic92mfbs0"; - } #elif (defined (LINUX) || defined (__linux__)) diff --git a/src/networkmanager.cpp b/src/networkmanager.cpp index 288a900..5b16db4 100644 --- a/src/networkmanager.cpp +++ b/src/networkmanager.cpp @@ -78,9 +78,9 @@ void NetworkManager::ship_server_packet(QString p_packet) void NetworkManager::handle_ms_packet() { - char buffer[buffer_max_size]; - std::memset(buffer, 0, buffer_max_size); - ms_socket->read(buffer, buffer_max_size); + char buffer[BUFFER_MAX_SIZE]; + std::memset(buffer, 0, BUFFER_MAX_SIZE); + ms_socket->read(buffer, BUFFER_MAX_SIZE); QString in_data = buffer; @@ -137,7 +137,9 @@ void NetworkManager::on_srv_lookup() for (const QDnsServiceRecord &record : srv_records) { +#ifdef DEBUG_NETWORK qDebug() << "Connecting to " << record.target() << ":" << record.port(); +#endif ms_socket->connectToHost(record.target(), record.port()); QTime timer; timer.start(); @@ -206,7 +208,7 @@ void NetworkManager::on_ms_socket_error(QAbstractSocket::SocketError error) emit ms_connect_finished(false, true); - ms_reconnect_timer->start(ms_reconnect_delay_ms); + ms_reconnect_timer->start(ms_reconnect_delay * 1000); } void NetworkManager::retry_ms_connect() @@ -217,9 +219,9 @@ void NetworkManager::retry_ms_connect() void NetworkManager::handle_server_packet() { - char buffer[buffer_max_size]; - std::memset(buffer, 0, buffer_max_size); - server_socket->read(buffer, buffer_max_size); + char buffer[BUFFER_MAX_SIZE]; + std::memset(buffer, 0, BUFFER_MAX_SIZE); + server_socket->read(buffer, BUFFER_MAX_SIZE); QString in_data = buffer; diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 68d2fb9..942c275 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -14,8 +14,10 @@ void AOApplication::ms_packet_received(AOPacket *p_packet) QString header = p_packet->get_header(); QStringList f_contents = p_packet->get_contents(); +#ifdef DEBUG_NETWORK if (header != "CHECK") qDebug() << "R(ms):" << p_packet->to_string(); +#endif if (header == "ALL") { @@ -127,8 +129,10 @@ void AOApplication::server_packet_received(AOPacket *p_packet) QStringList f_contents = p_packet->get_contents(); QString f_packet = p_packet->to_string(); +#ifdef DEBUG_NETWORK if (header != "checkconnection") qDebug() << "R:" << f_packet; +#endif if (header == "decryptor") { @@ -677,7 +681,9 @@ void AOApplication::send_ms_packet(AOPacket *p_packet) net_manager->ship_ms_packet(f_packet); +#ifdef DEBUG_NETWORK qDebug() << "S(ms):" << f_packet; +#endif delete p_packet; } @@ -691,14 +697,18 @@ void AOApplication::send_server_packet(AOPacket *p_packet, bool encoded) if (encryption_needed) { +#ifdef DEBUG_NETWORK qDebug() << "S(e):" << f_packet; +#endif p_packet->encrypt_header(s_decryptor); f_packet = p_packet->to_string(); } else { +#ifdef DEBUG_NETWORK qDebug() << "S:" << f_packet; +#endif } net_manager->ship_server_packet(f_packet); From 82db3e226353183cf8337d993ba89ea265014d3a Mon Sep 17 00:00:00 2001 From: cents02 Date: Sat, 20 Jul 2019 16:33:33 +0000 Subject: [PATCH 093/175] Revert "More bug fixing." This reverts commit ca84ba516fc892deaeafc18b23ad5a06822b29f5 --- include/aoapplication.h | 4 ++++ src/courtroom.cpp | 4 +++- src/text_file_functions.cpp | 12 +++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/include/aoapplication.h b/include/aoapplication.h index 60856ee..2eed7f2 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -195,6 +195,10 @@ public: //Returns the dimensions of widget with specified identifier from p_file pos_size_type get_element_dimensions(QString p_identifier, QString p_file); + //Returns the name of the font with p_identifier from p_file + QString get_font_name(QString p_identifier, QString p_file); + + //Returns the value of font_size with p_identifier from p_file int get_font_size(QString p_identifier, QString p_file); diff --git a/src/courtroom.cpp b/src/courtroom.cpp index a8e9739..237bedc 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -724,7 +724,9 @@ void Courtroom::set_font(QWidget *widget, QString p_identifier) int f_weight = ao_app->get_font_size(p_identifier, design_file); QString class_name = widget->metaObject()->className(); - widget->setFont(QFont("Sans", f_weight)); + QString fontt = ao_app->get_font_name(p_identifier + "_font", design_file); + widget->setFont(QFont(fontt, f_weight)); + QColor f_color = ao_app->get_color(p_identifier + "_color", design_file); diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp index 1e920d7..18c43ac 100644 --- a/src/text_file_functions.cpp +++ b/src/text_file_functions.cpp @@ -224,7 +224,17 @@ pos_size_type AOApplication::get_element_dimensions(QString p_identifier, QStrin return return_value; } - +QString AOApplication::get_font_name(QString p_identifier, QString p_file) +{ + QString design_ini_path = get_theme_path(p_file); + QString f_result = read_design_ini(p_identifier, design_ini_path); + QString default_path = get_default_theme_path(p_file); + if(f_result == "") + { + f_result = read_design_ini(p_identifier, default_path); + } + return f_result; +} int AOApplication::get_font_size(QString p_identifier, QString p_file) { QString design_ini_path = get_theme_path(p_file); From 16947224a2ced1d1a8767996388feb9ad2a46ebd Mon Sep 17 00:00:00 2001 From: windrammer <31085911+likeawindrammer@users.noreply.github.com> Date: Sat, 20 Jul 2019 16:13:52 -0600 Subject: [PATCH 094/175] Change the shebang of configure_ubuntu.sh from sh to bash because the script it's using the bash only variable BASH_SOURCE --- scripts/configure_ubuntu.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/configure_ubuntu.sh b/scripts/configure_ubuntu.sh index 159dc4d..1f9b8e8 100755 --- a/scripts/configure_ubuntu.sh +++ b/scripts/configure_ubuntu.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # Assumes a somewhat recent 64-bit ubuntu From 2dbd0c148224bfb7bdd7538136df917e7d1f3a6a Mon Sep 17 00:00:00 2001 From: windrammer <31085911+likeawindrammer@users.noreply.github.com> Date: Mon, 22 Jul 2019 18:21:27 -0600 Subject: [PATCH 095/175] Remove C style char buffer in favor of QByteArray --- include/networkmanager.h | 3 --- src/networkmanager.cpp | 15 ++++----------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/include/networkmanager.h b/include/networkmanager.h index f26e658..08b10db 100644 --- a/include/networkmanager.h +++ b/include/networkmanager.h @@ -50,9 +50,6 @@ public: // in seconds const int ms_reconnect_delay = 7; - // kind of arbitrary max buffer size - #define BUFFER_MAX_SIZE 16384 - bool ms_partial_packet = false; QString ms_temp_packet = ""; diff --git a/src/networkmanager.cpp b/src/networkmanager.cpp index 5b16db4..a9810d4 100644 --- a/src/networkmanager.cpp +++ b/src/networkmanager.cpp @@ -78,11 +78,8 @@ void NetworkManager::ship_server_packet(QString p_packet) void NetworkManager::handle_ms_packet() { - char buffer[BUFFER_MAX_SIZE]; - std::memset(buffer, 0, BUFFER_MAX_SIZE); - ms_socket->read(buffer, BUFFER_MAX_SIZE); - - QString in_data = buffer; + QByteArray buffer = ms_socket->readAll(); + QString in_data = QString::fromUtf8(buffer, buffer.size()); if (!in_data.endsWith("%")) { @@ -219,11 +216,8 @@ void NetworkManager::retry_ms_connect() void NetworkManager::handle_server_packet() { - char buffer[BUFFER_MAX_SIZE]; - std::memset(buffer, 0, BUFFER_MAX_SIZE); - server_socket->read(buffer, BUFFER_MAX_SIZE); - - QString in_data = buffer; + QByteArray buffer = server_socket->readAll(); + QString in_data = QString::fromUtf8(buffer, buffer.size()); if (!in_data.endsWith("%")) { @@ -251,4 +245,3 @@ void NetworkManager::handle_server_packet() ao_app->server_packet_received(f_packet); } } - From 71d91e501264659a2c73ccaf57a31fdf3e98d9f9 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Fri, 26 Jul 2019 01:33:29 +0200 Subject: [PATCH 096/175] fixed copypasta mistake on objection sfx --- src/courtroom.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 5258120..3f1e578 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -52,10 +52,13 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() music_player = new AOMusicPlayer(this, ao_app); music_player->set_volume(0); + sfx_player = new AOSfxPlayer(this, ao_app); sfx_player->set_volume(0); + objection_player = new AOSfxPlayer(this, ao_app); - sfx_player->set_volume(0); + objection_player->set_volume(0); + blip_player = new AOBlipPlayer(this, ao_app); blip_player->set_volume(0); From 98389e7e0357794fb5d3be594e6b71ec5b69e952 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Fri, 26 Jul 2019 01:37:11 +0200 Subject: [PATCH 097/175] 1% more readable --- src/courtroom.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 3f1e578..cd01f64 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -181,12 +181,15 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_pre = new QCheckBox(this); ui_pre->setText("Pre"); + ui_flip = new QCheckBox(this); ui_flip->setText("Flip"); ui_flip->hide(); + ui_guard = new QCheckBox(this); ui_guard->setText("Guard"); ui_guard->hide(); + ui_casing = new QCheckBox(this); ui_casing->setChecked(ao_app->get_casing_enabled()); ui_casing->setText(tr("Casing")); @@ -238,6 +241,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_log_limit_spinbox->setValue(ao_app->get_max_log_size()); ui_mute_list = new QListWidget(this); + ui_pair_list = new QListWidget(this); ui_pair_offset_spinbox = new QSpinBox(this); ui_pair_offset_spinbox->setRange(-100,100); From d56a53bcbd82f41cf585d8c64fca834f1d590c73 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Fri, 26 Jul 2019 01:43:29 +0200 Subject: [PATCH 098/175] yeet all of these .obj files away --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 5119800..1adb744 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ bass.lib bin/ bins/ +build/ release/ debug/ From e3187b682469ad414de72b708bb8240e83303f5f Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Sat, 27 Jul 2019 10:11:48 -0500 Subject: [PATCH 099/175] Bump version to 2.6.2 (#87) --- Attorney_Online.pro | 2 +- include/aoapplication.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index f490917..20a61d3 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -3,7 +3,7 @@ QT += core gui widgets network TARGET = Attorney_Online TEMPLATE = app -VERSION = 2.6.1.0 +VERSION = 2.6.2.0 INCLUDEPATH += $$PWD/include DESTDIR = $$PWD/bin diff --git a/include/aoapplication.h b/include/aoapplication.h index f7103b8..67f9a0d 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -305,7 +305,7 @@ public: private: const int RELEASE = 2; const int MAJOR_VERSION = 6; - const int MINOR_VERSION = 1; + const int MINOR_VERSION = 2; QString current_theme = "default"; From ede4c512ae2b365c78af1a7452b49c45178f1b68 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Sat, 27 Jul 2019 12:33:52 -0500 Subject: [PATCH 100/175] CI: Fix entry point bug in build artifact --- scripts/windows/Dockerfile | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/scripts/windows/Dockerfile b/scripts/windows/Dockerfile index 90d6c27..f4f1a83 100644 --- a/scripts/windows/Dockerfile +++ b/scripts/windows/Dockerfile @@ -1,4 +1,4 @@ -FROM oldmud0/mxe-qt:5.12.1-win32-static-posix +FROM oldmud0/mxe-qt:5.13.0-win32-static-posix #FROM fffaraz/qt:windows ENV TARGET_SPEC i686-w64-mingw32.static.posix @@ -10,8 +10,5 @@ RUN /opt/mxe/usr/bin/${TARGET_SPEC}-cmake .. -DCMAKE_INSTALL_PREFIX=/opt/mxe/usr RUN /opt/mxe/usr/bin/${TARGET_SPEC}-cmake --build . --config Release --target install WORKDIR ../.. -# Build QtApng statically -RUN git clone https://github.com/Skycoder42/QtApng -WORKDIR QtApng -RUN /opt/mxe/usr/${TARGET_SPEC}/qt5/bin/qmake && make qmake_all && make && make install -WORKDIR .. +# NOTE: Do not build QtApng statically! libpng contains a self-test entry point that +# takes precedence for some reason over the final build's entry point. From c09fdc49a79ed3ac45b2d2e2392a6e5a367cf283 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Sat, 27 Jul 2019 12:34:18 -0500 Subject: [PATCH 101/175] CI: Add libarchive for launcher builds --- scripts/windows/Dockerfile-mxe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/windows/Dockerfile-mxe b/scripts/windows/Dockerfile-mxe index e6caec5..873e144 100644 --- a/scripts/windows/Dockerfile-mxe +++ b/scripts/windows/Dockerfile-mxe @@ -38,7 +38,7 @@ RUN apt-get install -y \ RUN git clone https://github.com/mxe/mxe.git RUN mv mxe /opt/mxe WORKDIR /opt/mxe -RUN make -j4 MXE_TARGETS="i686-w64-mingw32.static.posix" qtbase qtmultimedia +RUN make -j4 MXE_TARGETS="i686-w64-mingw32.static.posix" qtbase qtmultimedia libarchive ENV PATH=/opt/mxe/usr/bin:$PATH WORKDIR / From 56ddd024ebfdcbb8b7d4e5790cb422e51570248d Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Sat, 27 Jul 2019 21:19:45 -0500 Subject: [PATCH 102/175] Fall back to Sans if no font setting found Sigh... --- src/text_file_functions.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp index 7247625..5a34ac8 100644 --- a/src/text_file_functions.cpp +++ b/src/text_file_functions.cpp @@ -226,14 +226,16 @@ pos_size_type AOApplication::get_element_dimensions(QString p_identifier, QStrin } QString AOApplication::get_font_name(QString p_identifier, QString p_file) { - QString design_ini_path = get_theme_path(p_file); - QString f_result = read_design_ini(p_identifier, design_ini_path); - QString default_path = get_default_theme_path(p_file); - if(f_result == "") - { - f_result = read_design_ini(p_identifier, default_path); - } - return f_result; + QString design_ini_path = get_theme_path(p_file); + QString f_result = read_design_ini(p_identifier, design_ini_path); + QString default_path = get_default_theme_path(p_file); + if (f_result == "") + { + f_result = read_design_ini(p_identifier, default_path); + if (f_result == "") + return "Sans"; + } + return f_result; } int AOApplication::get_font_size(QString p_identifier, QString p_file) { From 131792d3d43558e69b95023b244714611751a856 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Sat, 27 Jul 2019 21:23:55 -0500 Subject: [PATCH 103/175] Add publish instructions to .gitlab-ci.yml --- .gitlab-ci.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cf67615..0f68fe5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -168,6 +168,20 @@ deploy windows i686: artifacts: paths: - zip/ + +# How to publish to S3/Wasabi: +# - Ensure the following variables have been populated in the CI/CD settings: +# - S3_ACCESS_KEY, S3_SECRET_KEY +# - S3_MANIFESTS, S3_ARCHIVES +# - Select "Run Pipeline" on the Pipelines menu on GitLab. +# - Select the version you want to release. +# - Set the following variables: +# - MANIFEST: program_winnt_i386.json +# - ARCHIVE_FULL: ao-X.Y.Z-win32.zip +# - VERSION: X.Y.Z +# - EXECUTABLE: Attorney_Online_X.Y.Z.exe +# - Run the pipeline to completion. +# (See scripts/wasabi.sh) publish linux x86_64: image: ubuntu From 319cb0adee1b8a65d1daf78aa903d6ffd2952c9c Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Sun, 28 Jul 2019 18:43:46 +0200 Subject: [PATCH 104/175] translate new features. is i18n dead --- src/courtroom.cpp | 92 +++++++++++++++++++++++------------------------ 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index cd01f64..7907b54 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -127,7 +127,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_ooc_chat_name = new QLineEdit(this); ui_ooc_chat_name->setFrame(false); - ui_ooc_chat_name->setPlaceholderText("Name"); + ui_ooc_chat_name->setPlaceholderText(tr("Name")); ui_ooc_chat_name->setMaxLength(30); ui_ooc_chat_name->setText(p_ao_app->get_default_username()); @@ -180,14 +180,14 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_switch_area_music = new AOButton(this, ao_app); ui_pre = new QCheckBox(this); - ui_pre->setText("Pre"); + ui_pre->setText(tr("Pre")); ui_flip = new QCheckBox(this); - ui_flip->setText("Flip"); + ui_flip->setText(tr("Flip")); ui_flip->hide(); ui_guard = new QCheckBox(this); - ui_guard->setText("Guard"); + ui_guard->setText(tr("Guard")); ui_guard->hide(); ui_casing = new QCheckBox(this); @@ -214,15 +214,15 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_prosecution_minus = new AOButton(this, ao_app); ui_text_color = new QComboBox(this); - ui_text_color->addItem("White"); - ui_text_color->addItem("Green"); - ui_text_color->addItem("Red"); - ui_text_color->addItem("Orange"); - ui_text_color->addItem("Blue"); - ui_text_color->addItem("Yellow"); - ui_text_color->addItem("Rainbow"); - ui_text_color->addItem("Pink"); - ui_text_color->addItem("Cyan"); + ui_text_color->addItem(tr("White")); + ui_text_color->addItem(tr("Green")); + ui_text_color->addItem(tr("Red")); + ui_text_color->addItem(tr("Orange")); + ui_text_color->addItem(tr("Blue")); + ui_text_color->addItem(tr("Yellow")); + ui_text_color->addItem(tr("Rainbow")); + ui_text_color->addItem(tr("Pink")); + ui_text_color->addItem(tr("Cyan")); ui_music_slider = new QSlider(Qt::Horizontal, this); ui_music_slider->setRange(0, 100); @@ -689,7 +689,7 @@ void Courtroom::set_widgets() ui_selector->hide(); set_size_and_pos(ui_back_to_lobby, "back_to_lobby"); - ui_back_to_lobby->setText("Back to Lobby"); + ui_back_to_lobby->setText(tr("Back to Lobby")); set_size_and_pos(ui_char_password, "char_password"); @@ -2678,21 +2678,21 @@ void Courtroom::on_ooc_return_pressed() else if (ooc_message.startsWith("/login")) { ui_guard->show(); - append_server_chatmessage("CLIENT", "You were granted the Guard button.", "1"); + append_server_chatmessage("CLIENT", tr("You were granted the Guard button."), "1"); } else if (ooc_message.startsWith("/rainbow") && ao_app->yellow_text_enabled && !rainbow_appended) { //ui_text_color->addItem("Rainbow"); ui_ooc_chat_message->clear(); //rainbow_appended = true; - append_server_chatmessage("CLIENT", "This does nohing, but there you go.", "1"); + append_server_chatmessage("CLIENT", tr("This does nohing, but there you go."), "1"); return; } else if (ooc_message.startsWith("/settings")) { ui_ooc_chat_message->clear(); ao_app->call_settings_menu(); - append_server_chatmessage("CLIENT", "You opened the settings menu.", "1"); + append_server_chatmessage("CLIENT", tr("You opened the settings menu."), "1"); return; } else if (ooc_message.startsWith("/pair")) @@ -2707,20 +2707,20 @@ void Courtroom::on_ooc_return_pressed() if (whom > -1) { other_charid = whom; - QString msg = "You will now pair up with "; + QString msg = tr("You will now pair up with "); msg.append(char_list.at(whom).name); - msg.append(" if they also choose your character in return."); + msg.append(tr(" if they also choose your character in return.")); append_server_chatmessage("CLIENT", msg, "1"); } else { other_charid = -1; - append_server_chatmessage("CLIENT", "You are no longer paired with anyone.", "1"); + append_server_chatmessage("CLIENT", tr("You are no longer paired with anyone."), "1"); } } else { - append_server_chatmessage("CLIENT", "Are you sure you typed that well? The char ID could not be recognised.", "1"); + append_server_chatmessage("CLIENT", tr("Are you sure you typed that well? The char ID could not be recognised."), "1"); } return; } @@ -2736,32 +2736,32 @@ void Courtroom::on_ooc_return_pressed() if (off >= -100 && off <= 100) { offset_with_pair = off; - QString msg = "You have set your offset to "; + QString msg = tr("You have set your offset to "); msg.append(QString::number(off)); msg.append("%."); append_server_chatmessage("CLIENT", msg, "1"); } else { - append_server_chatmessage("CLIENT", "Your offset must be between -100% and 100%!", "1"); + append_server_chatmessage("CLIENT", tr("Your offset must be between -100% and 100%!"), "1"); } } else { - append_server_chatmessage("CLIENT", "That offset does not look like one.", "1"); + append_server_chatmessage("CLIENT", tr("That offset does not look like one."), "1"); } return; } else if (ooc_message.startsWith("/switch_am")) { - append_server_chatmessage("CLIENT", "You switched your music and area list.", "1"); + append_server_chatmessage("CLIENT", tr("You switched your music and area list."), "1"); on_switch_area_music_clicked(); ui_ooc_chat_message->clear(); return; } else if (ooc_message.startsWith("/enable_blocks")) { - append_server_chatmessage("CLIENT", "You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this.", "1"); + append_server_chatmessage("CLIENT", tr("You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this."), "1"); ao_app->cccc_ic_support_enabled = true; ao_app->arup_enabled = true; ao_app->modcall_reason_enabled = true; @@ -2772,9 +2772,9 @@ void Courtroom::on_ooc_return_pressed() else if (ooc_message.startsWith("/non_int_pre")) { if (ui_pre_non_interrupt->isChecked()) - append_server_chatmessage("CLIENT", "Your pre-animations interrupt again.", "1"); + append_server_chatmessage("CLIENT", tr("Your pre-animations interrupt again."), "1"); else - append_server_chatmessage("CLIENT", "Your pre-animations will not interrupt text.", "1"); + append_server_chatmessage("CLIENT", tr("Your pre-animations will not interrupt text."), "1"); ui_pre_non_interrupt->setChecked(!ui_pre_non_interrupt->isChecked()); ui_ooc_chat_message->clear(); return; @@ -2785,7 +2785,7 @@ void Courtroom::on_ooc_return_pressed() if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) { - append_server_chatmessage("CLIENT", "Couldn't open chatlog.txt to write into.", "1"); + append_server_chatmessage("CLIENT", tr("Couldn't open chatlog.txt to write into."), "1"); ui_ooc_chat_message->clear(); return; } @@ -2798,7 +2798,7 @@ void Courtroom::on_ooc_return_pressed() file.close(); - append_server_chatmessage("CLIENT", "The IC chatlog has been saved.", "1"); + append_server_chatmessage("CLIENT", tr("The IC chatlog has been saved."), "1"); ui_ooc_chat_message->clear(); return; } @@ -2810,7 +2810,7 @@ void Courtroom::on_ooc_return_pressed() if (!casefolder.exists()) { QDir::current().mkdir("base/" + casefolder.dirName()); - append_server_chatmessage("CLIENT", "You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there.", "1"); + append_server_chatmessage("CLIENT", tr("You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there."), "1"); ui_ooc_chat_message->clear(); return; } @@ -2821,7 +2821,7 @@ void Courtroom::on_ooc_return_pressed() if (command.size() < 2) { - append_server_chatmessage("CLIENT", "You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini.\nCases you can load: " + caseslist.join(", "), "1"); + append_server_chatmessage("CLIENT", tr("You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini.\nCases you can load: ") + caseslist.join(", "), "1"); ui_ooc_chat_message->clear(); return; } @@ -2829,7 +2829,7 @@ void Courtroom::on_ooc_return_pressed() if (command.size() > 2) { - append_server_chatmessage("CLIENT", "Too many arguments to load a case! You only need one filename, without extension.", "1"); + append_server_chatmessage("CLIENT", tr("Too many arguments to load a case! You only need one filename, without extension."), "1"); ui_ooc_chat_message->clear(); return; } @@ -2842,13 +2842,13 @@ void Courtroom::on_ooc_return_pressed() QString casestatus = casefile.value("status", "").value(); if (!caseauth.isEmpty()) - append_server_chatmessage("CLIENT", "Case made by " + caseauth + ".", "1"); + append_server_chatmessage("CLIENT", tr("Case made by ") + caseauth + ".", "1"); if (!casedoc.isEmpty()) ao_app->send_server_packet(new AOPacket("CT#" + ui_ooc_chat_name->text() + "#/doc " + casedoc + "#%")); if (!casestatus.isEmpty()) ao_app->send_server_packet(new AOPacket("CT#" + ui_ooc_chat_name->text() + "#/status " + casestatus + "#%")); if (!cmdoc.isEmpty()) - append_server_chatmessage("CLIENT", "Navigate to " + cmdoc + " for the CM doc.", "1"); + append_server_chatmessage("CLIENT", tr("Navigate to ") + cmdoc + tr(" for the CM doc."), "1"); for (int i = local_evidence_list.size() - 1; i >= 0; i--) { ao_app->send_server_packet(new AOPacket("DE#" + QString::number(i) + "#%")); @@ -2867,7 +2867,7 @@ void Courtroom::on_ooc_return_pressed() ao_app->send_server_packet(new AOPacket("PE", f_contents)); } - append_server_chatmessage("CLIENT", "Your case \"" + command[1] + "\" was loaded!", "1"); + append_server_chatmessage("CLIENT", tr("Your case \"") + command[1] + tr("\" was loaded!"), "1"); ui_ooc_chat_message->clear(); return; } @@ -2879,7 +2879,7 @@ void Courtroom::on_ooc_return_pressed() if (!casefolder.exists()) { QDir::current().mkdir("base/" + casefolder.dirName()); - append_server_chatmessage("CLIENT", "You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it.", "1"); + append_server_chatmessage("CLIENT", tr("You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it."), "1"); ui_ooc_chat_message->clear(); return; } @@ -2890,7 +2890,7 @@ void Courtroom::on_ooc_return_pressed() if (command.size() < 3) { - append_server_chatmessage("CLIENT", "You need to give a filename to save (extension not needed) and the courtroom status!", "1"); + append_server_chatmessage("CLIENT", tr("You need to give a filename to save (extension not needed) and the courtroom status!"), "1"); ui_ooc_chat_message->clear(); return; } @@ -2898,7 +2898,7 @@ void Courtroom::on_ooc_return_pressed() if (command.size() > 3) { - append_server_chatmessage("CLIENT", "Too many arguments to save a case! You only need a filename without extension and the courtroom status!", "1"); + append_server_chatmessage("CLIENT", tr("Too many arguments to save a case! You only need a filename without extension and the courtroom status!"), "1"); ui_ooc_chat_message->clear(); return; } @@ -2920,7 +2920,7 @@ void Courtroom::on_ooc_return_pressed() casefile.endGroup(); } casefile.sync(); - append_server_chatmessage("CLIENT", "Succesfully saved, edit doc and cmdoc link on the ini!", "1"); + append_server_chatmessage("CLIENT", tr("Succesfully saved, edit doc and cmdoc link on the ini!"), "1"); ui_ooc_chat_message->clear(); return; @@ -2948,7 +2948,7 @@ void Courtroom::on_ooc_toggle_clicked() { ui_ms_chatlog->show(); ui_server_chatlog->hide(); - ui_ooc_toggle->setText("Master"); + ui_ooc_toggle->setText(tr("Master")); server_ooc = false; } @@ -2956,7 +2956,7 @@ void Courtroom::on_ooc_toggle_clicked() { ui_ms_chatlog->hide(); ui_server_chatlog->show(); - ui_ooc_toggle->setText("Server"); + ui_ooc_toggle->setText(tr("Server")); server_ooc = true; } @@ -3419,8 +3419,8 @@ void Courtroom::on_call_mod_clicked() QInputDialog input; input.setWindowFlags(Qt::WindowSystemMenuHint); - input.setLabelText("Reason:"); - input.setWindowTitle("Call Moderator"); + input.setLabelText(tr("Reason:")); + input.setWindowTitle(tr("Call Moderator")); auto code = input.exec(); if (code != QDialog::Accepted) @@ -3428,10 +3428,10 @@ void Courtroom::on_call_mod_clicked() QString text = input.textValue(); if (text.isEmpty()) { - errorBox.critical(nullptr, "Error", "You must provide a reason."); + errorBox.critical(nullptr, tr("Error"), tr("You must provide a reason.")); return; } else if (text.length() > 256) { - errorBox.critical(nullptr, "Error", "The message is too long."); + errorBox.critical(nullptr, tr("Error"), tr("The message is too long.")); return; } From 762702aff852701c44eb0f07ee02c0fdfd1fd85b Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Tue, 29 May 2018 19:21:49 -0500 Subject: [PATCH 105/175] Make all strings translatable --- include/discord_rich_presence.h | 4 + include/networkmanager.h | 2 + src/aoapplication.cpp | 6 +- src/debug_functions.cpp | 9 +- src/discord_rich_presence.cpp | 18 +- src/evidence.cpp | 4 +- src/lobby.cpp | 10 +- src/main.cpp | 17 ++ src/packet_distribution.cpp | 25 +-- translations/ao_en.pot | 330 +++++++++++++++++++++++++++++++ translations/ao_en.ts | 326 ++++++++++++++++++++++++++++++ translations/ao_ja.pot | 330 +++++++++++++++++++++++++++++++ translations/ao_ja.ts | 326 ++++++++++++++++++++++++++++++ translations/ja.mo | Bin 0 -> 990 bytes translations/ja.po | 337 ++++++++++++++++++++++++++++++++ 15 files changed, 1710 insertions(+), 34 deletions(-) create mode 100644 translations/ao_en.pot create mode 100644 translations/ao_en.ts create mode 100644 translations/ao_ja.pot create mode 100644 translations/ao_ja.ts create mode 100644 translations/ja.mo create mode 100644 translations/ja.po diff --git a/include/discord_rich_presence.h b/include/discord_rich_presence.h index e7ecc6e..4115b51 100644 --- a/include/discord_rich_presence.h +++ b/include/discord_rich_presence.h @@ -5,6 +5,8 @@ #include #include #include +#include + #include #include @@ -16,6 +18,8 @@ namespace AttorneyOnline { class Discord { + Q_DECLARE_TR_FUNCTIONS(Discord) + private: const char* APPLICATION_ID = "399779271737868288"; std::string server_name, server_id; diff --git a/include/networkmanager.h b/include/networkmanager.h index 08b10db..7584b69 100644 --- a/include/networkmanager.h +++ b/include/networkmanager.h @@ -14,6 +14,8 @@ #undef MS_FAILOVER_SUPPORTED #endif +#undef MS_FAILOVER_SUPPORTED + #include "aopacket.h" #include "aoapplication.h" diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp index 4ef1edd..c47f350 100644 --- a/src/aoapplication.cpp +++ b/src/aoapplication.cpp @@ -135,7 +135,7 @@ void AOApplication::server_disconnected() { if (courtroom_constructed) { - call_notice("Disconnected from server."); + call_notice(tr("Disconnected from server.")); construct_lobby(); destruct_courtroom(); } @@ -165,11 +165,11 @@ void AOApplication::ms_connect_finished(bool connected, bool will_retry) } else { - call_error("There was an error connecting to the master server.\n" + call_error(tr("There was an error connecting to the master server.\n" "We deploy multiple master servers to mitigate any possible downtime, " "but the client appears to have exhausted all possible methods of finding " "and connecting to one.\n" - "Please check your Internet connection and firewall, and please try again."); + "Please check your Internet connection and firewall, and please try again.")); } } } diff --git a/src/debug_functions.cpp b/src/debug_functions.cpp index 77f2f35..a790610 100644 --- a/src/debug_functions.cpp +++ b/src/debug_functions.cpp @@ -1,11 +1,14 @@ +#include +#include + #include "debug_functions.h" void call_error(QString p_message) { QMessageBox *msgBox = new QMessageBox; - msgBox->setText("Error: " + p_message); - msgBox->setWindowTitle("Error"); + msgBox->setText(QCoreApplication::translate("debug_functions", "Error: %1").arg(p_message)); + msgBox->setWindowTitle(QCoreApplication::translate("debug_functions", "Error")); //msgBox->setWindowModality(Qt::NonModal); @@ -17,7 +20,7 @@ void call_notice(QString p_message) QMessageBox *msgBox = new QMessageBox; msgBox->setText(p_message); - msgBox->setWindowTitle("Notice"); + msgBox->setWindowTitle(QCoreApplication::translate("debug_functions", "Notice")); //msgBox->setWindowModality(Qt::NonModal); diff --git a/src/discord_rich_presence.cpp b/src/discord_rich_presence.cpp index 95a824a..17a649f 100644 --- a/src/discord_rich_presence.cpp +++ b/src/discord_rich_presence.cpp @@ -31,11 +31,11 @@ void Discord::state_lobby() DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; - presence.largeImageText = "Objection!"; + presence.largeImageText = tr("Objection!"); presence.instance = 1; - presence.state = "In Lobby"; - presence.details = "Idle"; + presence.state = tr("In Lobby"); + presence.details = tr("Idle"); Discord_UpdatePresence(&presence); } @@ -46,12 +46,12 @@ void Discord::state_server(std::string name, std::string server_id) DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; - presence.largeImageText = "Objection!"; + presence.largeImageText = tr("Objection!"); presence.instance = 1; auto timestamp = static_cast(std::time(nullptr)); - presence.state = "In a Server"; + presence.state = tr("In a Server"); presence.details = name.c_str(); presence.matchSecret = server_id.c_str(); presence.startTimestamp = this->timestamp; @@ -66,13 +66,13 @@ void Discord::state_character(std::string name) { auto name_internal = QString(name.c_str()).toLower().replace(' ', '_').toStdString(); auto name_friendly = QString(name.c_str()).replace('_', ' ').toStdString(); - const std::string playing_as = "Playing as " + name_friendly; + const std::string playing_as = tr("Playing as %1").arg(name_friendly); qDebug() << "Discord RPC: Setting character state (" << playing_as.c_str() << ")"; DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; - presence.largeImageText = "Objection!"; + presence.largeImageText = tr("Objection!"); presence.instance = 1; presence.details = this->server_name.c_str(); presence.matchSecret = this->server_id.c_str(); @@ -91,13 +91,13 @@ void Discord::state_spectate() DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; - presence.largeImageText = "Objection!"; + presence.largeImageText = tr("Objection!"); presence.instance = 1; presence.details = this->server_name.c_str(); presence.matchSecret = this->server_id.c_str(); presence.startTimestamp = this->timestamp; - presence.state = "Spectating"; + presence.state = tr("Spectating"); Discord_UpdatePresence(&presence); } #else diff --git a/src/evidence.cpp b/src/evidence.cpp index ebef749..3ea6a41 100644 --- a/src/evidence.cpp +++ b/src/evidence.cpp @@ -22,7 +22,7 @@ void Courtroom::construct_evidence() ui_evidence_delete = new AOButton(ui_evidence_overlay, ao_app); ui_evidence_image_name = new AOLineEdit(ui_evidence_overlay); ui_evidence_image_button = new AOButton(ui_evidence_overlay, ao_app); - ui_evidence_image_button->setText("Choose.."); + ui_evidence_image_button->setText(tr("Choose..")); ui_evidence_x = new AOButton(ui_evidence_overlay, ao_app); ui_evidence_description = new AOTextEdit(ui_evidence_overlay); @@ -265,7 +265,7 @@ void Courtroom::on_evidence_hover(int p_id, bool p_state) if (p_state) { if (final_id == local_evidence_list.size()) - ui_evidence_name->setText("Add new evidence..."); + ui_evidence_name->setText(tr("Add new evidence...")); else if (final_id < local_evidence_list.size()) ui_evidence_name->setText(local_evidence_list.at(final_id).name); } diff --git a/src/lobby.cpp b/src/lobby.cpp index 4a96e56..776528c 100644 --- a/src/lobby.cpp +++ b/src/lobby.cpp @@ -71,9 +71,9 @@ void Lobby::set_widgets() qDebug() << "W: did not find lobby width or height in " << filename; // Most common symptom of bad config files and missing assets. - call_notice("It doesn't look like your client is set up correctly.\n" + call_notice(tr("It doesn't look like your client is set up correctly.\n" "Did you download all resources correctly from tiny.cc/getao, " - "including the large 'base' folder?"); + "including the large 'base' folder?")); this->resize(517, 666); } @@ -144,11 +144,11 @@ void Lobby::set_widgets() ui_loading_text->setFrameStyle(QFrame::NoFrame); ui_loading_text->setStyleSheet("background-color: rgba(0, 0, 0, 0);" "color: rgba(255, 128, 0, 255);"); - ui_loading_text->append("Loading"); + ui_loading_text->append(tr("Loading")); set_size_and_pos(ui_progress_bar, "progress_bar"); set_size_and_pos(ui_cancel, "cancel"); - ui_cancel->setText("Cancel"); + ui_cancel->setText(tr("Cancel")); ui_loading_background->hide(); @@ -313,7 +313,7 @@ void Lobby::on_server_list_clicked(QModelIndex p_model) ui_description->moveCursor(QTextCursor::Start); ui_description->ensureCursorVisible(); - ui_player_count->setText("Offline"); + ui_player_count->setText(tr("Offline")); ui_connect->setEnabled(false); diff --git a/src/main.cpp b/src/main.cpp index 80ea93b..8b7cb50 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -7,6 +7,20 @@ #include "courtroom.h" #include #include +#include + +static void install_translators(QtApplication &app) +{ + QTranslator qtTranslator; + qtTranslator.load("qt_" + QLocale::system().name(), + QLibraryInfo::location(QLibraryInfo::TranslationsPath)); + app.installTranslator(&qtTranslator); + + QTranslator appTranslator; + appTranslator.load("ao_" + QLocale::system().name()); + app.installTranslator(&appTranslator); +} + int main(int argc, char *argv[]) { #if QT_VERSION > QT_VERSION_CHECK(5, 6, 0) @@ -17,6 +31,9 @@ int main(int argc, char *argv[]) #endif AOApplication main_app(argc, argv); + + install_translators(&main_app); + main_app.construct_lobby(); main_app.net_manager->connect_to_master(); main_app.w_lobby->show(); diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 942c275..2bd2693 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -103,15 +103,16 @@ void AOApplication::ms_packet_received(AOPacket *p_packet) } } - call_notice("Outdated version! Your version: " + get_version_string() - + "\nPlease go to aceattorneyonline.com to update."); + call_notice(tr("Outdated version! Your version: %1\n" + "Please go to aceattorneyonline.com to update.") + .arg(get_version_string())); destruct_courtroom(); destruct_lobby(); } else if (header == "DOOM") { - call_notice("You have been exiled from AO." - "Have a nice day."); + call_notice(tr("You have been exiled from AO.\n" + "Have a nice day.")); destruct_courtroom(); destruct_lobby(); } @@ -245,7 +246,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) courtroom_loaded = false; - QString window_title = "Attorney Online 2"; + QString window_title = tr("Attorney Online 2"); int selected_server = w_lobby->get_selected_server(); QString server_address = "", server_name = ""; @@ -271,7 +272,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) w_courtroom->set_window_title(window_title); w_lobby->show_loading_overlay(); - w_lobby->set_loading_text("Loading"); + w_lobby->set_loading_text(tr("Loading")); w_lobby->set_loading_value(0); AOPacket *f_packet; @@ -359,7 +360,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) ++loaded_evidence; - w_lobby->set_loading_text("Loading evidence:\n" + QString::number(loaded_evidence) + "/" + QString::number(evidence_list_size)); + w_lobby->set_loading_text(tr("Loading evidence:\n%1/%2").arg(QString::number(loaded_evidence)).arg(QString::number(evidence_list_size))); w_courtroom->append_evidence(f_evi); @@ -391,7 +392,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) ++loaded_music; - w_lobby->set_loading_text("Loading music:\n" + QString::number(loaded_music) + "/" + QString::number(music_list_size)); + w_lobby->set_loading_text(tr("Loading music:\n%1/%2").arg(QString::number(loaded_music)).arg(QString::number(music_list_size))); if (musics_time) { @@ -463,7 +464,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) ++loaded_chars; - w_lobby->set_loading_text("Loading chars:\n" + QString::number(loaded_chars) + "/" + QString::number(char_list_size)); + w_lobby->set_loading_text(tr("Loading chars:\n%1/%2").arg(QString::number(loaded_chars)).arg(QString::number(char_list_size))); w_courtroom->append_char(f_char); @@ -486,7 +487,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) { ++loaded_music; - w_lobby->set_loading_text("Loading music:\n" + QString::number(loaded_music) + "/" + QString::number(music_list_size)); + w_lobby->set_loading_text(tr("Loading music:\n%1/%2").arg(QString::number(loaded_music)).arg(QString::number(music_list_size))); if (musics_time) { @@ -638,7 +639,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) { if (courtroom_constructed && f_contents.size() >= 1) { - call_notice("You have been kicked from the server.\nReason: " + f_contents.at(0)); + call_notice(tr("You have been kicked from the server.\nReason: ") + f_contents.at(0)); construct_lobby(); destruct_courtroom(); } @@ -655,7 +656,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } else if (header == "BD") { - call_notice("You are banned on this server.\nReason: " + f_contents.at(0)); + call_notice(tr("You are banned on this server.\nReason: ") + f_contents.at(0)); } else if (header == "ZZ") { diff --git a/translations/ao_en.pot b/translations/ao_en.pot new file mode 100644 index 0000000..f256947 --- /dev/null +++ b/translations/ao_en.pot @@ -0,0 +1,330 @@ +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Language: en_US\n" +"X-Qt-Contexts: true\n" + +#: ../aoapplication.cpp:133 +msgctxt "AOApplication|" +msgid "Disconnected from server." +msgstr "" + +#: ../aoapplication.cpp:157 +#, qt-format +msgctxt "AOApplication|" +msgid "Error connecting to master server. Will try again in %n seconds." +msgstr "" + +#: ../aoapplication.cpp:162 +msgctxt "AOApplication|" +msgid "" +"There was an error connecting to the master server.\n" +"We deploy multiple master servers to mitigate any possible downtime, but the " +"client appears to have exhausted all possible methods of finding and " +"connecting to one.\n" +"Please check your Internet connection and firewall, and please try again." +msgstr "" + +#: ../packet_distribution.cpp:107 +#, qt-format +msgctxt "AOApplication|" +msgid "" +"Outdated version! Your version: %1\n" +"Please go to aceattorneyonline.com to update." +msgstr "" + +#: ../packet_distribution.cpp:115 +msgctxt "AOApplication|" +msgid "" +"You have been exiled from AO.\n" +"Have a nice day." +msgstr "" + +#: ../packet_distribution.cpp:228 +msgctxt "AOApplication|" +msgid "Attorney Online 2" +msgstr "" + +#: ../packet_distribution.cpp:254 +msgctxt "AOApplication|" +msgid "Loading" +msgstr "" + +#: ../packet_distribution.cpp:341 +#, qt-format +msgctxt "AOApplication|" +msgid "" +"Loading evidence:\n" +"%1/%2" +msgstr "" + +#: ../packet_distribution.cpp:370 ../packet_distribution.cpp:435 +#, qt-format +msgctxt "AOApplication|" +msgid "" +"Loading music:\n" +"%1/%2" +msgstr "" + +#: ../packet_distribution.cpp:415 +#, qt-format +msgctxt "AOApplication|" +msgid "" +"Loading chars:\n" +"%1/%2" +msgstr "" + +#: ../packet_distribution.cpp:548 +msgctxt "AOApplication|" +msgid "You have been kicked." +msgstr "" + +#: ../packet_distribution.cpp:561 +msgctxt "AOApplication|" +msgid "You are banned on this server." +msgstr "" + +#: ../charselect.cpp:27 +msgctxt "Courtroom|" +msgid "Spectator" +msgstr "" + +#: ../charselect.cpp:149 +#, qt-format +msgctxt "Courtroom|" +msgid "Could not find %1" +msgstr "" + +#: ../courtroom.cpp:111 +msgctxt "Courtroom|" +msgid "Name" +msgstr "" + +#: ../courtroom.cpp:152 ../courtroom.cpp:460 +msgctxt "Courtroom|" +msgid "Pre" +msgstr "" + +#: ../courtroom.cpp:154 +msgctxt "Courtroom|" +msgid "Flip" +msgstr "" + +#: ../courtroom.cpp:157 +msgctxt "Courtroom|" +msgid "Guard" +msgstr "" + +#: ../courtroom.cpp:171 +msgctxt "Courtroom|" +msgid "White" +msgstr "" + +#: ../courtroom.cpp:172 +msgctxt "Courtroom|" +msgid "Green" +msgstr "" + +#: ../courtroom.cpp:173 +msgctxt "Courtroom|" +msgid "Red" +msgstr "" + +#: ../courtroom.cpp:174 +msgctxt "Courtroom|" +msgid "Orange" +msgstr "" + +#: ../courtroom.cpp:175 +msgctxt "Courtroom|" +msgid "Blue" +msgstr "" + +#: ../courtroom.cpp:177 +msgctxt "Courtroom|" +msgid "Yellow" +msgstr "" + +#: ../courtroom.cpp:429 +msgctxt "Courtroom|" +msgid "Music" +msgstr "" + +#: ../courtroom.cpp:431 +msgctxt "Courtroom|" +msgid "Sfx" +msgstr "" + +#: ../courtroom.cpp:433 +msgctxt "Courtroom|" +msgid "Blips" +msgstr "" + +#: ../courtroom.cpp:443 ../courtroom.cpp:1656 +msgctxt "Courtroom|" +msgid "Server" +msgstr "" + +#: ../courtroom.cpp:451 +msgctxt "Courtroom|" +msgid "Change character" +msgstr "" + +#: ../courtroom.cpp:454 +msgctxt "Courtroom|" +msgid "Reload theme" +msgstr "" + +#: ../courtroom.cpp:457 +msgctxt "Courtroom|" +msgid "Call mod" +msgstr "" + +#: ../courtroom.cpp:531 +msgctxt "Courtroom|" +msgid "Back to Lobby" +msgstr "" + +#: ../courtroom.cpp:1508 +msgctxt "Courtroom|" +msgid "You have been banned." +msgstr "" + +#: ../courtroom.cpp:1534 +#, qt-format +msgctxt "Courtroom|" +msgid "%1 has played a song: %2" +msgstr "" + +#: ../courtroom.cpp:1620 +msgctxt "Courtroom|" +msgid "Rainbow" +msgstr "" + +#: ../courtroom.cpp:1648 +msgctxt "Courtroom|" +msgid "Master" +msgstr "" + +#: ../evidence.cpp:28 +msgctxt "Courtroom|" +msgid "Choose.." +msgstr "" + +#: ../evidence.cpp:196 +msgctxt "Courtroom|" +msgid "Images (*.png)" +msgstr "" + +#: ../evidence.cpp:275 +msgctxt "Courtroom|" +msgid "Add new evidence..." +msgstr "" + +#: ../discord_rich_presence.cpp:38 ../discord_rich_presence.cpp:53 +#: ../discord_rich_presence.cpp:79 ../discord_rich_presence.cpp:98 +msgctxt "Discord|" +msgid "Objection!" +msgstr "" + +#: ../discord_rich_presence.cpp:41 +msgctxt "Discord|" +msgid "In Lobby" +msgstr "" + +#: ../discord_rich_presence.cpp:42 +msgctxt "Discord|" +msgid "Idle" +msgstr "" + +#: ../discord_rich_presence.cpp:58 +msgctxt "Discord|" +msgid "In a Server" +msgstr "" + +#: ../discord_rich_presence.cpp:73 +#, qt-format +msgctxt "Discord|" +msgid "Playing as %1" +msgstr "" + +#: ../discord_rich_presence.cpp:104 +msgctxt "Discord|" +msgid "Spectating" +msgstr "" + +#: ../lobby.cpp:15 +msgctxt "Lobby|" +msgid "Attorney Online 2" +msgstr "" + +#: ../lobby.cpp:31 +msgctxt "Lobby|" +msgid "Name" +msgstr "" + +#: ../lobby.cpp:71 +msgctxt "Lobby|" +msgid "" +"It doesn't look like your client is set up correctly.\n" +"Did you download all resources correctly from tiny.cc/getao, including the " +"large 'base' folder?" +msgstr "" + +#: ../lobby.cpp:144 +msgctxt "Lobby|" +msgid "Loading" +msgstr "" + +#: ../lobby.cpp:148 +msgctxt "Lobby|" +msgid "Cancel" +msgstr "" + +#: ../lobby.cpp:267 +msgctxt "Lobby|" +msgid "" +"Attorney Online 2 is built using Qt 5.11.\n" +"\n" +"Lead development:\n" +"longbyte1\n" +"OmniTroid\n" +"\n" +"stonedDiscord\n" +"Supporting development:\n" +"Fiercy\n" +"\n" +"UI design:\n" +"Ruekasu\n" +"Draxirch\n" +"\n" +"Special thanks:\n" +"Unishred\n" +"Argoneus\n" +"Noevain\n" +"Cronnicossy" +msgstr "" + +#: ../lobby.cpp:315 +msgctxt "Lobby|" +msgid "Offline" +msgstr "" + +#: ../debug_functions.cpp:10 +#, qt-format +msgctxt "debug_functions|" +msgid "Error: %1" +msgstr "" + +#: ../debug_functions.cpp:11 +msgctxt "debug_functions|" +msgid "Error" +msgstr "" + +#: ../debug_functions.cpp:23 +msgctxt "debug_functions|" +msgid "Notice" +msgstr "" diff --git a/translations/ao_en.ts b/translations/ao_en.ts new file mode 100644 index 0000000..539c672 --- /dev/null +++ b/translations/ao_en.ts @@ -0,0 +1,326 @@ + + + + + AOApplication + + + Disconnected from server. + + + + + Error connecting to master server. Will try again in %n seconds. + + + + + There was an error connecting to the master server. +We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. +Please check your Internet connection and firewall, and please try again. + + + + + Outdated version! Your version: %1 +Please go to aceattorneyonline.com to update. + + + + + You have been exiled from AO. +Have a nice day. + + + + + Attorney Online 2 + + + + + Loading + + + + + Loading evidence: +%1/%2 + + + + + + Loading music: +%1/%2 + + + + + Loading chars: +%1/%2 + + + + + You have been kicked. + + + + + You are banned on this server. + + + + + Courtroom + + + Spectator + + + + + Could not find %1 + + + + + Name + + + + + + Pre + + + + + Flip + + + + + Guard + + + + + White + + + + + Green + + + + + Red + + + + + Orange + + + + + Blue + + + + + Yellow + + + + + Music + + + + + Sfx + + + + + Blips + + + + + + Server + + + + + Change character + + + + + Reload theme + + + + + Call mod + + + + + Back to Lobby + + + + + You have been banned. + + + + + %1 has played a song: %2 + + + + + Rainbow + + + + + Master + + + + + Choose.. + + + + + Images (*.png) + + + + + Add new evidence... + + + + + Discord + + + + + + Objection! + + + + + In Lobby + + + + + Idle + + + + + In a Server + + + + + Playing as %1 + + + + + Spectating + + + + + Lobby + + + Attorney Online 2 + + + + + Name + + + + + It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? + + + + + Loading + + + + + Cancel + + + + + Attorney Online 2 is built using Qt 5.11. + +Lead development: +longbyte1 +OmniTroid + +stonedDiscord +Supporting development: +Fiercy + +UI design: +Ruekasu +Draxirch + +Special thanks: +Unishred +Argoneus +Noevain +Cronnicossy + + + + + Offline + + + + + debug_functions + + + Error: %1 + + + + + Error + + + + + Notice + + + + diff --git a/translations/ao_ja.pot b/translations/ao_ja.pot new file mode 100644 index 0000000..52ae792 --- /dev/null +++ b/translations/ao_ja.pot @@ -0,0 +1,330 @@ +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Language: ja_JP\n" +"X-Qt-Contexts: true\n" + +#: ../aoapplication.cpp:133 +msgctxt "AOApplication|" +msgid "Disconnected from server." +msgstr "" + +#: ../aoapplication.cpp:157 +#, qt-format +msgctxt "AOApplication|" +msgid "Error connecting to master server. Will try again in %n seconds." +msgstr "" + +#: ../aoapplication.cpp:162 +msgctxt "AOApplication|" +msgid "" +"There was an error connecting to the master server.\n" +"We deploy multiple master servers to mitigate any possible downtime, but the " +"client appears to have exhausted all possible methods of finding and " +"connecting to one.\n" +"Please check your Internet connection and firewall, and please try again." +msgstr "" + +#: ../packet_distribution.cpp:107 +#, qt-format +msgctxt "AOApplication|" +msgid "" +"Outdated version! Your version: %1\n" +"Please go to aceattorneyonline.com to update." +msgstr "" + +#: ../packet_distribution.cpp:115 +msgctxt "AOApplication|" +msgid "" +"You have been exiled from AO.\n" +"Have a nice day." +msgstr "" + +#: ../packet_distribution.cpp:228 +msgctxt "AOApplication|" +msgid "Attorney Online 2" +msgstr "" + +#: ../packet_distribution.cpp:254 +msgctxt "AOApplication|" +msgid "Loading" +msgstr "" + +#: ../packet_distribution.cpp:341 +#, qt-format +msgctxt "AOApplication|" +msgid "" +"Loading evidence:\n" +"%1/%2" +msgstr "" + +#: ../packet_distribution.cpp:370 ../packet_distribution.cpp:435 +#, qt-format +msgctxt "AOApplication|" +msgid "" +"Loading music:\n" +"%1/%2" +msgstr "" + +#: ../packet_distribution.cpp:415 +#, qt-format +msgctxt "AOApplication|" +msgid "" +"Loading chars:\n" +"%1/%2" +msgstr "" + +#: ../packet_distribution.cpp:548 +msgctxt "AOApplication|" +msgid "You have been kicked." +msgstr "" + +#: ../packet_distribution.cpp:561 +msgctxt "AOApplication|" +msgid "You are banned on this server." +msgstr "" + +#: ../charselect.cpp:27 +msgctxt "Courtroom|" +msgid "Spectator" +msgstr "" + +#: ../charselect.cpp:149 +#, qt-format +msgctxt "Courtroom|" +msgid "Could not find %1" +msgstr "" + +#: ../courtroom.cpp:111 +msgctxt "Courtroom|" +msgid "Name" +msgstr "" + +#: ../courtroom.cpp:152 ../courtroom.cpp:460 +msgctxt "Courtroom|" +msgid "Pre" +msgstr "" + +#: ../courtroom.cpp:154 +msgctxt "Courtroom|" +msgid "Flip" +msgstr "" + +#: ../courtroom.cpp:157 +msgctxt "Courtroom|" +msgid "Guard" +msgstr "" + +#: ../courtroom.cpp:171 +msgctxt "Courtroom|" +msgid "White" +msgstr "" + +#: ../courtroom.cpp:172 +msgctxt "Courtroom|" +msgid "Green" +msgstr "" + +#: ../courtroom.cpp:173 +msgctxt "Courtroom|" +msgid "Red" +msgstr "" + +#: ../courtroom.cpp:174 +msgctxt "Courtroom|" +msgid "Orange" +msgstr "" + +#: ../courtroom.cpp:175 +msgctxt "Courtroom|" +msgid "Blue" +msgstr "" + +#: ../courtroom.cpp:177 +msgctxt "Courtroom|" +msgid "Yellow" +msgstr "" + +#: ../courtroom.cpp:429 +msgctxt "Courtroom|" +msgid "Music" +msgstr "" + +#: ../courtroom.cpp:431 +msgctxt "Courtroom|" +msgid "Sfx" +msgstr "" + +#: ../courtroom.cpp:433 +msgctxt "Courtroom|" +msgid "Blips" +msgstr "" + +#: ../courtroom.cpp:443 ../courtroom.cpp:1656 +msgctxt "Courtroom|" +msgid "Server" +msgstr "" + +#: ../courtroom.cpp:451 +msgctxt "Courtroom|" +msgid "Change character" +msgstr "" + +#: ../courtroom.cpp:454 +msgctxt "Courtroom|" +msgid "Reload theme" +msgstr "" + +#: ../courtroom.cpp:457 +msgctxt "Courtroom|" +msgid "Call mod" +msgstr "" + +#: ../courtroom.cpp:531 +msgctxt "Courtroom|" +msgid "Back to Lobby" +msgstr "" + +#: ../courtroom.cpp:1508 +msgctxt "Courtroom|" +msgid "You have been banned." +msgstr "" + +#: ../courtroom.cpp:1534 +#, qt-format +msgctxt "Courtroom|" +msgid "%1 has played a song: %2" +msgstr "" + +#: ../courtroom.cpp:1620 +msgctxt "Courtroom|" +msgid "Rainbow" +msgstr "" + +#: ../courtroom.cpp:1648 +msgctxt "Courtroom|" +msgid "Master" +msgstr "" + +#: ../evidence.cpp:28 +msgctxt "Courtroom|" +msgid "Choose.." +msgstr "" + +#: ../evidence.cpp:196 +msgctxt "Courtroom|" +msgid "Images (*.png)" +msgstr "" + +#: ../evidence.cpp:275 +msgctxt "Courtroom|" +msgid "Add new evidence..." +msgstr "" + +#: ../discord_rich_presence.cpp:38 ../discord_rich_presence.cpp:53 +#: ../discord_rich_presence.cpp:79 ../discord_rich_presence.cpp:98 +msgctxt "Discord|" +msgid "Objection!" +msgstr "" + +#: ../discord_rich_presence.cpp:41 +msgctxt "Discord|" +msgid "In Lobby" +msgstr "" + +#: ../discord_rich_presence.cpp:42 +msgctxt "Discord|" +msgid "Idle" +msgstr "" + +#: ../discord_rich_presence.cpp:58 +msgctxt "Discord|" +msgid "In a Server" +msgstr "" + +#: ../discord_rich_presence.cpp:73 +#, qt-format +msgctxt "Discord|" +msgid "Playing as %1" +msgstr "" + +#: ../discord_rich_presence.cpp:104 +msgctxt "Discord|" +msgid "Spectating" +msgstr "" + +#: ../lobby.cpp:15 +msgctxt "Lobby|" +msgid "Attorney Online 2" +msgstr "" + +#: ../lobby.cpp:31 +msgctxt "Lobby|" +msgid "Name" +msgstr "" + +#: ../lobby.cpp:71 +msgctxt "Lobby|" +msgid "" +"It doesn't look like your client is set up correctly.\n" +"Did you download all resources correctly from tiny.cc/getao, including the " +"large 'base' folder?" +msgstr "" + +#: ../lobby.cpp:144 +msgctxt "Lobby|" +msgid "Loading" +msgstr "" + +#: ../lobby.cpp:148 +msgctxt "Lobby|" +msgid "Cancel" +msgstr "" + +#: ../lobby.cpp:267 +msgctxt "Lobby|" +msgid "" +"Attorney Online 2 is built using Qt 5.11.\n" +"\n" +"Lead development:\n" +"longbyte1\n" +"OmniTroid\n" +"\n" +"stonedDiscord\n" +"Supporting development:\n" +"Fiercy\n" +"\n" +"UI design:\n" +"Ruekasu\n" +"Draxirch\n" +"\n" +"Special thanks:\n" +"Unishred\n" +"Argoneus\n" +"Noevain\n" +"Cronnicossy" +msgstr "" + +#: ../lobby.cpp:315 +msgctxt "Lobby|" +msgid "Offline" +msgstr "" + +#: ../debug_functions.cpp:10 +#, qt-format +msgctxt "debug_functions|" +msgid "Error: %1" +msgstr "" + +#: ../debug_functions.cpp:11 +msgctxt "debug_functions|" +msgid "Error" +msgstr "" + +#: ../debug_functions.cpp:23 +msgctxt "debug_functions|" +msgid "Notice" +msgstr "" diff --git a/translations/ao_ja.ts b/translations/ao_ja.ts new file mode 100644 index 0000000..46c42c9 --- /dev/null +++ b/translations/ao_ja.ts @@ -0,0 +1,326 @@ + + + + + AOApplication + + + Disconnected from server. + + + + + Error connecting to master server. Will try again in %n seconds. + + + + + There was an error connecting to the master server. +We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. +Please check your Internet connection and firewall, and please try again. + + + + + Outdated version! Your version: %1 +Please go to aceattorneyonline.com to update. + + + + + You have been exiled from AO. +Have a nice day. + + + + + Attorney Online 2 + + + + + Loading + + + + + Loading evidence: +%1/%2 + + + + + + Loading music: +%1/%2 + + + + + Loading chars: +%1/%2 + + + + + You have been kicked. + + + + + You are banned on this server. + + + + + Courtroom + + + Spectator + + + + + Could not find %1 + + + + + Name + + + + + + Pre + + + + + Flip + + + + + Guard + + + + + White + + + + + Green + + + + + Red + + + + + Orange + + + + + Blue + + + + + Yellow + + + + + Music + + + + + Sfx + + + + + Blips + + + + + + Server + + + + + Change character + + + + + Reload theme + + + + + Call mod + + + + + Back to Lobby + + + + + You have been banned. + + + + + %1 has played a song: %2 + + + + + Rainbow + + + + + Master + + + + + Choose.. + + + + + Images (*.png) + + + + + Add new evidence... + + + + + Discord + + + + + + Objection! + + + + + In Lobby + + + + + Idle + + + + + In a Server + + + + + Playing as %1 + + + + + Spectating + + + + + Lobby + + + Attorney Online 2 + + + + + Name + + + + + It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? + + + + + Loading + + + + + Cancel + + + + + Attorney Online 2 is built using Qt 5.11. + +Lead development: +longbyte1 +OmniTroid + +stonedDiscord +Supporting development: +Fiercy + +UI design: +Ruekasu +Draxirch + +Special thanks: +Unishred +Argoneus +Noevain +Cronnicossy + + + + + Offline + + + + + debug_functions + + + Error: %1 + + + + + Error + + + + + Notice + + + + diff --git a/translations/ja.mo b/translations/ja.mo new file mode 100644 index 0000000000000000000000000000000000000000..dad3f2a2f6b9dbd258d51796f196777543dfc73e GIT binary patch literal 990 zcmY+C&rj4q6vszhMeA?9dT3%ew(fe7EMg2R7!r^b7K8C%y4zv5q}$m{rw9p`Zn*#< zAs8gl2p5FJ7!MK*#$SmC9MZzI+}f)^0~isRjwHSjF-f8a2@ z?KmOl5I;FV2rg2>?F{IG*TD%;t-l0MftxYk$NDyii~PV%)%^rj-tU;ZAhscGaJ7CK zuKKBSt2vaNgd>e4R1lj6sy-O6ZW$JE!5J%0C%Rpy;*%C3pv`fn#F$S_vqfWpYwI2p z`k3R{dV8vQalrBgIow^RiSBJ&`EKl;#!W^sTWEX_o?U_$@Ll?M|qgT zAEVsp@e0g#ykc7K$U8#Ix&gObqnGirpVqy~Vd!_II`#TvSF%$ZHTrRgz$#)V>OCD9 zhVoDtha*f1lnEYCEz8+BEeNB}KAKd^4(5yur-rkONvY5n*FMot~Zt*oV9L#=bB>o3&i6j#M literal 0 HcmV?d00001 diff --git a/translations/ja.po b/translations/ja.po new file mode 100644 index 0000000..5457930 --- /dev/null +++ b/translations/ja.po @@ -0,0 +1,337 @@ +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Language: en_US\n" +"X-Qt-Contexts: true\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Language-Team: \n" +"X-Generator: Poedit 2.0.7\n" +"Last-Translator: oldmud0 \n" +"Language: ja\n" + +#: ../aoapplication.cpp:133 +msgctxt "AOApplication|" +msgid "Disconnected from server." +msgstr "" + +#: ../aoapplication.cpp:157 +#, qt-format +msgctxt "AOApplication|" +msgid "Error connecting to master server. Will try again in %n seconds." +msgstr "" + +#: ../aoapplication.cpp:162 +msgctxt "AOApplication|" +msgid "" +"There was an error connecting to the master server.\n" +"We deploy multiple master servers to mitigate any possible downtime, but the " +"client appears to have exhausted all possible methods of finding and " +"connecting to one.\n" +"Please check your Internet connection and firewall, and please try again." +msgstr "" + +#: ../packet_distribution.cpp:107 +#, qt-format +msgctxt "AOApplication|" +msgid "" +"Outdated version! Your version: %1\n" +"Please go to aceattorneyonline.com to update." +msgstr "" + +#: ../packet_distribution.cpp:115 +msgctxt "AOApplication|" +msgid "" +"You have been exiled from AO.\n" +"Have a nice day." +msgstr "" + +#: ../packet_distribution.cpp:228 +msgctxt "AOApplication|" +msgid "Attorney Online 2" +msgstr "" + +#: ../packet_distribution.cpp:254 +msgctxt "AOApplication|" +msgid "Loading" +msgstr "" + +#: ../packet_distribution.cpp:341 +#, qt-format +msgctxt "AOApplication|" +msgid "" +"Loading evidence:\n" +"%1/%2" +msgstr "" + +#: ../packet_distribution.cpp:370 ../packet_distribution.cpp:435 +#, qt-format +msgctxt "AOApplication|" +msgid "" +"Loading music:\n" +"%1/%2" +msgstr "" + +#: ../packet_distribution.cpp:415 +#, qt-format +msgctxt "AOApplication|" +msgid "" +"Loading chars:\n" +"%1/%2" +msgstr "" + +#: ../packet_distribution.cpp:548 +msgctxt "AOApplication|" +msgid "You have been kicked." +msgstr "" + +#: ../packet_distribution.cpp:561 +msgctxt "AOApplication|" +msgid "You are banned on this server." +msgstr "" + +#: ../charselect.cpp:27 +msgctxt "Courtroom|" +msgid "Spectator" +msgstr "" + +#: ../charselect.cpp:149 +#, qt-format +msgctxt "Courtroom|" +msgid "Could not find %1" +msgstr "%1を見つかりませんでした" + +#: ../courtroom.cpp:111 +msgctxt "Courtroom|" +msgid "Name" +msgstr "名前" + +#: ../courtroom.cpp:152 ../courtroom.cpp:460 +msgctxt "Courtroom|" +msgid "Pre" +msgstr "" + +#: ../courtroom.cpp:154 +msgctxt "Courtroom|" +msgid "Flip" +msgstr "" + +#: ../courtroom.cpp:157 +msgctxt "Courtroom|" +msgid "Guard" +msgstr "" + +#: ../courtroom.cpp:171 +msgctxt "Courtroom|" +msgid "White" +msgstr "" + +#: ../courtroom.cpp:172 +msgctxt "Courtroom|" +msgid "Green" +msgstr "" + +#: ../courtroom.cpp:173 +msgctxt "Courtroom|" +msgid "Red" +msgstr "赤" + +#: ../courtroom.cpp:174 +msgctxt "Courtroom|" +msgid "Orange" +msgstr "オレンジ" + +#: ../courtroom.cpp:175 +msgctxt "Courtroom|" +msgid "Blue" +msgstr "青" + +#: ../courtroom.cpp:177 +msgctxt "Courtroom|" +msgid "Yellow" +msgstr "黄色" + +#: ../courtroom.cpp:429 +msgctxt "Courtroom|" +msgid "Music" +msgstr "音楽" + +#: ../courtroom.cpp:431 +msgctxt "Courtroom|" +msgid "Sfx" +msgstr "" + +#: ../courtroom.cpp:433 +msgctxt "Courtroom|" +msgid "Blips" +msgstr "ブリップ" + +#: ../courtroom.cpp:443 ../courtroom.cpp:1656 +msgctxt "Courtroom|" +msgid "Server" +msgstr "サーバ" + +#: ../courtroom.cpp:451 +msgctxt "Courtroom|" +msgid "Change character" +msgstr "" + +#: ../courtroom.cpp:454 +msgctxt "Courtroom|" +msgid "Reload theme" +msgstr "" + +#: ../courtroom.cpp:457 +msgctxt "Courtroom|" +msgid "Call mod" +msgstr "" + +#: ../courtroom.cpp:531 +msgctxt "Courtroom|" +msgid "Back to Lobby" +msgstr "" + +#: ../courtroom.cpp:1508 +msgctxt "Courtroom|" +msgid "You have been banned." +msgstr "" + +#: ../courtroom.cpp:1534 +#, qt-format +msgctxt "Courtroom|" +msgid "%1 has played a song: %2" +msgstr "" + +#: ../courtroom.cpp:1620 +msgctxt "Courtroom|" +msgid "Rainbow" +msgstr "" + +#: ../courtroom.cpp:1648 +msgctxt "Courtroom|" +msgid "Master" +msgstr "マスター" + +#: ../evidence.cpp:28 +msgctxt "Courtroom|" +msgid "Choose.." +msgstr "選択..." + +#: ../evidence.cpp:196 +msgctxt "Courtroom|" +msgid "Images (*.png)" +msgstr "" + +#: ../evidence.cpp:275 +msgctxt "Courtroom|" +msgid "Add new evidence..." +msgstr "" + +#: ../discord_rich_presence.cpp:38 ../discord_rich_presence.cpp:53 +#: ../discord_rich_presence.cpp:79 ../discord_rich_presence.cpp:98 +msgctxt "Discord|" +msgid "Objection!" +msgstr "" + +#: ../discord_rich_presence.cpp:41 +msgctxt "Discord|" +msgid "In Lobby" +msgstr "" + +#: ../discord_rich_presence.cpp:42 +msgctxt "Discord|" +msgid "Idle" +msgstr "" + +#: ../discord_rich_presence.cpp:58 +msgctxt "Discord|" +msgid "In a Server" +msgstr "" + +#: ../discord_rich_presence.cpp:73 +#, qt-format +msgctxt "Discord|" +msgid "Playing as %1" +msgstr "" + +#: ../discord_rich_presence.cpp:104 +msgctxt "Discord|" +msgid "Spectating" +msgstr "" + +#: ../lobby.cpp:15 +msgctxt "Lobby|" +msgid "Attorney Online 2" +msgstr "" + +#: ../lobby.cpp:31 +msgctxt "Lobby|" +msgid "Name" +msgstr "名前" + +#: ../lobby.cpp:71 +msgctxt "Lobby|" +msgid "" +"It doesn't look like your client is set up correctly.\n" +"Did you download all resources correctly from tiny.cc/getao, including the " +"large 'base' folder?" +msgstr "" + +#: ../lobby.cpp:144 +msgctxt "Lobby|" +msgid "Loading" +msgstr "" + +#: ../lobby.cpp:148 +msgctxt "Lobby|" +msgid "Cancel" +msgstr "" + +#: ../lobby.cpp:267 +msgctxt "Lobby|" +msgid "" +"Attorney Online 2 is built using Qt 5.11.\n" +"\n" +"Lead development:\n" +"longbyte1\n" +"OmniTroid\n" +"\n" +"stonedDiscord\n" +"Supporting development:\n" +"Fiercy\n" +"\n" +"UI design:\n" +"Ruekasu\n" +"Draxirch\n" +"\n" +"Special thanks:\n" +"Unishred\n" +"Argoneus\n" +"Noevain\n" +"Cronnicossy" +msgstr "" + +#: ../lobby.cpp:315 +msgctxt "Lobby|" +msgid "Offline" +msgstr "" + +#: ../debug_functions.cpp:10 +#, qt-format +msgctxt "debug_functions|" +msgid "Error: %1" +msgstr "" + +#: ../debug_functions.cpp:11 +msgctxt "debug_functions|" +msgid "Error" +msgstr "" + +#: ../debug_functions.cpp:23 +msgctxt "debug_functions|" +msgid "Notice" +msgstr "" From 9145d20093705694e3d669ddf9d41356a4b7d1c4 Mon Sep 17 00:00:00 2001 From: Denton Date: Thu, 31 May 2018 00:37:35 -0500 Subject: [PATCH 106/175] Update japanese translations someone check these pls --- translations/ja.po | 62 +++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/translations/ja.po b/translations/ja.po index 5457930..e106ba2 100644 --- a/translations/ja.po +++ b/translations/ja.po @@ -53,12 +53,12 @@ msgstr "" #: ../packet_distribution.cpp:228 msgctxt "AOApplication|" msgid "Attorney Online 2" -msgstr "" +msgstr "Attorney Online 2" #: ../packet_distribution.cpp:254 msgctxt "AOApplication|" msgid "Loading" -msgstr "" +msgstr "ロード中" #: ../packet_distribution.cpp:341 #, qt-format @@ -66,7 +66,7 @@ msgctxt "AOApplication|" msgid "" "Loading evidence:\n" "%1/%2" -msgstr "" +msgstr "証拠がロード中: %1/%2" #: ../packet_distribution.cpp:370 ../packet_distribution.cpp:435 #, qt-format @@ -74,7 +74,7 @@ msgctxt "AOApplication|" msgid "" "Loading music:\n" "%1/%2" -msgstr "" +msgstr "音楽がロード中: %1/%2" #: ../packet_distribution.cpp:415 #, qt-format @@ -82,7 +82,7 @@ msgctxt "AOApplication|" msgid "" "Loading chars:\n" "%1/%2" -msgstr "" +msgstr "キャラがロード中: %1/%2" #: ../packet_distribution.cpp:548 msgctxt "AOApplication|" @@ -97,7 +97,7 @@ msgstr "" #: ../charselect.cpp:27 msgctxt "Courtroom|" msgid "Spectator" -msgstr "" +msgstr "観客" #: ../charselect.cpp:149 #, qt-format @@ -113,27 +113,27 @@ msgstr "名前" #: ../courtroom.cpp:152 ../courtroom.cpp:460 msgctxt "Courtroom|" msgid "Pre" -msgstr "" +msgstr "前" #: ../courtroom.cpp:154 msgctxt "Courtroom|" msgid "Flip" -msgstr "" +msgstr "フリップ" #: ../courtroom.cpp:157 msgctxt "Courtroom|" msgid "Guard" -msgstr "" +msgstr "ガード" #: ../courtroom.cpp:171 msgctxt "Courtroom|" msgid "White" -msgstr "" +msgstr "白" #: ../courtroom.cpp:172 msgctxt "Courtroom|" msgid "Green" -msgstr "" +msgstr "緑" #: ../courtroom.cpp:173 msgctxt "Courtroom|" @@ -163,7 +163,7 @@ msgstr "音楽" #: ../courtroom.cpp:431 msgctxt "Courtroom|" msgid "Sfx" -msgstr "" +msgstr "効果音" #: ../courtroom.cpp:433 msgctxt "Courtroom|" @@ -178,22 +178,22 @@ msgstr "サーバ" #: ../courtroom.cpp:451 msgctxt "Courtroom|" msgid "Change character" -msgstr "" +msgstr "キャラを変える" #: ../courtroom.cpp:454 msgctxt "Courtroom|" msgid "Reload theme" -msgstr "" +msgstr "テーマをリロード" #: ../courtroom.cpp:457 msgctxt "Courtroom|" msgid "Call mod" -msgstr "" +msgstr "モデレーターを呼ぶ" #: ../courtroom.cpp:531 msgctxt "Courtroom|" msgid "Back to Lobby" -msgstr "" +msgstr "ロビーに戻る" #: ../courtroom.cpp:1508 msgctxt "Courtroom|" @@ -204,12 +204,12 @@ msgstr "" #, qt-format msgctxt "Courtroom|" msgid "%1 has played a song: %2" -msgstr "" +msgstr "%1は%2を再生した" #: ../courtroom.cpp:1620 msgctxt "Courtroom|" msgid "Rainbow" -msgstr "" +msgstr "虹" #: ../courtroom.cpp:1648 msgctxt "Courtroom|" @@ -224,33 +224,33 @@ msgstr "選択..." #: ../evidence.cpp:196 msgctxt "Courtroom|" msgid "Images (*.png)" -msgstr "" +msgstr "イメージ (*.png)" #: ../evidence.cpp:275 msgctxt "Courtroom|" msgid "Add new evidence..." -msgstr "" +msgstr "新しい証拠を付け加える..." #: ../discord_rich_presence.cpp:38 ../discord_rich_presence.cpp:53 #: ../discord_rich_presence.cpp:79 ../discord_rich_presence.cpp:98 msgctxt "Discord|" msgid "Objection!" -msgstr "" +msgstr "意義あり!" #: ../discord_rich_presence.cpp:41 msgctxt "Discord|" msgid "In Lobby" -msgstr "" +msgstr "ロビーでいる" #: ../discord_rich_presence.cpp:42 msgctxt "Discord|" msgid "Idle" -msgstr "" +msgstr "落ちている" #: ../discord_rich_presence.cpp:58 msgctxt "Discord|" msgid "In a Server" -msgstr "" +msgstr "サーバーでいます" #: ../discord_rich_presence.cpp:73 #, qt-format @@ -261,12 +261,12 @@ msgstr "" #: ../discord_rich_presence.cpp:104 msgctxt "Discord|" msgid "Spectating" -msgstr "" +msgstr "観客している" #: ../lobby.cpp:15 msgctxt "Lobby|" msgid "Attorney Online 2" -msgstr "" +msgstr "Attorney Online 2" #: ../lobby.cpp:31 msgctxt "Lobby|" @@ -284,12 +284,12 @@ msgstr "" #: ../lobby.cpp:144 msgctxt "Lobby|" msgid "Loading" -msgstr "" +msgstr "ロード中" #: ../lobby.cpp:148 msgctxt "Lobby|" msgid "Cancel" -msgstr "" +msgstr "キャンセル" #: ../lobby.cpp:267 msgctxt "Lobby|" @@ -318,18 +318,18 @@ msgstr "" #: ../lobby.cpp:315 msgctxt "Lobby|" msgid "Offline" -msgstr "" +msgstr "オフライン" #: ../debug_functions.cpp:10 #, qt-format msgctxt "debug_functions|" msgid "Error: %1" -msgstr "" +msgstr "エラー: %1" #: ../debug_functions.cpp:11 msgctxt "debug_functions|" msgid "Error" -msgstr "" +msgstr "エラー" #: ../debug_functions.cpp:23 msgctxt "debug_functions|" From 69e4da4c43982205d8b94e182a25746ca72340d4 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Sun, 28 Jul 2019 19:17:47 +0200 Subject: [PATCH 107/175] it didn't like doing that with a pointer --- src/main.cpp | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 8b7cb50..26b97bf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -8,18 +8,7 @@ #include #include #include - -static void install_translators(QtApplication &app) -{ - QTranslator qtTranslator; - qtTranslator.load("qt_" + QLocale::system().name(), - QLibraryInfo::location(QLibraryInfo::TranslationsPath)); - app.installTranslator(&qtTranslator); - - QTranslator appTranslator; - appTranslator.load("ao_" + QLocale::system().name()); - app.installTranslator(&appTranslator); -} +#include int main(int argc, char *argv[]) { @@ -32,7 +21,14 @@ int main(int argc, char *argv[]) AOApplication main_app(argc, argv); - install_translators(&main_app); + QTranslator qtTranslator; + qtTranslator.load("qt_" + QLocale::system().name(), + QLibraryInfo::location(QLibraryInfo::TranslationsPath)); + main_app.installTranslator(&qtTranslator); + + QTranslator appTranslator; + appTranslator.load("ao_" + QLocale::system().name()); + main_app.installTranslator(&appTranslator); main_app.construct_lobby(); main_app.net_manager->connect_to_master(); From 582417a9020569e2f841bf93bb7358a2ccefa16f Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Sun, 28 Jul 2019 20:19:09 +0200 Subject: [PATCH 108/175] german translation --- src/courtroom.cpp | 2 +- translations/ao_de.ts | 874 ++++++++++++++++++++++++++++++++++++++++++ translations/ao_en.ts | 695 +++++++++++++++++++++++++++------ translations/ao_ja.ts | 695 +++++++++++++++++++++++++++------ 4 files changed, 2011 insertions(+), 255 deletions(-) create mode 100644 translations/ao_de.ts diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 7907b54..2ba3ba2 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -2685,7 +2685,7 @@ void Courtroom::on_ooc_return_pressed() //ui_text_color->addItem("Rainbow"); ui_ooc_chat_message->clear(); //rainbow_appended = true; - append_server_chatmessage("CLIENT", tr("This does nohing, but there you go."), "1"); + append_server_chatmessage("CLIENT", tr("This does nothing, but there you go."), "1"); return; } else if (ooc_message.startsWith("/settings")) diff --git a/translations/ao_de.ts b/translations/ao_de.ts new file mode 100644 index 0000000..1e268f5 --- /dev/null +++ b/translations/ao_de.ts @@ -0,0 +1,874 @@ + + + + + AOApplication + + + Disconnected from server. + Vom Server getrennt. + + + Error connecting to master server. Will try again in %n seconds. + Fehler bei der Verbindung zum Master Server. Erneuter Versuch in %n Sekunden. + + + + There was an error connecting to the master server. +We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. +Please check your Internet connection and firewall, and please try again. + Es gab einen Fehler beim verbinden zum Master Server. +Wir verwenden mehrere Master Server um Ausfälle zu verhindern, jedoch hat der Client alle Möglichkeiten einen zu finden erschöpft. +Bitte prüfe deine Internetverbindung und Firewall, und versuche es erneut. + + + + Outdated version! Your version: %1 +Please go to aceattorneyonline.com to update. + Version zu alt! Deine Version: %1 +Bitte besuche aceattorneyonline.com für ein Update. + + + + You have been exiled from AO. +Have a nice day. + Du wurdest von AO befreit. +Schönen Urlaub. + + + + Attorney Online 2 + Attorney Online 2 + + + + Loading + Laden + + + + Loading evidence: +%1/%2 + Lade Beweisstücke: +%1/%2 + + + + + Loading music: +%1/%2 + Lade Musik: +%1/%2 + + + + Loading chars: +%1/%2 + Lade Charaktere: +%1/%2 + + + + You have been kicked from the server. +Reason: + Du wurdest von diesem Server geschmissen. +Grund: + + + + You are banned on this server. +Reason: + Du wurdest von diesem Server verbannt. +Grund: + + + You have been kicked. + Du wurdest rausgeschmissen. + + + You are banned on this server. + Du wurdest verbannt. + + + + AOCaseAnnouncerDialog + + + Case Announcer + Fallansager + + + + Case title: + Fallname: + + + + Defense needed + Verteidiger benötigt + + + + Prosecution needed + Kläger benötigt + + + + Judge needed + Richter benötigt + + + + Jurors needed + Jury benötigt + + + + Stenographer needed + Stenograph benötigt + + + + AOOptionsDialog + + + Settings + Einstellungen + + + + Gameplay + Spiel + + + + Theme: + Theme + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. + Setzt das Theme. Wenn das neue Theme auch das Aussehen der Lobby verändert, must du diese neu laden um die Änderungen zu sehen. + + + + Log goes downwards: + Verläuf geht nach unten + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + Wenn angehakt werden neue Nachrichten unten erscheinen (wie beim OOC). Das traditionelle (AO1) Verhalten wäre nicht angehakt. + + + + Log length: + Länge: + + + + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. + Die Menge an Nachrichten die aufgehoben werden bevor alte gelöscht werden. 0 bedeutet unendlich. + + + + Default username: + Standard Benutzername: + + + + Your OOC name will be automatically set to this value when you join a server. + Dein OOC Name wird automatisch auf dies gesetzt. + + + + Custom shownames: + Eigener Anzeigename: + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + Standardwert für die Anzeigename Box, welche den In-Charakter Namen bestimmt. + + + + Backup MS: + Rückfall MS: + + + + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. + Wenn dereingebaute Master Server fehlschlägt, wird das Spiel diesen hier verwenden. + + + + Discord: + Discord: + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + Erlaubt anderen auf Discord zu sehen auf welchem Server du spielst, welchen Charakter du spielst und wie lange. + + + + Callwords + Alarmwörter + + + + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> + <html><head/><body>Gib so viele Alarmwörter ein wie du möchtest. Groß/Kleinschreibung ist egal. Für jede Wort nur eine Zeile!<br>Bitte keine leere Zeile am Ende -- du bekommst sonst bei jeder Nachricht einen Alarm.</body></html> + + + + Audio + Audio + + + + Audio device: + Audiogerät: + + + + Sets the audio device for all sounds. + Setzt das Audiogerät für all Geräusche. + + + + Music: + Musik: + + + + Sets the music's default volume. + Setzt die Musiklautstärke. + + + + SFX: + SFX: + + + + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. + Setzt die Lautstärke der Soundeffekte wie Einsprüche und die Geräusche der Charaktere. + + + + Blips: + Blips: + + + + Sets the volume of the blips, the talking sound effects. + Setzt die Lautstärke der Blips, das ist das Geräusch das die Charaktere beim Reden machen. + + + + Blip rate: + Bliprate: + + + + Sets the delay between playing the blip sounds. + Setzt die Pause zwischen einzelnen Blips. + + + + Blank blips: + Leere Blips: + + + + If true, the game will play a blip sound even when a space is 'being said'. + Wenn angehakt wird das Spiel auch bei einem Leerzeichen einen Blip machen. + + + + Casing + Fälle + + + + This server supports case alerts. + Dieser Server unterstützt Fallalarme. + + + + This server does not support case alerts. + Dieser Server unterstützt Fallalarme nicht. + + + + Pretty self-explanatory. + Eigentlich selbsterklärend. + + + + Casing: + Fälle: + + + + If checked, you will get alerts about case announcements. + Wenn angehakt wirst du benachrichtigt wenn ein Fall angekündigt wird. + + + + Defense: + Verteidigung: + + + + If checked, you will get alerts about case announcements if a defense spot is open. + Wenn angehakt wirst du benachrichtigt wenn ein Verteidiger benötigt wird. + + + + Prosecution: + Kläger: + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. + Wenn angehakt wirst du benachrichtigt wenn ein Kläger benötigt wird. + + + + Judge: + Richter: + + + + If checked, you will get alerts about case announcements if the judge spot is open. + Wenn angehakt wirst du benachrichtigt wenn ein Richter benötigt wird. + + + + Juror: + Jury: + + + + If checked, you will get alerts about case announcements if a juror spot is open. + Wenn angehakt wirst du benachrichtigt wenn eine Jury benötigt wird. + + + + Stenographer: + Stenograph: + + + + If checked, you will get alerts about case announcements if a stenographer spot is open. + Wenn angehakt wirst du benachrichtigt wenn ein Stenograph benötigt wird. + + + + CM: + CM: + + + + If checked, you will appear amongst the potential CMs on the server. + Wenn angehakt wirst du als potentielle CM angezeigt. + + + + Hosting cases: + Fallleitung: + + + + If you're a CM, enter what cases you are willing to host. + Wenn du CM bist, gib ein welche Fälle du spielen möchtest. + + + + Courtroom + + + Password + Passwort + + + + Spectator + Zuschauer + + + + + Search + Suche + + + + Passworded + Gesperrt + + + + Taken + Benutzt + + + Could not find %1 + Konnte %1 nicht finden. + + + + Showname + Anzeigename + + + + Message + Nachricht + + + + Name + Name + + + + Pre + Vor + + + + Flip + Spiegeln + + + + Guard + Wache + + + + Casing + Fall + + + + Shownames + Anzeigenamen + + + + No Interrupt + Keine Unterbrechung + + + + White + Weiß + + + + Green + Grün + + + + Red + Rot + + + + Orange + Orange + + + + Blue + Blau + + + + Yellow + Gelb + + + Music + Musik + + + Sfx + Sfx + + + Blips + Blips + + + + Server + Server + + + Change character + Charakter ändern + + + Reload theme + Aussehen neu laden + + + Call mod + Moderator rufen + + + + Back to Lobby + Zurück zur Lobby + + + You have been banned. + Du wurdest verbannt. + + + %1 has played a song: %2 + %1 hat ein Lied gespielt: %2 + + + + Rainbow + Regenbogen + + + + Pink + Pink + + + + Cyan + Cyan + + + + You were granted the Guard button. + Dir wurde der Wache Knopf gegeben. + + + + This does nohing, but there you go. + Dies bewirkt nichts, aber egal. + + + + You opened the settings menu. + Du hast die Einstellungen geöffnet. + + + + You will now pair up with + Du wirst nun mit + + + + if they also choose your character in return. + gepaart, wenn der andere dies auch tut. + + + + You are no longer paired with anyone. + Du bist nicht mehr gepaart. + + + + Are you sure you typed that well? The char ID could not be recognised. + Hast du dich vertippt? Die ID konnte nicht erkannt werden. + + + + You have set your offset to + Dein Abstand ist auf + + + + Your offset must be between -100% and 100%! + Der Abstand muss zwischen -100% und 100% liegen. + + + + That offset does not look like one. + Das sieht nicht wie ein Abstand aus. + + + + You switched your music and area list. + Du hast zwischen Musik- und Gebitsliste umgeschaltet. + + + + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. + Du hast Funktionen erzwungen die der Server eventuell nicht unterstützt. Möglicherweise wirst du nicht mehr sprechen können. + + + + Your pre-animations interrupt again. + Deine Voranimation unterbrechen nun Text. + + + + Your pre-animations will not interrupt text. + Deine Voranimation unterbrechen Text nicht. + + + + Couldn't open chatlog.txt to write into. + Konnte chatlog.txt nicht öffnen. + + + + The IC chatlog has been saved. + Der IC Verlauf wurde gespeichert. + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. + Du hattest keinen 'base/cases' Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird. + + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: + Du musst einen Dateinamen angeben (ohne .ini). Stelle sicher das er im 'base/cases' Ordner ist und das er korrekt formatiert ist. +Verfügbare Fälle: + + + + Too many arguments to load a case! You only need one filename, without extension. + Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung. + + + + Case made by + Fall von + + + + Navigate to + Gehe zu + + + + for the CM doc. + für das CM Dokument. + + + + Your case " + Dein Fall " + + + + " was loaded! + " wurde geladen! + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. + Du hattest keinen 'base/cases' Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird. + + + + You need to give a filename to save (extension not needed) and the courtroom status! + Du musst einen Dateinamen (ohne Erweiterung) angebenn, sowie den Gebietsstatus. + + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status! + Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung sowie den Gebietsstatus. + + + + Succesfully saved, edit doc and cmdoc link on the ini! + Erfolgreich gespeichert! + + + + Master + Master + + + + Reason: + Grund: + + + + Call Moderator + Moderator rufen + + + + + Error + Fehler + + + + You must provide a reason. + Du musst einen Grund angeben. + + + + The message is too long. + Die Nachricht ist zu lang. + + + + Choose.. + Wähle... + + + + Images (*.png) + Bilder (*.png) + + + + Add new evidence... + Neues Beweisstück... + + + + Discord + + + + + + Objection! + Einspruch! + + + + In Lobby + In Lobby + + + + Idle + Untätig + + + + In a Server + In einem Server + + + + Playing as %1 + Spielt als %1 + + + + Spectating + Zuschauend + + + + Lobby + + Attorney Online 2 + Attorney Online 2 + + + Name + Name + + + + It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? + Dein Client ist nicht korrekt eingerichtet. +Hast du ALLES von tiny.cc/getao heruntergeladen und entpackt, auch den großen 'base' Ordner + + + + Loading + Laden + + + + Cancel + Abbrechen + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + <h2>Attorney Online %1</h2>Der Gerichtsdrama Simulator<p><b>Quelltext:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Leitende Entwicklung:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Danksagungen:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + + + Attorney Online 2 is built using Qt 5.11. + +Lead development: +longbyte1 +OmniTroid + +stonedDiscord +Supporting development: +Fiercy + +UI design: +Ruekasu +Draxirch + +Special thanks: +Unishred +Argoneus +Noevain +Cronnicossy + Attorney Online 2 wurde gemacht mit Qt 5.11. + +Leitende Entwicklung: +longbyte1 +OmniTroid +stonedDiscord + +Unterstützende Entwicklung: +Fiercy + +UI Design: +Ruekasu +Draxirch + +Speziellen Dank: +Unishred +Argoneus +Noevain +Cronnicossy + + + + Offline + Offline + + + + debug_functions + + + Error: %1 + Fehler: %1 + + + + Error + Fehler + + + + Notice + Hinweis + + + diff --git a/translations/ao_en.ts b/translations/ao_en.ts index 539c672..64a2062 100644 --- a/translations/ao_en.ts +++ b/translations/ao_en.ts @@ -4,210 +4,679 @@ AOApplication - + Disconnected from server. - - Error connecting to master server. Will try again in %n seconds. - - - - + There was an error connecting to the master server. We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. Please check your Internet connection and firewall, and please try again. - + Outdated version! Your version: %1 Please go to aceattorneyonline.com to update. - + You have been exiled from AO. Have a nice day. - + Attorney Online 2 - + Loading - + Loading evidence: %1/%2 - - + + Loading music: %1/%2 - + Loading chars: %1/%2 - - You have been kicked. + + You have been kicked from the server. +Reason: - - You are banned on this server. + + You are banned on this server. +Reason: + + + + + AOCaseAnnouncerDialog + + + Case Announcer + + + + + Case title: + + + + + Defense needed + + + + + Prosecution needed + + + + + Judge needed + + + + + Jurors needed + + + + + Stenographer needed + + + + + AOOptionsDialog + + + Settings + + + + + Gameplay + + + + + Theme: + + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. + + + + + Log goes downwards: + + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + + + + + Log length: + + + + + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. + + + + + Default username: + + + + + Your OOC name will be automatically set to this value when you join a server. + + + + + Custom shownames: + + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + + + + + Backup MS: + + + + + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. + + + + + Discord: + + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + + + + + Callwords + + + + + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> + + + + + Audio + + + + + Audio device: + + + + + Sets the audio device for all sounds. + + + + + Music: + + + + + Sets the music's default volume. + + + + + SFX: + + + + + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. + + + + + Blips: + + + + + Sets the volume of the blips, the talking sound effects. + + + + + Blip rate: + + + + + Sets the delay between playing the blip sounds. + + + + + Blank blips: + + + + + If true, the game will play a blip sound even when a space is 'being said'. + + + + + Casing + + + + + This server supports case alerts. + + + + + This server does not support case alerts. + + + + + Pretty self-explanatory. + + + + + Casing: + + + + + If checked, you will get alerts about case announcements. + + + + + Defense: + + + + + If checked, you will get alerts about case announcements if a defense spot is open. + + + + + Prosecution: + + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. + + + + + Judge: + + + + + If checked, you will get alerts about case announcements if the judge spot is open. + + + + + Juror: + + + + + If checked, you will get alerts about case announcements if a juror spot is open. + + + + + Stenographer: + + + + + If checked, you will get alerts about case announcements if a stenographer spot is open. + + + + + CM: + + + + + If checked, you will appear amongst the potential CMs on the server. + + + + + Hosting cases: + + + + + If you're a CM, enter what cases you are willing to host. Courtroom - + + Password + + + + Spectator - - Could not find %1 + + + Search - + + Passworded + + + + + Taken + + + + + Showname + + + + + Message + + + + Name - - + Pre - + Flip - + Guard - + + Casing + + + + + Shownames + + + + + No Interrupt + + + + White - + Green - + Red - + Orange - + Blue - + Yellow - - Music - - - - - Sfx - - - - - Blips - - - - - + Server - - Change character - - - - - Reload theme - - - - - Call mod - - - - + Back to Lobby - - You have been banned. - - - - - %1 has played a song: %2 - - - - + Rainbow - + + Pink + + + + + Cyan + + + + + You were granted the Guard button. + + + + + This does nohing, but there you go. + + + + + You opened the settings menu. + + + + + You will now pair up with + + + + + if they also choose your character in return. + + + + + You are no longer paired with anyone. + + + + + Are you sure you typed that well? The char ID could not be recognised. + + + + + You have set your offset to + + + + + Your offset must be between -100% and 100%! + + + + + That offset does not look like one. + + + + + You switched your music and area list. + + + + + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. + + + + + Your pre-animations interrupt again. + + + + + Your pre-animations will not interrupt text. + + + + + Couldn't open chatlog.txt to write into. + + + + + The IC chatlog has been saved. + + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. + + + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: + + + + + Too many arguments to load a case! You only need one filename, without extension. + + + + + Case made by + + + + + Navigate to + + + + + for the CM doc. + + + + + Your case " + + + + + " was loaded! + + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. + + + + + You need to give a filename to save (extension not needed) and the courtroom status! + + + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status! + + + + + Succesfully saved, edit doc and cmdoc link on the ini! + + + + Master - + + Reason: + + + + + Call Moderator + + + + + + Error + + + + + You must provide a reason. + + + + + The message is too long. + + + + Choose.. - + Images (*.png) - + Add new evidence... @@ -215,35 +684,35 @@ Have a nice day. Discord - - - - + + + + Objection! - + In Lobby - + Idle - + In a Server - + Playing as %1 - + Spectating @@ -251,56 +720,28 @@ Have a nice day. Lobby - - Attorney Online 2 - - - - - Name - - - - + It doesn't look like your client is set up correctly. Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? - + Loading - + Cancel - - Attorney Online 2 is built using Qt 5.11. - -Lead development: -longbyte1 -OmniTroid - -stonedDiscord -Supporting development: -Fiercy - -UI design: -Ruekasu -Draxirch - -Special thanks: -Unishred -Argoneus -Noevain -Cronnicossy + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - + Offline @@ -308,17 +749,17 @@ Cronnicossy debug_functions - + Error: %1 - + Error - + Notice diff --git a/translations/ao_ja.ts b/translations/ao_ja.ts index 46c42c9..c537ab8 100644 --- a/translations/ao_ja.ts +++ b/translations/ao_ja.ts @@ -4,210 +4,679 @@ AOApplication - + Disconnected from server. - - Error connecting to master server. Will try again in %n seconds. - - - - + There was an error connecting to the master server. We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. Please check your Internet connection and firewall, and please try again. - + Outdated version! Your version: %1 Please go to aceattorneyonline.com to update. - + You have been exiled from AO. Have a nice day. - + Attorney Online 2 - + Loading - + Loading evidence: %1/%2 - - + + Loading music: %1/%2 - + Loading chars: %1/%2 - - You have been kicked. + + You have been kicked from the server. +Reason: - - You are banned on this server. + + You are banned on this server. +Reason: + + + + + AOCaseAnnouncerDialog + + + Case Announcer + + + + + Case title: + + + + + Defense needed + + + + + Prosecution needed + + + + + Judge needed + + + + + Jurors needed + + + + + Stenographer needed + + + + + AOOptionsDialog + + + Settings + + + + + Gameplay + + + + + Theme: + + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. + + + + + Log goes downwards: + + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + + + + + Log length: + + + + + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. + + + + + Default username: + + + + + Your OOC name will be automatically set to this value when you join a server. + + + + + Custom shownames: + + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + + + + + Backup MS: + + + + + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. + + + + + Discord: + + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + + + + + Callwords + + + + + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> + + + + + Audio + + + + + Audio device: + + + + + Sets the audio device for all sounds. + + + + + Music: + + + + + Sets the music's default volume. + + + + + SFX: + + + + + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. + + + + + Blips: + + + + + Sets the volume of the blips, the talking sound effects. + + + + + Blip rate: + + + + + Sets the delay between playing the blip sounds. + + + + + Blank blips: + + + + + If true, the game will play a blip sound even when a space is 'being said'. + + + + + Casing + + + + + This server supports case alerts. + + + + + This server does not support case alerts. + + + + + Pretty self-explanatory. + + + + + Casing: + + + + + If checked, you will get alerts about case announcements. + + + + + Defense: + + + + + If checked, you will get alerts about case announcements if a defense spot is open. + + + + + Prosecution: + + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. + + + + + Judge: + + + + + If checked, you will get alerts about case announcements if the judge spot is open. + + + + + Juror: + + + + + If checked, you will get alerts about case announcements if a juror spot is open. + + + + + Stenographer: + + + + + If checked, you will get alerts about case announcements if a stenographer spot is open. + + + + + CM: + + + + + If checked, you will appear amongst the potential CMs on the server. + + + + + Hosting cases: + + + + + If you're a CM, enter what cases you are willing to host. Courtroom - + + Password + + + + Spectator - - Could not find %1 + + + Search - + + Passworded + + + + + Taken + + + + + Showname + + + + + Message + + + + Name - - + Pre - + Flip - + Guard - + + Casing + + + + + Shownames + + + + + No Interrupt + + + + White - + Green - + Red - + Orange - + Blue - + Yellow - - Music - - - - - Sfx - - - - - Blips - - - - - + Server - - Change character - - - - - Reload theme - - - - - Call mod - - - - + Back to Lobby - - You have been banned. - - - - - %1 has played a song: %2 - - - - + Rainbow - + + Pink + + + + + Cyan + + + + + You were granted the Guard button. + + + + + This does nohing, but there you go. + + + + + You opened the settings menu. + + + + + You will now pair up with + + + + + if they also choose your character in return. + + + + + You are no longer paired with anyone. + + + + + Are you sure you typed that well? The char ID could not be recognised. + + + + + You have set your offset to + + + + + Your offset must be between -100% and 100%! + + + + + That offset does not look like one. + + + + + You switched your music and area list. + + + + + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. + + + + + Your pre-animations interrupt again. + + + + + Your pre-animations will not interrupt text. + + + + + Couldn't open chatlog.txt to write into. + + + + + The IC chatlog has been saved. + + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. + + + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: + + + + + Too many arguments to load a case! You only need one filename, without extension. + + + + + Case made by + + + + + Navigate to + + + + + for the CM doc. + + + + + Your case " + + + + + " was loaded! + + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. + + + + + You need to give a filename to save (extension not needed) and the courtroom status! + + + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status! + + + + + Succesfully saved, edit doc and cmdoc link on the ini! + + + + Master - + + Reason: + + + + + Call Moderator + + + + + + Error + + + + + You must provide a reason. + + + + + The message is too long. + + + + Choose.. - + Images (*.png) - + Add new evidence... @@ -215,35 +684,35 @@ Have a nice day. Discord - - - - + + + + Objection! - + In Lobby - + Idle - + In a Server - + Playing as %1 - + Spectating @@ -251,56 +720,28 @@ Have a nice day. Lobby - - Attorney Online 2 - - - - - Name - - - - + It doesn't look like your client is set up correctly. Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? - + Loading - + Cancel - - Attorney Online 2 is built using Qt 5.11. - -Lead development: -longbyte1 -OmniTroid - -stonedDiscord -Supporting development: -Fiercy - -UI design: -Ruekasu -Draxirch - -Special thanks: -Unishred -Argoneus -Noevain -Cronnicossy + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - + Offline @@ -308,17 +749,17 @@ Cronnicossy debug_functions - + Error: %1 - + Error - + Notice From 259422c4af2548c7c0e91df4deb22171c07aa9f6 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Sun, 28 Jul 2019 20:39:36 +0200 Subject: [PATCH 109/175] at least the german translation works --- src/main.cpp | 2 +- translations/ao_de.qm | Bin 0 -> 22038 bytes translations/ao_en.pot | 330 ----------------------------------------- translations/ao_en.qm | Bin 0 -> 23 bytes translations/ao_ja.pot | 330 ----------------------------------------- translations/ao_ja.qm | 1 + 6 files changed, 2 insertions(+), 661 deletions(-) create mode 100644 translations/ao_de.qm delete mode 100644 translations/ao_en.pot create mode 100644 translations/ao_en.qm delete mode 100644 translations/ao_ja.pot create mode 100644 translations/ao_ja.qm diff --git a/src/main.cpp b/src/main.cpp index 26b97bf..7bf766f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -27,7 +27,7 @@ int main(int argc, char *argv[]) main_app.installTranslator(&qtTranslator); QTranslator appTranslator; - appTranslator.load("ao_" + QLocale::system().name()); + appTranslator.load("ao_" + QLocale::system().name(),"base/translations/"); main_app.installTranslator(&appTranslator); main_app.construct_lobby(); diff --git a/translations/ao_de.qm b/translations/ao_de.qm new file mode 100644 index 0000000000000000000000000000000000000000..28e45d375b2f949f0a470191287c8662c61795b7 GIT binary patch literal 22038 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 Date: Mon, 29 Jul 2019 08:11:14 -0700 Subject: [PATCH 110/175] Ubuntu config gets curl too Config now gets curl incase of fresh vm. --- scripts/configure_ubuntu.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/configure_ubuntu.sh b/scripts/configure_ubuntu.sh index 1f9b8e8..5437dc1 100755 --- a/scripts/configure_ubuntu.sh +++ b/scripts/configure_ubuntu.sh @@ -1,4 +1,4 @@ -#!/bin/bash +....#!/bin/bash # Assumes a somewhat recent 64-bit ubuntu @@ -11,7 +11,8 @@ cd ${ROOT_DIR} #need some openGL stuff sudo apt install libgl1-mesa-dev - +#install curl incase of fresh vm +sudo apt install curl mkdir tmp cd tmp From 326425f54b4115108e5b556c3fcf64663c467618 Mon Sep 17 00:00:00 2001 From: cents02 <46689260+cents02@users.noreply.github.com> Date: Mon, 29 Jul 2019 08:14:51 -0700 Subject: [PATCH 111/175] Update configure_ubuntu.sh --- scripts/configure_ubuntu.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/configure_ubuntu.sh b/scripts/configure_ubuntu.sh index 5437dc1..6cad1f1 100755 --- a/scripts/configure_ubuntu.sh +++ b/scripts/configure_ubuntu.sh @@ -1,4 +1,4 @@ -....#!/bin/bash +#!/bin/bash # Assumes a somewhat recent 64-bit ubuntu From b7012cec10ce96f4325b2c5749805eb51ee04fd7 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 29 Jul 2019 21:46:26 +0200 Subject: [PATCH 112/175] fixed 2 strings --- src/charselect.cpp | 2 +- src/evidence.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/charselect.cpp b/src/charselect.cpp index 4987cf5..58c990b 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -214,7 +214,7 @@ void Courtroom::character_loading_finished() int total_loading_size = ao_app->char_list_size * 2 + ao_app->evidence_list_size + ao_app->music_list_size; int loading_value = int(((ao_app->loaded_chars + ao_app->generated_chars + ao_app->loaded_music + ao_app->loaded_evidence) / static_cast(total_loading_size)) * 100); ao_app->w_lobby->set_loading_value(loading_value); - ao_app->w_lobby->set_loading_text("Generating chars:\n" + QString::number(ao_app->generated_chars) + "/" + QString::number(ao_app->char_list_size)); + ao_app->w_lobby->set_loading_text(tr("Generating chars:\n") + QString::number(ao_app->generated_chars) + "/" + QString::number(ao_app->char_list_size)); } } diff --git a/src/evidence.cpp b/src/evidence.cpp index 3ea6a41..341bed0 100644 --- a/src/evidence.cpp +++ b/src/evidence.cpp @@ -22,7 +22,7 @@ void Courtroom::construct_evidence() ui_evidence_delete = new AOButton(ui_evidence_overlay, ao_app); ui_evidence_image_name = new AOLineEdit(ui_evidence_overlay); ui_evidence_image_button = new AOButton(ui_evidence_overlay, ao_app); - ui_evidence_image_button->setText(tr("Choose..")); + ui_evidence_image_button->setText(tr("Choose...")); ui_evidence_x = new AOButton(ui_evidence_overlay, ao_app); ui_evidence_description = new AOTextEdit(ui_evidence_overlay); From a7a2d02dcd80fe74258c0d95c447f2a3c001e9d4 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 29 Jul 2019 21:46:45 +0200 Subject: [PATCH 113/175] update german translation --- translations/ao_de.qm | Bin 22038 -> 22162 bytes translations/ao_de.ts | 49 +++++++++++++++++++++++++++--------------- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/translations/ao_de.qm b/translations/ao_de.qm index 28e45d375b2f949f0a470191287c8662c61795b7..1f4defe00ec947e0da9df3c94beaa825b248a00c 100644 GIT binary patch delta 1526 zcmXX_X;4#F6#m}Jd&x^eURXtukp!V?WC?^642wGviUEp<+Tsk9jHIK91=MOgMCyXd z2-H^*5UtbER+&*%L@m zv@o^)?pk1;3h=%N51i3Fp?Um~Dcsit^kspTKrNGe zfy5d{aD5Dz?=iypM!;u?aaK5i_z>njb2Y_1Ozk!zlo`bAx6OnbsaZ@{VL#wEhUv|q zIKG0_NK1jp$EDe_jZhPH>mZ)VCM6?x75>2T<4plbZS)s-_%4vaYOu9=jj4N2!EyV3AL_eudPcp^R<)UI)Z)XcTRG&M?wDJ3|7U+ki`4^)mP(pO2 zIP*<$K5ZtI6_BTI=Yu3#`&QXVY^wM{4V@gb|?;t*51#?$M8Ezl-k! zf*Q5oYi&TtYHg1rg$}Nf@7ecc#4%Lrp0D?Gb4fC0p@$a&WX#)AhdM;Es1sS}q*dxi zOyU01`VURZ!)I$1%V#dA3-f|VHv z=$SEBmPNJmV|rOXU!V6n@^@d+EI`y%!Kf{GwHGTBWoCqErz@q$)OLpiB~-5Ua2ub>i6O2bFAmBWZwF`)82HrXW#M;68z6YYU;9E-oYZLe$kbMq*C=y8Rg5Zb)W?CU^ zT1Is{A#CdeCdEVK&H#%m5YtGw!TE4>jsQwB(&}@m{_<<;5=Cl*fNo^ zx}Ja^A-j|UaRXTW^azlUj?#lpATkLJ1y_Nf!#L7JK2|^-9tPqY(0#8DnCQXHY2=5L z;hCuku$!3Z`HXP3F!5po5ID#ROACQn$Ju*vRa9qX)q6+ah4UEu(zyUg>0{lwPk>QD z>{c4taXUDJZw(OD&zZ`ovj7ce?syDLE#h+iaRM4M_rUuf6lw4q%0Z6d6k=6>t>f|Rsz&sFkGqq!lg1S|>DB${HpRQN=b^<5}+bn>-zxiwYu z31EgxbM+vN#5TygLN5W*TKweTWl z1C4IGU%H0~q>l3|>m}k*m409Kk)LqPuRkG%>R$j@OuhI4dQ{fvEw7v7r0HgP52krj>Vuv`lcopqJub8CJ`|L0=%UT62x+v~k5>Lx` zQ~bDxmRM>RE5{OUa*bH;8U_p(#O8EE`2oJt8=}i zI4A4AZa56gKcj2WJtt*;)pf);X{1MWcQQyZW1H^bgJ2@!@ahIad6HVIH?J!J=GN+) zZ*sJ?c75w>OcEKB0PDYf5OZ}l76{=7b~I$q73zX65zMR zaOVXP2|Hl;tNk2}F5B?ZFo_geP1Z2xZibs35$qU}3GjTM^C3lH= z#ALbR_jM#4bycLl=U@D^uYtAFqzIc_MB38ErJN`SJakfQg~4LF}{!T#?~r7D^4JMv(l5F zNCYmE?&%xVW1fS?<?W<4oagZr zxz%&AQ<%DNmW?SgQVHV~juBh&zFHptkzkmdnU`N=T<38Y84EqCe%^h?Eb61gAN<%9 rwJn88?=If(>S=)^f@4PC`lUwS?xnxb!`sX9MJB6PGGxlh>|p-`@Fs!7 diff --git a/translations/ao_de.ts b/translations/ao_de.ts index 1e268f5..11af557 100644 --- a/translations/ao_de.ts +++ b/translations/ao_de.ts @@ -17,7 +17,7 @@ There was an error connecting to the master server. We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. Please check your Internet connection and firewall, and please try again. - Es gab einen Fehler beim verbinden zum Master Server. + Es gab einen Fehler beim Verbinden zum Master Server. Wir verwenden mehrere Master Server um Ausfälle zu verhindern, jedoch hat der Client alle Möglichkeiten einen zu finden erschöpft. Bitte prüfe deine Internetverbindung und Firewall, und versuche es erneut. @@ -72,14 +72,14 @@ Schönen Urlaub. You have been kicked from the server. Reason: Du wurdest von diesem Server geschmissen. -Grund: +Grund: You are banned on this server. Reason: Du wurdest von diesem Server verbannt. -Grund: +Grund: You have been kicked. @@ -143,7 +143,7 @@ Grund: Theme: - Theme + Theme: @@ -153,7 +153,7 @@ Grund: Log goes downwards: - Verläuf geht nach unten + Verlauf geht nach unten: @@ -414,6 +414,13 @@ Grund: Taken Benutzt + + + Generating chars: + + Generiere Charaktere: + + Could not find %1 Konnte %1 nicht finden. @@ -556,8 +563,12 @@ Grund: Dir wurde der Wache Knopf gegeben. - This does nohing, but there you go. + Dies bewirkt nichts, aber egal. + + + + This does nothing, but there you go. Dies bewirkt nichts, aber egal. @@ -568,12 +579,12 @@ Grund: You will now pair up with - Du wirst nun mit + Du wirst nun mit if they also choose your character in return. - gepaart, wenn der andere dies auch tut. + gepaart, wenn der andere dies auch tut. @@ -593,7 +604,7 @@ Grund: Your offset must be between -100% and 100%! - Der Abstand muss zwischen -100% und 100% liegen. + Der Abstand muss zwischen -100% und 100% liegen! @@ -640,7 +651,7 @@ Grund: You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. Cases you can load: Du musst einen Dateinamen angeben (ohne .ini). Stelle sicher das er im 'base/cases' Ordner ist und das er korrekt formatiert ist. -Verfügbare Fälle: +Verfügbare Fälle: @@ -650,17 +661,17 @@ Verfügbare Fälle: Case made by - Fall von + Fall von Navigate to - Gehe zu + Gehe zu for the CM doc. - für das CM Dokument. + für das CM Dokument. @@ -680,12 +691,12 @@ Verfügbare Fälle: You need to give a filename to save (extension not needed) and the courtroom status! - Du musst einen Dateinamen (ohne Erweiterung) angebenn, sowie den Gebietsstatus. + Du musst einen Dateinamen (ohne Erweiterung) angebenn, sowie den Gebietsstatus! Too many arguments to save a case! You only need a filename without extension and the courtroom status! - Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung sowie den Gebietsstatus. + Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung sowie den Gebietsstatus! @@ -724,8 +735,12 @@ Verfügbare Fälle: Die Nachricht ist zu lang. - Choose.. + Wähle.. + + + + Choose... Wähle... @@ -790,7 +805,7 @@ Verfügbare Fälle: It doesn't look like your client is set up correctly. Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? Dein Client ist nicht korrekt eingerichtet. -Hast du ALLES von tiny.cc/getao heruntergeladen und entpackt, auch den großen 'base' Ordner +Hast du ALLES von tiny.cc/getao heruntergeladen und entpackt, auch den großen 'base' Ordner? From ed16f9193937980122acac07c2f01cc7cadab71b Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 29 Jul 2019 21:47:09 +0200 Subject: [PATCH 114/175] update japanese translation (thanks to gbp) --- translations/ao_ja.qm | Bin 16 -> 2051 bytes translations/ao_ja.ts | 86 ++++++----- translations/ja.mo | Bin 990 -> 0 bytes translations/ja.po | 337 ------------------------------------------ 4 files changed, 46 insertions(+), 377 deletions(-) delete mode 100644 translations/ja.mo delete mode 100644 translations/ja.po diff --git a/translations/ao_ja.qm b/translations/ao_ja.qm index be651eede2edc9cb0da5c140b31664afee169fa8..2e7093ac650769f0bba1364e4658dcf855344d17 100644 GIT binary patch literal 2051 zcmai#e`p(J7{{L`cbDY4w(6Aik0RGUBHP%qr&Cd4{iA7|i=@p=2HhCLU2@mUZP&YS zNjj%?igt=C>R8b_8JmtNu537P!&aRY6|~~SQtCuh{DH#!fnq@aaH!8++INXwSHk7J zd++o8zR&Z#Kdy5^Y5nlm!%v@YZ=2fj!nrSF01d4Geft2os{yv0p>`W^qh|qpao}cw z+6%z_6{h|_fZupCfPV`3`(G#B0Z1Oo0tg!Pj=V+v4bVF=OzjPj*?tIsmtgyEFOu$r z?}yoA7PEy^XJ&YoO=Hn*W({bf1$*nDNtH5P!i- zINiH8NDm;;6-ZjLqMKTP?wh(&U4??7=j4)ZnGKHMdOU^S;YCa?2q6j*grNi0(f@j8 zbM3s1l*`L@F)D^T)`izE;@P&pGyC^mX^b=>}@#0#7!|dw@WHnQqsz1_jt&BV`&C+F{7+{FxTL>_&)wj=2LVX-24Cz zGEH;0Y#36HrKq-CvTP5vc;Mdbk^kfr>dsqMQT5Iwh;!AcVuNrSXrer zVR(in4&RP4_G7$enR5xna6JQYy_mCXrEW`Tb!;$UUfvCL{8f0CrvDSV9K~MT%A#o` zjVxtUd$2l_buv+IdGG|ra6hy&ftbqfq0beHY@`~o~ ou Loading - + ロード中 Loading evidence: %1/%2 - + 証拠がロード中: %1/%2 Loading music: %1/%2 - + 音楽がロード中: %1/%2 Loading chars: %1/%2 - + キャラがロード中: %1/%2 @@ -217,7 +217,7 @@ Reason: Music: - + 音楽: @@ -227,7 +227,7 @@ Reason: SFX: - + 効果音: @@ -237,7 +237,7 @@ Reason: Blips: - + ブリップ: @@ -375,7 +375,7 @@ Reason: Spectator - + 観客 @@ -393,6 +393,12 @@ Reason: Taken + + + Generating chars: + + + Showname @@ -406,22 +412,22 @@ Reason: Name - + 名前 Pre - + Flip - + フリップ Guard - + ガード @@ -441,31 +447,36 @@ Reason: White - + Green - + Red - + Orange - + オレンジ Blue - + Yellow + 黄色 + + + + This does nothing, but there you go. @@ -476,12 +487,12 @@ Reason: Back to Lobby - + ロビーに戻る Rainbow - + @@ -498,11 +509,6 @@ Reason: You were granted the Guard button. - - - This does nohing, but there you go. - - You opened the settings menu. @@ -637,7 +643,7 @@ Cases you can load: Master - + マスター @@ -647,7 +653,7 @@ Cases you can load: Call Moderator - + モデレーターを呼ぶ @@ -667,18 +673,18 @@ Cases you can load: - Choose.. - + Choose... + 選択... Images (*.png) - + イメージ (*.png) Add new evidence... - + 新しい証拠を付け加える... @@ -689,22 +695,22 @@ Cases you can load: Objection! - + 意義あり! In Lobby - + ロビーでいる Idle - + 落ちている In a Server - + サーバーでいます @@ -714,7 +720,7 @@ Cases you can load: Spectating - + 観客している @@ -728,12 +734,12 @@ Did you download all resources correctly from tiny.cc/getao, including the large Loading - + ロード中 Cancel - + キャンセル @@ -743,7 +749,7 @@ Did you download all resources correctly from tiny.cc/getao, including the large Offline - + オフライン @@ -751,12 +757,12 @@ Did you download all resources correctly from tiny.cc/getao, including the large Error: %1 - + エラー: %1 Error - + エラー diff --git a/translations/ja.mo b/translations/ja.mo deleted file mode 100644 index dad3f2a2f6b9dbd258d51796f196777543dfc73e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 990 zcmY+C&rj4q6vszhMeA?9dT3%ew(fe7EMg2R7!r^b7K8C%y4zv5q}$m{rw9p`Zn*#< zAs8gl2p5FJ7!MK*#$SmC9MZzI+}f)^0~isRjwHSjF-f8a2@ z?KmOl5I;FV2rg2>?F{IG*TD%;t-l0MftxYk$NDyii~PV%)%^rj-tU;ZAhscGaJ7CK zuKKBSt2vaNgd>e4R1lj6sy-O6ZW$JE!5J%0C%Rpy;*%C3pv`fn#F$S_vqfWpYwI2p z`k3R{dV8vQalrBgIow^RiSBJ&`EKl;#!W^sTWEX_o?U_$@Ll?M|qgT zAEVsp@e0g#ykc7K$U8#Ix&gObqnGirpVqy~Vd!_II`#TvSF%$ZHTrRgz$#)V>OCD9 zhVoDtha*f1lnEYCEz8+BEeNB}KAKd^4(5yur-rkONvY5n*FMot~Zt*oV9L#=bB>o3&i6j#M diff --git a/translations/ja.po b/translations/ja.po deleted file mode 100644 index e106ba2..0000000 --- a/translations/ja.po +++ /dev/null @@ -1,337 +0,0 @@ -msgid "" -msgstr "" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Language: en_US\n" -"X-Qt-Contexts: true\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Language-Team: \n" -"X-Generator: Poedit 2.0.7\n" -"Last-Translator: oldmud0 \n" -"Language: ja\n" - -#: ../aoapplication.cpp:133 -msgctxt "AOApplication|" -msgid "Disconnected from server." -msgstr "" - -#: ../aoapplication.cpp:157 -#, qt-format -msgctxt "AOApplication|" -msgid "Error connecting to master server. Will try again in %n seconds." -msgstr "" - -#: ../aoapplication.cpp:162 -msgctxt "AOApplication|" -msgid "" -"There was an error connecting to the master server.\n" -"We deploy multiple master servers to mitigate any possible downtime, but the " -"client appears to have exhausted all possible methods of finding and " -"connecting to one.\n" -"Please check your Internet connection and firewall, and please try again." -msgstr "" - -#: ../packet_distribution.cpp:107 -#, qt-format -msgctxt "AOApplication|" -msgid "" -"Outdated version! Your version: %1\n" -"Please go to aceattorneyonline.com to update." -msgstr "" - -#: ../packet_distribution.cpp:115 -msgctxt "AOApplication|" -msgid "" -"You have been exiled from AO.\n" -"Have a nice day." -msgstr "" - -#: ../packet_distribution.cpp:228 -msgctxt "AOApplication|" -msgid "Attorney Online 2" -msgstr "Attorney Online 2" - -#: ../packet_distribution.cpp:254 -msgctxt "AOApplication|" -msgid "Loading" -msgstr "ロード中" - -#: ../packet_distribution.cpp:341 -#, qt-format -msgctxt "AOApplication|" -msgid "" -"Loading evidence:\n" -"%1/%2" -msgstr "証拠がロード中: %1/%2" - -#: ../packet_distribution.cpp:370 ../packet_distribution.cpp:435 -#, qt-format -msgctxt "AOApplication|" -msgid "" -"Loading music:\n" -"%1/%2" -msgstr "音楽がロード中: %1/%2" - -#: ../packet_distribution.cpp:415 -#, qt-format -msgctxt "AOApplication|" -msgid "" -"Loading chars:\n" -"%1/%2" -msgstr "キャラがロード中: %1/%2" - -#: ../packet_distribution.cpp:548 -msgctxt "AOApplication|" -msgid "You have been kicked." -msgstr "" - -#: ../packet_distribution.cpp:561 -msgctxt "AOApplication|" -msgid "You are banned on this server." -msgstr "" - -#: ../charselect.cpp:27 -msgctxt "Courtroom|" -msgid "Spectator" -msgstr "観客" - -#: ../charselect.cpp:149 -#, qt-format -msgctxt "Courtroom|" -msgid "Could not find %1" -msgstr "%1を見つかりませんでした" - -#: ../courtroom.cpp:111 -msgctxt "Courtroom|" -msgid "Name" -msgstr "名前" - -#: ../courtroom.cpp:152 ../courtroom.cpp:460 -msgctxt "Courtroom|" -msgid "Pre" -msgstr "前" - -#: ../courtroom.cpp:154 -msgctxt "Courtroom|" -msgid "Flip" -msgstr "フリップ" - -#: ../courtroom.cpp:157 -msgctxt "Courtroom|" -msgid "Guard" -msgstr "ガード" - -#: ../courtroom.cpp:171 -msgctxt "Courtroom|" -msgid "White" -msgstr "白" - -#: ../courtroom.cpp:172 -msgctxt "Courtroom|" -msgid "Green" -msgstr "緑" - -#: ../courtroom.cpp:173 -msgctxt "Courtroom|" -msgid "Red" -msgstr "赤" - -#: ../courtroom.cpp:174 -msgctxt "Courtroom|" -msgid "Orange" -msgstr "オレンジ" - -#: ../courtroom.cpp:175 -msgctxt "Courtroom|" -msgid "Blue" -msgstr "青" - -#: ../courtroom.cpp:177 -msgctxt "Courtroom|" -msgid "Yellow" -msgstr "黄色" - -#: ../courtroom.cpp:429 -msgctxt "Courtroom|" -msgid "Music" -msgstr "音楽" - -#: ../courtroom.cpp:431 -msgctxt "Courtroom|" -msgid "Sfx" -msgstr "効果音" - -#: ../courtroom.cpp:433 -msgctxt "Courtroom|" -msgid "Blips" -msgstr "ブリップ" - -#: ../courtroom.cpp:443 ../courtroom.cpp:1656 -msgctxt "Courtroom|" -msgid "Server" -msgstr "サーバ" - -#: ../courtroom.cpp:451 -msgctxt "Courtroom|" -msgid "Change character" -msgstr "キャラを変える" - -#: ../courtroom.cpp:454 -msgctxt "Courtroom|" -msgid "Reload theme" -msgstr "テーマをリロード" - -#: ../courtroom.cpp:457 -msgctxt "Courtroom|" -msgid "Call mod" -msgstr "モデレーターを呼ぶ" - -#: ../courtroom.cpp:531 -msgctxt "Courtroom|" -msgid "Back to Lobby" -msgstr "ロビーに戻る" - -#: ../courtroom.cpp:1508 -msgctxt "Courtroom|" -msgid "You have been banned." -msgstr "" - -#: ../courtroom.cpp:1534 -#, qt-format -msgctxt "Courtroom|" -msgid "%1 has played a song: %2" -msgstr "%1は%2を再生した" - -#: ../courtroom.cpp:1620 -msgctxt "Courtroom|" -msgid "Rainbow" -msgstr "虹" - -#: ../courtroom.cpp:1648 -msgctxt "Courtroom|" -msgid "Master" -msgstr "マスター" - -#: ../evidence.cpp:28 -msgctxt "Courtroom|" -msgid "Choose.." -msgstr "選択..." - -#: ../evidence.cpp:196 -msgctxt "Courtroom|" -msgid "Images (*.png)" -msgstr "イメージ (*.png)" - -#: ../evidence.cpp:275 -msgctxt "Courtroom|" -msgid "Add new evidence..." -msgstr "新しい証拠を付け加える..." - -#: ../discord_rich_presence.cpp:38 ../discord_rich_presence.cpp:53 -#: ../discord_rich_presence.cpp:79 ../discord_rich_presence.cpp:98 -msgctxt "Discord|" -msgid "Objection!" -msgstr "意義あり!" - -#: ../discord_rich_presence.cpp:41 -msgctxt "Discord|" -msgid "In Lobby" -msgstr "ロビーでいる" - -#: ../discord_rich_presence.cpp:42 -msgctxt "Discord|" -msgid "Idle" -msgstr "落ちている" - -#: ../discord_rich_presence.cpp:58 -msgctxt "Discord|" -msgid "In a Server" -msgstr "サーバーでいます" - -#: ../discord_rich_presence.cpp:73 -#, qt-format -msgctxt "Discord|" -msgid "Playing as %1" -msgstr "" - -#: ../discord_rich_presence.cpp:104 -msgctxt "Discord|" -msgid "Spectating" -msgstr "観客している" - -#: ../lobby.cpp:15 -msgctxt "Lobby|" -msgid "Attorney Online 2" -msgstr "Attorney Online 2" - -#: ../lobby.cpp:31 -msgctxt "Lobby|" -msgid "Name" -msgstr "名前" - -#: ../lobby.cpp:71 -msgctxt "Lobby|" -msgid "" -"It doesn't look like your client is set up correctly.\n" -"Did you download all resources correctly from tiny.cc/getao, including the " -"large 'base' folder?" -msgstr "" - -#: ../lobby.cpp:144 -msgctxt "Lobby|" -msgid "Loading" -msgstr "ロード中" - -#: ../lobby.cpp:148 -msgctxt "Lobby|" -msgid "Cancel" -msgstr "キャンセル" - -#: ../lobby.cpp:267 -msgctxt "Lobby|" -msgid "" -"Attorney Online 2 is built using Qt 5.11.\n" -"\n" -"Lead development:\n" -"longbyte1\n" -"OmniTroid\n" -"\n" -"stonedDiscord\n" -"Supporting development:\n" -"Fiercy\n" -"\n" -"UI design:\n" -"Ruekasu\n" -"Draxirch\n" -"\n" -"Special thanks:\n" -"Unishred\n" -"Argoneus\n" -"Noevain\n" -"Cronnicossy" -msgstr "" - -#: ../lobby.cpp:315 -msgctxt "Lobby|" -msgid "Offline" -msgstr "オフライン" - -#: ../debug_functions.cpp:10 -#, qt-format -msgctxt "debug_functions|" -msgid "Error: %1" -msgstr "エラー: %1" - -#: ../debug_functions.cpp:11 -msgctxt "debug_functions|" -msgid "Error" -msgstr "エラー" - -#: ../debug_functions.cpp:23 -msgctxt "debug_functions|" -msgid "Notice" -msgstr "" From 274310aebcd3f14c9b5fd663b0e0434d2837fc9d Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 29 Jul 2019 21:47:21 +0200 Subject: [PATCH 115/175] update translation template --- translations/ao_en.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/translations/ao_en.ts b/translations/ao_en.ts index 64a2062..2128630 100644 --- a/translations/ao_en.ts +++ b/translations/ao_en.ts @@ -393,6 +393,12 @@ Reason: Taken + + + Generating chars: + + + Showname @@ -468,6 +474,11 @@ Reason: Yellow + + + This does nothing, but there you go. + + Server @@ -498,11 +509,6 @@ Reason: You were granted the Guard button. - - - This does nohing, but there you go. - - You opened the settings menu. @@ -667,7 +673,7 @@ Cases you can load: - Choose.. + Choose... From 95da26195fc35dada400b23b23c28de94416efb9 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 29 Jul 2019 21:50:47 +0200 Subject: [PATCH 116/175] add translation to .pro so lupdate and lrelease find them --- Attorney_Online.pro | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index 20a61d3..de7fb0a 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -41,5 +41,9 @@ CONFIG += c++14 RESOURCES += resources.qrc +TRANSLATIONS = translations/ao_en.ts \ + translations/ao_ja.ts \ + translations/ao_de.ts + win32:RC_ICONS = resource/logo.ico macx:ICON = resource/logo.icns From 3fd6dbd320ec24ebb36debaa31da87c4192a2469 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 29 Jul 2019 21:53:25 +0200 Subject: [PATCH 117/175] move translations to resource folder --- {translations => resource/translations}/ao_de.qm | Bin {translations => resource/translations}/ao_de.ts | 0 {translations => resource/translations}/ao_en.qm | Bin {translations => resource/translations}/ao_en.ts | 0 {translations => resource/translations}/ao_ja.qm | Bin {translations => resource/translations}/ao_ja.ts | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename {translations => resource/translations}/ao_de.qm (100%) rename {translations => resource/translations}/ao_de.ts (100%) rename {translations => resource/translations}/ao_en.qm (100%) rename {translations => resource/translations}/ao_en.ts (100%) rename {translations => resource/translations}/ao_ja.qm (100%) rename {translations => resource/translations}/ao_ja.ts (100%) diff --git a/translations/ao_de.qm b/resource/translations/ao_de.qm similarity index 100% rename from translations/ao_de.qm rename to resource/translations/ao_de.qm diff --git a/translations/ao_de.ts b/resource/translations/ao_de.ts similarity index 100% rename from translations/ao_de.ts rename to resource/translations/ao_de.ts diff --git a/translations/ao_en.qm b/resource/translations/ao_en.qm similarity index 100% rename from translations/ao_en.qm rename to resource/translations/ao_en.qm diff --git a/translations/ao_en.ts b/resource/translations/ao_en.ts similarity index 100% rename from translations/ao_en.ts rename to resource/translations/ao_en.ts diff --git a/translations/ao_ja.qm b/resource/translations/ao_ja.qm similarity index 100% rename from translations/ao_ja.qm rename to resource/translations/ao_ja.qm diff --git a/translations/ao_ja.ts b/resource/translations/ao_ja.ts similarity index 100% rename from translations/ao_ja.ts rename to resource/translations/ao_ja.ts From 847da688b1a204482600ddd01f3df6e0b3246eb2 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 29 Jul 2019 21:54:12 +0200 Subject: [PATCH 118/175] adjust path in .pro --- Attorney_Online.pro | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index de7fb0a..7e597b4 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -41,9 +41,9 @@ CONFIG += c++14 RESOURCES += resources.qrc -TRANSLATIONS = translations/ao_en.ts \ - translations/ao_ja.ts \ - translations/ao_de.ts +TRANSLATIONS = resource/translations/ao_en.ts \ + resource/translations/ao_ja.ts \ + resource/translations/ao_de.ts win32:RC_ICONS = resource/logo.ico macx:ICON = resource/logo.icns From 571af3186180acd36e9c97fe0fe1b8879be39310 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 29 Jul 2019 21:54:23 +0200 Subject: [PATCH 119/175] add translations to resource file --- resources.qrc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources.qrc b/resources.qrc index bc9f322..81f2d8f 100644 --- a/resources.qrc +++ b/resources.qrc @@ -2,5 +2,8 @@ resource/fonts/Ace-Attorney.ttf resource/logo.png + resource/translations/ao_de.qm + resource/translations/ao_en.qm + resource/translations/ao_ja.qm From adf1a973044a2b7ab7b51195bcd2e5b19ec6eeb5 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 29 Jul 2019 21:54:35 +0200 Subject: [PATCH 120/175] adjust translation path in main.cpp --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 7bf766f..7c2daa6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -27,7 +27,7 @@ int main(int argc, char *argv[]) main_app.installTranslator(&qtTranslator); QTranslator appTranslator; - appTranslator.load("ao_" + QLocale::system().name(),"base/translations/"); + appTranslator.load("ao_" + QLocale::system().name(),":/resource/translations/"); main_app.installTranslator(&appTranslator); main_app.construct_lobby(); From 3f0ff19615c97d49cbfb0cd9ed1d13432793e920 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 29 Jul 2019 21:58:49 +0200 Subject: [PATCH 121/175] what was gbp thinking --- include/networkmanager.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/networkmanager.h b/include/networkmanager.h index 7584b69..08b10db 100644 --- a/include/networkmanager.h +++ b/include/networkmanager.h @@ -14,8 +14,6 @@ #undef MS_FAILOVER_SUPPORTED #endif -#undef MS_FAILOVER_SUPPORTED - #include "aopacket.h" #include "aoapplication.h" From 460805d072ee391dd50786da1013bd699b435673 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 30 Jul 2019 19:42:38 +0200 Subject: [PATCH 122/175] make discord integration the same for all locales --- src/discord_rich_presence.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/discord_rich_presence.cpp b/src/discord_rich_presence.cpp index 17a649f..95a824a 100644 --- a/src/discord_rich_presence.cpp +++ b/src/discord_rich_presence.cpp @@ -31,11 +31,11 @@ void Discord::state_lobby() DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; - presence.largeImageText = tr("Objection!"); + presence.largeImageText = "Objection!"; presence.instance = 1; - presence.state = tr("In Lobby"); - presence.details = tr("Idle"); + presence.state = "In Lobby"; + presence.details = "Idle"; Discord_UpdatePresence(&presence); } @@ -46,12 +46,12 @@ void Discord::state_server(std::string name, std::string server_id) DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; - presence.largeImageText = tr("Objection!"); + presence.largeImageText = "Objection!"; presence.instance = 1; auto timestamp = static_cast(std::time(nullptr)); - presence.state = tr("In a Server"); + presence.state = "In a Server"; presence.details = name.c_str(); presence.matchSecret = server_id.c_str(); presence.startTimestamp = this->timestamp; @@ -66,13 +66,13 @@ void Discord::state_character(std::string name) { auto name_internal = QString(name.c_str()).toLower().replace(' ', '_').toStdString(); auto name_friendly = QString(name.c_str()).replace('_', ' ').toStdString(); - const std::string playing_as = tr("Playing as %1").arg(name_friendly); + const std::string playing_as = "Playing as " + name_friendly; qDebug() << "Discord RPC: Setting character state (" << playing_as.c_str() << ")"; DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; - presence.largeImageText = tr("Objection!"); + presence.largeImageText = "Objection!"; presence.instance = 1; presence.details = this->server_name.c_str(); presence.matchSecret = this->server_id.c_str(); @@ -91,13 +91,13 @@ void Discord::state_spectate() DiscordRichPresence presence; std::memset(&presence, 0, sizeof(presence)); presence.largeImageKey = "ao2-logo"; - presence.largeImageText = tr("Objection!"); + presence.largeImageText = "Objection!"; presence.instance = 1; presence.details = this->server_name.c_str(); presence.matchSecret = this->server_id.c_str(); presence.startTimestamp = this->timestamp; - presence.state = tr("Spectating"); + presence.state = "Spectating"; Discord_UpdatePresence(&presence); } #else From afbbc5476bf5102f421a94006e5f590cb90fd862 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 30 Jul 2019 20:42:33 +0200 Subject: [PATCH 123/175] move #ifdef BASSAUDIO so the audio tab isn't deleted as a whole --- src/aooptionsdialog.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp index 0f6a054..4bfe9de 100644 --- a/src/aooptionsdialog.cpp +++ b/src/aooptionsdialog.cpp @@ -199,7 +199,6 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_callwords_layout->addWidget(ui_callwords_explain_lbl); // The audio tab. - #ifdef BASSAUDIO ui_audio_tab = new QWidget(); ui_settings_tabs->addTab(ui_audio_tab, tr("Audio")); @@ -221,20 +220,23 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi // Let's fill out the combobox with the available audio devices. Or don't if there is no audio int a = 0; + #ifdef BASSAUDIO BASS_DEVICEINFO info; - + #endif if (needs_default_audiodev()) { - ui_audio_device_combobox->addItem("default"); - } + ui_audio_device_combobox->addItem("default"); + + } + #ifdef BASSAUDIO for (a = 0; BASS_GetDeviceInfo(a, &info); a++) { ui_audio_device_combobox->addItem(info.name); if (p_ao_app->get_audio_output_device() == info.name) ui_audio_device_combobox->setCurrentIndex(ui_audio_device_combobox->count()-1); } - + #endif ui_audio_layout->setWidget(0, QFormLayout::FieldRole, ui_audio_device_combobox); ui_audio_volume_divider = new QFrame(ui_audio_widget); @@ -312,7 +314,6 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_blank_blips_cb->setChecked(p_ao_app->get_blank_blip()); ui_audio_layout->setWidget(7, QFormLayout::FieldRole, ui_blank_blips_cb); - #endif // The casing tab! ui_casing_tab = new QWidget(); From bf8aad33de3b326f3a36cad33ced5d3acd7f2c24 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Wed, 31 Jul 2019 21:50:16 +0200 Subject: [PATCH 124/175] make default clone compileable to improve new dev experience and switch to qt on linux --- .gitlab-ci.yml | 22 +++++++++++----------- Attorney_Online.pro | 4 ++-- scripts/macos_build.sh | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0f68fe5..6cdead7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,15 +29,15 @@ build linux x86_64: - clang --version # Extract BASS - - mkdir bass - - cd bass - - curl http://www.un4seen.com/files/bass24-linux.zip -o bass.zip - - unzip bass.zip - - cp x64/libbass.so ../lib - - curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus.zip - - unzip bassopus.zip - - cp x64/libbassopus.so ../lib - - cd .. + #- mkdir bass + #- cd bass + #- curl http://www.un4seen.com/files/bass24-linux.zip -o bass.zip + #- unzip bass.zip + #- cp x64/libbass.so ../lib + #- curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus.zip + #- unzip bassopus.zip + #- cp x64/libbassopus.so ../lib + #- cd .. # Extract Discord RPC - mkdir discord-rpc @@ -56,7 +56,7 @@ build linux x86_64: - cd .. # Build - - qmake -spec linux-clang + - qmake -spec linux-clang -DDISCORD -DQTAUDIO - make -j4 # Post-processing @@ -88,7 +88,7 @@ build windows i686: - cd .. # Build - - /opt/mxe/usr/${TARGET_SPEC}/qt5/bin/qmake + - /opt/mxe/usr/${TARGET_SPEC}/qt5/bin/qmake -DDISCORD -DBASSAUDIO - make -j4 # Post-processing diff --git a/Attorney_Online.pro b/Attorney_Online.pro index 20a61d3..aefd514 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -16,13 +16,13 @@ HEADERS += $$files($$PWD/include/*.h) LIBS += -L$$PWD/lib -DEFINES += DISCORD +#DEFINES += DISCORD contains(DEFINES, DISCORD) { LIBS += -ldiscord-rpc } -DEFINES += BASSAUDIO +#DEFINES += BASSAUDIO contains(DEFINES, BASSAUDIO) { LIBS += -lbass diff --git a/scripts/macos_build.sh b/scripts/macos_build.sh index 22e2d45..389d6ae 100755 --- a/scripts/macos_build.sh +++ b/scripts/macos_build.sh @@ -30,4 +30,4 @@ tar -xvf apng.tar.xz cp clang_64/plugins/imageformats/libqapng.dylib ../lib cd .. -qmake && make -j2 +qmake -DDISCORD -DBASSAUDIO && make -j2 From d71aad9d72813a54e42b484e74e939166dc15595 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Wed, 31 Jul 2019 22:33:15 +0200 Subject: [PATCH 125/175] Revert "make default clone compileable to improve new dev experience and switch to qt on linux" This reverts commit bf8aad33de3b326f3a36cad33ced5d3acd7f2c24. --- .gitlab-ci.yml | 22 +++++++++++----------- Attorney_Online.pro | 4 ++-- scripts/macos_build.sh | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6cdead7..0f68fe5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,15 +29,15 @@ build linux x86_64: - clang --version # Extract BASS - #- mkdir bass - #- cd bass - #- curl http://www.un4seen.com/files/bass24-linux.zip -o bass.zip - #- unzip bass.zip - #- cp x64/libbass.so ../lib - #- curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus.zip - #- unzip bassopus.zip - #- cp x64/libbassopus.so ../lib - #- cd .. + - mkdir bass + - cd bass + - curl http://www.un4seen.com/files/bass24-linux.zip -o bass.zip + - unzip bass.zip + - cp x64/libbass.so ../lib + - curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus.zip + - unzip bassopus.zip + - cp x64/libbassopus.so ../lib + - cd .. # Extract Discord RPC - mkdir discord-rpc @@ -56,7 +56,7 @@ build linux x86_64: - cd .. # Build - - qmake -spec linux-clang -DDISCORD -DQTAUDIO + - qmake -spec linux-clang - make -j4 # Post-processing @@ -88,7 +88,7 @@ build windows i686: - cd .. # Build - - /opt/mxe/usr/${TARGET_SPEC}/qt5/bin/qmake -DDISCORD -DBASSAUDIO + - /opt/mxe/usr/${TARGET_SPEC}/qt5/bin/qmake - make -j4 # Post-processing diff --git a/Attorney_Online.pro b/Attorney_Online.pro index aefd514..20a61d3 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -16,13 +16,13 @@ HEADERS += $$files($$PWD/include/*.h) LIBS += -L$$PWD/lib -#DEFINES += DISCORD +DEFINES += DISCORD contains(DEFINES, DISCORD) { LIBS += -ldiscord-rpc } -#DEFINES += BASSAUDIO +DEFINES += BASSAUDIO contains(DEFINES, BASSAUDIO) { LIBS += -lbass diff --git a/scripts/macos_build.sh b/scripts/macos_build.sh index 389d6ae..22e2d45 100755 --- a/scripts/macos_build.sh +++ b/scripts/macos_build.sh @@ -30,4 +30,4 @@ tar -xvf apng.tar.xz cp clang_64/plugins/imageformats/libqapng.dylib ../lib cd .. -qmake -DDISCORD -DBASSAUDIO && make -j2 +qmake && make -j2 From d4129f0225ab97c320a4a72e009d3684b50f2bd2 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Sun, 4 Aug 2019 19:39:34 +0200 Subject: [PATCH 126/175] try this again --- .gitlab-ci.yml | 22 +++++++++++----------- Attorney_Online.pro | 4 ++-- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0f68fe5..a60c363 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,15 +29,15 @@ build linux x86_64: - clang --version # Extract BASS - - mkdir bass - - cd bass - - curl http://www.un4seen.com/files/bass24-linux.zip -o bass.zip - - unzip bass.zip - - cp x64/libbass.so ../lib - - curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus.zip - - unzip bassopus.zip - - cp x64/libbassopus.so ../lib - - cd .. + #- mkdir bass + #- cd bass + #- curl http://www.un4seen.com/files/bass24-linux.zip -o bass.zip + #- unzip bass.zip + #- cp x64/libbass.so ../lib + #- curl http://www.un4seen.com/files/bassopus24-linux.zip -o bassopus.zip + #- unzip bassopus.zip + #- cp x64/libbassopus.so ../lib + #- cd .. # Extract Discord RPC - mkdir discord-rpc @@ -56,7 +56,7 @@ build linux x86_64: - cd .. # Build - - qmake -spec linux-clang + - qmake -spec linux-clang "DEFINES += DISCORD QTAUDIO" - make -j4 # Post-processing @@ -88,7 +88,7 @@ build windows i686: - cd .. # Build - - /opt/mxe/usr/${TARGET_SPEC}/qt5/bin/qmake + - /opt/mxe/usr/${TARGET_SPEC}/qt5/bin/qmake "DEFINES += -DDISCORD -DBASSAUDIO" - make -j4 # Post-processing diff --git a/Attorney_Online.pro b/Attorney_Online.pro index 20a61d3..aefd514 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -16,13 +16,13 @@ HEADERS += $$files($$PWD/include/*.h) LIBS += -L$$PWD/lib -DEFINES += DISCORD +#DEFINES += DISCORD contains(DEFINES, DISCORD) { LIBS += -ldiscord-rpc } -DEFINES += BASSAUDIO +#DEFINES += BASSAUDIO contains(DEFINES, BASSAUDIO) { LIBS += -lbass From e76d52fecc08c817f6ea84b554d0b01a201ae8f2 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Sun, 4 Aug 2019 15:06:34 -0500 Subject: [PATCH 127/175] *facepalm* --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a60c363..e2abad6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -88,7 +88,7 @@ build windows i686: - cd .. # Build - - /opt/mxe/usr/${TARGET_SPEC}/qt5/bin/qmake "DEFINES += -DDISCORD -DBASSAUDIO" + - /opt/mxe/usr/${TARGET_SPEC}/qt5/bin/qmake "DEFINES += DISCORD BASSAUDIO" - make -j4 # Post-processing From 5c0347c41d9038741d783ef4d6848e9ff215642e Mon Sep 17 00:00:00 2001 From: Rodion Borisov Date: Mon, 5 Aug 2019 13:57:57 +0300 Subject: [PATCH 128/175] =?UTF-8?q?=D0=A0=D1=83=D1=81=D1=81=D0=BA=D0=B8?= =?UTF-8?q?=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Translating to contextual Russian. --- resource/translations/ao_ru.ts | 887 +++++++++++++++++++++++++++++++++ 1 file changed, 887 insertions(+) create mode 100644 resource/translations/ao_ru.ts diff --git a/resource/translations/ao_ru.ts b/resource/translations/ao_ru.ts new file mode 100644 index 0000000..6eef98b --- /dev/null +++ b/resource/translations/ao_ru.ts @@ -0,0 +1,887 @@ + + + + + AOApplication + + + Disconnected from server. + Соединение с сервером прервано. + + + Error connecting to master server. Will try again in %n seconds. + Ошибка соединения с главным сервером. Попытка пересоединения будет через %n с. + + + + There was an error connecting to the master server. +We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. +Please check your Internet connection and firewall, and please try again. + Произошла ошибка соединения с главным сервером. +Пожалуйста, проверьте ваши Интернет-соединение, настройки браундмауэра, и попробуйте перезайти. + + + + Outdated version! Your version: %1 +Please go to aceattorneyonline.com to update. + Устаревшая версия! У вас установлена %1 +Проследуйте на сайт aceattorneyonline.com для обновления. + + + + You have been exiled from AO. +Have a nice day. + Из AO вас отправили в жизнь. +Хорошего дня. + + + + Attorney Online 2 + Attorney Online 2 + + + + Loading + Загрузка + + + + Loading evidence: +%1/%2 + Загрузка вещдоков: +%1/%2 + + + + + Loading music: +%1/%2 + Загрузка музыки: +%1/%2 + + + + Loading chars: +%1/%2 + Загрузка персонажей: +%1/%2 + + + + You have been kicked from the server. +Reason: + Вас выпнули с сервера. +Причина: + + + + You are banned on this server. +Reason: + Вас отправили в баню. +Причина: + + + You have been kicked. + Вас выгнали. + + + You are banned on this server. + Вас забанили. + + + + AOCaseAnnouncerDialog + + + Case Announcer + Материалы дела + + + + Case title: + Название: + + + + Defense needed + Сторона защиты + + + + Prosecution needed + Сторона обвинения + + + + Judge needed + Без судьи никак + + + + Jurors needed + Суд присяжных + + + + Stenographer needed + Нужен стенографист? + + + + AOOptionsDialog + + + Settings + Настройки + + + + Gameplay + Игра + + + + Theme: + Тема: + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. + Устанавливает внешний вид в игре. Может понадобиться перезайти на сервер. + + + + Log goes downwards: + Портянку вниз: + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + Отметьте галочку, если хотите, чтобы сообщения в игровом чате отображались снизу, а не сверху. + + + + Log length: + Длина игрового чата: + + + + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. + Количество сообщений, максимально хранимых в игровом чате. Значение, равное 0 или меньше, будет расценено как снятие такого ограничения. + + + + Default username: + Никнейм по умолчанию: + + + + Your OOC name will be automatically set to this value when you join a server. + Псевдоним, используемый при соединении с сервером. В основном, его видно в чате сервера. + + + + Custom shownames: + Произвольные имена: + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + Отображать произвольные имена персонажей, установленные самими игроками. + + + + Backup MS: + Запасной ГС: + + + + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. + Отображать перечень серверов от главного сервера, указанного здесь, когда не удалось соединиться с первичным ГС. + + + + Discord: + Discord: + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + Показать в Discord сервер, на котором вы играете, каким персонажем управляете и время игры. + + + + Callwords + Позывные + + + + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> + <html><head/><body>Введите на отдельных строках свои позывные, при указании которых в сообщениях будет подан звуковой сигнал.</body></html> + + + + Audio + Аудио + + + + Audio device: + Устройство воспроизведения: + + + + Sets the audio device for all sounds. + Куда вещать звук из игры. + + + + Music: + Музыка: + + + + Sets the music's default volume. + Громкость музыки по умолчанию. + + + + SFX: + Звук. эффекты: + + + + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. + Громкость звуковых эффектов по умолчанию. + + + + Blips: + Сигналы: + + + + Sets the volume of the blips, the talking sound effects. + Громкость сигналов, заменяющих голос, по умолчанию. + + + + Blip rate: + Пер. сигналов: + + + + Sets the delay between playing the blip sounds. + Период между сигналами, заменяющими голос, по умолчанию. + + + + Blank blips: + Пустые сигналы: + + + + If true, the game will play a blip sound even when a space is 'being said'. + Проигрывать сигналы даже для пробелов. + + + + Casing + Заседание + + + + This server supports case alerts. + Этот сервер поддерживает объявление заседания. + + + + This server does not support case alerts. + Этот сервер не поддерживает объявление заседания. + + + + Pretty self-explanatory. + Весьма доходчиво. + + + + Casing: + Новое дело: + + + + If checked, you will get alerts about case announcements. + При заведении дела вы получите уведомление. + + + + Defense: + Защита: + + + + If checked, you will get alerts about case announcements if a defense spot is open. + При заведении дела, в котором нужна сторона защиты, вы получите уведомление. + + + + Prosecution: + Обвинение: + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. + При заведении дела, в котором нужна сторона обвинения, вы получите уведомление. + + + + Judge: + Судья: + + + + If checked, you will get alerts about case announcements if the judge spot is open. + При заведении дела, в котором нужен судья, вы получите уведомление. + + + + Juror: + Присяжный: + + + + If checked, you will get alerts about case announcements if a juror spot is open. + При заведении дела, в котором нужны присяжные заседатели, вы получите уведомление. + + + + Stenographer: + Стенографист: + + + + If checked, you will get alerts about case announcements if a stenographer spot is open. + При заведении дела, в котором нужна стенография, вы получите уведомление. + + + + CM: + ПД: + + + + If checked, you will appear amongst the potential CMs on the server. + Отметьте, если вы хотите состоять в числе производителей дел. + + + + Hosting cases: + Fallleitung: + + + + If you're a CM, enter what cases you are willing to host. + Будучи производителем дела (ПД), вы можете войти в зону и заниматься её оркестровкой. + + + + Courtroom + + + Password + Пароль + + + + Spectator + Наблюдатель + + + + + Search + Поиск + + + + Passworded + Ограничен паролем + + + + Taken + Занят + + + + Generating chars: + + Генерация персонажей: + + + + Could not find %1 + %1 - не найдено + + + + Showname + Имя + + + + Message + Сообщение + + + + Name + Никнейм + + + + Pre + Pre + + + + Flip + Разв. + + + + Guard + Охрана + + + + Casing + Дело + + + + Shownames + Произв. имена + + + + No Interrupt + Говорить сразу + + + + White + Белый + + + + Green + Зелëный + + + + Red + Красный + + + + Orange + Оранжевый + + + + Blue + Синий + + + + Yellow + Жëлтый + + + Music + Музыка + + + Sfx + Звук + + + Blips + Сигналы + + + + Server + Сервер + + + Change character + Сменить персонажа + + + Reload theme + Перезагрузить тему + + + Call mod + Вызвать модератора + + + + Back to Lobby + Назад в лобби + + + You have been banned. + Вы были забанены. + + + %1 has played a song: %2 + %1 включает музыку %2 + + + + Rainbow + Радужный + + + + Pink + Розовый + + + + Cyan + Голубой + + + + You were granted the Guard button. + Теперь у вас есть кнопка "Охрана". + + + This does nohing, but there you go. + Ничего важного... + + + + This does nothing, but there you go. + Ничего важного... + + + + You opened the settings menu. + Вы открыли меню настроек. + + + + You will now pair up with + Вы встанете парой с персонажем по имени + + + + if they also choose your character in return. + (если он выберет вас в ответ). + + + + You are no longer paired with anyone. + Теперь вы не стоите в парах. + + + + Are you sure you typed that well? The char ID could not be recognised. + Кажется, вам нужно поменять запрос: такой идентификатор персонажа не был найден. + + + + You have set your offset to + Вы установили сдвиг персонажа на + + + + Your offset must be between -100% and 100%! + Сдвиг персонажа должен быть между -100% и 100%! + + + + That offset does not look like one. + Неверный сдвиг персонажа. + + + + You switched your music and area list. + Вы переключили перечень зон и музыки. + + + + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. + Из-за того, что вы включили не поддержимаемые сервером возможности, он может не принять ваши сообщения. + + + + Your pre-animations interrupt again. + Вы будете говорить после анимации. + + + + Your pre-animations will not interrupt text. + Сообщение будет озвучено параллельно с анимацией. + + + + Couldn't open chatlog.txt to write into. + Не могу открыть chatlog.txt для записи лога. + + + + The IC chatlog has been saved. + Лог игрового чата сохранëн. + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. + Файл с делом не найден. Если найдëте, положите его в папку `base/cases/`. + + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: + Введите имя файля с делом. Убедитесь, что он расположен в папке `base/cases/` и имеет расширение `ìni`. + + + + Too many arguments to load a case! You only need one filename, without extension. + Введите имя файла без расширения. + + + + Case made by + Дело завëл игрок по имени + + + + Navigate to + Перейдите к + + + + for the CM doc. + для получения материалов дела. + + + + Your case " + Ваше дело " + + + + " was loaded! + " было загружено! + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. + Папка `base/cases/` отсутствует! + + + + You need to give a filename to save (extension not needed) and the courtroom status! + Введите имя файла (без расширения) и предоставьте статус зоны. + + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status! + Убедитесь, что имя файла не содержит расширение. + + + + Succesfully saved, edit doc and cmdoc link on the ini! + Сохранение прошло успешно! + + + + Master + Мастер + + + + Reason: + Причина: + + + + Call Moderator + Позвать модератора + + + + + Error + Ошибка + + + + You must provide a reason. + Укажите причину. + + + + The message is too long. + Слишком длинный текст. + + + Choose.. + Выбрать... + + + + Choose... + Выбрать... + + + + Images (*.png) + Изображения (*.png) + + + + Add new evidence... + Добавить новую улику... + + + + Discord + + + + + + Objection! + Протестую!! + + + + In Lobby + В лобби + + + + Idle + Бездействует + + + + In a Server + На сервере + + + + Playing as %1 + Играет за %1 + + + + Spectating + Наблюдает + + + + Lobby + + Attorney Online 2 + Attorney Online 2 + + + Name + Имя + + + + It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? + Не похоже, что ваш клиент установлен правильно. +Скачали ли вы все ресурсы (tiny.cc/getao), включая огромную папку `base`? + + + + Loading + Загрузка + + + + Cancel + Отмена + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + <h2>Attorney Online %1</h2>Симулятор судебной драмы<p><b>Исходный код:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Основной разработкой занимались:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Особенная благодарность:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (дизайн интерфейса), Draxirch (дизайн интерфейса), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + + + Attorney Online 2 is built using Qt 5.11. + +Lead development: +longbyte1 +OmniTroid + +stonedDiscord +Supporting development: +Fiercy + +UI design: +Ruekasu +Draxirch + +Special thanks: +Unishred +Argoneus +Noevain +Cronnicossy + Attorney Online 2 использует Qt. + +Во главе разработки: +longbyte1 +OmniTroid +stonedDiscord + +Поддержка разработки: +Fiercy + +Дизайн интерфейса: +Ruekasu +Draxirch + +Особенная благодарность: +Unishred +Argoneus +Noevain +Cronnicossy + + + + Offline + Вне сети + + + + debug_functions + + + Error: %1 + Ошибка: %1 + + + + Error + Ошибка + + + + Notice + На заметку + + + \ No newline at end of file From 6fa72d422a1036ab3b14eac9954e8d743e8effbf Mon Sep 17 00:00:00 2001 From: Rodion Borisov Date: Mon, 5 Aug 2019 15:27:37 +0300 Subject: [PATCH 129/175] =?UTF-8?q?=D0=A0=D1=83=D1=81=D1=81=D0=BA=D0=B8?= =?UTF-8?q?=D0=B9=20-=20=D0=BF=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Oops, forgot something. --- resource/translations/ao_ru.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/translations/ao_ru.ts b/resource/translations/ao_ru.ts index 6eef98b..3621d59 100644 --- a/resource/translations/ao_ru.ts +++ b/resource/translations/ao_ru.ts @@ -377,7 +377,7 @@ Reason: Hosting cases: - Fallleitung: + ПД акт.: From c8b219136e1632c83323567acd38e0be590f5d7a Mon Sep 17 00:00:00 2001 From: windrammer <31085911+likeawindrammer@users.noreply.github.com> Date: Mon, 5 Aug 2019 08:40:54 -0600 Subject: [PATCH 130/175] Add double quotes around ${ROOT_DIR} (#91) Without this the script fails with ./configure_ubuntu.sh: line 10: cd: too many arguments if there's any space in the patch of the root folder --- scripts/configure_ubuntu.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/configure_ubuntu.sh b/scripts/configure_ubuntu.sh index 6cad1f1..a3d07ed 100755 --- a/scripts/configure_ubuntu.sh +++ b/scripts/configure_ubuntu.sh @@ -7,7 +7,7 @@ set -eu ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/" -cd ${ROOT_DIR} +cd "${ROOT_DIR}" #need some openGL stuff sudo apt install libgl1-mesa-dev From 9718a90bc7906981ce8a4e77f1b56ee86e6cb061 Mon Sep 17 00:00:00 2001 From: in1tiate <32779090+in1tiate@users.noreply.github.com> Date: Mon, 5 Aug 2019 17:41:54 +0300 Subject: [PATCH 131/175] Fix guard checkbox overlap (#93) Fixes #90 --- base/themes/default/courtroom_design.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/themes/default/courtroom_design.ini b/base/themes/default/courtroom_design.ini index 960d6e4..eee7625 100644 --- a/base/themes/default/courtroom_design.ini +++ b/base/themes/default/courtroom_design.ini @@ -107,7 +107,7 @@ pre = 5, 490, 80, 21 flip = 104, 490, 51, 21 ; Guard button -guard = 200, 560, 61, 21 +guard = 200, 580, 61, 21 pre_no_interrupt = 200, 490, 80, 21 From 15a48a051c21275662b833d46d44b4e690d535ce Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 5 Aug 2019 18:53:34 +0200 Subject: [PATCH 132/175] make the password field in charselect useful let the server decide what to do with this --- src/charselect.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/charselect.cpp b/src/charselect.cpp index 4987cf5..846daff 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -135,7 +135,7 @@ void Courtroom::char_clicked(int n_char) } else { - ao_app->send_server_packet(new AOPacket("CC#" + QString::number(ao_app->s_pv) + "#" + QString::number(n_char) + "#" + get_hdid() + "#%")); + ao_app->send_server_packet(new AOPacket("CC#" + QString::number(ao_app->s_pv) + "#" + QString::number(n_char) + "#" + get_hdid() + "#" + ui_char_password->text() +"#%")); } ui_ic_chat_name->setPlaceholderText(char_list.at(n_char).name); From df72671105bb6ae205a9f156de8a49f144bc59f8 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 5 Aug 2019 21:54:03 +0200 Subject: [PATCH 133/175] Revert "make the password field in charselect useful" This reverts commit 15a48a051c21275662b833d46d44b4e690d535ce. --- src/charselect.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/charselect.cpp b/src/charselect.cpp index 846daff..4987cf5 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -135,7 +135,7 @@ void Courtroom::char_clicked(int n_char) } else { - ao_app->send_server_packet(new AOPacket("CC#" + QString::number(ao_app->s_pv) + "#" + QString::number(n_char) + "#" + get_hdid() + "#" + ui_char_password->text() +"#%")); + ao_app->send_server_packet(new AOPacket("CC#" + QString::number(ao_app->s_pv) + "#" + QString::number(n_char) + "#" + get_hdid() + "#%")); } ui_ic_chat_name->setPlaceholderText(char_list.at(n_char).name); From 223f69d67a888e82fb305b19e51e9d81fffadc59 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 5 Aug 2019 21:57:17 +0200 Subject: [PATCH 134/175] eat shit tsuserver --- src/charselect.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/charselect.cpp b/src/charselect.cpp index 4987cf5..9d579a7 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -135,6 +135,7 @@ void Courtroom::char_clicked(int n_char) } else { + ao_app->send_server_packet(new AOPacket("PW#" + ui_char_password->text() + "#%")); ao_app->send_server_packet(new AOPacket("CC#" + QString::number(ao_app->s_pv) + "#" + QString::number(n_char) + "#" + get_hdid() + "#%")); } From 230b1a76225def5de5c61efe1eb97e5324512ccf Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 5 Aug 2019 22:07:39 +0200 Subject: [PATCH 135/175] numbered arguments and more strings --- src/charselect.cpp | 2 +- src/courtroom.cpp | 10 +++++----- src/lobby.cpp | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/charselect.cpp b/src/charselect.cpp index 58c990b..7e20c74 100644 --- a/src/charselect.cpp +++ b/src/charselect.cpp @@ -214,7 +214,7 @@ void Courtroom::character_loading_finished() int total_loading_size = ao_app->char_list_size * 2 + ao_app->evidence_list_size + ao_app->music_list_size; int loading_value = int(((ao_app->loaded_chars + ao_app->generated_chars + ao_app->loaded_music + ao_app->loaded_evidence) / static_cast(total_loading_size)) * 100); ao_app->w_lobby->set_loading_value(loading_value); - ao_app->w_lobby->set_loading_text(tr("Generating chars:\n") + QString::number(ao_app->generated_chars) + "/" + QString::number(ao_app->char_list_size)); + ao_app->w_lobby->set_loading_text(tr("Generating chars:\n%1/%2").arg(QString::number(ao_app->generated_chars)).arg(QString::number(ao_app->char_list_size))); } } diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 2ba3ba2..dc7f12c 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -245,7 +245,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() ui_pair_list = new QListWidget(this); ui_pair_offset_spinbox = new QSpinBox(this); ui_pair_offset_spinbox->setRange(-100,100); - ui_pair_offset_spinbox->setSuffix("% offset"); + ui_pair_offset_spinbox->setSuffix(tr("% offset")); ui_pair_button = new AOButton(this, ao_app); ui_evidence_button = new AOButton(this, ao_app); @@ -2821,7 +2821,7 @@ void Courtroom::on_ooc_return_pressed() if (command.size() < 2) { - append_server_chatmessage("CLIENT", tr("You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini.\nCases you can load: ") + caseslist.join(", "), "1"); + append_server_chatmessage("CLIENT", tr("You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini.\nCases you can load: %1").arg(caseslist.join(", ")), "1"); ui_ooc_chat_message->clear(); return; } @@ -2842,13 +2842,13 @@ void Courtroom::on_ooc_return_pressed() QString casestatus = casefile.value("status", "").value(); if (!caseauth.isEmpty()) - append_server_chatmessage("CLIENT", tr("Case made by ") + caseauth + ".", "1"); + append_server_chatmessage("CLIENT", tr("Case made by %1.").arg(caseauth), "1"); if (!casedoc.isEmpty()) ao_app->send_server_packet(new AOPacket("CT#" + ui_ooc_chat_name->text() + "#/doc " + casedoc + "#%")); if (!casestatus.isEmpty()) ao_app->send_server_packet(new AOPacket("CT#" + ui_ooc_chat_name->text() + "#/status " + casestatus + "#%")); if (!cmdoc.isEmpty()) - append_server_chatmessage("CLIENT", tr("Navigate to ") + cmdoc + tr(" for the CM doc."), "1"); + append_server_chatmessage("CLIENT", tr("Navigate to %1 for the CM doc.").arg(cmdoc), "1"); for (int i = local_evidence_list.size() - 1; i >= 0; i--) { ao_app->send_server_packet(new AOPacket("DE#" + QString::number(i) + "#%")); @@ -2867,7 +2867,7 @@ void Courtroom::on_ooc_return_pressed() ao_app->send_server_packet(new AOPacket("PE", f_contents)); } - append_server_chatmessage("CLIENT", tr("Your case \"") + command[1] + tr("\" was loaded!"), "1"); + append_server_chatmessage("CLIENT", tr("Your case \"%1\" was loaded!").arg(command[1]), "1"); ui_ooc_chat_message->clear(); return; } diff --git a/src/lobby.cpp b/src/lobby.cpp index 776528c..02ed128 100644 --- a/src/lobby.cpp +++ b/src/lobby.cpp @@ -9,7 +9,7 @@ Lobby::Lobby(AOApplication *p_ao_app) : QMainWindow() { ao_app = p_ao_app; - this->setWindowTitle("Attorney Online 2"); + this->setWindowTitle(tr("Attorney Online 2")); this->setWindowIcon(QIcon(":/logo.png")); ui_background = new AOImage(this, ao_app); @@ -26,7 +26,7 @@ Lobby::Lobby(AOApplication *p_ao_app) : QMainWindow() ui_chatbox = new AOTextArea(this); ui_chatbox->setOpenExternalLinks(true); ui_chatname = new QLineEdit(this); - ui_chatname->setPlaceholderText("Name"); + ui_chatname->setPlaceholderText(tr("Name")); ui_chatname->setText(ao_app->get_ooc_name()); ui_chatmessage = new QLineEdit(this); ui_loading_background = new AOImage(this, ao_app); @@ -101,7 +101,7 @@ void Lobby::set_widgets() ui_connect->set_image("connect.png"); set_size_and_pos(ui_version, "version"); - ui_version->setText("Version: " + ao_app->get_version_string()); + ui_version->setText(tr("Version: %1").arg(ao_app->get_version_string())); set_size_and_pos(ui_about, "about"); ui_about->set_image("about.png"); @@ -111,7 +111,7 @@ void Lobby::set_widgets() "font: bold;"); set_size_and_pos(ui_player_count, "player_count"); - ui_player_count->setText("Offline"); + ui_player_count->setText(tr("Offline")); ui_player_count->setStyleSheet("font: bold;" "color: white;" "qproperty-alignment: AlignCenter;"); From cab5310029160b3dc2e303d874117b482915ea06 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 5 Aug 2019 22:20:04 +0200 Subject: [PATCH 136/175] missed 2 lobby related ones --- src/aoapplication.cpp | 3 +-- src/lobby.cpp | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp index c47f350..6213acd 100644 --- a/src/aoapplication.cpp +++ b/src/aoapplication.cpp @@ -160,8 +160,7 @@ void AOApplication::ms_connect_finished(bool connected, bool will_retry) if (will_retry) { if (lobby_constructed) - w_lobby->append_error("Error connecting to master server. Will try again in " - + QString::number(net_manager->ms_reconnect_delay) + " seconds."); + w_lobby->append_error(tr("Error connecting to master server. Will try again in %1 seconds.").arg(QString::number(net_manager->ms_reconnect_delay))); } else { diff --git a/src/lobby.cpp b/src/lobby.cpp index 02ed128..c95fd49 100644 --- a/src/lobby.cpp +++ b/src/lobby.cpp @@ -373,7 +373,7 @@ void Lobby::append_error(QString f_message) void Lobby::set_player_count(int players_online, int max_players) { - QString f_string = "Online: " + QString::number(players_online) + "/" + QString::number(max_players); + QString f_string = tr("Online: %1/%2").arg(QString::number(players_online)).arg(QString::number(max_players)); ui_player_count->setText(f_string); } From fff2c13b6383d206ccb5e1b2957156210e9d3d1f Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 5 Aug 2019 22:25:31 +0200 Subject: [PATCH 137/175] update translations to new strings + german translation --- resource/translations/ao_de.qm | Bin 22162 -> 22325 bytes resource/translations/ao_de.ts | 370 ++++++++++++++++-------------- resource/translations/ao_en.ts | 395 ++++++++++++++++----------------- resource/translations/ao_ja.qm | Bin 2051 -> 1859 bytes resource/translations/ao_ja.ts | 384 ++++++++++++++++---------------- 5 files changed, 589 insertions(+), 560 deletions(-) diff --git a/resource/translations/ao_de.qm b/resource/translations/ao_de.qm index 1f4defe00ec947e0da9df3c94beaa825b248a00c..884bd65fc6426bb63ccd90e4f0e36c0e9224fdc2 100644 GIT binary patch delta 1820 zcmZ8gdr(w$7(Msyz3kluc73pbka9uSR18=U!9`6$1e94t64EKAMQ*Z1cXf9q?cqk+ zLoHHoJ|oknC#9xqjhIzSK(6n z4q)x2}6nXK|+@y~H>s`|0d$WMpkED&teoA*jGR*fdZ=JNY;xOR3B5mDSMy9TQ zn^Px!S!4rl4NHH7NW>A5Q+E?!dWn3~=7qEm%Z2U7sPsv>@`W%9WmL;Gdp7~|?vNL} zJBY|TWUpxk8+zr&)!%Toh4KT{0YI#fpL=pEcjKVk*2V()XXQN~vT$aq{CSRpvo4bV z&Rfipb;VTq*|>afjBi#im0TOMs+$C|#>BjOiuXm=W6rqqIHGyxv~bY~VEPL49Y1pE zZs{?1B`|PInz?(*5g_R)^Od5%08585xp@I+->pou^M2A2r8cJ(n31m@z>%rsNlV}p=rH*o<7_7T8@(1^jS~% zP20-v$-wEfJ#nsq62i7GljqD!w*8M?0EQp4z5hJVg*~?JleELu*si}%>BRkZQRMq} z`|N|=b$qU2d-j@EpfqGJi$1gDC+vC&pYOy(`_|7!5#TTO$nJJ3ebxSH!6_hhv;BnK z1K8Doy~{V106MAvyl0Je>2UgX%!GzUH1QjNih5cfZNrUojnQIp7^*TVtfG_=I`5Yu z^sl$i26?lHHB@Hm{5s*{x0=3t>CyXY>Bv%|TEy@-tuzqu2h>G=UDp5P+*1XUF`Mgs!xwqoi2Kr)DSd2FegPcc~_=U=W25fVM7(u z2|Y+)-e|*tR*F;g-+gyb3mLoehek?sdxYF%GWL>h6O)?ZA3*#czCk74phiFqnp(et zZH=Q75+Z>KAwigEoXa0?9F~VBCzWZs7V!3=U)1Og1l?ArE8Cgd*Qa=*OK?o(YDSgS z*yjQ2(5H)GcIDYec)ZQN#omw><<0U%u91=51tyy?KC-WLj9`ljIKW_!F}pm?5X+tx z85t$yWy97bZzL;nCuXw<6! delta 1809 zcmZWp3rtgI7(Ms)-oBtMD8fW0txD7i0u~fOnNJYK0un^sG%3(%4Hj(?hg+=72U8<5 zyQv^5S#(n(K34JloJySY5r@XOAeqx_#%+!`Gj%BJfD1D*&CPfJ`+wj0zH`q1w_%^K zv0kVQ@>Bwov_QZ`Aa@lI7Xr*U#JC%hw*iRm32FZ_Af_Ht6M$GHq_zmwL_wYu4-DH1 zdEpem@(1LPjsyKhLoJ>LQeMDPL)@SRm~^}YFr*^ADvvm~U&ky9tm~NPiTxbbqbmt~ z2HCT#2>d=~m2qRZ9kW|^0f}c&w%H0qq@cR+GSFiuc5UYxIcWT`1?cO>jlu0euW~#! zZ3mJz2JSakAOj?qU|p$pfHO|p4XAlQt{*7Yq_5xt~pl*jC(2` zKe!A~^%fg%aZtlK@t3AAso-ewnU8BznAjGh0n*kfl1&!YJyGNy2=S1~(askj^Nyn8 zJpx3|P+ZB9MG65hi#h0SSBabeM{UpIeiClOu6#({hlv?tUdC~69Jt3lx$N> zU?aOcZ{;m|njtUEb^*dvdF!WJcqXpPHQvdzDnYKPAyC{adEa?9Fo(-ms-Muh4f55P zUc{5+mzKG-?vXO9h=ZiAS2`xQQ;AmPie?gt+N}J#h2N8cl@C0Llp@}teBQ>xkrJp1 zPwESdsZ^PV#xgNob@e6>=vYzJ6vV=T{Z-AQPXob~suxNB0P0ifQ6)2ZCVo53K z4xW|3TCHgm8x1MfX1?OSsMqePt|g&JZN2sxz0cAfvsh{I0qyNo z&qE|i@8@SOSO$!i{OWFqRA#r|{!;>_z3F#lwwX-l_=mQ~kl_*kgbz7z|Be2M!;)!1 zj{gb4O#&8Ol{5xW7VB=mT3|4+9F*G@nIlwjQo^{V#EuHjDQ`Qa<%wAK1MF{ZbC-nC|iLDWg-eXe+ z3p#J>6r-pQ)wi_4N3hc(bQlr;4vX`$t&Ls$u z-bKSB!@ARYq}rW!m#x_0oNLUVXLGp|wOzS)her$j1CRU-8^VteHe AOApplication - + Disconnected from server. Vom Server getrennt. + + + Error connecting to master server. Will try again in %1 seconds. + Fehler bei der Verbindung zum Master Server. Erneuter Versuch in %1 Sekunden. + Error connecting to master server. Will try again in %n seconds. Fehler bei der Verbindung zum Master Server. Erneuter Versuch in %n Sekunden. - + There was an error connecting to the master server. We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. Please check your Internet connection and firewall, and please try again. @@ -22,60 +27,60 @@ Wir verwenden mehrere Master Server um Ausfälle zu verhindern, jedoch hat der C Bitte prüfe deine Internetverbindung und Firewall, und versuche es erneut. - + Outdated version! Your version: %1 Please go to aceattorneyonline.com to update. Version zu alt! Deine Version: %1 Bitte besuche aceattorneyonline.com für ein Update. - + You have been exiled from AO. Have a nice day. Du wurdest von AO befreit. Schönen Urlaub. - + Attorney Online 2 Attorney Online 2 - + Loading Laden - + Loading evidence: %1/%2 Lade Beweisstücke: %1/%2 - - + + Loading music: %1/%2 Lade Musik: %1/%2 - + Loading chars: %1/%2 Lade Charaktere: %1/%2 - + You have been kicked from the server. Reason: Du wurdest von diesem Server geschmissen. Grund: - + You are banned on this server. Reason: Du wurdest von diesem Server verbannt. @@ -93,37 +98,37 @@ Grund: AOCaseAnnouncerDialog - + Case Announcer Fallansager - + Case title: Fallname: - + Defense needed Verteidiger benötigt - + Prosecution needed Kläger benötigt - + Judge needed Richter benötigt - + Jurors needed Jury benötigt - + Stenographer needed Stenograph benötigt @@ -131,257 +136,257 @@ Grund: AOOptionsDialog - + Settings Einstellungen - + Gameplay Spiel - + Theme: Theme: - + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. Setzt das Theme. Wenn das neue Theme auch das Aussehen der Lobby verändert, must du diese neu laden um die Änderungen zu sehen. - + Log goes downwards: Verlauf geht nach unten: - + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. Wenn angehakt werden neue Nachrichten unten erscheinen (wie beim OOC). Das traditionelle (AO1) Verhalten wäre nicht angehakt. - + Log length: Länge: - + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. Die Menge an Nachrichten die aufgehoben werden bevor alte gelöscht werden. 0 bedeutet unendlich. - + Default username: Standard Benutzername: - + Your OOC name will be automatically set to this value when you join a server. Dein OOC Name wird automatisch auf dies gesetzt. - + Custom shownames: Eigener Anzeigename: - + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. Standardwert für die Anzeigename Box, welche den In-Charakter Namen bestimmt. - + Backup MS: Rückfall MS: - + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. Wenn dereingebaute Master Server fehlschlägt, wird das Spiel diesen hier verwenden. - + Discord: Discord: - + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. Erlaubt anderen auf Discord zu sehen auf welchem Server du spielst, welchen Charakter du spielst und wie lange. - + Callwords Alarmwörter - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> <html><head/><body>Gib so viele Alarmwörter ein wie du möchtest. Groß/Kleinschreibung ist egal. Für jede Wort nur eine Zeile!<br>Bitte keine leere Zeile am Ende -- du bekommst sonst bei jeder Nachricht einen Alarm.</body></html> - + Audio Audio - + Audio device: Audiogerät: - + Sets the audio device for all sounds. Setzt das Audiogerät für all Geräusche. - + Music: Musik: - + Sets the music's default volume. Setzt die Musiklautstärke. - + SFX: SFX: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. Setzt die Lautstärke der Soundeffekte wie Einsprüche und die Geräusche der Charaktere. - + Blips: Blips: - + Sets the volume of the blips, the talking sound effects. Setzt die Lautstärke der Blips, das ist das Geräusch das die Charaktere beim Reden machen. - + Blip rate: Bliprate: - + Sets the delay between playing the blip sounds. Setzt die Pause zwischen einzelnen Blips. - + Blank blips: Leere Blips: - + If true, the game will play a blip sound even when a space is 'being said'. Wenn angehakt wird das Spiel auch bei einem Leerzeichen einen Blip machen. - + Casing Fälle - + This server supports case alerts. Dieser Server unterstützt Fallalarme. - + This server does not support case alerts. Dieser Server unterstützt Fallalarme nicht. - + Pretty self-explanatory. Eigentlich selbsterklärend. - + Casing: Fälle: - + If checked, you will get alerts about case announcements. Wenn angehakt wirst du benachrichtigt wenn ein Fall angekündigt wird. - + Defense: Verteidigung: - + If checked, you will get alerts about case announcements if a defense spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Verteidiger benötigt wird. - + Prosecution: Kläger: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Kläger benötigt wird. - + Judge: Richter: - + If checked, you will get alerts about case announcements if the judge spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Richter benötigt wird. - + Juror: Jury: - + If checked, you will get alerts about case announcements if a juror spot is open. Wenn angehakt wirst du benachrichtigt wenn eine Jury benötigt wird. - + Stenographer: Stenograph: - + If checked, you will get alerts about case announcements if a stenographer spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Stenograph benötigt wird. - + CM: CM: - + If checked, you will appear amongst the potential CMs on the server. Wenn angehakt wirst du als potentielle CM angezeigt. - + Hosting cases: Fallleitung: - + If you're a CM, enter what cases you are willing to host. Wenn du CM bist, gib ein welche Fälle du spielen möchtest. @@ -389,36 +394,42 @@ Grund: Courtroom - + Password Passwort - + Spectator Zuschauer - - + + Search Suche - + Passworded Gesperrt - + Taken Benutzt - + + Generating chars: +%1/%2 + Generiere Charaktere: +%1/%2 + + Generating chars: - Generiere Charaktere: + Generiere Charaktere: @@ -426,77 +437,77 @@ Grund: Konnte %1 nicht finden. - + Showname Anzeigename - + Message Nachricht - + Name Name - + Pre Vor - + Flip Spiegeln - + Guard Wache - + Casing Fall - + Shownames Anzeigenamen - + No Interrupt Keine Unterbrechung - + White Weiß - + Green Grün - + Red Rot - + Orange Orange - + Blue Blau - + Yellow Gelb @@ -513,7 +524,7 @@ Grund: Blips - + Server Server @@ -530,7 +541,7 @@ Grund: Moderator rufen - + Back to Lobby Zurück zur Lobby @@ -543,22 +554,27 @@ Grund: %1 hat ein Lied gespielt: %2 - + Rainbow Regenbogen - + Pink Pink - + Cyan Cyan - + + % offset + % Abstand + + + You were granted the Guard button. Dir wurde der Wache Knopf gegeben. @@ -567,170 +583,186 @@ Grund: Dies bewirkt nichts, aber egal. - + This does nothing, but there you go. Dies bewirkt nichts, aber egal. - + You opened the settings menu. Du hast die Einstellungen geöffnet. - + You will now pair up with Du wirst nun mit - + if they also choose your character in return. gepaart, wenn der andere dies auch tut. - + You are no longer paired with anyone. Du bist nicht mehr gepaart. - + Are you sure you typed that well? The char ID could not be recognised. Hast du dich vertippt? Die ID konnte nicht erkannt werden. - + You have set your offset to Dein Abstand ist auf - + Your offset must be between -100% and 100%! Der Abstand muss zwischen -100% und 100% liegen! - + That offset does not look like one. Das sieht nicht wie ein Abstand aus. - + You switched your music and area list. Du hast zwischen Musik- und Gebitsliste umgeschaltet. - + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. Du hast Funktionen erzwungen die der Server eventuell nicht unterstützt. Möglicherweise wirst du nicht mehr sprechen können. - + Your pre-animations interrupt again. Deine Voranimation unterbrechen nun Text. - + Your pre-animations will not interrupt text. Deine Voranimation unterbrechen Text nicht. - + Couldn't open chatlog.txt to write into. Konnte chatlog.txt nicht öffnen. - + The IC chatlog has been saved. Der IC Verlauf wurde gespeichert. - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. Du hattest keinen 'base/cases' Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird. - + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1 + Du musst einen Dateinamen angeben (ohne .ini). Stelle sicher das er im 'base/cases' Ordner ist und das er korrekt formatiert ist. +Verfügbare Fälle: %1 + + + + Case made by %1. + Fall von %1. + + + + Navigate to %1 for the CM doc. + Gehe zu %1 für das CM Dokument. + + + + Your case "%1" was loaded! + Dein Fall "%1" wurde geladen! + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. Cases you can load: - Du musst einen Dateinamen angeben (ohne .ini). Stelle sicher das er im 'base/cases' Ordner ist und das er korrekt formatiert ist. + Du musst einen Dateinamen angeben (ohne .ini). Stelle sicher das er im 'base/cases' Ordner ist und das er korrekt formatiert ist. Verfügbare Fälle: - + Too many arguments to load a case! You only need one filename, without extension. Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung. - Case made by - Fall von + Fall von - Navigate to - Gehe zu + Gehe zu - for the CM doc. - für das CM Dokument. + für das CM Dokument. - Your case " - Dein Fall " + Dein Fall " - " was loaded! - " wurde geladen! + " wurde geladen! - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. Du hattest keinen 'base/cases' Ordner! Ich hab ihn nun angelegt aber bedenke das er leer sein wird. - + You need to give a filename to save (extension not needed) and the courtroom status! Du musst einen Dateinamen (ohne Erweiterung) angebenn, sowie den Gebietsstatus! - + Too many arguments to save a case! You only need a filename without extension and the courtroom status! Zu viele Argumente! Du brauchst nur den Dateinamen, ohne Erweiterung sowie den Gebietsstatus! - + Succesfully saved, edit doc and cmdoc link on the ini! Erfolgreich gespeichert! - + Master Master - + Reason: Grund: - + Call Moderator Moderator rufen - - + + Error Fehler - + You must provide a reason. Du musst einen Grund angeben. - + The message is too long. Die Nachricht ist zu lang. @@ -739,17 +771,17 @@ Verfügbare Fälle: Wähle.. - + Choose... Wähle... - + Images (*.png) Bilder (*.png) - + Add new evidence... Neues Beweisstück... @@ -757,71 +789,74 @@ Verfügbare Fälle: Discord - - - - Objection! - Einspruch! + Einspruch! - In Lobby - In Lobby + In Lobby - Idle - Untätig + Untätig - In a Server - In einem Server + In einem Server - Playing as %1 - Spielt als %1 + Spielt als %1 - Spectating - Zuschauend + Zuschauend Lobby + Attorney Online 2 - Attorney Online 2 + Attorney Online 2 + Name - Name + Name - + It doesn't look like your client is set up correctly. Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? Dein Client ist nicht korrekt eingerichtet. Hast du ALLES von tiny.cc/getao heruntergeladen und entpackt, auch den großen 'base' Ordner? - + + Version: %1 + Version: %1 + + + Loading Laden - + Cancel Abbrechen - + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy <h2>Attorney Online %1</h2>Der Gerichtsdrama Simulator<p><b>Quelltext:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Leitende Entwicklung:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Danksagungen:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + + + Online: %1/%2 + Online: %1/%2 + Attorney Online 2 is built using Qt 5.11. @@ -863,7 +898,8 @@ Noevain Cronnicossy - + + Offline Offline @@ -871,17 +907,17 @@ Cronnicossy debug_functions - + Error: %1 Fehler: %1 - + Error Fehler - + Notice Hinweis diff --git a/resource/translations/ao_en.ts b/resource/translations/ao_en.ts index 2128630..390754f 100644 --- a/resource/translations/ao_en.ts +++ b/resource/translations/ao_en.ts @@ -4,66 +4,71 @@ AOApplication - + Disconnected from server. - + + Error connecting to master server. Will try again in %1 seconds. + + + + There was an error connecting to the master server. We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. Please check your Internet connection and firewall, and please try again. - + Outdated version! Your version: %1 Please go to aceattorneyonline.com to update. - + You have been exiled from AO. Have a nice day. - + Attorney Online 2 - + Loading - + Loading evidence: %1/%2 - - + + Loading music: %1/%2 - + Loading chars: %1/%2 - + You have been kicked from the server. Reason: - + You are banned on this server. Reason: @@ -72,37 +77,37 @@ Reason: AOCaseAnnouncerDialog - + Case Announcer - + Case title: - + Defense needed - + Prosecution needed - + Judge needed - + Jurors needed - + Stenographer needed @@ -110,257 +115,257 @@ Reason: AOOptionsDialog - + Settings - + Gameplay - + Theme: - + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. - + Log goes downwards: - + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. - + Log length: - + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. - + Default username: - + Your OOC name will be automatically set to this value when you join a server. - + Custom shownames: - + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. - + Backup MS: - + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. - + Discord: - + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. - + Callwords - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - + Audio - + Audio device: - + Sets the audio device for all sounds. - + Music: - + Sets the music's default volume. - + SFX: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - + Blips: - + Sets the volume of the blips, the talking sound effects. - + Blip rate: - + Sets the delay between playing the blip sounds. - + Blank blips: - + If true, the game will play a blip sound even when a space is 'being said'. - + Casing - + This server supports case alerts. - + This server does not support case alerts. - + Pretty self-explanatory. - + Casing: - + If checked, you will get alerts about case announcements. - + Defense: - + If checked, you will get alerts about case announcements if a defense spot is open. - + Prosecution: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. - + Judge: - + If checked, you will get alerts about case announcements if the judge spot is open. - + Juror: - + If checked, you will get alerts about case announcements if a juror spot is open. - + Stenographer: - + If checked, you will get alerts about case announcements if a stenographer spot is open. - + CM: - + If checked, you will appear amongst the potential CMs on the server. - + Hosting cases: - + If you're a CM, enter what cases you are willing to host. @@ -368,386 +373,366 @@ Reason: Courtroom - + Password - + Spectator - - + + Search - + Passworded - + Taken - + Generating chars: - +%1/%2 - + Showname - + Message - + Name - + Pre - + Flip - + Guard - + Casing - + Shownames - + No Interrupt - + White - + Green - + Red - + Orange - + Blue - + Yellow - + This does nothing, but there you go. - + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1 + + + + + Case made by %1. + + + + + Navigate to %1 for the CM doc. + + + + + Your case "%1" was loaded! + + + + Server - + Back to Lobby - + Rainbow - + Pink - + Cyan - + + % offset + + + + You were granted the Guard button. - + You opened the settings menu. - + You will now pair up with - + if they also choose your character in return. - + You are no longer paired with anyone. - + Are you sure you typed that well? The char ID could not be recognised. - + You have set your offset to - + Your offset must be between -100% and 100%! - + That offset does not look like one. - + You switched your music and area list. - + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. - + Your pre-animations interrupt again. - + Your pre-animations will not interrupt text. - + Couldn't open chatlog.txt to write into. - + The IC chatlog has been saved. - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. - - You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. -Cases you can load: - - - - + Too many arguments to load a case! You only need one filename, without extension. - - Case made by - - - - - Navigate to - - - - - for the CM doc. - - - - - Your case " - - - - - " was loaded! - - - - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. - + You need to give a filename to save (extension not needed) and the courtroom status! - + Too many arguments to save a case! You only need a filename without extension and the courtroom status! - + Succesfully saved, edit doc and cmdoc link on the ini! - + Master - + Reason: - + Call Moderator - - + + Error - + You must provide a reason. - + The message is too long. - + Choose... - + Images (*.png) - + Add new evidence... - - Discord - - - - - - Objection! - - - - - In Lobby - - - - - Idle - - - - - In a Server - - - - - Playing as %1 - - - - - Spectating - - - Lobby - + + Attorney Online 2 + + + + + Name + + + + It doesn't look like your client is set up correctly. Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? - + + Version: %1 + + + + Loading - + Cancel - + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - + + Online: %1/%2 + + + + + Offline @@ -755,17 +740,17 @@ Did you download all resources correctly from tiny.cc/getao, including the large debug_functions - + Error: %1 - + Error - + Notice diff --git a/resource/translations/ao_ja.qm b/resource/translations/ao_ja.qm index 2e7093ac650769f0bba1364e4658dcf855344d17..badf3f441aa14067a379fe9caa2d0b10cb9da7f9 100644 GIT binary patch delta 305 zcmZn`ILtReq@IC+A-t7=fyIh}Az}-VZed`Vyp@50$%TRCGEk10fq~V-6iB~-(5yua ztkt_17#Jro_{>ZKs=E%MS@$#eb?*bJ(_--3(E_CX8Dc*y1)6t>>DlE)Ky?|+;Tyz( z1~NcsR!^46>{$#9^^7_!Gd%YIZINfSSak>}y@%CjK2U-&fi zAW+{s&J$a90?n`BUUiWPsBSsm|NTx391IM%fU4LuC%dvMZ4P1F$uxN`yVT@oEc}~! USrnKiE3gMm{>magIh}nD0O7GoaR2}S delta 549 zcmZXPUnoOy6vxlKyT7~b&fgGu&^+)&9icq%vKCegwTF?EjcX=t8Yz@L*b*zYZV4|+ zd7wnLg=k6fC`wYIc%V2U#U6frf9IU<=X*N)Nkb{YbZ-`b)ej(~0@O!H8$nQ_ z0K5@|7?56o@RmpY7hu(;0IFSJ0~-Kb5X@6{0MP+8fgS2|P_yPE%?C@<6adph)8ia* z^ZadWmU7xv*5ynJgl`qo1V!BeVBiXbNz)bqcdTq-kH!i!&(MHtX6?Rns&81o#Y3E* z9Zf%xuZ|sK1}!dU@5K&Ua1uJstSr$M9vaA0q&1H_XZIO${ei@PL9JPT)YS9~}}(DPnj1=_F;jTq3-7({x4skKv9(?@M| zcDJ}at(=OA1bo04zN6!hS7UPN&2GEBFV3HWQF5RD5QEt8o3A6rrnktRUfJV~<0M AOApplication - + Disconnected from server. - + + Error connecting to master server. Will try again in %1 seconds. + + + + There was an error connecting to the master server. We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. Please check your Internet connection and firewall, and please try again. - + Outdated version! Your version: %1 Please go to aceattorneyonline.com to update. - + You have been exiled from AO. Have a nice day. - + Attorney Online 2 - + Loading ロード中 - + Loading evidence: %1/%2 証拠がロード中: %1/%2 - - + + Loading music: %1/%2 音楽がロード中: %1/%2 - + Loading chars: %1/%2 キャラがロード中: %1/%2 - + You have been kicked from the server. Reason: - + You are banned on this server. Reason: @@ -72,37 +77,37 @@ Reason: AOCaseAnnouncerDialog - + Case Announcer - + Case title: - + Defense needed - + Prosecution needed - + Judge needed - + Jurors needed - + Stenographer needed @@ -110,257 +115,257 @@ Reason: AOOptionsDialog - + Settings - + Gameplay - + Theme: - + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. - + Log goes downwards: - + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. - + Log length: - + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. - + Default username: - + Your OOC name will be automatically set to this value when you join a server. - + Custom shownames: - + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. - + Backup MS: - + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. - + Discord: - + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. - + Callwords - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - + Audio - + Audio device: - + Sets the audio device for all sounds. - + Music: 音楽: - + Sets the music's default volume. - + SFX: 効果音: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - + Blips: ブリップ: - + Sets the volume of the blips, the talking sound effects. - + Blip rate: - + Sets the delay between playing the blip sounds. - + Blank blips: - + If true, the game will play a blip sound even when a space is 'being said'. - + Casing - + This server supports case alerts. - + This server does not support case alerts. - + Pretty self-explanatory. - + Casing: - + If checked, you will get alerts about case announcements. - + Defense: - + If checked, you will get alerts about case announcements if a defense spot is open. - + Prosecution: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. - + Judge: - + If checked, you will get alerts about case announcements if the judge spot is open. - + Juror: - + If checked, you will get alerts about case announcements if a juror spot is open. - + Stenographer: - + If checked, you will get alerts about case announcements if a stenographer spot is open. - + CM: - + If checked, you will appear amongst the potential CMs on the server. - + Hosting cases: - + If you're a CM, enter what cases you are willing to host. @@ -368,321 +373,316 @@ Reason: Courtroom - + Password - + Spectator 観客 - - + + Search - + Passworded - + Taken - + Generating chars: - +%1/%2 - + Showname - + Message - + Name 名前 - + Pre - + Flip フリップ - + Guard ガード - + Casing - + Shownames - + No Interrupt - + White - + Green - + Red - + Orange オレンジ - + Blue - + Yellow 黄色 - + This does nothing, but there you go. - + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1 + + + + + Case made by %1. + + + + + Navigate to %1 for the CM doc. + + + + + Your case "%1" was loaded! + + + + Server - + Back to Lobby ロビーに戻る - + Rainbow - + Pink - + Cyan - + + % offset + + + + You were granted the Guard button. - + You opened the settings menu. - + You will now pair up with - + if they also choose your character in return. - + You are no longer paired with anyone. - + Are you sure you typed that well? The char ID could not be recognised. - + You have set your offset to - + Your offset must be between -100% and 100%! - + That offset does not look like one. - + You switched your music and area list. - + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. - + Your pre-animations interrupt again. - + Your pre-animations will not interrupt text. - + Couldn't open chatlog.txt to write into. - + The IC chatlog has been saved. - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. - - You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. -Cases you can load: - - - - + Too many arguments to load a case! You only need one filename, without extension. - - Case made by - - - - - Navigate to - - - - - for the CM doc. - - - - - Your case " - - - - - " was loaded! - - - - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. - + You need to give a filename to save (extension not needed) and the courtroom status! - + Too many arguments to save a case! You only need a filename without extension and the courtroom status! - + Succesfully saved, edit doc and cmdoc link on the ini! - + Master マスター - + Reason: - + Call Moderator モデレーターを呼ぶ - - + + Error - + エラー - + You must provide a reason. - + The message is too long. - + Choose... 選択... - + Images (*.png) イメージ (*.png) - + Add new evidence... 新しい証拠を付け加える... @@ -690,64 +690,72 @@ Cases you can load: Discord - - - - Objection! - 意義あり! + 意義あり! - In Lobby - ロビーでいる + ロビーでいる - Idle - 落ちている + 落ちている - In a Server - サーバーでいます + サーバーでいます - - Playing as %1 - - - - Spectating - 観客している + 観客している Lobby - + + Attorney Online 2 + + + + + Name + 名前 + + + It doesn't look like your client is set up correctly. Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? - + + Version: %1 + + + + Loading ロード中 - + Cancel キャンセル - + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - + + Online: %1/%2 + + + + + Offline オフライン @@ -755,17 +763,17 @@ Did you download all resources correctly from tiny.cc/getao, including the large debug_functions - + Error: %1 エラー: %1 - + Error エラー - + Notice From 3fc5ec867d265ce75945804253829eec95e2502c Mon Sep 17 00:00:00 2001 From: Rodion Borisov Date: Tue, 6 Aug 2019 00:10:37 +0300 Subject: [PATCH 138/175] Correct relative paths to sources --- resource/translations/ao_ru.ts | 304 ++++++++++++++++----------------- 1 file changed, 152 insertions(+), 152 deletions(-) diff --git a/resource/translations/ao_ru.ts b/resource/translations/ao_ru.ts index 3621d59..c0d3c37 100644 --- a/resource/translations/ao_ru.ts +++ b/resource/translations/ao_ru.ts @@ -4,7 +4,7 @@ AOApplication - + Disconnected from server. Соединение с сервером прервано. @@ -13,7 +13,7 @@ Ошибка соединения с главным сервером. Попытка пересоединения будет через %n с. - + There was an error connecting to the master server. We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. Please check your Internet connection and firewall, and please try again. @@ -21,60 +21,60 @@ Please check your Internet connection and firewall, and please try again. - + Outdated version! Your version: %1 Please go to aceattorneyonline.com to update. Устаревшая версия! У вас установлена %1 Проследуйте на сайт aceattorneyonline.com для обновления. - + You have been exiled from AO. Have a nice day. Из AO вас отправили в жизнь. Хорошего дня. - + Attorney Online 2 Attorney Online 2 - + Loading Загрузка - + Loading evidence: %1/%2 Загрузка вещдоков: %1/%2 - - + + Loading music: %1/%2 Загрузка музыки: %1/%2 - + Loading chars: %1/%2 Загрузка персонажей: %1/%2 - + You have been kicked from the server. Reason: Вас выпнули с сервера. Причина: - + You are banned on this server. Reason: Вас отправили в баню. @@ -92,37 +92,37 @@ Reason: AOCaseAnnouncerDialog - + Case Announcer Материалы дела - + Case title: Название: - + Defense needed Сторона защиты - + Prosecution needed Сторона обвинения - + Judge needed Без судьи никак - + Jurors needed Суд присяжных - + Stenographer needed Нужен стенографист? @@ -130,257 +130,257 @@ Reason: AOOptionsDialog - + Settings Настройки - + Gameplay Игра - + Theme: Тема: - + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. Устанавливает внешний вид в игре. Может понадобиться перезайти на сервер. - + Log goes downwards: Портянку вниз: - + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. Отметьте галочку, если хотите, чтобы сообщения в игровом чате отображались снизу, а не сверху. - + Log length: Длина игрового чата: - + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. Количество сообщений, максимально хранимых в игровом чате. Значение, равное 0 или меньше, будет расценено как снятие такого ограничения. - + Default username: Никнейм по умолчанию: - + Your OOC name will be automatically set to this value when you join a server. Псевдоним, используемый при соединении с сервером. В основном, его видно в чате сервера. - + Custom shownames: Произвольные имена: - + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. Отображать произвольные имена персонажей, установленные самими игроками. - + Backup MS: Запасной ГС: - + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. Отображать перечень серверов от главного сервера, указанного здесь, когда не удалось соединиться с первичным ГС. - + Discord: Discord: - + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. Показать в Discord сервер, на котором вы играете, каким персонажем управляете и время игры. - + Callwords Позывные - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> <html><head/><body>Введите на отдельных строках свои позывные, при указании которых в сообщениях будет подан звуковой сигнал.</body></html> - + Audio Аудио - + Audio device: Устройство воспроизведения: - + Sets the audio device for all sounds. Куда вещать звук из игры. - + Music: Музыка: - + Sets the music's default volume. Громкость музыки по умолчанию. - + SFX: Звук. эффекты: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. Громкость звуковых эффектов по умолчанию. - + Blips: Сигналы: - + Sets the volume of the blips, the talking sound effects. Громкость сигналов, заменяющих голос, по умолчанию. - + Blip rate: Пер. сигналов: - + Sets the delay between playing the blip sounds. Период между сигналами, заменяющими голос, по умолчанию. - + Blank blips: Пустые сигналы: - + If true, the game will play a blip sound even when a space is 'being said'. Проигрывать сигналы даже для пробелов. - + Casing Заседание - + This server supports case alerts. Этот сервер поддерживает объявление заседания. - + This server does not support case alerts. Этот сервер не поддерживает объявление заседания. - + Pretty self-explanatory. Весьма доходчиво. - + Casing: Новое дело: - + If checked, you will get alerts about case announcements. При заведении дела вы получите уведомление. - + Defense: Защита: - + If checked, you will get alerts about case announcements if a defense spot is open. При заведении дела, в котором нужна сторона защиты, вы получите уведомление. - + Prosecution: Обвинение: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. При заведении дела, в котором нужна сторона обвинения, вы получите уведомление. - + Judge: Судья: - + If checked, you will get alerts about case announcements if the judge spot is open. При заведении дела, в котором нужен судья, вы получите уведомление. - + Juror: Присяжный: - + If checked, you will get alerts about case announcements if a juror spot is open. При заведении дела, в котором нужны присяжные заседатели, вы получите уведомление. - + Stenographer: Стенографист: - + If checked, you will get alerts about case announcements if a stenographer spot is open. При заведении дела, в котором нужна стенография, вы получите уведомление. - + CM: ПД: - + If checked, you will appear amongst the potential CMs on the server. Отметьте, если вы хотите состоять в числе производителей дел. - + Hosting cases: ПД акт.: - + If you're a CM, enter what cases you are willing to host. Будучи производителем дела (ПД), вы можете войти в зону и заниматься её оркестровкой. @@ -388,33 +388,33 @@ Reason: Courtroom - + Password Пароль - + Spectator Наблюдатель - - + + Search Поиск - + Passworded Ограничен паролем - + Taken Занят - + Generating chars: Генерация персонажей: @@ -425,77 +425,77 @@ Reason: %1 - не найдено - + Showname Имя - + Message Сообщение - + Name Никнейм - + Pre Pre - + Flip Разв. - + Guard Охрана - + Casing Дело - + Shownames Произв. имена - + No Interrupt Говорить сразу - + White Белый - + Green Зелëный - + Red Красный - + Orange Оранжевый - + Blue Синий - + Yellow Жëлтый @@ -512,7 +512,7 @@ Reason: Сигналы - + Server Сервер @@ -529,7 +529,7 @@ Reason: Вызвать модератора - + Back to Lobby Назад в лобби @@ -542,22 +542,22 @@ Reason: %1 включает музыку %2 - + Rainbow Радужный - + Pink Розовый - + Cyan Голубой - + You were granted the Guard button. Теперь у вас есть кнопка "Охрана". @@ -566,169 +566,169 @@ Reason: Ничего важного... - + This does nothing, but there you go. Ничего важного... - + You opened the settings menu. Вы открыли меню настроек. - + You will now pair up with Вы встанете парой с персонажем по имени - + if they also choose your character in return. (если он выберет вас в ответ). - + You are no longer paired with anyone. Теперь вы не стоите в парах. - + Are you sure you typed that well? The char ID could not be recognised. Кажется, вам нужно поменять запрос: такой идентификатор персонажа не был найден. - + You have set your offset to Вы установили сдвиг персонажа на - + Your offset must be between -100% and 100%! Сдвиг персонажа должен быть между -100% и 100%! - + That offset does not look like one. Неверный сдвиг персонажа. - + You switched your music and area list. Вы переключили перечень зон и музыки. - + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. Из-за того, что вы включили не поддержимаемые сервером возможности, он может не принять ваши сообщения. - + Your pre-animations interrupt again. Вы будете говорить после анимации. - + Your pre-animations will not interrupt text. Сообщение будет озвучено параллельно с анимацией. - + Couldn't open chatlog.txt to write into. Не могу открыть chatlog.txt для записи лога. - + The IC chatlog has been saved. Лог игрового чата сохранëн. - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. Файл с делом не найден. Если найдëте, положите его в папку `base/cases/`. - + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. Cases you can load: Введите имя файля с делом. Убедитесь, что он расположен в папке `base/cases/` и имеет расширение `ìni`. - + Too many arguments to load a case! You only need one filename, without extension. Введите имя файла без расширения. - + Case made by Дело завëл игрок по имени - + Navigate to Перейдите к - + for the CM doc. для получения материалов дела. - + Your case " Ваше дело " - + " was loaded! " было загружено! - + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. Папка `base/cases/` отсутствует! - + You need to give a filename to save (extension not needed) and the courtroom status! Введите имя файла (без расширения) и предоставьте статус зоны. - + Too many arguments to save a case! You only need a filename without extension and the courtroom status! Убедитесь, что имя файла не содержит расширение. - + Succesfully saved, edit doc and cmdoc link on the ini! Сохранение прошло успешно! - + Master Мастер - + Reason: Причина: - + Call Moderator Позвать модератора - - + + Error Ошибка - + You must provide a reason. Укажите причину. - + The message is too long. Слишком длинный текст. @@ -737,17 +737,17 @@ Cases you can load: Выбрать... - + Choose... Выбрать... - + Images (*.png) Изображения (*.png) - + Add new evidence... Добавить новую улику... @@ -755,35 +755,35 @@ Cases you can load: Discord - - - - + + + + Objection! Протестую!! - + In Lobby В лобби - + Idle Бездействует - + In a Server На сервере - + Playing as %1 Играет за %1 - + Spectating Наблюдает @@ -799,24 +799,24 @@ Cases you can load: Имя - + It doesn't look like your client is set up correctly. Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? Не похоже, что ваш клиент установлен правильно. Скачали ли вы все ресурсы (tiny.cc/getao), включая огромную папку `base`? - + Loading Загрузка - + Cancel Отмена - + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy <h2>Attorney Online %1</h2>Симулятор судебной драмы<p><b>Исходный код:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Основной разработкой занимались:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Особенная благодарность:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (дизайн интерфейса), Draxirch (дизайн интерфейса), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy @@ -861,7 +861,7 @@ Noevain Cronnicossy - + Offline Вне сети @@ -869,17 +869,17 @@ Cronnicossy debug_functions - + Error: %1 Ошибка: %1 - + Error Ошибка - + Notice На заметку From 078ad79b65692644a1d7230b4cfb9277a16d0310 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 5 Aug 2019 23:30:00 +0200 Subject: [PATCH 139/175] language setting --- include/aooptionsdialog.h | 2 ++ src/aooptionsdialog.cpp | 13 +++++++++++++ src/main.cpp | 11 +++++++++-- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/include/aooptionsdialog.h b/include/aooptionsdialog.h index a65e3f5..83b84cb 100644 --- a/include/aooptionsdialog.h +++ b/include/aooptionsdialog.h @@ -55,6 +55,8 @@ private: QLineEdit *ui_ms_textbox; QLabel *ui_discord_lbl; QCheckBox *ui_discord_cb; + QLabel *ui_language_label; + QComboBox *ui_language_combobox; QWidget *ui_callwords_tab; QWidget *ui_callwords_widget; diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp index 4bfe9de..d68f6cb 100644 --- a/src/aooptionsdialog.cpp +++ b/src/aooptionsdialog.cpp @@ -167,6 +167,18 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_gameplay_form->setWidget(9, QFormLayout::FieldRole, ui_discord_cb); + ui_language_label = new QLabel(ui_form_layout_widget); + ui_language_label->setText(tr("Language:")); + ui_language_label->setToolTip(tr("Sets the language if you don't want to use your system language.")); + ui_gameplay_form->setWidget(10, QFormLayout::LabelRole, ui_language_label); + + ui_language_combobox = new QComboBox(ui_form_layout_widget); + ui_language_combobox->addItem(" - Default"); + ui_language_combobox->addItem("en - English"); + ui_language_combobox->addItem("de - German"); + ui_language_combobox->addItem("jp - Japanese"); + ui_gameplay_form->setWidget(10, QFormLayout::FieldRole, ui_language_combobox); + // Here we start the callwords tab. ui_callwords_tab = new QWidget(); ui_settings_tabs->addTab(ui_callwords_tab, tr("Callwords")); @@ -466,6 +478,7 @@ void AOOptionsDialog::save_pressed() configini->setValue("show_custom_shownames", ui_showname_cb->isChecked()); configini->setValue("master", ui_ms_textbox->text()); configini->setValue("discord", ui_discord_cb->isChecked()); + configini->setValue("language", ui_language_combobox->currentText().left(2)); QFile* callwordsini = new QFile(ao_app->get_base_path() + "callwords.ini"); diff --git a/src/main.cpp b/src/main.cpp index 7c2daa6..6c15e6f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,13 +21,20 @@ int main(int argc, char *argv[]) AOApplication main_app(argc, argv); + QSettings* configini = main_app.configini; + + QString p_language = configini->value("language",QLocale::system().name()).toString(); + if (p_language==" " || p_language=="") + p_language = QLocale::system().name(); + QTranslator qtTranslator; - qtTranslator.load("qt_" + QLocale::system().name(), + qtTranslator.load("qt_" + p_language, QLibraryInfo::location(QLibraryInfo::TranslationsPath)); main_app.installTranslator(&qtTranslator); QTranslator appTranslator; - appTranslator.load("ao_" + QLocale::system().name(),":/resource/translations/"); + qDebug() << ":/resource/translations/ao_" + p_language; + appTranslator.load("ao_" + p_language,":/resource/translations/"); main_app.installTranslator(&appTranslator); main_app.construct_lobby(); From df3cc3a9ff20e0e4b6922f273e8c0cac9c3b9793 Mon Sep 17 00:00:00 2001 From: Rodion Borisov Date: Tue, 6 Aug 2019 01:15:18 +0300 Subject: [PATCH 140/175] Mimicing `ao_en.ts` It seems many changes were made since last week, so I needed to syncronize these. --- resource/translations/ao_ru.ts | 284 ++++++++++----------------------- 1 file changed, 83 insertions(+), 201 deletions(-) diff --git a/resource/translations/ao_ru.ts b/resource/translations/ao_ru.ts index c0d3c37..7ea6feb 100644 --- a/resource/translations/ao_ru.ts +++ b/resource/translations/ao_ru.ts @@ -9,11 +9,12 @@ Соединение с сервером прервано. - Error connecting to master server. Will try again in %n seconds. - Ошибка соединения с главным сервером. Попытка пересоединения будет через %n с. + + Error connecting to master server. Will try again in %1 seconds. + Ошибка соединения с главным сервером. Попытка пересоединения будет через %1 с. - + There was an error connecting to the master server. We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. Please check your Internet connection and firewall, and please try again. @@ -80,14 +81,6 @@ Reason: Вас отправили в баню. Причина: - - You have been kicked. - Вас выгнали. - - - You are banned on this server. - Вас забанили. - AOCaseAnnouncerDialog @@ -147,7 +140,7 @@ Reason: Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. - Устанавливает внешний вид в игре. Может понадобиться перезайти на сервер. + Устанавливает внешний вид игры. Может понадобиться перезайти на сервер. @@ -220,167 +213,167 @@ Reason: <html><head/><body>Введите на отдельных строках свои позывные, при указании которых в сообщениях будет подан звуковой сигнал.</body></html> - + Audio - Аудио + Аудиоhistory.replaceState({}, document.title, clean_uri); - + Audio device: Устройство воспроизведения: - + Sets the audio device for all sounds. Куда вещать звук из игры. - + Music: Музыка: - + Sets the music's default volume. Громкость музыки по умолчанию. - + SFX: Звук. эффекты: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. Громкость звуковых эффектов по умолчанию. - + Blips: Сигналы: - + Sets the volume of the blips, the talking sound effects. Громкость сигналов, заменяющих голос, по умолчанию. - + Blip rate: Пер. сигналов: - + Sets the delay between playing the blip sounds. Период между сигналами, заменяющими голос, по умолчанию. - + Blank blips: Пустые сигналы: - + If true, the game will play a blip sound even when a space is 'being said'. Проигрывать сигналы даже для пробелов. - + Casing Заседание - + This server supports case alerts. Этот сервер поддерживает объявление заседания. - + This server does not support case alerts. Этот сервер не поддерживает объявление заседания. - + Pretty self-explanatory. Весьма доходчиво. - + Casing: Новое дело: - + If checked, you will get alerts about case announcements. При заведении дела вы получите уведомление. - + Defense: Защита: - + If checked, you will get alerts about case announcements if a defense spot is open. При заведении дела, в котором нужна сторона защиты, вы получите уведомление. - + Prosecution: Обвинение: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. При заведении дела, в котором нужна сторона обвинения, вы получите уведомление. - + Judge: Судья: - + If checked, you will get alerts about case announcements if the judge spot is open. При заведении дела, в котором нужен судья, вы получите уведомление. - + Juror: Присяжный: - + If checked, you will get alerts about case announcements if a juror spot is open. При заведении дела, в котором нужны присяжные заседатели, вы получите уведомление. - + Stenographer: Стенографист: - + If checked, you will get alerts about case announcements if a stenographer spot is open. При заведении дела, в котором нужна стенография, вы получите уведомление. - + CM: ПД: - + If checked, you will appear amongst the potential CMs on the server. Отметьте, если вы хотите состоять в числе производителей дел. - + Hosting cases: ПД акт.: - + If you're a CM, enter what cases you are willing to host. Будучи производителем дела (ПД), вы можете войти в зону и заниматься её оркестровкой. @@ -420,10 +413,6 @@ Reason: Генерация персонажей: - - Could not find %1 - %1 - не найдено - Showname @@ -442,7 +431,7 @@ Reason: Pre - Pre + Пред. @@ -500,47 +489,42 @@ Reason: Жëлтый - Music - Музыка + + This does nothing, but there you go. + В общем-то, это ни на что не влияет... - Sfx - Звук + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1 + Укажите имя файла с делом (без расширения) для загрузки. Убедитесь, что оно расположено в папке `base/cases`. +Были найдены: %1 - Blips - Сигналы + + Case made by %1. + Дело завëл игрок: %1. + + + + Navigate to %1 for the CM doc. + Перейдите к %1 для получения материалов дела. + + + + Your case "%1" was loaded! + Дело под кодовым названием "%1" готово! Server Сервер - - Change character - Сменить персонажа - - - Reload theme - Перезагрузить тему - - - Call mod - Вызвать модератора - Back to Lobby Назад в лобби - - You have been banned. - Вы были забанены. - - - %1 has played a song: %2 - %1 включает музыку %2 - Rainbow @@ -556,20 +540,16 @@ Reason: Cyan Голубой + + + % offset + % сдвига + You were granted the Guard button. Теперь у вас есть кнопка "Охрана". - - This does nohing, but there you go. - Ничего важного... - - - - This does nothing, but there you go. - Ничего важного... - You opened the settings menu. @@ -623,17 +603,17 @@ Reason: Your pre-animations interrupt again. - Вы будете говорить после анимации. + Персонаж будет говорить только после анимации. Your pre-animations will not interrupt text. - Сообщение будет озвучено параллельно с анимацией. + Персонаж будет говорить и во время анимации. Couldn't open chatlog.txt to write into. - Не могу открыть chatlog.txt для записи лога. + Не могу открыть `chatlog.txt` для записи лога. @@ -643,44 +623,13 @@ Reason: You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. - Файл с делом не найден. Если найдëте, положите его в папку `base/cases/`. - - - - You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. -Cases you can load: - Введите имя файля с делом. Убедитесь, что он расположен в папке `base/cases/` и имеет расширение `ìni`. + Файл с делом не найден. Если найдëте, положите его в папку `base/cases/`, которую мы для вас создали. Too many arguments to load a case! You only need one filename, without extension. Введите имя файла без расширения. - - - Case made by - Дело завëл игрок по имени - - - - Navigate to - Перейдите к - - - - for the CM doc. - для получения материалов дела. - - - - Your case " - Ваше дело " - - - - " was loaded! - " было загружено! - You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. @@ -732,10 +681,6 @@ Cases you can load: The message is too long. Слишком длинный текст. - - Choose.. - Выбрать... - Choose... @@ -752,42 +697,6 @@ Cases you can load: Добавить новую улику... - - Discord - - - - - - Objection! - Протестую!! - - - - In Lobby - В лобби - - - - Idle - Бездействует - - - - In a Server - На сервере - - - - Playing as %1 - Играет за %1 - - - - Spectating - Наблюдает - - Lobby @@ -795,8 +704,9 @@ Cases you can load: Attorney Online 2 + Name - Имя + Никнейм @@ -805,6 +715,11 @@ Did you download all resources correctly from tiny.cc/getao, including the large Не похоже, что ваш клиент установлен правильно. Скачали ли вы все ресурсы (tiny.cc/getao), включая огромную папку `base`? + + + Version: %1 + Версия: %1 + Loading @@ -821,46 +736,12 @@ Did you download all resources correctly from tiny.cc/getao, including the large <h2>Attorney Online %1</h2>Симулятор судебной драмы<p><b>Исходный код:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Основной разработкой занимались:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Особенная благодарность:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (дизайн интерфейса), Draxirch (дизайн интерфейса), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - Attorney Online 2 is built using Qt 5.11. - -Lead development: -longbyte1 -OmniTroid - -stonedDiscord -Supporting development: -Fiercy - -UI design: -Ruekasu -Draxirch - -Special thanks: -Unishred -Argoneus -Noevain -Cronnicossy - Attorney Online 2 использует Qt. - -Во главе разработки: -longbyte1 -OmniTroid -stonedDiscord - -Поддержка разработки: -Fiercy - -Дизайн интерфейса: -Ruekasu -Draxirch - -Особенная благодарность: -Unishred -Argoneus -Noevain -Cronnicossy + + Online: %1/%2 + Онлайн: %1/%2 + Offline Вне сети @@ -884,4 +765,5 @@ Cronnicossy На заметку - \ No newline at end of file + +;11M \ No newline at end of file From 05debed60ba1adaa4f454010164caf554248a29e Mon Sep 17 00:00:00 2001 From: David Skoland Date: Tue, 6 Aug 2019 01:11:53 +0200 Subject: [PATCH 141/175] removed meaningless modifiers (see https://software.intel.com/en-us/articles/cdiag858) --- include/aoapplication.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/aoapplication.h b/include/aoapplication.h index 67f9a0d..af43cf3 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -95,9 +95,9 @@ public: //////////////////versioning/////////////// - const int get_release() const { return RELEASE; } - const int get_major_version() const { return MAJOR_VERSION; } - const int get_minor_version() const { return MINOR_VERSION; } + int get_release() const { return RELEASE; } + int get_major_version() const { return MAJOR_VERSION; } + int get_minor_version() const { return MINOR_VERSION; } QString get_version_string(); /////////////////////////////////////////// From 85278640b97bae39895098645dddeccb809ca175 Mon Sep 17 00:00:00 2001 From: windrammer <31085911+likeawindrammer@users.noreply.github.com> Date: Mon, 5 Aug 2019 19:03:01 -0600 Subject: [PATCH 142/175] Add Spanish translation --- resource/translations/ao_es.ts | 811 +++++++++++++++++++++++++++++++++ 1 file changed, 811 insertions(+) create mode 100644 resource/translations/ao_es.ts diff --git a/resource/translations/ao_es.ts b/resource/translations/ao_es.ts new file mode 100644 index 0000000..c55ed16 --- /dev/null +++ b/resource/translations/ao_es.ts @@ -0,0 +1,811 @@ + + + + + AOApplication + + + Disconnected from server. + Desconectado del servidor. + + + + Error connecting to master server. Will try again in %1 seconds. + Error al conectarse a la lista de servidores. Se intentará nuevamente en %1 segundos. + + + + There was an error connecting to the master server. +We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. +Please check your Internet connection and firewall, and please try again. + I translated master servers as "lista de servidores" because literally nobody will understand if i make the literal translation "servidor maestro". And in the end a master server is just a list of servers. Also removed the part about having multiple master servers, i just don't think the average user will understand this even if i do a good translation. + Hubo un error al obtener la lista de servidores. Verifique su conexión a Internet y firewall, y vuelva a intentarlo. + + + + Outdated version! Your version: %1 +Please go to aceattorneyonline.com to update. + ¡Versión desactualizada! Su versión: %1 Vaya a aceattorneyonline.com para actualizar. + + + + You have been exiled from AO. +Have a nice day. + Has sido exiliado de AO. +Que tengas un buen día. + + + + Attorney Online 2 + Attorney Online 2 + + + + Loading + Cargando + + + + Loading evidence: +%1/%2 + Cargando evidencia: +%1/%2 + + + + + Loading music: +%1/%2 + Cargando música: +%1/%2 + + + + Loading chars: +%1/%2 + Cargando personajes: +%1/%2 + + + + You have been kicked from the server. +Reason: + Has sido expulsado del servidor. +Razón: + + + + You are banned on this server. +Reason: + Has sido baneado en este servidor. +Razón: + + + + AOCaseAnnouncerDialog + + + Case Announcer + Anunciar caso + + + + Case title: + Título del caso: + + + + Defense needed + Se necesita defensa + + + + Prosecution needed + Se necesita fiscal + + + + Judge needed + Se necesita juez + + + + Jurors needed + Se necesita jurado + + + + Stenographer needed + Se necesita taquígrafo + + + + AOOptionsDialog + + + Settings + Ajustes + + + + Gameplay + Jugabilidad + + + + Theme: + Tema visual: + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. + Establece el tema visual utilizado en el juego. Si el nuevo tema también cambia el aspecto del lobby, deberá volver a cargar el lobby para que los cambios surtan efecto, como unirse a un servidor y volver al lobby. + + + + Log goes downwards: + Invertir historial IC: + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + Si está marcado, los nuevos mensajes aparecerán en la parte inferior (como el chat OOC). + + + + Log length: + Longitud del historial: + + + + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. + La cantidad de mensajes que mantendrá el historial del chat IC antes de eliminar mensajes más antiguos. 0 significa 'infinito'. + + + + Default username: + Usuario predeterminado: + + + + Your OOC name will be automatically set to this value when you join a server. + Su nombre OOC se establecerá automáticamente a este cuando se una a un servidor. + + + + Custom shownames: + Mostrar nombres: + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + Activa la casilla 'Mostrar nombres' de forma predeterminada en el juego, que a su vez determina si el cliente debe mostrar nombres personalizados en los personajes. + + + + Backup MS: + MS de respaldo: + + + + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. + Si la lista de servidores predeterminada falla, el juego probará la dirección proporcionada aquí. + + + + Discord: + + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + Permite a otros en Discord ver en qué servidor estás, qué personaje juegas y cuánto tiempo has estado jugando. + + + + Language: + Idioma: + + + + Sets the language if you don't want to use your system language. + Establece el idioma si no desea utilizar el idioma de su sistema. + + + + Callwords + + + + + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> + <html><head/><body>Ingrese tantas palabras de llamada como desee.<br>Esto no distingue entre mayúsculas y minúsculas. ¡Asegúrese de dejar cada palabra en su propia línea!<br>No deje una línea con un espacio al final; recibirá una alerta cada vez que alguien use un espacio en sus mensajes.</body></html> + + + + Audio + Audio + + + + Audio device: + Dispositivo: + + + + Sets the audio device for all sounds. + Establece el dispositivo de audio. + + + + Music: + Música: + + + + Sets the music's default volume. + Establece el volumen predeterminado de la música. + + + + SFX: + + + + + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. + Establece el volumen predeterminado de SFX. Las interjecciones y los efectos de sonido reales cuentan como 'SFX'. + + + + Blips: + + + + + Sets the volume of the blips, the talking sound effects. + Establece el volumen de los blips, el sonido al hablar. + + + + Blip rate: + Tasa de blips: + + + + Sets the delay between playing the blip sounds. + Establece el retraso entre la reproducción de los sonidos blip. + + + + Blank blips: + Blips en blanco: + + + + If true, the game will play a blip sound even when a space is 'being said'. + Si está marcada, el juego reproducirá un sonido blip incluso cuando se 'dice' un espacio. + + + + Casing + + + + + This server supports case alerts. + Este servidor admite alertas de casos. + + + + This server does not support case alerts. + Este servidor no admite alertas de casos. + + + + Pretty self-explanatory. + Bastante autoexplicativo. + + + + Casing: + Caso: + + + + If checked, you will get alerts about case announcements. + Si está marcado, recibirá anuncios de casos. + + + + Defense: + Defensa: + + + + If checked, you will get alerts about case announcements if a defense spot is open. + Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de defensa abierto. + + + + Prosecution: + Fiscal: + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. + Si está marcada, recibirá alertas sobre anuncios de casos si hay un puesto de fiscal abierto. + + + + Judge: + Juez: + + + + If checked, you will get alerts about case announcements if the judge spot is open. + Si está marcado, recibirá alertas sobre anuncios de casos si el puesto de juez está abierto. + + + + Juror: + Jurado: + + + + If checked, you will get alerts about case announcements if a juror spot is open. + Si está marcado, recibirá alertas sobre anuncios de casos si hay un puesto de jurado abierto. + + + + Stenographer: + Taquígrafo: + + + + If checked, you will get alerts about case announcements if a stenographer spot is open. + Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de taquígrafo abierto. + + + + CM: + + + + + If checked, you will appear amongst the potential CMs on the server. + Si está marcado, aparecerá entre los posibles CM en el servidor. + + + + Hosting cases: + + + + + If you're a CM, enter what cases you are willing to host. + Si eres un CM, ingresa qué casos estás dispuesto a organizar. + + + + Courtroom + + + Password + Contraseña + + + + Spectator + Espectador + + + + + Search + Buscar + + + + Passworded + Contraseña + + + + Taken + En uso + + + + Generating chars: +%1/%2 + Generando personajes: +%1/%2 + + + Generating chars: + + Generando personajes: + + + + + Showname + + + + + Message + Mensaje + + + + Name + Nombre + + + + Pre + + + + + Flip + + + + + Guard + Guardia + + + + Casing + + + + + Shownames + + + + + No Interrupt + + + + + White + Blanco + + + + Green + Verde + + + + Red + Rojo + + + + Orange + Naranja + + + + Blue + Azul + + + + Yellow + Amarillo + + + + Rainbow + Arcoíris + + + + Pink + Rosado + + + + Cyan + Cian + + + + % offset + % desplazamiento + + + + Back to Lobby + Volver al lobby + + + + You were granted the Guard button. + Te ha sido otorgado el botón Guardia. + + + + This does nothing, but there you go. + Esto no hace nada, pero ahí lo tienes. + + + + You opened the settings menu. + Abriste el menú de configuración. + + + + You will now pair up with + Ahora te emparejarás con + + + + if they also choose your character in return. + si ellos también eligen a tu personaje a cambio. + + + + You are no longer paired with anyone. + Ya no estás emparejado con nadie. + + + + Are you sure you typed that well? The char ID could not be recognised. + ¿Estás seguro de que lo escribiste bien? El ID de personaje no pudo ser reconocido. + + + + You have set your offset to + Ha configurado su desplazamiento en + + + + Your offset must be between -100% and 100%! + ¡Su desplazamiento debe estar entre -100% y 100%! + + + + That offset does not look like one. + Ese desplazamiento no se parece a uno. + + + + You switched your music and area list. + Cambiaste tu lista de música y área. + + + + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. + Ha habilitado forzosamente funciones que el servidor puede no admitir. Es posible que no pueda hablar IC, o peor, debido a esto. + + + + Your pre-animations interrupt again. + Sus pre-animaciones interrumpen de nuevo. + + + + Your pre-animations will not interrupt text. + Sus pre-animaciones no interrumpirán el texto. + + + + Couldn't open chatlog.txt to write into. + No se pudo abrir chatlog.txt para escribir. + + + + The IC chatlog has been saved. + El chat IC se ha guardado. + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. + ¡No tienes una carpeta `base/cases /`! Ha sido creada para ti. Pero debido a que no existia la carpeta, tampoco habían casos guardados ahí. + + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1 + ¡Debe dar un nombre de archivo para cargar (no se necesita extensión)! Asegúrese de que esté en la carpeta `base/cases/` y de que tenga el formato correcto. +Casos que puede cargar: %1 + + + + Case made by %1. + Caso hecho por %1. + + + + Navigate to %1 for the CM doc. + Navegue a %1 para el documento del CM. + + + + Your case "%1" was loaded! + Su caso "%1" fue cargado! + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: + ¡Debe dar un nombre de archivo para cargar (no se necesita extensión)! Asegúrese de que esté en la carpeta `base/cases/` y de que tenga el formato correcto. +Casos que puede cargar: + + + + Too many arguments to load a case! You only need one filename, without extension. + ¡Demasiados argumentos para cargar un caso! Solo necesita un nombre de archivo, sin extensión. + + + Case made by + Caso hecho por + + + Navigate to + Navegue a + + + for the CM doc. + para el documento de CM. + + + Your case " + Su caso " + + + " was loaded! + " fue cargado! + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. + ¡No tienes una carpeta `base/cases /`! Fue creada para ti. + + + + You need to give a filename to save (extension not needed) and the courtroom status! + ¡Debe dar un nombre de archivo para guardar (no se necesita la extensión) y el estado de la sala del tribunal! + + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status! + why two exclamations, seems excesive. + ¡Demasiados argumentos para salvar un caso! Solo necesita un nombre de archivo sin extensión y el estado de la sala del tribunal. + + + + Succesfully saved, edit doc and cmdoc link on the ini! + ¡Guardado con éxito, puede editar el doc y doc link en el archivo ini! + + + + Master + + + + + Server + + + + + Reason: + Razón: + + + + Call Moderator + Llamar Moderador + + + + + Error + Error + + + + You must provide a reason. + Debes proporcionar una razón. + + + + The message is too long. + El mensaje es muy largo. + + + + Choose... + Elegir... + + + + Images (*.png) + Imágenes (* .png) + + + + Add new evidence... + Añadir nueva evidencia... + + + + Lobby + + + Attorney Online 2 + Attorney Online 2 + + + + Name + Nombre + + + + It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? + No parece que su cliente esté configurado correctamente. +¿Descargó todos los recursos correctamente desde tiny.cc/getao, incluida la gran carpeta 'base'? + + + + Version: %1 + Versión: %1 + + + + Loading + Cargando + + + + Cancel + Cancelar + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + <h2>Attorney Online %1</h2>El simulador de drama de la sala del tribunal<p><b>Código fuente:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https: //github.com/AttorneyOnline/AO2-Client</a><p><b>Desarrollo mayor:</b> <br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Agradecimiento especial:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (diseño de interfaz de usuario), Draxirch (diseño de interfaz de usuario), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + + + + Online: %1/%2 + En línea: %1/%2 + + + + + Offline + Fuera de línea + + + + debug_functions + + + Error: %1 + + + + + Error + + + + + Notice + + + + From f25951c1dca2756a179c6ddb2084b0f4c9de9295 Mon Sep 17 00:00:00 2001 From: Rodion Borisov Date: Tue, 6 Aug 2019 10:01:11 +0300 Subject: [PATCH 143/175] Removed accidental copypastas --- resource/translations/ao_ru.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/resource/translations/ao_ru.ts b/resource/translations/ao_ru.ts index 7ea6feb..ff1f07b 100644 --- a/resource/translations/ao_ru.ts +++ b/resource/translations/ao_ru.ts @@ -215,7 +215,7 @@ Reason: Audio - Аудиоhistory.replaceState({}, document.title, clean_uri); + Аудио @@ -766,4 +766,3 @@ Did you download all resources correctly from tiny.cc/getao, including the large -;11M \ No newline at end of file From 4936de0f12dcaf6db1f800dba9808c164f85479d Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 6 Aug 2019 20:09:19 +0200 Subject: [PATCH 144/175] the line numbers changed + compiled ru, es --- Attorney_Online.pro | 4 +- resource/translations/ao_de.ts | 78 +++++++++++++++------------- resource/translations/ao_en.ts | 78 +++++++++++++++------------- resource/translations/ao_es.qm | Bin 0 -> 23265 bytes resource/translations/ao_es.ts | 2 +- resource/translations/ao_ja.ts | 78 +++++++++++++++------------- resource/translations/ao_ru.qm | Bin 0 -> 21535 bytes resource/translations/ao_ru.ts | 90 +++++++++++++++++++-------------- 8 files changed, 189 insertions(+), 141 deletions(-) create mode 100644 resource/translations/ao_es.qm create mode 100644 resource/translations/ao_ru.qm diff --git a/Attorney_Online.pro b/Attorney_Online.pro index 7e597b4..52277b3 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -43,7 +43,9 @@ RESOURCES += resources.qrc TRANSLATIONS = resource/translations/ao_en.ts \ resource/translations/ao_ja.ts \ - resource/translations/ao_de.ts + resource/translations/ao_de.ts \ + resource/translations/ao_ru.ts \ + resource/translations/ao_es.ts win32:RC_ICONS = resource/logo.ico macx:ICON = resource/logo.icns diff --git a/resource/translations/ao_de.ts b/resource/translations/ao_de.ts index 6dec05b..3d01f27 100644 --- a/resource/translations/ao_de.ts +++ b/resource/translations/ao_de.ts @@ -215,178 +215,188 @@ Grund: Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. Erlaubt anderen auf Discord zu sehen auf welchem Server du spielst, welchen Charakter du spielst und wie lange. + + + Language: + + + Sets the language if you don't want to use your system language. + + + + Callwords Alarmwörter - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> <html><head/><body>Gib so viele Alarmwörter ein wie du möchtest. Groß/Kleinschreibung ist egal. Für jede Wort nur eine Zeile!<br>Bitte keine leere Zeile am Ende -- du bekommst sonst bei jeder Nachricht einen Alarm.</body></html> - + Audio Audio - + Audio device: Audiogerät: - + Sets the audio device for all sounds. Setzt das Audiogerät für all Geräusche. - + Music: Musik: - + Sets the music's default volume. Setzt die Musiklautstärke. - + SFX: SFX: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. Setzt die Lautstärke der Soundeffekte wie Einsprüche und die Geräusche der Charaktere. - + Blips: Blips: - + Sets the volume of the blips, the talking sound effects. Setzt die Lautstärke der Blips, das ist das Geräusch das die Charaktere beim Reden machen. - + Blip rate: Bliprate: - + Sets the delay between playing the blip sounds. Setzt die Pause zwischen einzelnen Blips. - + Blank blips: Leere Blips: - + If true, the game will play a blip sound even when a space is 'being said'. Wenn angehakt wird das Spiel auch bei einem Leerzeichen einen Blip machen. - + Casing Fälle - + This server supports case alerts. Dieser Server unterstützt Fallalarme. - + This server does not support case alerts. Dieser Server unterstützt Fallalarme nicht. - + Pretty self-explanatory. Eigentlich selbsterklärend. - + Casing: Fälle: - + If checked, you will get alerts about case announcements. Wenn angehakt wirst du benachrichtigt wenn ein Fall angekündigt wird. - + Defense: Verteidigung: - + If checked, you will get alerts about case announcements if a defense spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Verteidiger benötigt wird. - + Prosecution: Kläger: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Kläger benötigt wird. - + Judge: Richter: - + If checked, you will get alerts about case announcements if the judge spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Richter benötigt wird. - + Juror: Jury: - + If checked, you will get alerts about case announcements if a juror spot is open. Wenn angehakt wirst du benachrichtigt wenn eine Jury benötigt wird. - + Stenographer: Stenograph: - + If checked, you will get alerts about case announcements if a stenographer spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Stenograph benötigt wird. - + CM: CM: - + If checked, you will appear amongst the potential CMs on the server. Wenn angehakt wirst du als potentielle CM angezeigt. - + Hosting cases: Fallleitung: - + If you're a CM, enter what cases you are willing to host. Wenn du CM bist, gib ein welche Fälle du spielen möchtest. diff --git a/resource/translations/ao_en.ts b/resource/translations/ao_en.ts index 390754f..72f0827 100644 --- a/resource/translations/ao_en.ts +++ b/resource/translations/ao_en.ts @@ -194,178 +194,188 @@ Reason: Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + + + Language: + + + Sets the language if you don't want to use your system language. + + + + Callwords - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - + Audio - + Audio device: - + Sets the audio device for all sounds. - + Music: - + Sets the music's default volume. - + SFX: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - + Blips: - + Sets the volume of the blips, the talking sound effects. - + Blip rate: - + Sets the delay between playing the blip sounds. - + Blank blips: - + If true, the game will play a blip sound even when a space is 'being said'. - + Casing - + This server supports case alerts. - + This server does not support case alerts. - + Pretty self-explanatory. - + Casing: - + If checked, you will get alerts about case announcements. - + Defense: - + If checked, you will get alerts about case announcements if a defense spot is open. - + Prosecution: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. - + Judge: - + If checked, you will get alerts about case announcements if the judge spot is open. - + Juror: - + If checked, you will get alerts about case announcements if a juror spot is open. - + Stenographer: - + If checked, you will get alerts about case announcements if a stenographer spot is open. - + CM: - + If checked, you will appear amongst the potential CMs on the server. - + Hosting cases: - + If you're a CM, enter what cases you are willing to host. diff --git a/resource/translations/ao_es.qm b/resource/translations/ao_es.qm new file mode 100644 index 0000000000000000000000000000000000000000..e6ceb741286ceeaa50225438b0adc1d603874332 GIT binary patch literal 23265 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 NEL(1e+qAZ{{4ZuD$6o*d literal 0 HcmV?d00001 diff --git a/resource/translations/ao_es.ts b/resource/translations/ao_es.ts index c55ed16..8655583 100644 --- a/resource/translations/ao_es.ts +++ b/resource/translations/ao_es.ts @@ -800,7 +800,7 @@ Did you download all resources correctly from tiny.cc/getao, including the large Error - + Error diff --git a/resource/translations/ao_ja.ts b/resource/translations/ao_ja.ts index adacb54..9535678 100644 --- a/resource/translations/ao_ja.ts +++ b/resource/translations/ao_ja.ts @@ -194,178 +194,188 @@ Reason: Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + + + Language: + + + Sets the language if you don't want to use your system language. + + + + Callwords - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - + Audio - + Audio device: - + Sets the audio device for all sounds. - + Music: 音楽: - + Sets the music's default volume. - + SFX: 効果音: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - + Blips: ブリップ: - + Sets the volume of the blips, the talking sound effects. - + Blip rate: - + Sets the delay between playing the blip sounds. - + Blank blips: - + If true, the game will play a blip sound even when a space is 'being said'. - + Casing - + This server supports case alerts. - + This server does not support case alerts. - + Pretty self-explanatory. - + Casing: - + If checked, you will get alerts about case announcements. - + Defense: - + If checked, you will get alerts about case announcements if a defense spot is open. - + Prosecution: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. - + Judge: - + If checked, you will get alerts about case announcements if the judge spot is open. - + Juror: - + If checked, you will get alerts about case announcements if a juror spot is open. - + Stenographer: - + If checked, you will get alerts about case announcements if a stenographer spot is open. - + CM: - + If checked, you will appear amongst the potential CMs on the server. - + Hosting cases: - + If you're a CM, enter what cases you are willing to host. diff --git a/resource/translations/ao_ru.qm b/resource/translations/ao_ru.qm new file mode 100644 index 0000000000000000000000000000000000000000..89df0b279e87367a2160a8c92c5c10e6978559a6 GIT binary patch literal 21535 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 z Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. Показать в Discord сервер, на котором вы играете, каким персонажем управляете и время игры. + + + Language: + + + Sets the language if you don't want to use your system language. + + + + Callwords Позывные - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> <html><head/><body>Введите на отдельных строках свои позывные, при указании которых в сообщениях будет подан звуковой сигнал.</body></html> - + Audio Аудио - + Audio device: Устройство воспроизведения: - + Sets the audio device for all sounds. Куда вещать звук из игры. - + Music: Музыка: - + Sets the music's default volume. Громкость музыки по умолчанию. - + SFX: Звук. эффекты: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. Громкость звуковых эффектов по умолчанию. - + Blips: Сигналы: - + Sets the volume of the blips, the talking sound effects. Громкость сигналов, заменяющих голос, по умолчанию. - + Blip rate: Пер. сигналов: - + Sets the delay between playing the blip sounds. Период между сигналами, заменяющими голос, по умолчанию. - + Blank blips: Пустые сигналы: - + If true, the game will play a blip sound even when a space is 'being said'. Проигрывать сигналы даже для пробелов. - + Casing Заседание - + This server supports case alerts. Этот сервер поддерживает объявление заседания. - + This server does not support case alerts. Этот сервер не поддерживает объявление заседания. - + Pretty self-explanatory. Весьма доходчиво. - + Casing: Новое дело: - + If checked, you will get alerts about case announcements. При заведении дела вы получите уведомление. - + Defense: Защита: - + If checked, you will get alerts about case announcements if a defense spot is open. При заведении дела, в котором нужна сторона защиты, вы получите уведомление. - + Prosecution: Обвинение: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. При заведении дела, в котором нужна сторона обвинения, вы получите уведомление. - + Judge: Судья: - + If checked, you will get alerts about case announcements if the judge spot is open. При заведении дела, в котором нужен судья, вы получите уведомление. - + Juror: Присяжный: - + If checked, you will get alerts about case announcements if a juror spot is open. При заведении дела, в котором нужны присяжные заседатели, вы получите уведомление. - + Stenographer: Стенографист: - + If checked, you will get alerts about case announcements if a stenographer spot is open. При заведении дела, в котором нужна стенография, вы получите уведомление. - + CM: ПД: - + If checked, you will appear amongst the potential CMs on the server. Отметьте, если вы хотите состоять в числе производителей дел. - + Hosting cases: ПД акт.: - + If you're a CM, enter what cases you are willing to host. Будучи производителем дела (ПД), вы можете войти в зону и заниматься её оркестровкой. @@ -409,8 +419,13 @@ Reason: Generating chars: +%1/%2 + + + + Generating chars: - Генерация персонажей: + Генерация персонажей: @@ -548,7 +563,7 @@ Cases you can load: %1 You were granted the Guard button. - Теперь у вас есть кнопка "Охрана". + Теперь у вас есть кнопка "Охрана". @@ -700,8 +715,9 @@ Cases you can load: %1 Lobby + Attorney Online 2 - Attorney Online 2 + Attorney Online 2 From c974ab01ca5f28b00fa88ae3b19abe481aee43a3 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 6 Aug 2019 20:29:04 +0200 Subject: [PATCH 145/175] add es and ru to options and translate a lot more strings from the courtroom --- src/aooptionsdialog.cpp | 2 ++ src/courtroom.cpp | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp index d68f6cb..539a822 100644 --- a/src/aooptionsdialog.cpp +++ b/src/aooptionsdialog.cpp @@ -176,7 +176,9 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_language_combobox->addItem(" - Default"); ui_language_combobox->addItem("en - English"); ui_language_combobox->addItem("de - German"); + ui_language_combobox->addItem("es - Spanish"); ui_language_combobox->addItem("jp - Japanese"); + ui_language_combobox->addItem("ru - Russian"); ui_gameplay_form->setWidget(10, QFormLayout::FieldRole, ui_language_combobox); // Here we start the callwords tab. diff --git a/src/courtroom.cpp b/src/courtroom.cpp index dc7f12c..54b1b2d 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -563,14 +563,14 @@ void Courtroom::set_widgets() ui_prosecution_bar->set_image("prosecutionbar" + QString::number(prosecution_bar_state) + ".png"); set_size_and_pos(ui_music_label, "music_label"); - ui_music_label->setText("Music"); + ui_music_label->setText(tr("Music")); set_size_and_pos(ui_sfx_label, "sfx_label"); - ui_sfx_label->setText("Sfx"); + ui_sfx_label->setText(tr("Sfx")); set_size_and_pos(ui_blip_label, "blip_label"); - ui_blip_label->setText("Blips"); + ui_blip_label->setText(tr("Blips")); set_size_and_pos(ui_log_limit_label, "log_limit_label"); - ui_log_limit_label->setText("Log limit"); + ui_log_limit_label->setText(tr("Log limit")); set_size_and_pos(ui_hold_it, "hold_it"); ui_hold_it->set_image("holdit.png"); @@ -580,7 +580,7 @@ void Courtroom::set_widgets() ui_take_that->set_image("takethat.png"); set_size_and_pos(ui_ooc_toggle, "ooc_toggle"); - ui_ooc_toggle->setText("Server"); + ui_ooc_toggle->setText(tr("Server")); set_size_and_pos(ui_witness_testimony, "witness_testimony"); ui_witness_testimony->set_image("witnesstestimony.png"); @@ -593,25 +593,25 @@ void Courtroom::set_widgets() ui_not_guilty->set_image("notguilty.png"); set_size_and_pos(ui_change_character, "change_character"); - ui_change_character->setText("Change character"); + ui_change_character->setText(tr("Change character")); set_size_and_pos(ui_reload_theme, "reload_theme"); - ui_reload_theme->setText("Reload theme"); + ui_reload_theme->setText(tr("Reload theme")); set_size_and_pos(ui_call_mod, "call_mod"); - ui_call_mod->setText("Call mod"); + ui_call_mod->setText(tr("Call mod")); set_size_and_pos(ui_settings, "settings"); - ui_settings->setText("Settings"); + ui_settings->setText(tr("Settings")); set_size_and_pos(ui_announce_casing, "casing_button"); - ui_announce_casing->setText("Casing"); + ui_announce_casing->setText(tr("Casing")); set_size_and_pos(ui_switch_area_music, "switch_area_music"); - ui_switch_area_music->setText("A/M"); + ui_switch_area_music->setText(tr("A/M")); set_size_and_pos(ui_pre, "pre"); - ui_pre->setText("Preanim"); + ui_pre->setText(tr("Preanim")); set_size_and_pos(ui_pre_non_interrupt, "pre_no_interrupt"); set_size_and_pos(ui_flip, "flip"); From ed657e867819b753dc9931e4aa999a54e476bf25 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 6 Aug 2019 20:31:00 +0200 Subject: [PATCH 146/175] line numbers + new strings --- resource/translations/ao_de.qm | Bin 22325 -> 22798 bytes resource/translations/ao_de.ts | 110 ++++++++++++++++++----------- resource/translations/ao_en.ts | 122 +++++++++++++++++++++++---------- resource/translations/ao_es.qm | Bin 23265 -> 23325 bytes resource/translations/ao_es.ts | 122 +++++++++++++++++++++++---------- resource/translations/ao_ja.ts | 122 +++++++++++++++++++++++---------- resource/translations/ao_ru.qm | Bin 21535 -> 21599 bytes resource/translations/ao_ru.ts | 122 +++++++++++++++++++++++---------- 8 files changed, 417 insertions(+), 181 deletions(-) diff --git a/resource/translations/ao_de.qm b/resource/translations/ao_de.qm index 884bd65fc6426bb63ccd90e4f0e36c0e9224fdc2..55893d74b5041525e2c6a57df96446e1d5c2c840 100644 GIT binary patch delta 1200 zcmYLHZA@EL7=G^Uz2$OSD4$`liDe@UXMhWZb(Db{9YPVXqjd-ga~*Um(iLpM5Y1pH zIswywcSJxEnZXbCW5}n#CPr9@66P{t(I1G$p+C%=#3g=&0ltF-f1JGMoSgGK&-=X3 z=vBr$#I%Jpi~~6$5cnlf^ahY}4|skAICvf?{vOb`fs;ppgxlZ->VYIBxCKys0ensh zkSuN2!ZGmG&(QyA@UKn+`%)pWQ-J9@9#cgDmOSWsh$plHIg^_}fDtCi0~iwekk@sZ z0Hy6}xrl;R`k3?(1>;SCZa=JFKOiCnN*d|@&>tvW{SZhuwU5T&Gl|v5zx{-2lW>+?xaOfa(VKjxa>cwR5u1i}b&h>m-L@?&dmsvk{D- z#H|gaTimTQf8eNA{+)?z(Dm?n@6-Fe7XHLQ2f4Y<7hek?ofEuGag1Kh&Ki6Kj;mtEl~4v$7(014uL} zUtc1f@v+K}m+3yeSGi))K?VH-pU2Z80b_*R!A3nBUq?+zS;FC$i-F)J;fQ7mNDCB- zBrlLXBU~`)i9A?%ZGoaBjtQ+1^!MpYLYH|1@Shg0++88DR$=_3TzZ!$ud^``mg~MP z+;22OyYKAgH>Bl)?^h!e37)}jW* zyFZ5zYK!bw(qWX4~TEw_IVnZUlZ1thKWgyzC zHY8<`MaR|FQX09mroP5dK%Yq1s=J{#tAFaBq9B&|b#X@kpK8Cw4vLiVZTS~P3~SDp z{kWJ+L%aXd52QZ4*?;qkOq#@yhGi-Lheb`G;Uoo9t4V0~l1ZVO>_-9Jby4FoQk?al zX*%bl34Kwn<@T}Gl;LjflY|HnnQ)>4)$j-f^EeO=U{f1m4Vc^x1YZGbDFs5TV14u!(f}caKADoH(Cz~ve=QL99zsbMFh2?+ z-%Xr)%vBoz`wf^}#P5@Xl&(p@I}vI1yNIV?3IpuJuvJk(Xe?|U<%HSTQby+p8@7#J z1uWNUUIc~46mw!;4Pfr!#3vVk>0?}OSuPMMas}blgeSN&l|;X88F$5&09Xs<6`YRq zm6JI$pExKV=5)@N{4aM85a7#?8&yE+Iz^npM3aA4WZuyMT-y|;k0^T1lM^OSmacmW zNITexmLNd=l${k@N%-bqR37Um(LsxqO#^gq znN$u%o1li-;o)zY2P7Pn+j)aE=D=oPM!y)Z?FORq#Y`iaxjH~Rk{UtH7KumuC=1d( zvC5BXl75Kw=@Wq0W3hQ~h(uz8Z1N>(c%*vX)=3+! zRgLFRG^V>GLk!U@KPILBrFVrSl_Wc8hJBJtRYp65bp1jDN%N69O*UY~dg((3&1$$S z4St?U?Jh~bb&NdnP%qtG3dDX>H^1g76E*7IZA+1e8C%qEMuRA%9U8w0BhAsMi7Xxf z7F27ZL*vLayXHQ(A6OEs`E~|k+iuFqEO1ris8|0- zk~zD=Yx3bLT1Bgt=PA+AIofH_SrkyGHn^f1NG{S^|3}dGq&7E^0&AY7t?OMt>|f+t rY(DQeC;M+$?e-OR1So9 diff --git a/resource/translations/ao_de.ts b/resource/translations/ao_de.ts index 3d01f27..f77953a 100644 --- a/resource/translations/ao_de.ts +++ b/resource/translations/ao_de.ts @@ -226,177 +226,177 @@ Grund: - + Callwords Alarmwörter - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> <html><head/><body>Gib so viele Alarmwörter ein wie du möchtest. Groß/Kleinschreibung ist egal. Für jede Wort nur eine Zeile!<br>Bitte keine leere Zeile am Ende -- du bekommst sonst bei jeder Nachricht einen Alarm.</body></html> - + Audio Audio - + Audio device: Audiogerät: - + Sets the audio device for all sounds. Setzt das Audiogerät für all Geräusche. - + Music: Musik: - + Sets the music's default volume. Setzt die Musiklautstärke. - + SFX: SFX: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. Setzt die Lautstärke der Soundeffekte wie Einsprüche und die Geräusche der Charaktere. - + Blips: Blips: - + Sets the volume of the blips, the talking sound effects. Setzt die Lautstärke der Blips, das ist das Geräusch das die Charaktere beim Reden machen. - + Blip rate: Bliprate: - + Sets the delay between playing the blip sounds. Setzt die Pause zwischen einzelnen Blips. - + Blank blips: Leere Blips: - + If true, the game will play a blip sound even when a space is 'being said'. Wenn angehakt wird das Spiel auch bei einem Leerzeichen einen Blip machen. - + Casing Fälle - + This server supports case alerts. Dieser Server unterstützt Fallalarme. - + This server does not support case alerts. Dieser Server unterstützt Fallalarme nicht. - + Pretty self-explanatory. Eigentlich selbsterklärend. - + Casing: Fälle: - + If checked, you will get alerts about case announcements. Wenn angehakt wirst du benachrichtigt wenn ein Fall angekündigt wird. - + Defense: Verteidigung: - + If checked, you will get alerts about case announcements if a defense spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Verteidiger benötigt wird. - + Prosecution: Kläger: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Kläger benötigt wird. - + Judge: Richter: - + If checked, you will get alerts about case announcements if the judge spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Richter benötigt wird. - + Juror: Jury: - + If checked, you will get alerts about case announcements if a juror spot is open. Wenn angehakt wirst du benachrichtigt wenn eine Jury benötigt wird. - + Stenographer: Stenograph: - + If checked, you will get alerts about case announcements if a stenographer spot is open. Wenn angehakt wirst du benachrichtigt wenn ein Stenograph benötigt wird. - + CM: CM: - + If checked, you will appear amongst the potential CMs on the server. Wenn angehakt wirst du als potentielle CM angezeigt. - + Hosting cases: Fallleitung: - + If you're a CM, enter what cases you are willing to host. Wenn du CM bist, gib ein welche Fälle du spielen möchtest. @@ -478,6 +478,7 @@ Grund: + Casing Fall @@ -522,33 +523,60 @@ Grund: Gelb + Music - Musik + Musik + Sfx - Sfx + Sfx + Blips - Blips + Blips + + Log limit + + + + Server Server + Change character - Charakter ändern + Charakter ändern + Reload theme - Aussehen neu laden + Aussehen neu laden + Call mod - Moderator rufen + Moderator rufen + + + + Settings + Einstellungen + + + + A/M + + + + + Preanim + diff --git a/resource/translations/ao_en.ts b/resource/translations/ao_en.ts index 72f0827..9b193a3 100644 --- a/resource/translations/ao_en.ts +++ b/resource/translations/ao_en.ts @@ -205,177 +205,177 @@ Reason: - + Callwords - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - + Audio - + Audio device: - + Sets the audio device for all sounds. - + Music: - + Sets the music's default volume. - + SFX: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - + Blips: - + Sets the volume of the blips, the talking sound effects. - + Blip rate: - + Sets the delay between playing the blip sounds. - + Blank blips: - + If true, the game will play a blip sound even when a space is 'being said'. - + Casing - + This server supports case alerts. - + This server does not support case alerts. - + Pretty self-explanatory. - + Casing: - + If checked, you will get alerts about case announcements. - + Defense: - + If checked, you will get alerts about case announcements if a defense spot is open. - + Prosecution: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. - + Judge: - + If checked, you will get alerts about case announcements if the judge spot is open. - + Juror: - + If checked, you will get alerts about case announcements if a juror spot is open. - + Stenographer: - + If checked, you will get alerts about case announcements if a stenographer spot is open. - + CM: - + If checked, you will appear amongst the potential CMs on the server. - + Hosting cases: - + If you're a CM, enter what cases you are willing to host. @@ -446,6 +446,7 @@ Reason: + Casing @@ -516,6 +517,7 @@ Cases you can load: %1 + Server @@ -545,6 +547,56 @@ Cases you can load: %1 % offset + + + Music + + + + + Sfx + + + + + Blips + + + + + Log limit + + + + + Change character + + + + + Reload theme + + + + + Call mod + + + + + Settings + + + + + A/M + + + + + Preanim + + You were granted the Guard button. diff --git a/resource/translations/ao_es.qm b/resource/translations/ao_es.qm index e6ceb741286ceeaa50225438b0adc1d603874332..17197ad58b26bee22c07c5d0981c21a04ef7fa41 100644 GIT binary patch delta 441 zcmaF3m2vJi#t9;f786DFBUdr77I-r-n4f20t=`4JprXdW!L*No!TTG7EVm*9Ls%Gt z$FBbj3L+pp83=DR6C(hM3 zJj%$CKaqjKQk#+E@GJ%fp+d&I#yp^+lC}X_g71lq- z=?o0^JZypa_ZS#_y4W(k{xL8Z|7L5xqsPEtSj)Ej9#GugfnDBOj)B4D)#OknJuVw< zj&K8@Gd$l;?qw2Zd@^|{Q=U+mAlDquMg|72hg>UXEdZ*`n5@dIuK0p`)kP)-28$2e zXJWO0KDoku=>yPYh9f*u{|tbt%O~eDOS11~EC#CCGr5&no-t2@@>}O^k$XZE{%1F^8GZwy053a$&e}K`s_Ii1zoD5aohI zDdiALl*65Jh`2zxa_dexe{%Koy#0Ef_gUPf=N$^hl0}I#w+uktR|n)>Ks^)!QcciE zhd|vi5_LwvlY;8d4-g#&=UfM1fB#pH53UKp Establece el idioma si no desea utilizar el idioma de su sistema. - + Callwords - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> <html><head/><body>Ingrese tantas palabras de llamada como desee.<br>Esto no distingue entre mayúsculas y minúsculas. ¡Asegúrese de dejar cada palabra en su propia línea!<br>No deje una línea con un espacio al final; recibirá una alerta cada vez que alguien use un espacio en sus mensajes.</body></html> - + Audio Audio - + Audio device: Dispositivo: - + Sets the audio device for all sounds. Establece el dispositivo de audio. - + Music: Música: - + Sets the music's default volume. Establece el volumen predeterminado de la música. - + SFX: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. Establece el volumen predeterminado de SFX. Las interjecciones y los efectos de sonido reales cuentan como 'SFX'. - + Blips: - + Sets the volume of the blips, the talking sound effects. Establece el volumen de los blips, el sonido al hablar. - + Blip rate: Tasa de blips: - + Sets the delay between playing the blip sounds. Establece el retraso entre la reproducción de los sonidos blip. - + Blank blips: Blips en blanco: - + If true, the game will play a blip sound even when a space is 'being said'. Si está marcada, el juego reproducirá un sonido blip incluso cuando se 'dice' un espacio. - + Casing - + This server supports case alerts. Este servidor admite alertas de casos. - + This server does not support case alerts. Este servidor no admite alertas de casos. - + Pretty self-explanatory. Bastante autoexplicativo. - + Casing: Caso: - + If checked, you will get alerts about case announcements. Si está marcado, recibirá anuncios de casos. - + Defense: Defensa: - + If checked, you will get alerts about case announcements if a defense spot is open. Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de defensa abierto. - + Prosecution: Fiscal: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. Si está marcada, recibirá alertas sobre anuncios de casos si hay un puesto de fiscal abierto. - + Judge: Juez: - + If checked, you will get alerts about case announcements if the judge spot is open. Si está marcado, recibirá alertas sobre anuncios de casos si el puesto de juez está abierto. - + Juror: Jurado: - + If checked, you will get alerts about case announcements if a juror spot is open. Si está marcado, recibirá alertas sobre anuncios de casos si hay un puesto de jurado abierto. - + Stenographer: Taquígrafo: - + If checked, you will get alerts about case announcements if a stenographer spot is open. Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de taquígrafo abierto. - + CM: - + If checked, you will appear amongst the potential CMs on the server. Si está marcado, aparecerá entre los posibles CM en el servidor. - + Hosting cases: - + If you're a CM, enter what cases you are willing to host. Si eres un CM, ingresa qué casos estás dispuesto a organizar. @@ -460,6 +460,7 @@ Razón: + Casing @@ -523,6 +524,56 @@ Razón: % offset % desplazamiento + + + Music + + + + + Sfx + + + + + Blips + + + + + Log limit + + + + + Change character + + + + + Reload theme + + + + + Call mod + + + + + Settings + Ajustes + + + + A/M + + + + + Preanim + + Back to Lobby @@ -693,6 +744,7 @@ Casos que puede cargar: + Server diff --git a/resource/translations/ao_ja.ts b/resource/translations/ao_ja.ts index 9535678..66ff0c9 100644 --- a/resource/translations/ao_ja.ts +++ b/resource/translations/ao_ja.ts @@ -205,177 +205,177 @@ Reason: - + Callwords - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> - + Audio - + Audio device: - + Sets the audio device for all sounds. - + Music: 音楽: - + Sets the music's default volume. - + SFX: 効果音: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. - + Blips: ブリップ: - + Sets the volume of the blips, the talking sound effects. - + Blip rate: - + Sets the delay between playing the blip sounds. - + Blank blips: - + If true, the game will play a blip sound even when a space is 'being said'. - + Casing - + This server supports case alerts. - + This server does not support case alerts. - + Pretty self-explanatory. - + Casing: - + If checked, you will get alerts about case announcements. - + Defense: - + If checked, you will get alerts about case announcements if a defense spot is open. - + Prosecution: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. - + Judge: - + If checked, you will get alerts about case announcements if the judge spot is open. - + Juror: - + If checked, you will get alerts about case announcements if a juror spot is open. - + Stenographer: - + If checked, you will get alerts about case announcements if a stenographer spot is open. - + CM: - + If checked, you will appear amongst the potential CMs on the server. - + Hosting cases: - + If you're a CM, enter what cases you are willing to host. @@ -446,6 +446,7 @@ Reason: + Casing @@ -516,6 +517,7 @@ Cases you can load: %1 + Server @@ -545,6 +547,56 @@ Cases you can load: %1 % offset + + + Music + + + + + Sfx + + + + + Blips + + + + + Log limit + + + + + Change character + + + + + Reload theme + + + + + Call mod + + + + + Settings + + + + + A/M + + + + + Preanim + + You were granted the Guard button. diff --git a/resource/translations/ao_ru.qm b/resource/translations/ao_ru.qm index 89df0b279e87367a2160a8c92c5c10e6978559a6..a489c320b3afda0cd99b5c0b0d268cc7abe281bf 100644 GIT binary patch delta 458 zcmWkqT}V>_7(L(J-R-(5w?Sj5=(s*;{%*QE#}u~IG%URqM1i1hLqwX1?IC(`{XjJg z*GCVIpr9lTdT9lbAc0UIWoAVZ&U!F<^&#j*)X%5GIUK(8o%3j(e$CU&F`CMHV^#KX zI4_?8LZxtCdkdJe(3K_N~=Nng$Zo~x8hCxO-!O@!|W{-v3_`#|3XdTMt_LO*+HfYv!d)k=@W)8wQ7 zJSU{Djz0-m;Xf3h6nm9;^t^L7G$KJc?cDel(0yMUJ-r7s{nT!3HUSMS+OsXuqbu5W zTL`c|AMv+W0R+Tu zNgpfzy|4r{XG&((6M(i>^6h~%j=Q+vsG$No)f(#MM%8EDHau;^vW;Q{?i_yDXq-CS k%2#eAyJT4F2`AJB%5&swPkuwKwYa{%mct<PZmvK@bsfD=P5Mi_0FW zp*ep-^T3g>2MB*?|kR{UZa&Yny;eqv>s{f zDZqBG8}Qe_HuV|sEJ78Vz_l-^w|f9{F8!#%vja25qAv#X(-X!A=u0vWE~CGY1&m<& zqqogLY9h^|PU?0Ba86J>83)?KbU!%9_@3sUp8>brv}#5h-Cec-tv*e;J znPt*_B6pcA$Yb(SSnA@6ao$$+4|C9s3Jc?)dqVn@0BJv89=^(qU~joRtTMIiT8KdA1b;L|zkucfNE-bA|?Zy|0@0 j8UGqR)vo_v%~hwxJ9*;3s2sDl(9}l8nh0z}4R_r?mFIv; diff --git a/resource/translations/ao_ru.ts b/resource/translations/ao_ru.ts index 75382ce..010beb7 100644 --- a/resource/translations/ao_ru.ts +++ b/resource/translations/ao_ru.ts @@ -213,177 +213,177 @@ Reason: - + Callwords Позывные - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> <html><head/><body>Введите на отдельных строках свои позывные, при указании которых в сообщениях будет подан звуковой сигнал.</body></html> - + Audio Аудио - + Audio device: Устройство воспроизведения: - + Sets the audio device for all sounds. Куда вещать звук из игры. - + Music: Музыка: - + Sets the music's default volume. Громкость музыки по умолчанию. - + SFX: Звук. эффекты: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. Громкость звуковых эффектов по умолчанию. - + Blips: Сигналы: - + Sets the volume of the blips, the talking sound effects. Громкость сигналов, заменяющих голос, по умолчанию. - + Blip rate: Пер. сигналов: - + Sets the delay between playing the blip sounds. Период между сигналами, заменяющими голос, по умолчанию. - + Blank blips: Пустые сигналы: - + If true, the game will play a blip sound even when a space is 'being said'. Проигрывать сигналы даже для пробелов. - + Casing Заседание - + This server supports case alerts. Этот сервер поддерживает объявление заседания. - + This server does not support case alerts. Этот сервер не поддерживает объявление заседания. - + Pretty self-explanatory. Весьма доходчиво. - + Casing: Новое дело: - + If checked, you will get alerts about case announcements. При заведении дела вы получите уведомление. - + Defense: Защита: - + If checked, you will get alerts about case announcements if a defense spot is open. При заведении дела, в котором нужна сторона защиты, вы получите уведомление. - + Prosecution: Обвинение: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. При заведении дела, в котором нужна сторона обвинения, вы получите уведомление. - + Judge: Судья: - + If checked, you will get alerts about case announcements if the judge spot is open. При заведении дела, в котором нужен судья, вы получите уведомление. - + Juror: Присяжный: - + If checked, you will get alerts about case announcements if a juror spot is open. При заведении дела, в котором нужны присяжные заседатели, вы получите уведомление. - + Stenographer: Стенографист: - + If checked, you will get alerts about case announcements if a stenographer spot is open. При заведении дела, в котором нужна стенография, вы получите уведомление. - + CM: ПД: - + If checked, you will appear amongst the potential CMs on the server. Отметьте, если вы хотите состоять в числе производителей дел. - + Hosting cases: ПД акт.: - + If you're a CM, enter what cases you are willing to host. Будучи производителем дела (ПД), вы можете войти в зону и заниматься её оркестровкой. @@ -460,6 +460,7 @@ Reason: + Casing Дело @@ -531,6 +532,7 @@ Cases you can load: %1 Дело под кодовым названием "%1" готово! + Server Сервер @@ -560,6 +562,56 @@ Cases you can load: %1 % offset % сдвига + + + Music + + + + + Sfx + + + + + Blips + + + + + Log limit + + + + + Change character + + + + + Reload theme + + + + + Call mod + + + + + Settings + Настройки + + + + A/M + + + + + Preanim + + You were granted the Guard button. From 5ec499dafb9c2591cbab5fd532d268804f9cce52 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 6 Aug 2019 20:39:02 +0200 Subject: [PATCH 147/175] add spanish and russian to ressource --- resource/translations/ao_de.ts | 12 ++++++------ resources.qrc | 2 ++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/resource/translations/ao_de.ts b/resource/translations/ao_de.ts index f77953a..3c0d019 100644 --- a/resource/translations/ao_de.ts +++ b/resource/translations/ao_de.ts @@ -218,12 +218,12 @@ Grund: Language: - + Sprache: Sets the language if you don't want to use your system language. - + Setzte die Sprache falls du nicht die Systemsprache verwenden möchtest. @@ -540,7 +540,7 @@ Grund: Log limit - + Verlaufsgrenze @@ -566,17 +566,17 @@ Grund: Settings - Einstellungen + Einstellungen A/M - + A/M Preanim - + Voranimation diff --git a/resources.qrc b/resources.qrc index 81f2d8f..0ef03e5 100644 --- a/resources.qrc +++ b/resources.qrc @@ -5,5 +5,7 @@ resource/translations/ao_de.qm resource/translations/ao_en.qm resource/translations/ao_ja.qm + resource/translations/ao_es.qm + resource/translations/ao_ru.qm From 5180bb4f215cce2b334b2833ebac38861cf6c891 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 6 Aug 2019 21:09:03 +0200 Subject: [PATCH 148/175] its called jp not ja --- Attorney_Online.pro | 2 +- resource/translations/{ao_ja.qm => ao_jp.qm} | Bin resource/translations/{ao_ja.ts => ao_jp.ts} | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename resource/translations/{ao_ja.qm => ao_jp.qm} (100%) rename resource/translations/{ao_ja.ts => ao_jp.ts} (99%) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index 52277b3..b747619 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -42,7 +42,7 @@ CONFIG += c++14 RESOURCES += resources.qrc TRANSLATIONS = resource/translations/ao_en.ts \ - resource/translations/ao_ja.ts \ + resource/translations/ao_jp.ts \ resource/translations/ao_de.ts \ resource/translations/ao_ru.ts \ resource/translations/ao_es.ts diff --git a/resource/translations/ao_ja.qm b/resource/translations/ao_jp.qm similarity index 100% rename from resource/translations/ao_ja.qm rename to resource/translations/ao_jp.qm diff --git a/resource/translations/ao_ja.ts b/resource/translations/ao_jp.ts similarity index 99% rename from resource/translations/ao_ja.ts rename to resource/translations/ao_jp.ts index 66ff0c9..f80fb1a 100644 --- a/resource/translations/ao_ja.ts +++ b/resource/translations/ao_jp.ts @@ -1,6 +1,6 @@ - + AOApplication From 41dd29fbb0b5fdac3ca9169558b46972ae9ee5f2 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 6 Aug 2019 21:11:21 +0200 Subject: [PATCH 149/175] ja_JP to be precise --- resource/translations/ao_de.qm | Bin 22798 -> 23308 bytes resource/translations/ao_jp.ts | 2 +- resources.qrc | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resource/translations/ao_de.qm b/resource/translations/ao_de.qm index 55893d74b5041525e2c6a57df96446e1d5c2c840..8ecf7fd35f7e816e7c924768e40cdde6b5d5d3ff 100644 GIT binary patch delta 1514 zcmY*Y3rtg282;|UrGWxjqGbZ!|_H_eE;F*6f3b>e-|0ejgr+~;65ZJT8+(v|Y8Gxb)B(zYUKpV17y#R82XCm9=0!&X~ zZZ4yOn@6yy1eQ8Vd@UcAlN$-wp|IyMHEO}aS~^ep93_uF1g3|hcDDtXxP0f0=(6d* zF@j?!ea&Em3wr?nCyc$;4y1aR<%tc1&zT+DscrrN=Ab2m+TUlo%Lae|f9ATGaQr&v zm&><^=55wTDJ5BMvW5*r!%xM=bUgrK4k{%~m}kyH_EdWfAOy1AH!cIdXV{;64^Ubj z`$s43BZ}B(CJ``qtEL$eD1AUx{7DeN92>zxtLpM@QaDjo4c^WqmDg~&K^Fn(EpBsL zEZ}vKYZN+2jDAkhET#N9t||Ld8oP>X+CK;5;2$^q2k}wdSE*WH#vu35C;^6c#fJ^^ zBqs9aeUulmgP-5Fi&XFB7o7H`dAoS4Y8KVE@=G?}0A4@CuPJZ>Y&O4lYZJ|JiEn8+ zPdLaQy|5jal*4~v3Iqx}_`eb=NbDSSo`d8uN2_f)LqPmK^@cv0*I1+e=oXz%U!lI2 zk^m2qdo7btSs>KgYu`W7q6`$G20RAnKA&nYN?vQey(|465tPqlffY=Sv%>t6pFd*IiDS#%Al>Q9jNP3M|OnD8EQSR0HHA_wvysnnS5aWej z*B-^vi#q8&cF05pL%ow$5rGL;yi?+*(N(PXE-WF7#pijSX6U`dl#XC>wD+CEXUR&B zeRLK(5UufP)^h29rpo8~F0y!LnG(tcc@AkO71K?VRKu7bsjc~rctn+HxAd2jpwPCz zO8d!?+Kx>FKwO3SIE94ZV-4xQfB|3zQYoKTuZmgjt zLyvOUhVlP3^jJ*wmeJ3pw9gJS{2R3zuHno|!vAzt9Ab!aG%7efy+C%m^zJ3He%U|G z^|rC8B3Mv3U0rTqX6jNo zFEHZAE|5r|YmuWGY(;QHfP@nqOQM{DvldcI7n@_mqNT>KKE_|4=lgs=KVR?fr>>82 z_b~PT&VC?U0(`Cj`R9PdIpBp};Hfh}!B2p(9$e$sK>Q7GUFAT69NZ+xz63ry5!k6; zx4C`bkL;uP5%8x5fhTuEV21(o5JHqXAkPAWhw214kUh8tY{-CF{|1mA-wsR50ZOP} zw|P~t)>2@?GOYcTfME;l*A}Ue423TGzw1vFEqn^3nBlr$1)|a$?nF6LgBYQ#fo=~o z!e}et`-mxZl>)mvnAa2CfN2X;UqfYW6HL2x54GjTj2)N<{C$}z3)v^mFmvNGfWDel zHx>hNE>>4TWBAC}=z;sdwl~?5MJvEXu_qpOQv1i*(?KmApV94*+0K# z690D27I+nqUgqBEiUX8ax${B~VQJtR6|YfzE!RwJVQb}@+p_#=;vJ7aXoBn9^&}0j zC#*4q4Rsnkyyau^56|PD?`k3)R``NT8>r6#zC`v6pYk-(d{15s7Aa|NyHoQXkkIDC!5wIMa+>x^i>@dqKrm4@kt@6)j z=zmI^{GQ1`V2q23%}Jp^MzG?=U+7_NUrydQHR4BGWvaQg)Op;Dz=2Dze@`x_lo=>EX);4;{ebRuzN(0)Z z+j&Gx*Dc-s-AT$M)<_QnIYO;aMjtE(o^~rcZ?N=M6OW(C=5-i!KtGCDkQ{R%ToLx;5HVzjX}LW)!MhxHLd_WTd8Q_8=jJraOktF@I}% z&dmcMBbv(}(b?3XnZ83ds9LjjnMkrdT9&1qPL{Mjrea#MFl~Ibn_di3sX&O6&cilh7||zciL-O}})A%x- ccP=W3^FD|v7QCl-9^<_R(+So)n;aSXAH8Tsr~m)} diff --git a/resource/translations/ao_jp.ts b/resource/translations/ao_jp.ts index f80fb1a..66ff0c9 100644 --- a/resource/translations/ao_jp.ts +++ b/resource/translations/ao_jp.ts @@ -1,6 +1,6 @@ - + AOApplication diff --git a/resources.qrc b/resources.qrc index 0ef03e5..b8f62d1 100644 --- a/resources.qrc +++ b/resources.qrc @@ -4,7 +4,7 @@ resource/logo.png resource/translations/ao_de.qm resource/translations/ao_en.qm - resource/translations/ao_ja.qm + resource/translations/ao_jp.qm resource/translations/ao_es.qm resource/translations/ao_ru.qm From dd325de31e3502e20a5134a5358961d4e0f367f9 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 6 Aug 2019 21:22:49 +0200 Subject: [PATCH 150/175] use languages own name --- src/aooptionsdialog.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp index 539a822..15a6e35 100644 --- a/src/aooptionsdialog.cpp +++ b/src/aooptionsdialog.cpp @@ -175,10 +175,10 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_language_combobox = new QComboBox(ui_form_layout_widget); ui_language_combobox->addItem(" - Default"); ui_language_combobox->addItem("en - English"); - ui_language_combobox->addItem("de - German"); - ui_language_combobox->addItem("es - Spanish"); - ui_language_combobox->addItem("jp - Japanese"); - ui_language_combobox->addItem("ru - Russian"); + ui_language_combobox->addItem("de - Deutsch"); + ui_language_combobox->addItem("es - Español"); + ui_language_combobox->addItem("jp - 日本語"); + ui_language_combobox->addItem("ru - Русски"); ui_gameplay_form->setWidget(10, QFormLayout::FieldRole, ui_language_combobox); // Here we start the callwords tab. From 47eb36789e27440af3b86ebe6cb7f0f74ef53c8c Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 6 Aug 2019 21:25:33 +0200 Subject: [PATCH 151/175] numbered arguments for kick and ban torture --- src/packet_distribution.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index 2bd2693..b79ec30 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -639,7 +639,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) { if (courtroom_constructed && f_contents.size() >= 1) { - call_notice(tr("You have been kicked from the server.\nReason: ") + f_contents.at(0)); + call_notice(tr("You have been kicked from the server.\nReason: %1").arg(f_contents.at(0))); construct_lobby(); destruct_courtroom(); } @@ -648,7 +648,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) { if (courtroom_constructed && f_contents.size() >= 1) { - call_notice("You have been banned from the server.\nReason: " + f_contents.at(0)); + call_notice(tr("You have been banned from the server.\nReason: %1").arg(f_contents.at(0))); construct_lobby(); destruct_courtroom(); } @@ -656,7 +656,7 @@ void AOApplication::server_packet_received(AOPacket *p_packet) } else if (header == "BD") { - call_notice(tr("You are banned on this server.\nReason: ") + f_contents.at(0)); + call_notice(tr("You are banned on this server.\nReason: %1").arg(f_contents.at(0))); } else if (header == "ZZ") { From c6b949335ac5f4a2ab060e692e8022060a802960 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 6 Aug 2019 21:27:27 +0200 Subject: [PATCH 152/175] +1 on style --- src/main.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 6c15e6f..6c7b151 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,4 +1,3 @@ - #include "aoapplication.h" #include "datatypes.h" @@ -21,10 +20,10 @@ int main(int argc, char *argv[]) AOApplication main_app(argc, argv); - QSettings* configini = main_app.configini; + QSettings *configini = main_app.configini; - QString p_language = configini->value("language",QLocale::system().name()).toString(); - if (p_language==" " || p_language=="") + QString p_language = configini->value("language", QLocale::system().name()).toString(); + if (p_language == " " || p_language == "") p_language = QLocale::system().name(); QTranslator qtTranslator; @@ -34,7 +33,7 @@ int main(int argc, char *argv[]) QTranslator appTranslator; qDebug() << ":/resource/translations/ao_" + p_language; - appTranslator.load("ao_" + p_language,":/resource/translations/"); + appTranslator.load("ao_" + p_language, ":/resource/translations/"); main_app.installTranslator(&appTranslator); main_app.construct_lobby(); From f49757f9eb59b8a34a704a3bc7d791f928bf9c5e Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 6 Aug 2019 21:38:23 +0200 Subject: [PATCH 153/175] add numbered argument bans to other languages --- resource/translations/ao_de.qm | Bin 23308 -> 23500 bytes resource/translations/ao_de.ts | 25 +++++++++++++++++++--- resource/translations/ao_en.ts | 10 +++++++-- resource/translations/ao_es.qm | Bin 23325 -> 23447 bytes resource/translations/ao_es.ts | 30 ++++++++++++++++++++------ resource/translations/ao_jp.qm | Bin 1859 -> 2004 bytes resource/translations/ao_jp.ts | 18 ++++++++++------ resource/translations/ao_ru.qm | Bin 21599 -> 21968 bytes resource/translations/ao_ru.ts | 37 +++++++++++++++++++++++++-------- 9 files changed, 94 insertions(+), 26 deletions(-) diff --git a/resource/translations/ao_de.qm b/resource/translations/ao_de.qm index 8ecf7fd35f7e816e7c924768e40cdde6b5d5d3ff..6fd250decadf789e64aa740b969b06e29ee0a58d 100644 GIT binary patch delta 1457 zcmY*ZYfw~W7=F&#b9T=;yL(Owh@ikOhzQ2ALJ0243JM9hZYnor#0iE~S94JmGc{Jc zRDy%%W}=bzOVWUGu}~YRY$(ZU6d6hsn{=|Q92*hj0pnU0obz_LrVRlu%^^ zdUnt(0y8UBHe&(>9#a*36bLYFKARV$>fTKfO$<@pzn(!7#dEU)zXY@+xi?Ol0Nr|S zr_e%7?&rLkB@{o6tIPV70FC474os)>Z$2A;jr-o}k%4JV-0yJ`5bomcuOeh4mhz(- zsbk|HKlYqoszffSV1+r%g8?urp{-EI5*h2}mZlNZa3S@-~du9y* z%37h}#!W(WRA@hzO^#PY?xkUXX1U1c4Uoo%#n|&xNs?P)#!m8&s1)tnT{OgtL}xAe zoVpLRePj*k%neQoOELE0b(FsI-TGk2CPzF4pAC@OuF&2KQ-DfJqY9oNT)WY zv=W#)THA1uCFVZUUMPwo28L@d-8IoxwCjS0%)~&iE_n?BiS%sJS>kP^O|mYx=n!=# z>drE>j^ju8?4$wRPbWHP*gn)N4mU8iQ-66EZN-bh`o2e@z^Iw}$NF%hJVN#h8=`$* zAU|I~GXVJPoPN3TM*=i9Sbpj!6#?U$h$er)gLrR!@ z^%~jWH2FyZy0^0i~C2ngiNp)D6{&Zb~rYP=d^dGQfD0LUc5EGF~ zYhwdRa##5#X#g1QP%bGB8s-?K$7KVenn|bpb1LdE9BJ@I7T8)-d6Pz4h;&rIfD*X8 z9-UoABqj(?fvD+=_V((c*vJXqzchi&%ic2GeA_ec=6PimhQ-CJorV&p(`_gzcDtRW zhK1#2%M7a)I}IzH<*S|LCTWhdcx9Q}V(=yM`st4_3n`h^dru$rY(cYkjBNV9V5>_$ GZ2u4Zxp}|< delta 1368 zcmYLI3s4nh7(Kgpm%F?7v4Rl!q@0Psu*;PIq}&!-a=HOuAK{XdICzEddm9snUlT2!IaKb7Xe%L8Z-W@pdc44il5kWxy{XhBjRuEJDG60_;(W-*we)) zVJhHkF^scC@M5Z%S+G9f0YSRH-yl z$u7xbT)_LKQdRP|B(zYf+A#(23Gc(v!=>+I-Bw^?k90Rw18faa&tfw3Ymx`mv18jL zdGMx8;tDyc_5=$?%FgXfXs?iG)^DW3?eeU{{m7(Q&NfVD;cWTsRhNM=N91KQ3IH)# z-ny=e4W5>3YIr}YNB-(0^NviB&xQE`X^rwzcf@>plHxTzpM{-4Ub!i~!07E>B^_iE zTIBUbC(p+hdfkel649;3fY_lN*!#xWS2>)a0mjl*bsV-YjqSdSAK@}~#2*Fx%Z!g= z9|LN$;#f*$!nZ1Mg|j#t9m)iq|KqxpjIeSbxmt0rOdiVwx0MgunNT~Rln!Kpqy<9JqzGj}+s!wt`Gd?wL%@)UkqZ+ko&lq6PwB?DZl;&5h zM&+=iEYbFE*+Ir-T62U8aFl3QW>7*~w|4V}FB=ck9{Nj^-e?M$TLdJ`HPv1aIo*os zY*q*vXPPeFcW@gHng{lVG2ak#)KU@{cE%htdK|5AuQaD+?PO=u&4&f9VaS|5j1Dqi z-+PpvKd|VoJRrzusg@=H#)Xzk8@UyUIhHF=hXMmPTAo?#l=>ZO|A1cZ`yT7a40=!P z{>9WlYtc_6Hay3=wregGhPB~Uevb;YHm>gG{tr1}J@zRN;^tdBejyH6Z+(7@(u$3` zDB6Jd>$-Q$95U+BL)Vwnn!Eax7i;?RT0L(P_doh0z3S{RTJ)aYR9DLeqVzLkJApx) z^ozO+c%?vZ&mBhskLb@#lYyPtk$}Z~@=*ZKy^JwUNwUKz%=VnO1b8aU@tX3YeJ{Sj no~!0y&u2z|&pFF3A?Lq You have been kicked from the server. -Reason: +Reason: %1 Du wurdest von diesem Server geschmissen. -Grund: +Grund: %1 + + + + You have been banned from the server. +Reason: %1 + Du wurdest von diesem Server verbannt. +Grund: %1 You are banned on this server. +Reason: %1 + Du bist von diesem Server verbannt. +Grund: %1 + + + You have been kicked from the server. Reason: - Du wurdest von diesem Server verbannt. + Du wurdest von diesem Server geschmissen. +Grund: + + + You are banned on this server. +Reason: + Du wurdest von diesem Server verbannt. Grund: diff --git a/resource/translations/ao_en.ts b/resource/translations/ao_en.ts index 9b193a3..b917a41 100644 --- a/resource/translations/ao_en.ts +++ b/resource/translations/ao_en.ts @@ -64,13 +64,19 @@ Have a nice day. You have been kicked from the server. -Reason: +Reason: %1 + + + + + You have been banned from the server. +Reason: %1 You are banned on this server. -Reason: +Reason: %1 diff --git a/resource/translations/ao_es.qm b/resource/translations/ao_es.qm index 17197ad58b26bee22c07c5d0981c21a04ef7fa41..214af27167cecfb2f59a07289dc6dd0d9ff55780 100644 GIT binary patch delta 1273 zcmaJ=YfKbp6g@M{?9R--c&u(f#V!=&VPO#{&jpk>tXq`FS^`E44W((Jir7{fR;r+4 zgW{HgsAwClLSj)-%flcBvu#1!0vc1H+XqcaY-3C`)|OW(`6v?HaOcAAaonJ&T1e$8hlzf@Z$I)=4rvdnMrw3;H!Fp z=Zhh*{eWo;Rw(p9-T=~i=K*Ion2v6x`r<{*n}+!y<%Q3{+`X6h{E=Tnu{F99g^$hv z@u{e3HUoYmXnlPMa5Ljf8^y?l{k{WuPLC1)Ibdl!p6J_vgkVM}Zv>*67-6s#aP4Hu zYRZ6^5N2C=1K~%^;d*K$hh-N|x62Qc3(V(z5VP;;%7q&UZA>23mI9aq;G z1Sr5A5iXHbjhs#X8WmP@E$P>Q>`|`eR4T=f7cne~`#MGqB!+Rn21|ffE%$VX16Xo{ zUv|EpVt0P|hxvr-dDBVa@!riBIVAy7Gym$|yFf%Ezbo6i9bhZ?WBXgk)2IBWgH#xl z#NRe7Aur?jna~olW~XdJIT4$l$VxNjfUs9&dnTySkUrU22c5@v$XCXA0?9e@f^piR zkV^TOmc9oT$R~{bfbPEhkC;CJVN8hK`7&9sOGwbrd2Ewlu^JkH42!TkJ%So25#Adk z0&zk(=s|?(X5nbo9H9O{=$QPOIvy0dKgpoH<0AKx3n1Gs^0^MO>a6&}m+NQ{QA|EU z`QF{4=};+I;V0H}4`?@h#6H~!Sv4-&=f9!>+Qcs|_mJ}WqIJ5IJa^5P^s)5A;Hy&B zEG0N4NL9%jNr5WqxJX`SW=id?r+}nUsVCG77(SQoWs_1~1JdMAT54=odZyz@+6YBJ zaW$}ZqoQMkrRB_5+$s#9iCq<=kAi5KZz?_J3^eeM%E-5=ai1xxGI~uMNnWSyV=8D8 z-$jh_RsPW4PsE~1V=e<$C9Cc<(H1A$Rrh8*fo1QgW>sD!X^q-#jZ5@qAo{c>_&@_$F|0{lxK{3>rt5qM{m@r49N_?#pVN$L%z%EKW~?-hu5Tde zZV9rzVM*y~;ZkJGCfoN?jv77)5f<8$(c^D3Dps*RAvTRnXRA_NusI~HEnaE-Z=iX&ps`dJxl$vO_t__j5y#4|#7fnzA delta 1179 zcmYL|eNYs27{|Z6?B4C}?d^i1q#(?lDFt>MoCw_^0weEqgE2rj;0)$WoHZC(X;_?y z7B3A6JIPC;PLmbPm@j7~=)g1*7FeLbI3?a#STK|hGdX4=&_n#uA3M)H&$GYh_kBLk z^K1H=Y5R&f?C*{R(j>r7170`}#J&hl`x3C(z@4rD)(?SCiv~87E!x};@ULb9F@xau zbpcPVg}`vYpO9TC{l$aMsa((T#9kI7qe!TPw+T+YKn1 zJ_*F%LS>T^cuGU-EB(MyUz|KfK626bvlj>%$F-;DfaNdazUdgS>03tF)c`yj&Ip%V zfhA>3X=N#3zrvJ7*8`3i=5Q?u$!TUjaVC<$Or~%9J*r#5jAW5r6~g@4?}Zz-cGjqE z10rv;rYh>lcaRP1oC4OF+2X&P09VNFdDua5JNx#ES|Sy~)_hY5q#j|r&Q<{WHEiD~ z3HGgGe;@vs$Q7}Fd&oEc#?Dwp;5n;LyvauAx_t7_1OUv?qRoBFr@!fto6yE{*#W(P zSkAqB+5$-Txklj}AqwR*{Z2aQ;+oShQ70wbphE$Y`nf+MB)TA#d+@p!SXRXco~i{* zH~F9=TPd#cS;y(z>LkA4qAv*?<%@kbQ{6hg{hX?D&Hg*F6NA>?W9s$A?A@0orLLVn2s1%P27xJz3K>A%_zdJpK6wL|; zhN*x!B-E{>f@ybzmh3q|sTMlM?@+!#xbSHP35^o@TrZ8rB|h_g5_KSo$&K{i>T)sb z0~ZiACDw9NL~KIroBxrPZ@u{4`A#A^EzY=Tv`c~{QykTg*ehkvQr;&)a_>uip0?Ic zIx5mkGk%fUTTf6&B~qu&30P~S8#zSAd_Wri)t`iD(!&6bP=*`Ac2ocflZK9KED4)7 zTrCQt3q}mrr!BO!z4FRAE7jX0$L=M;YuaUdR6G$*lP@y6iO}StjlJZSZ?|{T4jebC z&Qc&$Z*1Wb0A00lG6tBv%CSYTp>Sy0Z z&&RGt)YQ{#iq+JGXY|B?>N(Xxh$q#77%vdCQ@yS_Y1ue+*cDHL?-KXCUTq>j#q&9r zqSF#(e~mRHO2UFT9ettN7DK2uBnM~>hBHjImLzBYpR{NvWQ%7=t`R+T%l*xsf!M3& Fe*yn$KvDnz diff --git a/resource/translations/ao_es.ts b/resource/translations/ao_es.ts index 9061557..2ccccd6 100644 --- a/resource/translations/ao_es.ts +++ b/resource/translations/ao_es.ts @@ -69,15 +69,33 @@ Que tengas un buen día. You have been kicked from the server. -Reason: +Reason: %1 Has sido expulsado del servidor. -Razón: +Razón: %1 + + + + You have been banned from the server. +Reason: %1 + You are banned on this server. -Reason: +Reason: %1 Has sido baneado en este servidor. +Razón: %1 + + + You have been kicked from the server. +Reason: + Has sido expulsado del servidor. +Razón: + + + You are banned on this server. +Reason: + Has sido baneado en este servidor. Razón: @@ -289,7 +307,7 @@ Razón: Casing - + Caso @@ -462,7 +480,7 @@ Razón: Casing - + Caso @@ -562,7 +580,7 @@ Razón: Settings - Ajustes + Ajustes diff --git a/resource/translations/ao_jp.qm b/resource/translations/ao_jp.qm index badf3f441aa14067a379fe9caa2d0b10cb9da7f9..e4fb562afc050d239016969576561640e9f3b81b 100644 GIT binary patch delta 392 zcmX@icZGj~NWBCDLwG9#14|DBL&O#!eT{)3@&=Ip$-pvsD+2>lJ_E~T1_lOZZ3b2k zQ=qsNgl2usz*@bFfq`)XgQr0;P@M~d&&(vCIwlCsX2Iasy${F_W$@e40;H=LLQZ}L z>KA5+{jijQfz_Mo+2utH4E0QtnZq}T18rb{(5#18CbMS&4c1|q;kgH>a0aWzszX58 z=d3>SLE;Il87)_V1|_go1s4IewX&Wy5M^Ls<7NG0oDNi9z?SLt59pwaY|VG{fa(u$ zGp9z%b3VpgY|%!1;{8<~YSCowN&6rTP$vlb!gTUwl% f43eD8#=2jGEof)@oavw8(#*kW6=0o5S?d@9O0iy( delta 298 zcmcb@f0%EANIe4sLwG9#1B(>{L&O#!-NL{!c`E}0lM4gOWuP200|TpvDUf~vp;?O< zSgUt2FfdMF@R^weRCgUhv+if`>)r=cr^Vp6qXkI&GsJ#a3N-H$)3eKqfa)@s!#9Wn z4P=1Otez~B*|QiJ>KS!dW_a!a+9J|dJn75e4qql0&7OgRiFWUtX089Kz*&O zXAMMw>ZY*%F-`}He`m||`Uf<48C&xmJ)rsn91Wi4K=D{k-IGp0^@f~2{h2^{Ue44$ zL7={OoF}&I1e#yLz3L(pP~CFA|NEU7I2agi0adYSPX5BCv^j)PjcM~z=B132mDt55 Nx3jL;9L8412mnyWNA&;z diff --git a/resource/translations/ao_jp.ts b/resource/translations/ao_jp.ts index 66ff0c9..4f8153a 100644 --- a/resource/translations/ao_jp.ts +++ b/resource/translations/ao_jp.ts @@ -64,13 +64,19 @@ Have a nice day. You have been kicked from the server. -Reason: +Reason: %1 + + + + + You have been banned from the server. +Reason: %1 You are banned on this server. -Reason: +Reason: %1 @@ -550,17 +556,17 @@ Cases you can load: %1 Music - + 音楽 Sfx - + 効果音 Blips - + ブリップ @@ -721,7 +727,7 @@ Cases you can load: %1 Error - エラー + エラー diff --git a/resource/translations/ao_ru.qm b/resource/translations/ao_ru.qm index a489c320b3afda0cd99b5c0b0d268cc7abe281bf..19bf0a957fcb88742b350b2e65e145a30fea5687 100644 GIT binary patch delta 1518 zcmY*Y2~1R16g~gX`!oN~_N9Z4vdLJHvd9dBBRD7`i-5o|m0HwR6WnkbGpLBQE{wQ? z300>mQe4`oRSdN{?lu^!C6!t$f{`jxQ%IW%F(!7=s?e)6w$0Da$$Rf^=bn3iJj7i; z!fo;Q90D@cz<^YsU_CIZ0GN7$um_md2H1{)c~1f{4zQzTfF%m71%#ClGHrm>)sK0L zAS}!#ziTb3IKIIHrl$d1nIAt-NV1F_jnbk!SA%;e+_XM^pfF^Y1^d zBZimxl|w4&{Q_Tcu^dPVi^U>xG~l(+N9;gu1V&^({iq zUJ7X9g}0AxCk-2fLPZ)StPtj}y9vaV3d{2s1AMXY@uq5;l|Z4kmi%m4!snMLUc><5 zJIg>IZ@2I)u81V-RK8hE`6k{`x+e7kW`}aEr=1u?mnuK&poc_*vdd1)M-NsFO$-6X zKUKYZhlVkFysE{Y>_!YywU2862I*B#68{3kZgK3=X(Z8fF{8B$E?{JvG`EWEoU5ctcAr}Nt90JjOoeb#W8XDmR3UwH;w*KpTzcxF z+3<^0o5oV&$dA;{=k%_yt5>8?rjA@w*Ge=K=>t6K!!`SesYiV_&H+T7RNu;{)`d=0 zcmCv072Z`pHZp2?lqPac88CL0rmmT%4o%Zsoe@b1x->T)#?aJX(+2cfi1{XM!ZIQ- ztXpfhCXobb+VdQ(*@(7&w0)qxcesIOXqT>aI}LfVCtr8#SqLyBSNB{ujF{}y8;15$ zfKYvO0clHf{1S6V=*xZ}2CvW4Z~SErwbZIV7DeZXNBZOI9{@os^%r*2IboZ={Vw6) z@%p|CFFM#J^Sp_qX_o!$GiiOZWphOpNwHMUc(HZy#&Fr4O8ac`!@1V7tB;Sx7K*&M4#g#<+9zi-dpZRK7tCCCc7Hg992t%y+qEsdQ5#H09a6T;7 zdr@Wd{;t{2rFm<#$^W;pc)PSQ|Je8#J)s;q z*qAZbJ$G^85|_IuboTth#U*xiSgbkB>fLHJ`0kAw!Ubtr5KHZ^gjxQLpIchun*Gx1 oi7iv{MgTK1E7{o*gHV>s(&)1>J4^XbO^W<^%U*g+7!wlsH{SDs6#xJL delta 1269 zcmYLIYfw~W7=F&-oZWNIUJfXi09{x?5#%Pj2m-BuprEiq2Bd{EI+)M}%u5$7R#Zx1 zhSVM65}KNp&?v~-#HE4CA|nK4WiaC6gd>g9I5sk2aqA_1^yADk-}%1p`QGPwpZC@m z%*Z9?gtO%kkR$<)5kOWkU`PgDxJEb(&iW+~Gytx?5D57SoE<=@EBK^vVC9SRXkHF} z_eMJJ4*p;Zps#|!wgCy_Sgg_m<_;KYh<{-Zl3Hc~Z81`+b`am#JX*}NFqhJW(0G`e zjuP(0)*@Pm_aXc7MPT*oD5@|6zAvNtwN7Bc0$e;pYh<8fU>I0Dg4_Nxfb$cK>(2mD ziHuNilJ2K6!u4vv=^ZA&C?8n0pLrv^jBt!OQ9^~JWHJ}baj+mEmFd{=h=>m}cTxyF z{$&2>B;w#qR%6`;1fFE|M@X5xlMQHo2rRR++n<;LE}wntX&otQV&8Qyp?w>B{M#ZR zwwG3>ATOMhBDLU?J;s9I_hR0H$jmQzslc zE2tGKeYrHZ?*Z`u_kMjaAl>7v%2$YRnyXCyniK?Zm1oz}{d4mee1+?Y)&en|++X`h zfU^_td6^3HI>#^iXe(hqA6fSuIXup%d_p|l?R;jvr5xC_pWo8zNEJ`=+Z__wYVHdTkT9IBr4=0{d z!tD}`;vl+x}@2bbEFgU_}B zuB`I!=zjoVM2LBF3$?~9#LDzPqF=}gEd%0Pg+s{{Si?Tyu$}IU-9o7c5ypKZRHe-T znn0m$^ganVEi`?$fzH*6e8w=~rxSyIiYGz5n0SiLc~6Lzln?VL<>lheGADAvD3)*! z$LT8_)=ZY27bo*515P?gA43lXq)TbjwC@ll9ZYChnF{KWp1N`5u$L+zrx1uXT2ytnSxT#;sw+Ey9=NOO zeH={b?pAxugc9Kzb>!Pr`I1ZOs4x@Y&!}6Oy%fUoc{IMNzE|5uSt-?2aj}5nmgY`* z9I!^x^iSyk_c+b8W(hf2s$J+cL*qH54a}mJQf&Xjjg}#8;V-1b$4C3YSPogaOnY?& zt^FIcjm3|EMZ2}_r)eFLtQ{O8e8!-iZJ)F7uFSGD-;u{;r>Jc-R;(Oyyo_2CB(I+v zGdE8;e=Uu#@l(07%a@evW!vRCDj-AtIbxWm%p~{9W(u>eTDIqzsDKC5hfOx?@9FDo z0$-+JOx6mONfPF2RnX^W9aZ^R8`N%AAN2($)_Ox7`~POJ)m0Nbw`t4Pl(^Y+OMlSV XoDI3GZ7kfKv4un=IoKMbbe{hLt{qpG diff --git a/resource/translations/ao_ru.ts b/resource/translations/ao_ru.ts index 010beb7..9714c9d 100644 --- a/resource/translations/ao_ru.ts +++ b/resource/translations/ao_ru.ts @@ -70,15 +70,33 @@ Have a nice day. You have been kicked from the server. -Reason: +Reason: %1 Вас выпнули с сервера. -Причина: +Причина: %1 + + + + You have been banned from the server. +Reason: %1 + You are banned on this server. -Reason: +Reason: %1 Вас отправили в баню. +Причина: %1 + + + You have been kicked from the server. +Reason: + Вас выпнули с сервера. +Причина: + + + You are banned on this server. +Reason: + Вас отправили в баню. Причина: @@ -205,7 +223,7 @@ Reason: Language: - + Язык: @@ -420,7 +438,8 @@ Reason: Generating chars: %1/%2 - + Генерация персонажей: +%1/%2 Generating chars: @@ -565,17 +584,17 @@ Cases you can load: %1 Music - + Музыка Sfx - + Звук. эффекты Blips - + Сигналы @@ -600,7 +619,7 @@ Cases you can load: %1 Settings - Настройки + Настройки From 338dd2003ef2436c307b0e4f28ceabcef6ad404f Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Wed, 7 Aug 2019 14:22:18 +0200 Subject: [PATCH 154/175] missed a backwards lowercase N with accent mark --- src/aooptionsdialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp index 15a6e35..d9e8f89 100644 --- a/src/aooptionsdialog.cpp +++ b/src/aooptionsdialog.cpp @@ -178,7 +178,7 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_language_combobox->addItem("de - Deutsch"); ui_language_combobox->addItem("es - Español"); ui_language_combobox->addItem("jp - 日本語"); - ui_language_combobox->addItem("ru - Русски"); + ui_language_combobox->addItem("ru - Русский"); ui_gameplay_form->setWidget(10, QFormLayout::FieldRole, ui_language_combobox); // Here we start the callwords tab. From 0247ca07fe727f61a6a80228547a1b93cc800c34 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Wed, 7 Aug 2019 14:51:21 +0200 Subject: [PATCH 155/175] show current setting --- src/aooptionsdialog.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp index d9e8f89..b5cb46f 100644 --- a/src/aooptionsdialog.cpp +++ b/src/aooptionsdialog.cpp @@ -173,6 +173,7 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi ui_gameplay_form->setWidget(10, QFormLayout::LabelRole, ui_language_label); ui_language_combobox = new QComboBox(ui_form_layout_widget); + ui_language_combobox->addItem(configini->value("language", " ").value() + " - Keep current setting"); ui_language_combobox->addItem(" - Default"); ui_language_combobox->addItem("en - English"); ui_language_combobox->addItem("de - Deutsch"); From c948e1533d3cc419e0f988ac746c9393daf2025f Mon Sep 17 00:00:00 2001 From: windrammer <31085911+likeawindrammer@users.noreply.github.com> Date: Thu, 8 Aug 2019 22:41:44 -0600 Subject: [PATCH 156/175] Improve the Spanish translation --- resource/translations/ao_es.qm | Bin 23447 -> 24232 bytes resource/translations/ao_es.ts | 44 +++++++++++++++++---------------- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/resource/translations/ao_es.qm b/resource/translations/ao_es.qm index 214af27167cecfb2f59a07289dc6dd0d9ff55780..dc21b2543cc34c5bc114323c48496067cad648bd 100644 GIT binary patch delta 1814 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 diff --git a/resource/translations/ao_es.ts b/resource/translations/ao_es.ts index 2ccccd6..192b584 100644 --- a/resource/translations/ao_es.ts +++ b/resource/translations/ao_es.ts @@ -77,7 +77,8 @@ Razón: %1 You have been banned from the server. Reason: %1 - + Has sido baneado de este servidor. +Razón: %1 @@ -114,7 +115,7 @@ Razón: Defense needed - Se necesita defensa + Se necesita abogado @@ -172,7 +173,7 @@ Razón: Log length: - Longitud del historial: + Limite del historial: @@ -202,7 +203,7 @@ Razón: Backup MS: - MS de respaldo: + Master SV de respaldo: @@ -212,7 +213,7 @@ Razón: Discord: - + Discord: @@ -232,7 +233,7 @@ Razón: Callwords - + Palabras clave @@ -267,7 +268,7 @@ Razón: SFX: - + SFX: @@ -277,7 +278,7 @@ Razón: Blips: - + Blips: @@ -337,12 +338,12 @@ Razón: Defense: - Defensa: + Abogado: If checked, you will get alerts about case announcements if a defense spot is open. - Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de defensa abierto. + Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de abogado libre. @@ -352,7 +353,7 @@ Razón: If checked, you will get alerts about case announcements if a prosecutor spot is open. - Si está marcada, recibirá alertas sobre anuncios de casos si hay un puesto de fiscal abierto. + Si está marcada, recibirá alertas sobre anuncios de casos si hay un puesto de fiscal libre. @@ -362,7 +363,7 @@ Razón: If checked, you will get alerts about case announcements if the judge spot is open. - Si está marcado, recibirá alertas sobre anuncios de casos si el puesto de juez está abierto. + Si está marcado, recibirá alertas sobre anuncios de casos si el puesto de juez está libre. @@ -372,7 +373,7 @@ Razón: If checked, you will get alerts about case announcements if a juror spot is open. - Si está marcado, recibirá alertas sobre anuncios de casos si hay un puesto de jurado abierto. + Si está marcado, recibirá alertas sobre anuncios de casos si hay un puesto de jurado libre. @@ -382,12 +383,12 @@ Razón: If checked, you will get alerts about case announcements if a stenographer spot is open. - Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de taquígrafo abierto. + Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de taquígrafo libre. CM: - + CM: @@ -397,7 +398,7 @@ Razón: Hosting cases: - + Casos: @@ -585,7 +586,7 @@ Razón: A/M - + A/M @@ -846,7 +847,7 @@ Did you download all resources correctly from tiny.cc/getao, including the large <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy - <h2>Attorney Online %1</h2>El simulador de drama de la sala del tribunal<p><b>Código fuente:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https: //github.com/AttorneyOnline/AO2-Client</a><p><b>Desarrollo mayor:</b> <br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Agradecimiento especial:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (diseño de interfaz de usuario), Draxirch (diseño de interfaz de usuario), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + <h2>Attorney Online %1</h2>El simulador de drama legal<p><b>Código fuente:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https: //github.com/AttorneyOnline/AO2-Client</a><p><b>Desarrollo mayor:</b> <br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Agradecimiento especial:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (diseño de interfaz de usuario), Draxirch (diseño de interfaz de usuario), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy @@ -865,17 +866,18 @@ Did you download all resources correctly from tiny.cc/getao, including the large Error: %1 - + Error: %1 Error - Error + Error Notice - + In spanish it would be "Aviso", but i believe it's going to be more useful for bug reports to not translate any debug string. + Notice From 84f91ee6eae5b26f0a228a93d56f9abf592c9b8f Mon Sep 17 00:00:00 2001 From: windrammer <31085911+likeawindrammer@users.noreply.github.com> Date: Fri, 9 Aug 2019 13:56:29 -0600 Subject: [PATCH 157/175] Use "bloqueado" in the spanish translation instead of "baneado" --- resource/translations/ao_es.qm | Bin 24232 -> 24244 bytes resource/translations/ao_es.ts | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resource/translations/ao_es.qm b/resource/translations/ao_es.qm index dc21b2543cc34c5bc114323c48496067cad648bd..a68998123bfe1c556e10e07d686d09c1677a7922 100644 GIT binary patch delta 1238 zcmZ8gdr(w$7(MrL@9w>KU-B@NhsFQ(Zd@O-LiUhcS0c`C8Vhh39z5*h7aBXHFY6N^r1hBqzscx+R|Jo)XW*B@~4-ha2 zf$axO58Y74lqLLF(6LQ2m?)k zhl438FCn~dncWe!fH8upvl5Xldzg<+2}CrNu@^ZBcaFJ{?t}$?cIJ;E0*)+WRkrOw zcn7OJM9SR8*`V(GK=3eII86k&0`~Qp7V58O-(G1Y$JVk{-;@Js@3TGaWbSy#i(8AKp6*u|&~qwj9J27q89H&8ERN$cJud@_ zH@PEi!GLm_s~0-RDjjE&zd|1#;2Kgdl9EKO;Y>0q^fZfZVtZbl6Sozig0y4Do!-nNVxRrkt_7Yhy$(}EzhcYT<#cA`Tcvg03oQQ{K z$Ub#YKhY@ni(LgI|1K}ML)i+OkdJxLeBGdYd_zCrl_j6G#QpK!n>(aL}*SpI7R@9t3tIG0dATQ8Z+mCWk-dUd%w^;SGe#=8WA;!T!t$k z*Nc3P0|@aD*9|6;5K&C3r~3iEV)}cp)l_hN^C#IxRB4yyYAEk3mXGrNzsXNR> zO2egFS>%{bFWsB)AcDuF8BdNJ4pIc|Fays_Dq2QaBJ8v%zTXx^$`cgV9|Tj%FDt#~ z4FtGf8T|$+2+UT-gc`~EX=N|7m%?aUsEkp=#vf0a>N$#&Jq{ zO1|pWqg80Z+9a$o56}al+F*g{gZEaDIWb`aHsU=&0H6!dyk?qsw4EUj|sC+mTaB3vsj9 z{G(hrPKc!d7xf>Usc#^s~8t69H}$`{}b5S`TLTxK@&5OWA|{r9esr+ud#fgd%ou zj0i6*W`7@TB)nzpza7;3?PXsYL?GQqk)RK!|E?;s&guZ>`h2yL?MB7Wv2wE5z@_Uh z1L}{s{cRzDW}2%N&XHBFoK3l%e%#L0t-U}>BDuO#MpC-OQ6u}gYq1iLe1ZEbR0a4> zasPZmf?f;b-CHZEFXlbI%%R%Cr=27mzuWwVwxcwvVLrRZx&RP;_*}(XbfJacRyIbn zb>%eLG3(NnuLwSTDdhq1^Ndq7s2#2(!+IdMrG zoco2+>MvgD>>}%@#FzP$1((lN`Z&5cOs7hprF})Bsw8 You have been banned from the server. Reason: %1 - Has sido baneado de este servidor. + Has sido bloqueado de este servidor. Razón: %1 You are banned on this server. Reason: %1 - Has sido baneado en este servidor. + Has sido bloqueado en este servidor. Razón: %1 @@ -96,7 +96,7 @@ Razón: You are banned on this server. Reason: - Has sido baneado en este servidor. + Has sido bloqueado en este servidor. Razón: From 047ce046316a96c6183846b40062dd6f72de61fd Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Sun, 11 Aug 2019 23:58:43 +0200 Subject: [PATCH 158/175] fix mac content loading it now looks for the content next to the .app bundle and not inside it --- src/path_functions.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/path_functions.cpp b/src/path_functions.cpp index c51cfde..5eb97a3 100644 --- a/src/path_functions.cpp +++ b/src/path_functions.cpp @@ -30,6 +30,8 @@ QString AOApplication::get_base_path() QString external_storage = getenv("EXTERNAL_STORAGE"); base_path = external_storage + "/AO2/"; } +#elif defined __APPLE__ + base_path = applicationDirPath() + "/../../../base/"; #else base_path = applicationDirPath() + "/base/"; #endif From 13cd1c9b8ba7b7d5622b56ece61a2053d93aa5a0 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Tue, 13 Aug 2019 11:27:59 -0500 Subject: [PATCH 159/175] Travis CI: Always update Homebrew --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 4243b3b..36f31d5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,7 @@ os: osx addons: homebrew: + update: true packages: - qt5 From 3052b53aa4427407c3037378c17a5c070aaeeb29 Mon Sep 17 00:00:00 2001 From: mac builder Date: Tue, 13 Aug 2019 18:54:17 +0200 Subject: [PATCH 160/175] bruh moment, qmake isn't in path --- scripts/macos_build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/macos_build.sh b/scripts/macos_build.sh index 22e2d45..efb7653 100755 --- a/scripts/macos_build.sh +++ b/scripts/macos_build.sh @@ -30,4 +30,4 @@ tar -xvf apng.tar.xz cp clang_64/plugins/imageformats/libqapng.dylib ../lib cd .. -qmake && make -j2 +/usr/local/opt/qt/bin/qmake && make -j2 From 172406efa219c2d3948e078c811e8cb35d7668a7 Mon Sep 17 00:00:00 2001 From: mac builder Date: Tue, 13 Aug 2019 18:59:43 +0200 Subject: [PATCH 161/175] post build executable --- scripts/macos_post_build.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 scripts/macos_post_build.sh diff --git a/scripts/macos_post_build.sh b/scripts/macos_post_build.sh old mode 100644 new mode 100755 From 5bdb57a8ba789f0a716360d775eedfbc29096c78 Mon Sep 17 00:00:00 2001 From: mac builder Date: Tue, 13 Aug 2019 19:13:01 +0200 Subject: [PATCH 162/175] forgot macdeployqt --- scripts/macos_post_build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/macos_post_build.sh b/scripts/macos_post_build.sh index 50acb40..25400bf 100755 --- a/scripts/macos_post_build.sh +++ b/scripts/macos_post_build.sh @@ -13,7 +13,7 @@ ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/" cd ${ROOT_DIR} # This thing basically does all the work -macdeployqt ../bin/Attorney_Online.app +/usr/local/opt/qt/bin/macdeployqt ../bin/Attorney_Online.app # Need to add the dependencies cp ../lib/* ../bin/Attorney_Online.app/Contents/Frameworks From 2509cc5e0bf4d9c4bbd6798f71886e34cc8476b2 Mon Sep 17 00:00:00 2001 From: mac builder Date: Tue, 13 Aug 2019 20:01:42 +0200 Subject: [PATCH 163/175] get mac serial for hdid --- src/hardware_functions.cpp | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/hardware_functions.cpp b/src/hardware_functions.cpp index 5d6b6ff..bd6a6c3 100644 --- a/src/hardware_functions.cpp +++ b/src/hardware_functions.cpp @@ -50,10 +50,31 @@ QString get_hdid() } #elif defined __APPLE__ +#include +#include + QString get_hdid() { - //hdids are broken at this point anyways - return "just a mac passing by"; + CFStringRef serial; + char buffer[64] = {0}; + QString hdid; + io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault, + IOServiceMatching("IOPlatformExpertDevice")); + if (platformExpert) + { + CFTypeRef serialNumberAsCFString = IORegistryEntryCreateCFProperty(platformExpert, + CFSTR(kIOPlatformSerialNumberKey), + kCFAllocatorDefault, 0); + if (serialNumberAsCFString) { + serial = (CFStringRef)serialNumberAsCFString; + } + if (CFStringGetCString(serial, buffer, 64, kCFStringEncodingUTF8)) { + hdid = buffer; + } + + IOObjectRelease(platformExpert); + } + return hdid; } #else From 4700902551f80769b54cb452b0fcb794669c553b Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Sat, 17 Aug 2019 20:47:41 +0200 Subject: [PATCH 164/175] fix qaudio volume --- include/aoblipplayer.h | 5 +++-- include/aosfxplayer.h | 8 +++++--- src/aoblipplayer.cpp | 30 ++++++++++++++++++++++-------- src/aosfxplayer.cpp | 24 +++++++++++++++++------- 4 files changed, 47 insertions(+), 20 deletions(-) diff --git a/include/aoblipplayer.h b/include/aoblipplayer.h index 102a040..68dca19 100644 --- a/include/aoblipplayer.h +++ b/include/aoblipplayer.h @@ -21,15 +21,16 @@ public: void set_blips(QString p_sfx); void blip_tick(); - void set_volume(int p_volume); + void set_volume(qreal p_volume); + void set_volume_internal(qreal p_volume); int m_cycle = 0; private: QWidget *m_parent; AOApplication *ao_app; + qreal m_volume; - int m_volume; #if defined(BASSAUDIO) HSTREAM m_stream_list[5]; #elif defined(QTAUDIO) diff --git a/include/aosfxplayer.h b/include/aosfxplayer.h index 4b97685..5b4b41d 100644 --- a/include/aosfxplayer.h +++ b/include/aosfxplayer.h @@ -20,17 +20,19 @@ public: void play(QString p_sfx, QString p_char = "", QString shout = ""); void stop(); - void set_volume(int p_volume); + void set_volume(qreal p_volume); + void set_volume_internal(qreal p_volume); private: QWidget *m_parent; AOApplication *ao_app; + qreal m_volume = 0; + #if defined(BASSAUDIO) HSTREAM m_stream; #elif defined(QTAUDIO) - QSoundEffect m_sfx; + QSoundEffect m_sfx; #endif - int m_volume = 0; }; #endif // AOSFXPLAYER_H diff --git a/src/aoblipplayer.cpp b/src/aoblipplayer.cpp index 4dfb895..1c668ab 100644 --- a/src/aoblipplayer.cpp +++ b/src/aoblipplayer.cpp @@ -18,7 +18,7 @@ void AOBlipPlayer::set_blips(QString p_sfx) m_stream_list[n_stream] = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_UNICODE | BASS_ASYNCFILE); } - set_volume(m_volume); + set_volume_internal(m_volume); } void AOBlipPlayer::blip_tick() @@ -34,11 +34,15 @@ void AOBlipPlayer::blip_tick() BASS_ChannelPlay(f_stream, false); } -void AOBlipPlayer::set_volume(int p_value) +void AOBlipPlayer::set_volume(qreal p_value) { - m_volume = p_value; + m_volume = p_value / 100; + set_volume_internal(m_volume); +} - float volume = p_value / 100.0f; +void AOBlipPlayer::set_volume_internal(qreal p_value) +{ + float volume = p_value; for (int n_stream = 0 ; n_stream < 5 ; ++n_stream) { @@ -61,7 +65,7 @@ void AOBlipPlayer::set_blips(QString p_sfx) m_blips.setSource(QUrl::fromLocalFile(f_path)); } - set_volume(m_volume); + set_volume_internal(m_volume); } void AOBlipPlayer::blip_tick() @@ -74,9 +78,14 @@ void AOBlipPlayer::blip_tick() m_blips.play(); } -void AOBlipPlayer::set_volume(int p_value) +void AOBlipPlayer::set_volume(qreal p_value) +{ + m_volume = p_value / 100; + set_volume_internal(m_volume); +} + +void AOBlipPlayer::set_volume_internal(qreal p_value) { - m_volume = p_value; m_blips.setVolume(m_volume); } #else //No audio @@ -96,7 +105,12 @@ void AOBlipPlayer::blip_tick() } -void AOBlipPlayer::set_volume(int p_value) +void AOBlipPlayer::set_volume(qreal p_value) +{ + +} + +void AOBlipPlayer::set_volume_internal(qreal p_value) { } diff --git a/src/aosfxplayer.cpp b/src/aosfxplayer.cpp index 710d7a8..3faaad4 100644 --- a/src/aosfxplayer.cpp +++ b/src/aosfxplayer.cpp @@ -44,11 +44,16 @@ void AOSfxPlayer::stop() BASS_ChannelStop(m_stream); } -void AOSfxPlayer::set_volume(int p_value) +void AOSfxPlayer::set_volume(qreal p_value) { - m_volume = p_value; - float volume = p_value / 100.0f; - BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume); + m_volume = p_value / 100; + set_volume_internal(m_volume); +} + +void AOSfxPlayer::set_volume_internal(qreal p_value) +{ + float volume = p_value; + BASS_ChannelSetAttribute(m_stream, BASS_ATTRIB_VOL, volume); } #elif defined(QTAUDIO) //Using Qt's QSoundEffect class AOSfxPlayer::AOSfxPlayer(QWidget *parent, AOApplication *p_ao_app) @@ -83,7 +88,7 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) { m_sfx.setSource(QUrl::fromLocalFile(f_path)); - set_volume(m_volume); + set_volume_internal(m_volume); m_sfx.play(); } @@ -94,9 +99,14 @@ void AOSfxPlayer::stop() m_sfx.stop(); } -void AOSfxPlayer::set_volume(int p_value) +void AOSfxPlayer::set_volume(qreal p_value) +{ + m_volume = p_value/100; + set_volume_internal(m_volume); +} + +void AOSfxPlayer::set_volume_internal(qreal p_value) { - m_volume = p_value; m_sfx.setVolume(m_volume); } #else From 49be444d74cfdecdaa1090a2a51c19f70ae9b0b1 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Sat, 17 Aug 2019 21:09:13 +0200 Subject: [PATCH 165/175] OOP :convenience_store: --- include/aoblipplayer.h | 3 ++- include/aosfxplayer.h | 3 ++- src/aosfxplayer.cpp | 7 ++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/include/aoblipplayer.h b/include/aoblipplayer.h index 68dca19..44ca48b 100644 --- a/include/aoblipplayer.h +++ b/include/aoblipplayer.h @@ -22,7 +22,6 @@ public: void set_blips(QString p_sfx); void blip_tick(); void set_volume(qreal p_volume); - void set_volume_internal(qreal p_volume); int m_cycle = 0; @@ -31,6 +30,8 @@ private: AOApplication *ao_app; qreal m_volume; + void set_volume_internal(qreal p_volume); + #if defined(BASSAUDIO) HSTREAM m_stream_list[5]; #elif defined(QTAUDIO) diff --git a/include/aosfxplayer.h b/include/aosfxplayer.h index 5b4b41d..19d4bdf 100644 --- a/include/aosfxplayer.h +++ b/include/aosfxplayer.h @@ -21,13 +21,14 @@ public: void play(QString p_sfx, QString p_char = "", QString shout = ""); void stop(); void set_volume(qreal p_volume); - void set_volume_internal(qreal p_volume); private: QWidget *m_parent; AOApplication *ao_app; qreal m_volume = 0; + void set_volume_internal(qreal p_volume); + #if defined(BASSAUDIO) HSTREAM m_stream; #elif defined(QTAUDIO) diff --git a/src/aosfxplayer.cpp b/src/aosfxplayer.cpp index 3faaad4..98dd2cd 100644 --- a/src/aosfxplayer.cpp +++ b/src/aosfxplayer.cpp @@ -126,7 +126,12 @@ void AOSfxPlayer::stop() } -void AOSfxPlayer::set_volume(int p_value) +void AOSfxPlayer::set_volume(qreal p_value) +{ + +} + +void AOSfxPlayer::set_volume_internal(qreal p_value) { } From 35f2333403cdd930848fb998739583c6c829f5d3 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 19 Aug 2019 19:06:41 +0200 Subject: [PATCH 166/175] list audio devices (doesn't apply it yet) --- include/aooptionsdialog.h | 6 ++++++ src/aooptionsdialog.cpp | 12 ++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/include/aooptionsdialog.h b/include/aooptionsdialog.h index 83b84cb..934d257 100644 --- a/include/aooptionsdialog.h +++ b/include/aooptionsdialog.h @@ -2,7 +2,13 @@ #define AOOPTIONSDIALOG_H #include "aoapplication.h" + +#ifdef BASSAUDIO #include "bass.h" +#elif defined QTAUDIO +#include +#include +#endif #include #include diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp index b5cb46f..82507a1 100644 --- a/src/aooptionsdialog.cpp +++ b/src/aooptionsdialog.cpp @@ -1,6 +1,5 @@ #include "aooptionsdialog.h" #include "aoapplication.h" -#include "bass.h" AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDialog(parent) { @@ -235,9 +234,6 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi // Let's fill out the combobox with the available audio devices. Or don't if there is no audio int a = 0; - #ifdef BASSAUDIO - BASS_DEVICEINFO info; - #endif if (needs_default_audiodev()) { @@ -245,12 +241,20 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app) : QDi } #ifdef BASSAUDIO + BASS_DEVICEINFO info; for (a = 0; BASS_GetDeviceInfo(a, &info); a++) { ui_audio_device_combobox->addItem(info.name); if (p_ao_app->get_audio_output_device() == info.name) ui_audio_device_combobox->setCurrentIndex(ui_audio_device_combobox->count()-1); } + #elif defined QTAUDIO + foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)) + { + ui_audio_device_combobox->addItem(deviceInfo.deviceName()); + if (p_ao_app->get_audio_output_device() == deviceInfo.deviceName()) + ui_audio_device_combobox->setCurrentIndex(ui_audio_device_combobox->count()-1); + } #endif ui_audio_layout->setWidget(0, QFormLayout::FieldRole, ui_audio_device_combobox); From d94d2fb405a0d3634951cc8fa4b0e22c7979c438 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 19 Aug 2019 19:38:47 +0200 Subject: [PATCH 167/175] read and store qt audio device --- include/aoapplication.h | 9 +++++++-- include/courtroom.h | 1 + src/courtroom.cpp | 14 ++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/include/aoapplication.h b/include/aoapplication.h index af43cf3..5475eb7 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -23,6 +23,9 @@ #include #include #include +#ifdef QTAUDIO +#include +#endif class NetworkManager; class Lobby; @@ -173,6 +176,9 @@ public: // Returns the audio device used for the client. QString get_audio_output_device(); + #ifdef QTAUDIO + QAudioDeviceInfo QtAudioDevice; + #endif // Returns whether the user would like to have custom shownames on by default. bool get_showname_enabled_by_default(); @@ -196,8 +202,7 @@ public: pos_size_type get_element_dimensions(QString p_identifier, QString p_file); //Returns the name of the font with p_identifier from p_file - QString get_font_name(QString p_identifier, QString p_file); - + QString get_font_name(QString p_identifier, QString p_file); //Returns the value of font_size with p_identifier from p_file int get_font_size(QString p_identifier, QString p_file); diff --git a/include/courtroom.h b/include/courtroom.h index 99a090b..f0b6996 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -10,6 +10,7 @@ #include "aomovie.h" #include "aocharmovie.h" #include "aomusicplayer.h" +#include "aooptionsdialog.h" #include "aosfxplayer.h" #include "aoblipplayer.h" #include "aoevidencebutton.h" diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 54b1b2d..a171416 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -28,6 +28,20 @@ Courtroom::Courtroom(AOApplication *p_ao_app) : QMainWindow() } } } + #elif defined QTAUDIO + + if (ao_app->get_audio_output_device() != "default") + { + foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)) + { + if (ao_app->get_audio_output_device() == deviceInfo.deviceName()) + { + ao_app->QtAudioDevice = deviceInfo; + qDebug() << deviceInfo.deviceName() << "was set as the default audio output device."; + break; + } + } + } #endif keepalive_timer = new QTimer(this); From 177c56e2b8402cee95ae1ff1e042ddf2eabe52b6 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 20 Aug 2019 18:28:25 +0200 Subject: [PATCH 168/175] move button enabling to ID because not all servers understand FL --- src/packet_distribution.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/packet_distribution.cpp b/src/packet_distribution.cpp index b79ec30..40015fd 100644 --- a/src/packet_distribution.cpp +++ b/src/packet_distribution.cpp @@ -175,6 +175,8 @@ void AOApplication::server_packet_received(AOPacket *p_packet) s_pv = f_contents.at(0).toInt(); server_software = f_contents.at(1); + w_lobby->enable_connect_button(); + send_server_packet(new AOPacket("ID#AO2#" + get_version_string() + "#%")); } else if (header == "CT") @@ -214,8 +216,6 @@ void AOApplication::server_packet_received(AOPacket *p_packet) casing_alerts_enabled = true; if (f_packet.contains("modcall_reason",Qt::CaseInsensitive)) modcall_reason_enabled = true; - - w_lobby->enable_connect_button(); } else if (header == "PN") { From 5807410b1dae61ba9307197f7d1ae04b8e55c378 Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Tue, 20 Aug 2019 18:35:42 +0200 Subject: [PATCH 169/175] doubleclick to join a server --- include/lobby.h | 3 +++ src/lobby.cpp | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/include/lobby.h b/include/lobby.h index 19276a7..4293ac3 100644 --- a/include/lobby.h +++ b/include/lobby.h @@ -75,6 +75,8 @@ private: QProgressBar *ui_progress_bar; AOButton *ui_cancel; + QModelIndex last_model; + void set_size_and_pos(QWidget *p_widget, QString p_identifier); private slots: @@ -89,6 +91,7 @@ private slots: void on_connect_released(); void on_about_clicked(); void on_server_list_clicked(QModelIndex p_model); + void on_server_list_doubleclicked(QModelIndex p_model); void on_chatfield_return_pressed(); }; diff --git a/src/lobby.cpp b/src/lobby.cpp index c95fd49..6f257ce 100644 --- a/src/lobby.cpp +++ b/src/lobby.cpp @@ -47,6 +47,7 @@ Lobby::Lobby(AOApplication *p_ao_app) : QMainWindow() connect(ui_connect, SIGNAL(released()), this, SLOT(on_connect_released())); connect(ui_about, SIGNAL(clicked()), this, SLOT(on_about_clicked())); connect(ui_server_list, SIGNAL(clicked(QModelIndex)), this, SLOT(on_server_list_clicked(QModelIndex))); + connect(ui_server_list, SIGNAL(activated(QModelIndex)), this, SLOT(on_server_list_doubleclicked(QModelIndex))); connect(ui_chatmessage, SIGNAL(returnPressed()), this, SLOT(on_chatfield_return_pressed())); connect(ui_cancel, SIGNAL(clicked()), ao_app, SLOT(loading_cancelled())); @@ -282,9 +283,13 @@ void Lobby::on_about_clicked() QMessageBox::about(this, "About", msg); } +//clicked on an item in the serverlist void Lobby::on_server_list_clicked(QModelIndex p_model) { + if (p_model != last_model) + { server_type f_server; + last_model = p_model; int n_server = p_model.row(); if (n_server < 0) @@ -318,6 +323,14 @@ void Lobby::on_server_list_clicked(QModelIndex p_model) ui_connect->setEnabled(false); ao_app->net_manager->connect_to_server(f_server); + } +} + +//doubleclicked on an item in the serverlist so we'll connect right away +void Lobby::on_server_list_doubleclicked(QModelIndex p_model) +{ + on_server_list_clicked(p_model); + on_connect_released(); } void Lobby::on_chatfield_return_pressed() From 5520c248698e067c0b6f88ead616bc546eaab80e Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Thu, 22 Aug 2019 21:02:09 +0200 Subject: [PATCH 170/175] bass blips were slightly too quiet --- src/aosfxplayer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/aosfxplayer.cpp b/src/aosfxplayer.cpp index 98dd2cd..ad8ced6 100644 --- a/src/aosfxplayer.cpp +++ b/src/aosfxplayer.cpp @@ -32,7 +32,7 @@ void AOSfxPlayer::play(QString p_sfx, QString p_char, QString shout) m_stream = BASS_StreamCreateFile(FALSE, f_path.utf16(), 0, 0, BASS_STREAM_AUTOFREE | BASS_UNICODE | BASS_ASYNCFILE); - set_volume(m_volume); + set_volume_internal(m_volume); if (ao_app->get_audio_output_device() != "default") BASS_ChannelSetDevice(m_stream, BASS_GetDevice()); From c0d0c5cf1e88ef9b5b7d40f9be7a3766c37f9cdd Mon Sep 17 00:00:00 2001 From: windrammer <31085911+likeawindrammer@users.noreply.github.com> Date: Mon, 2 Sep 2019 00:07:50 -0600 Subject: [PATCH 171/175] Mark untranslated strings as done These are better left off untranslated because they would get cut otherwise thanks to AO having the size for the text tags fixed on the theme files --- resource/translations/ao_es.qm | Bin 24244 -> 24590 bytes resource/translations/ao_es.ts | 108 ++++++++++++++++----------------- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/resource/translations/ao_es.qm b/resource/translations/ao_es.qm index a68998123bfe1c556e10e07d686d09c1677a7922..56bad7497c0a14f68426caf697a3e61e31d2251f 100644 GIT binary patch delta 1799 zcmaJ>Yfw}L6#nkrdw1_$mR)%$0~i9*h$OIz2*I*~2!h}Wq9Q2HtbnivySRWdQf{Oe zDw4SwsAyzbBQsahp#u zRcD!<&Xxzj+z4PsKM*Ge9Nz#^%Ym=~U|BN|UJaz(05oQB*5km;esD)O0wEl@E|6Ug zJ}ww|J$THftpi_>K=G%*m$m}0RzP4+0}Jot6+15=-5Wu*RA<5&#I+6smT})AUR_9u z&mnQoDoPkIX45mE+fIQY51>1-83-MZ#pj<;AxET_(ff$!$as7hm~#nO{37aquSA-ntS9TFZKEBBc)dSihEs zfPW>cf1(4p73}(F^}x7i?3=FJ$Unet{kjZD*uu6R+X%>d+4gH47IH+f_qz^KLI?KG zCQ{&&z&=-tK(ePq>lH*Jsgb09;Q}z1$81`Rq@$Wf6nazg^kxi==q#7yat@G(a$AlD z0CtVsE}@Y+_ZDZBt)ci}t|tB~5;T*mshda7x5sSoHSSWlMG3^Vasz>KU~&WZw1|{V z806g>i1Fkoe&UDeWQ+OG`fsSL%z0_;xumj=WUcPuzND4~u7X9${gX*9YLAyP&DNOvJsT?H)Y72b{yq4?>7<()1{D6bN>yHSC} ztHPe7AwU%?)Ze{FislI?KAlg%)grgh0gzUR{E|MJahK?Sehw)W#h6`$_vsN6-!sq> zmx|d{giGHknvX4}j(s3*;~oM|PU1Es9UyLX(4Xqo(( z3r9kJvGdE?NGE;6uD+9{&fT)Rkl{xifZdhH0dy7T6mCOm%9o=EEg>OOEKZ8B8Csf6 zqhfK!L1M-zPBL_k{)@(}Myt4W3cL;8SME~~Dnbb$97RhL0a--%S3({f%y480KrYjwJ|=@u6& zwHg(^O~2XoGEI5PnbVwx=_icHkkX%@lV>O>wEmvpWc?(paDt6bh}P%jdFGq4M%}LA zr5-l!anZSYV@|ebX0G0>&n(I|kHDI$!>2NiHaISpN{ss2G|o)8jZaK8<#^^9@(o2Y zA|pndip@o4lPRB(*ubO<^o9Qxuy#kN|0iKVaiJk|l%u`2$;~EEp)+~L8!6OWTu?L$ zY14MivVlmF%-Jt3E+c^6XviN8-!r??)h1lAC_B%j&+;tF&Ca*p);e2#BmJFi5Ym)v r^SZI_SeHdkUuol%q^vG^X>}nb*R|*VT zqT=cxax?)iIZf6`3Bgh$;H}Yi)B-^?$Hc9$sDXxY5(`72*Z9$oGw=D{_xqmjd7k(E zD$g-3ro1&EITvLs;2=Ri>lU|k7L{t}qagKKmF3p&APB>)T8PQ;>e@UJfc zk~+X|Y6Iq6g20{u9K#4v8-ZdA;tmmB5W%*M1Cy1=sa-`lBNMUsRXBFhes^LO94E_x z#M3A#qeO~`<#&$(X}3^zzyUB$` zSi2WUHZj8aIzaDd)|9OwylJ!` zJ|THyG4;Atuhy=$f^zYq{SW+A{g0}|gR1rhlHNwGGv{$4;kvz~@go`}}AfS-<^p_w_X(K*%t zre;koX9tuOnrr)M%Ckx|Hy+LeLi#n2G-2fM2JMv4F>>I6HoA~nOY=YRQ*dAFx=D&6 ze%9{zZ8cduUE35z>nE$V&D(|m<6LdaZiX!F(w;p`dD}s4?`?`R8nokQA6x6!v8)lW z=j#HKR?xFc)Wz(qq}DyJ%Y6L&rn_|B6ZLfQF5R~a{Pfxabysx`a&-1*x}H)S5LrVF zDVd@mPGNG)QlqR}Hp`pEKdoen - + AOApplication @@ -90,13 +90,13 @@ Razón: %1 You have been kicked from the server. Reason: - Has sido expulsado del servidor. + Has sido expulsado del servidor. Razón: You are banned on this server. Reason: - Has sido bloqueado en este servidor. + Has sido bloqueado en este servidor. Razón: @@ -231,177 +231,177 @@ Razón: Establece el idioma si no desea utilizar el idioma de su sistema. - + Callwords Palabras clave - + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> <html><head/><body>Ingrese tantas palabras de llamada como desee.<br>Esto no distingue entre mayúsculas y minúsculas. ¡Asegúrese de dejar cada palabra en su propia línea!<br>No deje una línea con un espacio al final; recibirá una alerta cada vez que alguien use un espacio en sus mensajes.</body></html> - + Audio Audio - + Audio device: Dispositivo: - + Sets the audio device for all sounds. Establece el dispositivo de audio. - + Music: Música: - + Sets the music's default volume. Establece el volumen predeterminado de la música. - + SFX: SFX: - + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. Establece el volumen predeterminado de SFX. Las interjecciones y los efectos de sonido reales cuentan como 'SFX'. - + Blips: Blips: - + Sets the volume of the blips, the talking sound effects. Establece el volumen de los blips, el sonido al hablar. - + Blip rate: Tasa de blips: - + Sets the delay between playing the blip sounds. Establece el retraso entre la reproducción de los sonidos blip. - + Blank blips: Blips en blanco: - + If true, the game will play a blip sound even when a space is 'being said'. Si está marcada, el juego reproducirá un sonido blip incluso cuando se 'dice' un espacio. - + Casing Caso - + This server supports case alerts. Este servidor admite alertas de casos. - + This server does not support case alerts. Este servidor no admite alertas de casos. - + Pretty self-explanatory. Bastante autoexplicativo. - + Casing: Caso: - + If checked, you will get alerts about case announcements. Si está marcado, recibirá anuncios de casos. - + Defense: Abogado: - + If checked, you will get alerts about case announcements if a defense spot is open. Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de abogado libre. - + Prosecution: Fiscal: - + If checked, you will get alerts about case announcements if a prosecutor spot is open. Si está marcada, recibirá alertas sobre anuncios de casos si hay un puesto de fiscal libre. - + Judge: Juez: - + If checked, you will get alerts about case announcements if the judge spot is open. Si está marcado, recibirá alertas sobre anuncios de casos si el puesto de juez está libre. - + Juror: Jurado: - + If checked, you will get alerts about case announcements if a juror spot is open. Si está marcado, recibirá alertas sobre anuncios de casos si hay un puesto de jurado libre. - + Stenographer: Taquígrafo: - + If checked, you will get alerts about case announcements if a stenographer spot is open. Si está marcado, recibirá alertas sobre anuncios de casos si hay un lugar de taquígrafo libre. - + CM: CM: - + If checked, you will appear amongst the potential CMs on the server. Si está marcado, aparecerá entre los posibles CM en el servidor. - + Hosting cases: Casos: - + If you're a CM, enter what cases you are willing to host. Si eres un CM, ingresa qué casos estás dispuesto a organizar. @@ -435,7 +435,7 @@ Razón: En uso - + Generating chars: %1/%2 Generando personajes: @@ -450,7 +450,7 @@ Razón: Showname - + @@ -465,12 +465,12 @@ Razón: Pre - + Flip - + @@ -486,12 +486,12 @@ Razón: Shownames - + No Interrupt - + @@ -546,37 +546,37 @@ Razón: Music - + Sfx - + Blips - + Log limit - + Change character - + Reload theme - + Call mod - + @@ -591,7 +591,7 @@ Razón: Preanim - + @@ -760,13 +760,13 @@ Casos que puede cargar: Master - + Server - + From 9967a57f46814419813ab7a772c6e2b3c4957b9e Mon Sep 17 00:00:00 2001 From: Pyraq Date: Sat, 14 Sep 2019 21:16:29 +0200 Subject: [PATCH 172/175] Added polish translation. --- Attorney_Online.pro | 3 +- resource/translations/ao_pl.qm | Bin 0 -> 25736 bytes resource/translations/ao_pl.ts | 841 +++++++++++++++++++++++++++++++++ resources.qrc | 1 + 4 files changed, 844 insertions(+), 1 deletion(-) create mode 100644 resource/translations/ao_pl.qm create mode 100644 resource/translations/ao_pl.ts diff --git a/Attorney_Online.pro b/Attorney_Online.pro index 32781a1..1d3925d 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -45,7 +45,8 @@ TRANSLATIONS = resource/translations/ao_en.ts \ resource/translations/ao_jp.ts \ resource/translations/ao_de.ts \ resource/translations/ao_ru.ts \ - resource/translations/ao_es.ts + resource/translations/ao_es.ts \ + resource/translations/ao_pl.ts win32:RC_ICONS = resource/logo.ico macx:ICON = resource/logo.icns diff --git a/resource/translations/ao_pl.qm b/resource/translations/ao_pl.qm new file mode 100644 index 0000000000000000000000000000000000000000..cdc1393c03b137792a0ae6127c4954eb2d052559 GIT binary patch literal 25736 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 + + + + AOApplication + + + Disconnected from server. + Odłączono od serwera. + + + + Error connecting to master server. Will try again in %1 seconds. + Błąd podczas łączenia się do głównego serwera. Spróbuj ponownie za %1 sekundy. + + + + There was an error connecting to the master server. +We deploy multiple master servers to mitigate any possible downtime, but the client appears to have exhausted all possible methods of finding and connecting to one. +Please check your Internet connection and firewall, and please try again. + Odkryto błąd podczas łączania się do głównego serwera. +Używamy wielu głównych serwerów, aby zminimalizować każdą możliwą przerwę, ale klient wyczerpał jaką kolwiek możliwość znalazienia i połączenia się do któregoś. +Proszę sprawdzić swoje połączenie internetowe oraz zaporę ogniową i spróbować ponownie. + + + + Outdated version! Your version: %1 +Please go to aceattorneyonline.com to update. + Nieaktualna wersja! Twoja wersja: %1 +Proszę udać się do aceattorneyonline.com, aby zaktualizować. + + + + You have been exiled from AO. +Have a nice day. + Zostałeś wygnany z AO2. +Życzę miłego dnia. + + + + Attorney Online 2 + + + + + Loading + Ładowanie + + + + Loading evidence: +%1/%2 + Ładowanie dowodów: +%1/%2 + + + + + Loading music: +%1/%2 + Ładowanie muzyki: +%1/%2 + + + + Loading chars: +%1/%2 + Ładowanie postaci: +%1/%2 + + + + You have been kicked from the server. +Reason: %1 + Zostałeś wyrzucony z tego serwera. +Powód: %1 + + + + You have been banned from the server. +Reason: %1 + Zostałeś zbanowany z tego serwera. +Powód: %1 + + + + You are banned on this server. +Reason: %1 + Jesteś zbanowany na tym serwerze. +Powód: %1 + + + + AOCaseAnnouncerDialog + + + Case Announcer + Ogłaszanie rozpraw + + + + Case title: + Tytuł rozprawy: + + + + Defense needed + Potrzebny obrońca + + + + Prosecution needed + Potrzebny prokurator + + + + Judge needed + Potrzebny sędzia + + + + Jurors needed + Potrzebny ławnik + + + + Stenographer needed + Potrzebny stenograf + + + + AOOptionsDialog + + + Settings + Ustawienia + + + + Gameplay + Rozgrywka + + + + Theme: + Motyw: + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the lobby for the changes to take effect, such as by joining a server and leaving it. + Ustawia motyw używany w grze. Jeżeli nowy motyw równiesz zmienia wygląd poczekalni, musisz odświeżyć poczekalnię, aby zmiany zaczęły działać, np. poprzez dołączenie do serwera i wyjście z niego. + + + + Log goes downwards: + Dziennik idzie w dół: + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + Jeżeli zaznaczone, nowe wiadomości zaczną się pojawiać na dole (tak jak na czacie OOC). Tradycyjne (AO1) zachowanie jest równoważne do tego bycia nie zaznaczonym. + + + + Log length: + Długość dziennika: + + + + The amount of messages the IC chatlog will keep before deleting older messages. A value of 0 or below counts as 'infinite'. + Ilość wiadomości, jakie czat IC będzie zostawiał zanim usunie starsze wiadomości. Wartośc 0 albo niżej, liczy się jako 'nieskończone'. + + + + Default username: + Domyślna nazwa użytkownika: + + + + Your OOC name will be automatically set to this value when you join a server. + Twoja nazwa OOC będzie ustawiana automatycznie do tej wartości, kiedy dołączysz na serwer. + + + + Custom shownames: + Niestandardowe ksywki: + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + Daje domyślną wartość przyciskowi wyboru 'Niestandardowe ksywki', który określa czy klient powinien pokazywać niestandardowe IC nazwy. + + + + Backup MS: + Kopia zapasowa głównego serwera: + + + + If the built-in server lookups fail, the game will try the address given here and use it as a backup master server address. + Jeśli wbudowane szukanie serwerów zawiedzie, gra spróbuje użyć adresu podanego tutaj i użyje go jako adresu zapasowego głównego serwera. + + + + Discord: + + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + Pozwala innym na Discordzie zobaczyć na jakim serwerze się znajdujesz, jaką postać używasz i jak długo grałeś. + + + + Language: + Język: + + + + Sets the language if you don't want to use your system language. + Ustawia język, jeśli nie chcesz używać języka systemowego. + + + + Callwords + Zawołania + + + + <html><head/><body>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</body></html> + <html><head/><body>Wpisz tyle zawołań, ile dusza zapragnie. Wielkość liter nie ma znaczenia. Miej na uwadze, aby każde zawołanie było na swojej lini!<br>Nie zostawiaj spacji na końcu -- zostaniesz zaalarmowany za każdym razem, kiedy ktoś użyje spacji w swojej wiadomości.</body></html> + + + + Audio + Dźwięk + + + + Audio device: + Urządzenie dźwiękowe: + + + + Sets the audio device for all sounds. + Ustawia urządzenie dźwiękowe na wszystkie dźwięki. + + + + Music: + Muzyka: + + + + Sets the music's default volume. + Ustawia domyślną głośność muzyki. + + + + SFX: + Efekty dźwiękowe (SFX): + + + + Sets the SFX's default volume. Interjections and actual sound effects count as 'SFX'. + Ustawia domyślną głośność efektów specjalnych (SFX). Wtrącenia się i same efekty specjalne są zaliczane jako 'SFX'. + + + + Blips: + Blipy: + + + + Sets the volume of the blips, the talking sound effects. + Ustawia głośność blipów, efektów dźwiękowych mówienia. + + + + Blip rate: + Szybkość blipów: + + + + Sets the delay between playing the blip sounds. + Ustawia opóźnienie pomiędzy graniem blipów. + + + + Blank blips: + The 'blip' isn't an accurate polish representation of this english word. + Puste blipy: + + + + If true, the game will play a blip sound even when a space is 'being said'. + Jeśli prawdziwe, gra zagra dźwięk blip za każdym razem spacja 'jest mówiona'. + + + + Casing + Rozprawa + + + + This server supports case alerts. + Ten serwer wspiera komunikaty rozpraw. + + + + This server does not support case alerts. + Ten serwer nie wspiera komunikatów rozpraw. + + + + Pretty self-explanatory. + Dosyć oczywiste. + + + + Casing: + Rozprawy: + + + + If checked, you will get alerts about case announcements. + Jeżeli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw. + + + + Defense: + Obrona: + + + + If checked, you will get alerts about case announcements if a defense spot is open. + Jeżeli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce obrony jest otwarte. + + + + Prosecution: + Prokuratura: + + + + If checked, you will get alerts about case announcements if a prosecutor spot is open. + Jeżeli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce prokuratury jest otwarte. + + + + Judge: + Sędzia: + + + + If checked, you will get alerts about case announcements if the judge spot is open. + Jeśli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce sędzi jest otwarte. + + + + Juror: + Ławnik: + + + + If checked, you will get alerts about case announcements if a juror spot is open. + Jeśli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce ławnika jest otwarte. + + + + Stenographer: + Stenograf: + + + + If checked, you will get alerts about case announcements if a stenographer spot is open. + Jeśli zaznaczone, dostaniesz komunikaty o ogłoszeniach rozpraw, jeśli miejsce stenografa jest otwarte. + + + + CM: + Mistrz rozpraw (CM): + + + + If checked, you will appear amongst the potential CMs on the server. + Jeśli zaznaczone, pojawisz się wśród potencjalnych mistrzów rozpraw (CM) na serwerze. + + + + Hosting cases: + Hostowane rozprawy: + + + + If you're a CM, enter what cases you are willing to host. + Jeśli jesteś mistrzem rozpraw (CM), wpisz jakie rozprawy jesteś chętny hostowania. + + + + Courtroom + + + Password + Hasło + + + + Spectator + Widz + + + + + Search + Wyszukaj + + + + Passworded + Zahasłowany + + + + Taken + Zajęty + + + + Generating chars: +%1/%2 + Generowanie postaci: +%1.%2 + + + + Showname + Ksywka + + + + Message + Wiadomość + + + + Name + Nazwa + + + + Pre + przed- + + + + Flip + Odwróć + + + + Guard + Na Służbie (mod) + + + + + Casing + Rozprawa + + + + Shownames + Ksywki + + + + No Interrupt + Bez przerwy + + + + White + Biały + + + + Green + Zielony + + + + Red + Czerwony + + + + Orange + Pomarańczowy + + + + Blue + Niebieski + + + + Yellow + Żółty + + + + This does nothing, but there you go. + To nic nie robi, ale proszę bardzo. + + + + You need to give a filename to load (extension not needed)! Make sure that it is in the `base/cases/` folder, and that it is a correctly formatted ini. +Cases you can load: %1 + Musisz podać nazwę pliku, którego chcesz załadować (rozszerzenie nie potrzebne!) Upewnij się, że jest w folderze `base/cases/` i że jest to poprawnie sformatowane ini. +Rozprawy które możesz załadować: %1 + + + + Case made by %1. + Rozprawa zrobiona przez %1. + + + + Navigate to %1 for the CM doc. + Przejdź do %1, aby dojść do dokumentu CM. + + + + Your case "%1" was loaded! + Twoja rozprawa "%1" została wczytana! + + + + + Server + Serwer + + + + Back to Lobby + Powrót do poczekalni + + + + Rainbow + Tęczowy + + + + Pink + Różowy + + + + Cyan + Turkusowy + + + + % offset + % wyrówanie + + + + Music + Muzyka + + + + Sfx + Sfx + + + + Blips + Blipy + + + + Log limit + Limit dziennika + + + + Change character + Zmiena postaci + + + + Reload theme + Odśwież motyw + + + + Call mod + Wezwij moda + + + + Settings + Ustawienia + + + + A/M + O meaning 'Obszar' and M meaning 'Muzyka'. + O/M + + + + Preanim + przed-animacja + + + + You were granted the Guard button. + Zostałeś obdarzonym przyciskiem Na Służbie. + + + + You opened the settings menu. + Otworzyłeś opcje. + + + + You will now pair up with + Będzie teraz w parze z + + + + if they also choose your character in return. + jeżeli oni również wybiorą ciebie spowrotem. + + + + You are no longer paired with anyone. + Nie jesteś już w parze z kimkolwiek. + + + + Are you sure you typed that well? The char ID could not be recognised. + Czy jesteś pewien, że dobrze to napisałeś? ID postaci nie zostało rozpoznane. + + + + You have set your offset to + Musisz ustawić swoje wyrównanie do + + + + Your offset must be between -100% and 100%! + Twoje wyrównanie musi być między -100%, a 100%! + + + + That offset does not look like one. + To wyrównanie nie wygląda na jedno. + + + + You switched your music and area list. + Przełączyłeś swoją listę obszarów i muzyki. + + + + You have forcefully enabled features that the server may not support. You may not be able to talk IC, or worse, because of this. + Włączyłeś funkcje, które ten serwer może nie wspierać. Możliwe że, nie możesz rozmawiać na czacie IC lub gorzej przez to. + + + + Your pre-animations interrupt again. + Twoje przed-animacje przerywają tekst spowrotem. + + + + Your pre-animations will not interrupt text. + Twoje przed-animacje nie będą przerywać tekstu. + + + + Couldn't open chatlog.txt to write into. + Nie można było otworzyć chatlog.txt, aby zapisać do niego. + + + + The IC chatlog has been saved. + Dziennik czatu IC został zapisany. + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely the case file you're looking for can't be found in there. + Nie masz folderu `base/cases/`! Został zrobiony tylko dla ciebie, ale widząc, że ZOSTAŁ zrobiony tylko dla ciebie, prawdopodobnie plik rozpraw, którego szukasz nie został znaleziony tutaj. + + + + Too many arguments to load a case! You only need one filename, without extension. + Za dużo parametrów, aby załadować rozprawę! Potrzebujesz tylko jedną nazwę pliku, bez rozszerzenia nazwy pliku. + + + + You don't have a `base/cases/` folder! It was just made for you, but seeing as it WAS just made for you, it's likely that you somehow deleted it. + Nie masz folderu `base/cases/`! Został zrobiony tylko dla ciebie, ale widząc, że ZOSTAŁ zrobiony tylko dla ciebie, prawdopodobnie jakoś usunąłeś go. + + + + You need to give a filename to save (extension not needed) and the courtroom status! + Musisz podać nazwę pliku, aby go zapisać (rozszerzenie nie potrzebne) i status sali sądowej! + + + + Too many arguments to save a case! You only need a filename without extension and the courtroom status! + Za dużo parametrów, aby zapisać rozprawę! Potrzebujesz tylko jedną nazwę pliku, bez rozszerzenia nazwy pliku i statusu sali sądowej! + + + + Succesfully saved, edit doc and cmdoc link on the ini! + Zapisano pomyślnie, edytuj dokument i link cmdoc w .ini! + + + + Master + Główny + + + + Reason: + Powód: + + + + Call Moderator + Wezwij Moderatora + + + + + Error + Błąd + + + + You must provide a reason. + Musisz podać przyczynę. + + + + The message is too long. + Ta wiadomość jest za długa. + + + + Choose... + Wybierz... + + + + Images (*.png) + Plik obrazu (*.png) + + + + Add new evidence... + Dodaj nowe dowody... + + + + Lobby + + + Attorney Online 2 + + + + + Name + Nazwa + + + + It doesn't look like your client is set up correctly. +Did you download all resources correctly from tiny.cc/getao, including the large 'base' folder? + Wygłąda na to, że twój klient nie jest ustawiony poprawnie. +Czy pobrałeś wszystkie zasoby poprawnie z tiny.cc/getao, włączając duży folder 'base'? + + + + Version: %1 + Wersja: %1 + + + + Loading + Ładowanie + + + + Cancel + Anuluj + + + + <h2>Attorney Online %1</h2>The courtroom drama simulator<p><b>Source code:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Major development:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Special thanks:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + <h2>Attorney Online: %1</h2>Symulator dramy sądowej<p><b>Kod żródłowy:</b> <a href='https://github.com/AttorneyOnline/AO2-Client'>https://github.com/AttorneyOnline/AO2-Client</a><p><b>Główny rozwój:</b><br>OmniTroid, stonedDiscord, longbyte1, gameboyprinter, Cerapter<p><b>Szczególne podziękowania:</b><br>Remy, Iamgoofball, Hibiki, Qubrick (webAO), Ruekasu (UI design), Draxirch (UI design), Unishred, Argoneus (tsuserver), Fiercy, Noevain, Cronnicossy + + + + Online: %1/%2 + + + + + + Offline + + + + + debug_functions + + + Error: %1 + Błąd: %1 + + + + Error + Błąd + + + + Notice + Ogłoszenie + + + diff --git a/resources.qrc b/resources.qrc index b8f62d1..eb57dfe 100644 --- a/resources.qrc +++ b/resources.qrc @@ -7,5 +7,6 @@ resource/translations/ao_jp.qm resource/translations/ao_es.qm resource/translations/ao_ru.qm + resource/translations/ao_pl.qm From 327661c0a455fb43b44389855acaa387986818a6 Mon Sep 17 00:00:00 2001 From: Pyraq Date: Sat, 14 Sep 2019 21:29:23 +0200 Subject: [PATCH 173/175] Added polish translation. --- Attorney_Online.pro | 2 +- resources.qrc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Attorney_Online.pro b/Attorney_Online.pro index 1d3925d..7b0c88b 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -46,7 +46,7 @@ TRANSLATIONS = resource/translations/ao_en.ts \ resource/translations/ao_de.ts \ resource/translations/ao_ru.ts \ resource/translations/ao_es.ts \ - resource/translations/ao_pl.ts + resource/translations/ao_pl.ts win32:RC_ICONS = resource/logo.ico macx:ICON = resource/logo.icns diff --git a/resources.qrc b/resources.qrc index eb57dfe..fce01eb 100644 --- a/resources.qrc +++ b/resources.qrc @@ -7,6 +7,6 @@ resource/translations/ao_jp.qm resource/translations/ao_es.qm resource/translations/ao_ru.qm - resource/translations/ao_pl.qm + resource/translations/ao_pl.qm From 5c9499a263da44d5a7db805d4881939b28800599 Mon Sep 17 00:00:00 2001 From: sD Date: Wed, 22 Jan 2020 15:17:21 +0100 Subject: [PATCH 174/175] Revert "Removed android." This reverts commit a88de1563b5699ef16d73cbcdfd867da9d887795. --- android/AndroidManifest.xml | 79 +++++++++++++++++++++++++++++++++++++ android/project.properties | 1 + 2 files changed, 80 insertions(+) create mode 100644 android/AndroidManifest.xml create mode 100644 android/project.properties diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml new file mode 100644 index 0000000..f458c6a --- /dev/null +++ b/android/AndroidManifest.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/project.properties b/android/project.properties new file mode 100644 index 0000000..a08f37e --- /dev/null +++ b/android/project.properties @@ -0,0 +1 @@ +target=android-21 \ No newline at end of file From 6ccabdd568075dfcecc6190d8d41a50b8bd99b84 Mon Sep 17 00:00:00 2001 From: sD Date: Wed, 22 Jan 2020 15:24:59 +0100 Subject: [PATCH 175/175] maybe at some point, someone will try this again --- .gitignore | 1 + Attorney_Online.pro | 11 +++++ android/AndroidManifest.xml | 4 +- android/build.gradle | 62 +++++++++++++++++++++++++++++ android/res/drawable-ldpi/icon.png | Bin 0 -> 29302 bytes android/res/values/libs.xml | 22 ++++++++++ 6 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 android/build.gradle create mode 100644 android/res/drawable-ldpi/icon.png create mode 100644 android/res/values/libs.xml diff --git a/.gitignore b/.gitignore index 1adb744..7d8fd4e 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ debug/ Makefile* object_script* +/android/gradle* /Attorney_Online_remake_resource.rc /attorney_online_remake_plugin_import.cpp diff --git a/Attorney_Online.pro b/Attorney_Online.pro index 7b0c88b..c64ba47 100644 --- a/Attorney_Online.pro +++ b/Attorney_Online.pro @@ -50,3 +50,14 @@ TRANSLATIONS = resource/translations/ao_en.ts \ win32:RC_ICONS = resource/logo.ico macx:ICON = resource/logo.icns + +android:DISTFILES += \ + android/AndroidManifest.xml \ + android/build.gradle \ + android/gradle/wrapper/gradle-wrapper.jar \ + android/gradle/wrapper/gradle-wrapper.properties \ + android/gradlew \ + android/gradlew.bat \ + android/res/values/libs.xml + +ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index f458c6a..0792ce8 100644 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -1,5 +1,5 @@ - + @@ -63,7 +63,7 @@ - + + + + + + + + + + + + + + +