Compare commits
229 Commits
45f04ca07b
...
0.6.1-alph
| Author | SHA1 | Date | |
|---|---|---|---|
| 6767011d50 | |||
| db4683f62a | |||
| 61ff4835ea | |||
| 1f252ac4b3 | |||
| 7104ba93ae | |||
| 5ef00eee9f | |||
| 9a743b9aea | |||
| d7a51b09f1 | |||
| 6452eacb34 | |||
| 47cab7d66b | |||
| 09cc2ceee4 | |||
| 7620d49489 | |||
| 381ef354c6 | |||
| 8be6e381d8 | |||
| 3ab30eefa4 | |||
| 325ab94a64 | |||
| 9434a48ae7 | |||
| 79be815827 | |||
| c616546e1e | |||
| 92f972d320 | |||
| 980fc2ccfb | |||
| 3b82c519d0 | |||
| 002bb40aae | |||
| 6f4a07a306 | |||
| d5a3871f56 | |||
| 0c32f620af | |||
| 93bf97a15e | |||
| 0ee809daf1 | |||
| a048a51300 | |||
| 365d8a10da | |||
| 3940c9ce1b | |||
| 156849eeb6 | |||
| 6a8b192024 | |||
| ce8ca15c56 | |||
| f7ad5acd33 | |||
| 444e826d1b | |||
| 6b6ad48617 | |||
| e43da17d66 | |||
| 3fcf3e3418 | |||
| 8955b6ea47 | |||
| 4f21343e3b | |||
| fcf7427fb2 | |||
| 50d1de49e0 | |||
| 3811964689 | |||
| 26e5376030 | |||
| d3d9b1a238 | |||
| f0df3fe257 | |||
| 3ebed84cdb | |||
|
|
d08948fb00 | ||
|
|
061d6db3a9 | ||
|
|
346ec7469e | ||
|
|
d7d887f882 | ||
| ce182b676f | |||
| b73f7f121d | |||
|
|
5e19ef778e | ||
|
|
4b69a1240a | ||
|
|
8f34fbc1ec | ||
|
|
890604256b | ||
| 5bc19c4ab2 | |||
| dfb3bf1da7 | |||
| 263118f2e0 | |||
|
|
792d4b32e7 | ||
| 1d0264a9c5 | |||
| 43f0d1f75f | |||
|
|
2da05d94c8 | ||
|
|
a0e99e2f03 | ||
|
|
b6ea0c7dc3 | ||
|
|
620b358ba7 | ||
| 70308d4151 | |||
| 830549791a | |||
| 27b22d8108 | |||
| 4047fd71e1 | |||
| 30dd344208 | |||
| 7e9de7a461 | |||
| 2465292473 | |||
| 26b2c196fa | |||
| 18793a6e05 | |||
|
|
edc6985a6b | ||
|
|
9cd91b1508 | ||
|
|
9c46d7094c | ||
|
|
52afff463b | ||
|
|
0d23fadc3e | ||
|
|
614e018dc6 | ||
|
|
e346df682c | ||
|
|
3e48c7fabd | ||
| de72a9a3b7 | |||
| 0645905fc6 | |||
| b3561e773d | |||
| 162ec7adfa | |||
| 4cfaa43d77 | |||
|
|
31d80aedf8 | ||
|
|
bc82f5c091 | ||
| 8d7a1973e7 | |||
| 3a0f4c3647 | |||
|
|
d6a3e477c1 | ||
|
|
4d68c4dff8 | ||
|
|
e1c2210621 | ||
|
|
c188fa0ce2 | ||
|
|
9db9f469cc | ||
|
|
db7a889962 | ||
|
|
95a193323c | ||
|
|
f19c2d24a3 | ||
|
|
e1b81a7cc3 | ||
|
|
baeefae94d | ||
|
|
aa9fa659df | ||
|
|
6049239303 | ||
|
|
55d06f0590 | ||
|
|
58b7724ba2 | ||
| 6ae787b90d | |||
|
|
fe73853a64 | ||
| 845d721b1e | |||
| d7a02bfc90 | |||
| 13fd830361 | |||
|
|
a96b942c17 | ||
|
|
c476153231 | ||
| 412a34562f | |||
| 98dd53e2f5 | |||
| 6f0c485a9f | |||
| 7cc33b011d | |||
| aeb8e45879 | |||
| d554767309 | |||
| aec534d948 | |||
| 8867878ccf | |||
| 44ece561e8 | |||
| 22b59bd2cc | |||
| 705c4154ee | |||
| 59898ca504 | |||
| b658132dac | |||
| ab5f177208 | |||
| 72b68389b2 | |||
|
|
59ba8bfb7c | ||
|
|
ef32fcfe08 | ||
|
|
2237515793 | ||
|
|
e272991159 | ||
|
|
055f00be49 | ||
|
|
4023d70687 | ||
|
|
378dfe8e22 | ||
|
|
61f0124beb | ||
|
|
ff5c57f6ba | ||
|
|
eac71a93d1 | ||
|
|
fa249728e5 | ||
|
|
84e8744387 | ||
|
|
27f0287986 | ||
|
|
109bbcfdb1 | ||
|
|
4dc7055d9d | ||
|
|
1ec347d5d5 | ||
|
|
5194575092 | ||
| 3cfa2d9ee7 | |||
| f016f00eab | |||
|
|
470c28d83a | ||
| 4363157cd9 | |||
| ba3ed3b4dd | |||
| 5783fb93f3 | |||
| 73fb2a2b3d | |||
| bcf48eb5e3 | |||
|
|
f1e8932fbd | ||
|
|
f5fecbc928 | ||
|
|
77d02fcca2 | ||
| 6d696af235 | |||
|
|
370363f792 | ||
|
|
61a2349b8b | ||
| eed3a6df61 | |||
| 97b0fb4d46 | |||
| 8be842a8ac | |||
| 6957f144e1 | |||
| f9d9a0f0f9 | |||
|
|
28febb4e63 | ||
|
|
aeef442f76 | ||
| 8098ab8906 | |||
| f0cb6d0b7c | |||
| d1672c0ee2 | |||
| c234abe3aa | |||
|
|
e4ff7728af | ||
|
|
41c5bdf243 | ||
| 96e8826f01 | |||
| db8993683f | |||
| 2c1b5e256e | |||
|
|
4beb5cb0f9 | ||
|
|
88ef7f3d17 | ||
|
|
cbd81b47ce | ||
| c146791845 | |||
| a7c75d2ad2 | |||
| 468ae4a211 | |||
| 9405e8daad | |||
| bef09a3305 | |||
|
|
82f827af29 | ||
|
|
4f8b18b735 | ||
| 2acb57d051 | |||
| 5251085752 | |||
| a16f76f2b6 | |||
| b088f39e52 | |||
| 13c624e07e | |||
| 2bfa8f11f1 | |||
| 98a05e5aa3 | |||
| 3f6d9cdcb8 | |||
| 39186069cf | |||
| b94c16b22a | |||
|
|
91ce365a26 | ||
|
|
f114536463 | ||
| 6e0615c0bc | |||
| fd3ee23e4e | |||
| e9766ed2a1 | |||
|
|
298451c290 | ||
|
|
668fc9d16f | ||
|
|
5717aeab24 | ||
|
|
9af1496b9d | ||
| 6bfae5a14e | |||
| 4034cf243d | |||
| b6e7414f04 | |||
|
|
83f3284827 | ||
|
|
3dab395af3 | ||
|
|
011c8f7123 | ||
|
|
f69c009da9 | ||
|
|
b66b4a2dc2 | ||
|
|
7037b2b5f2 | ||
|
|
d54e39b332 | ||
|
|
f96ba8bb33 | ||
|
|
f0e1980f59 | ||
| 52f607b126 | |||
|
|
84a956531c | ||
|
|
c4f5f22f24 | ||
|
|
7867aea042 | ||
|
|
a90e1463ee | ||
|
|
59e820e27f | ||
|
|
1199f53632 | ||
|
|
dc0e2c192b | ||
|
|
6ef9efa434 | ||
|
|
72e6537dc5 | ||
|
|
0e2e7694d3 |
17
.github/actions/setup-ninja/action.yml
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
name: Setup Ninja
|
||||||
|
description: Sets up Ninja
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
host:
|
||||||
|
description: 'Host platform: win, mac or linux'
|
||||||
|
required: true
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Setup
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
curl -L https://github.com/ninja-build/ninja/releases/latest/download/ninja-${{ inputs.host }}.zip -o ninja.zip
|
||||||
|
7z x ninja.zip -o"$GITHUB_WORKSPACE/ninja"
|
||||||
|
echo "$GITHUB_WORKSPACE/ninja" >> $GITHUB_PATH
|
||||||
218
.github/workflows/build.yml
vendored
@@ -18,8 +18,8 @@ permissions:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-windows:
|
build-windows:
|
||||||
name: Windows Build
|
name: Build Windows
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
@@ -27,59 +27,19 @@ jobs:
|
|||||||
- name: Setup caches
|
- name: Setup caches
|
||||||
uses: ./.github/actions/setup-cache
|
uses: ./.github/actions/setup-cache
|
||||||
with:
|
with:
|
||||||
host: win
|
host: linux
|
||||||
target: win
|
target: win
|
||||||
|
|
||||||
- name: Download xwin
|
- name: Setup Ninja
|
||||||
uses: robinraju/release-downloader@v1.10
|
uses: ./.github/actions/setup-ninja
|
||||||
with:
|
with:
|
||||||
repository: Jake-Shadle/xwin
|
host: linux
|
||||||
latest: true
|
|
||||||
fileName: 'xwin-*-x86_64-unknown-linux-musl.tar.gz'
|
|
||||||
tarBall: false
|
|
||||||
zipBall: false
|
|
||||||
out-file-path: "epic-xwin"
|
|
||||||
|
|
||||||
- name: Prepare xwin
|
- name: Download llvm-mingw
|
||||||
run: |
|
run: |
|
||||||
tar -xzf epic-xwin/xwin-*-x86_64-unknown-linux-musl.tar.gz -C epic-xwin
|
curl -L https://github.com/mstorsjo/llvm-mingw/releases/download/20260311/llvm-mingw-20260311-msvcrt-ubuntu-22.04-x86_64.tar.xz -o llvm-mingw.tar.xz
|
||||||
mv epic-xwin/xwin-*-x86_64-unknown-linux-musl/xwin ./xwin
|
tar -xf llvm-mingw.tar.xz
|
||||||
./xwin --arch x86_64 --sdk-version 10.0.22621 --accept-license list
|
mv llvm-mingw-* llvm-mingw
|
||||||
|
|
||||||
# this caches '.xwin-cache/**/*' but that's actually only gonna
|
|
||||||
# contain the manifest cuz we only ran `xwin list` so far
|
|
||||||
- name: Setup xwin Cache
|
|
||||||
id: xwin-cache
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: .xwin-cache
|
|
||||||
key: xwin-win-v1-${{ hashFiles('.xwin-cache/**/*') }}
|
|
||||||
|
|
||||||
- name: Download clang-msvc-sdk toolchain
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
repository: 'Nemirtingas/clang-msvc-sdk'
|
|
||||||
path: toolchain
|
|
||||||
submodules: recursive
|
|
||||||
|
|
||||||
- name: Install Clang
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y wget lsb-release software-properties-common gnupg
|
|
||||||
|
|
||||||
wget https://apt.llvm.org/llvm.sh
|
|
||||||
chmod +x llvm.sh
|
|
||||||
sudo ./llvm.sh 21 all
|
|
||||||
|
|
||||||
- name: Add LLVM 21 to path
|
|
||||||
run: echo "/usr/lib/llvm-21/bin" >> $GITHUB_PATH
|
|
||||||
|
|
||||||
- name: Verify LLVM
|
|
||||||
run: |
|
|
||||||
which clang-cl
|
|
||||||
which lld-link
|
|
||||||
clang-cl --version
|
|
||||||
lld-link --version
|
|
||||||
|
|
||||||
- name: Create Build Environment
|
- name: Create Build Environment
|
||||||
# Some projects don't allow in-source building, so create a separate build directory
|
# Some projects don't allow in-source building, so create a separate build directory
|
||||||
@@ -88,29 +48,59 @@ jobs:
|
|||||||
|
|
||||||
- name: Configure CMake
|
- name: Configure CMake
|
||||||
working-directory: ${{github.workspace}}/build
|
working-directory: ${{github.workspace}}/build
|
||||||
run: cmake $env:GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$env:BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
|
run: |
|
||||||
env:
|
cmake $GITHUB_WORKSPACE \
|
||||||
SPLAT_DIR: ${{ github.workspace }}/.xwin-cache/splat
|
-G Ninja \
|
||||||
TOOLCHAIN: ${{ github.workspace }}/toolchain/clang-cl-msvc.cmake
|
-DCMAKE_SYSTEM_NAME=Windows \
|
||||||
HOST_ARCH: x86_64
|
-DCMAKE_C_COMPILER=$GITHUB_WORKSPACE/llvm-mingw/bin/x86_64-w64-mingw32-clang \
|
||||||
|
-DCMAKE_CXX_COMPILER=$GITHUB_WORKSPACE/llvm-mingw/bin/x86_64-w64-mingw32-clang++ \
|
||||||
|
-DCMAKE_RC_COMPILER=$GITHUB_WORKSPACE/llvm-mingw/bin/x86_64-w64-mingw32-windres \
|
||||||
|
-DALSOFT_BACKEND_PIPEWIRE=OFF \
|
||||||
|
-DCMAKE_BUILD_TYPE=$BUILD_TYPE
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
working-directory: ${{github.workspace}}/build
|
working-directory: ${{github.workspace}}/build
|
||||||
run: cmake --build . --config $env:BUILD_TYPE --target MinecraftPE --parallel
|
run: |
|
||||||
|
cmake --build . --config $BUILD_TYPE --target MinecraftPE --parallel
|
||||||
|
cmake --build . --config $BUILD_TYPE --target MinecraftPE-server --parallel
|
||||||
|
|
||||||
- name: Upload Artifact
|
- name: Upload Artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: mcpe-windows
|
name: mcpe-windows
|
||||||
path: |
|
path: |
|
||||||
${{github.workspace}}/build/${{ env.BUILD_TYPE }}/MinecraftPE.exe
|
${{github.workspace}}/build/MinecraftPE-server.exe
|
||||||
${{github.workspace}}/build/${{ env.BUILD_TYPE }}/glfw3.dll
|
${{github.workspace}}/build/MinecraftPE.exe
|
||||||
${{github.workspace}}/build/${{ env.BUILD_TYPE }}/libpng16.dll
|
${{github.workspace}}/build/libpng16.dll
|
||||||
${{github.workspace}}/build/${{ env.BUILD_TYPE }}/OpenAL32.dll
|
${{github.workspace}}/build/OpenAL32.dll
|
||||||
${{github.workspace}}/build/${{ env.BUILD_TYPE }}/z.dll
|
${{github.workspace}}/build/libz.dll
|
||||||
|
|
||||||
|
build-ios:
|
||||||
|
# credit to pengubow from deepfriedwaffles repo
|
||||||
|
name: Build iOS
|
||||||
|
runs-on: macos-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@main
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
cd project/iosproj
|
||||||
|
xcodebuild -scheme minecraftpe -derivedDataPath build -destination 'generic/platform=iOS' CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
|
||||||
|
mkdir -p Payload
|
||||||
|
cp -R build/Build/Products/Debug-iphoneos/minecraftpe.app Payload/
|
||||||
|
zip -r minecraftpe.ipa Payload
|
||||||
|
rm -rf Payload
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@main
|
||||||
|
with:
|
||||||
|
name: minecraftpe-ios
|
||||||
|
path: project/iosproj/minecraftpe.ipa
|
||||||
|
|
||||||
build-linux:
|
build-linux:
|
||||||
name: Linux Build
|
name: Build Linux
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@@ -156,7 +146,7 @@ jobs:
|
|||||||
${{github.workspace}}/build/MinecraftPE-server
|
${{github.workspace}}/build/MinecraftPE-server
|
||||||
|
|
||||||
build-android: # pray to god
|
build-android: # pray to god
|
||||||
name: Build Android APK (${{ matrix.abi }})
|
name: Build Android (${{ matrix.abi }})
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
@@ -229,16 +219,6 @@ jobs:
|
|||||||
distribution: temurin
|
distribution: temurin
|
||||||
java-version: 25
|
java-version: 25
|
||||||
|
|
||||||
- name: Validate environment
|
|
||||||
run: |
|
|
||||||
echo "ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT"
|
|
||||||
echo "ANDROID_NDK_PATH=$ANDROID_NDK_PATH"
|
|
||||||
echo "JAVA_HOME=$JAVA_HOME"
|
|
||||||
echo "MATRIX_ABI=$MATRIX_ABI"
|
|
||||||
$ANDROID_SDK_ROOT/platform-tools/adb version || true
|
|
||||||
java -version
|
|
||||||
javac -version
|
|
||||||
|
|
||||||
- name: Run Android build script
|
- name: Run Android build script
|
||||||
run: |
|
run: |
|
||||||
chmod +x ./build.sh
|
chmod +x ./build.sh
|
||||||
@@ -251,11 +231,59 @@ jobs:
|
|||||||
name: minecraftpe-apk-${{ matrix.abi }}
|
name: minecraftpe-apk-${{ matrix.abi }}
|
||||||
path: ${{ github.workspace }}/build-apk/minecraftpe-*-debug.apk
|
path: ${{ github.workspace }}/build-apk/minecraftpe-*-debug.apk
|
||||||
|
|
||||||
|
build-web:
|
||||||
|
name: Build Web
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup caches
|
||||||
|
uses: ./.github/actions/setup-cache
|
||||||
|
with:
|
||||||
|
host: linux
|
||||||
|
target: linux
|
||||||
|
|
||||||
|
- name: Setup Ninja
|
||||||
|
uses: ./.github/actions/setup-ninja
|
||||||
|
with:
|
||||||
|
host: linux
|
||||||
|
|
||||||
|
- name: Setup emsdk
|
||||||
|
uses: mymindstorm/setup-emsdk@v14
|
||||||
|
with:
|
||||||
|
version: 5.0.3
|
||||||
|
actions-cache-folder: 'emsdk-cache'
|
||||||
|
|
||||||
|
- name: Create Build Environment
|
||||||
|
# Some projects don't allow in-source building, so create a separate build directory
|
||||||
|
# We'll use this as our working directory for all subsequent commands
|
||||||
|
run: cmake -E make_directory ${{github.workspace}}/build
|
||||||
|
|
||||||
|
- name: Configure CMake
|
||||||
|
# Use a bash shell so we can use the same syntax for environment variable
|
||||||
|
# access regardless of the host operating system
|
||||||
|
shell: bash
|
||||||
|
working-directory: ${{github.workspace}}/build
|
||||||
|
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G Ninja -DCMAKE_TOOLCHAIN_FILE="$GITHUB_WORKSPACE/emsdk-cache/emsdk-main/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake"
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
working-directory: ${{github.workspace}}/build
|
||||||
|
run: cmake --build . --config $BUILD_TYPE --target MinecraftPE --parallel
|
||||||
|
|
||||||
|
- name: Upload Artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: mcpe-web
|
||||||
|
path: |
|
||||||
|
${{github.workspace}}/build/MinecraftPE.js
|
||||||
|
${{github.workspace}}/build/MinecraftPE.wasm
|
||||||
|
${{github.workspace}}/build/MinecraftPE.data
|
||||||
|
|
||||||
publish:
|
publish:
|
||||||
name: Publish
|
name: Publish
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [ build-windows, build-linux, build-android ]
|
needs: [ build-windows, build-ios, build-linux, build-android, build-web ]
|
||||||
if: github.ref == 'refs/heads/main'
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -272,32 +300,44 @@ jobs:
|
|||||||
- name: Zip Windows Artifacts
|
- name: Zip Windows Artifacts
|
||||||
uses: vimtor/action-zip@v1.2
|
uses: vimtor/action-zip@v1.2
|
||||||
with:
|
with:
|
||||||
files: data mcpe-windows/MinecraftPE.exe mcpe-windows/glfw3.dll mcpe-windows/libpng16.dll mcpe-windows/OpenAL32.dll mcpe-windows/z.dll
|
files: mcpe-windows/MinecraftPE.exe mcpe-windows/libpng16.dll mcpe-windows/OpenAL32.dll mcpe-windows/libz.dll
|
||||||
dest: minecraftpe-${{ steps.ref.outputs.hash }}-windows.zip
|
dest: minecraftpe-${{ steps.ref.outputs.hash }}-windows.zip
|
||||||
|
|
||||||
|
- name: Zip Windows Server Artifacts
|
||||||
|
uses: vimtor/action-zip@v1.2
|
||||||
|
with:
|
||||||
|
files: mcpe-windows/MinecraftPE-server.exe
|
||||||
|
dest: minecraftpe-server-${{ steps.ref.outputs.hash }}-windows.zip
|
||||||
|
|
||||||
- name: Zip Linux Artifacts
|
- name: Zip Linux Artifacts
|
||||||
uses: vimtor/action-zip@v1.2
|
uses: vimtor/action-zip@v1.2
|
||||||
with:
|
with:
|
||||||
files: data mcpe-linux/MinecraftPE
|
files: mcpe-linux/MinecraftPE
|
||||||
dest: minecraftpe-${{ steps.ref.outputs.hash }}-linux.zip
|
dest: minecraftpe-${{ steps.ref.outputs.hash }}-linux.zip
|
||||||
|
|
||||||
- name: Zip Linux Server Artifacts
|
- name: Zip Linux Server Artifacts
|
||||||
uses: vimtor/action-zip@v1.2
|
uses: vimtor/action-zip@v1.2
|
||||||
with:
|
with:
|
||||||
files: mcpe-linux/MinecraftPE-server
|
files: mcpe-linux/MinecraftPE-server
|
||||||
dest: minecraftpe-server-${{ steps.ref.outputs.hash }}.zip
|
dest: minecraftpe-server-${{ steps.ref.outputs.hash }}-linux.zip
|
||||||
|
|
||||||
- name: Zip Android arm64-v8a Artifact
|
- name: Rename Android Artifacts
|
||||||
|
run: |
|
||||||
|
mv minecraftpe-apk-arm64-v8a/minecraftpe-v8a-debug.apk minecraftpe-${{ steps.ref.outputs.hash }}-android-arm64-v8a.apk
|
||||||
|
mv minecraftpe-apk-armeabi-v7a/minecraftpe-v7a-debug.apk minecraftpe-${{ steps.ref.outputs.hash }}-android-armeabi-v7a.apk
|
||||||
|
|
||||||
|
- name: Zip Web Artifact
|
||||||
uses: vimtor/action-zip@v1.2
|
uses: vimtor/action-zip@v1.2
|
||||||
with:
|
with:
|
||||||
files: minecraftpe-apk-arm64-v8a/minecraftpe-v8a-debug.apk
|
files: mcpe-web/MinecraftPE.js mcpe-web/MinecraftPE.wasm mcpe-web/MinecraftPE.data misc/web/index.html
|
||||||
dest: minecraftpe-${{ steps.ref.outputs.hash }}-android-arm64-v8a.zip
|
dest: minecraftpe-${{ steps.ref.outputs.hash }}-web.zip
|
||||||
|
|
||||||
- name: Zip Android armeabi-v7a Artifact
|
- name: Zip Data
|
||||||
uses: vimtor/action-zip@v1.2
|
uses: vimtor/action-zip@v1.2
|
||||||
with:
|
with:
|
||||||
files: minecraftpe-apk-armeabi-v7a/minecraftpe-v7a-debug.apk
|
files: data
|
||||||
dest: minecraftpe-${{ steps.ref.outputs.hash }}-android-armeabi-v7a.zip
|
recursive: false
|
||||||
|
dest: data.zip
|
||||||
|
|
||||||
- name: Update Development Release
|
- name: Update Development Release
|
||||||
uses: andelf/nightly-release@main
|
uses: andelf/nightly-release@main
|
||||||
@@ -309,8 +349,14 @@ jobs:
|
|||||||
body: |
|
body: |
|
||||||
MinecraftPE development release for commit ${{ github.sha }}.
|
MinecraftPE development release for commit ${{ github.sha }}.
|
||||||
files: |
|
files: |
|
||||||
./minecraftpe-${{ steps.ref.outputs.hash }}-windows.zip
|
./data.zip
|
||||||
./minecraftpe-${{ steps.ref.outputs.hash }}-linux.zip
|
|
||||||
./minecraftpe-server-${{ steps.ref.outputs.hash }}.zip
|
./minecraftpe-server-${{ steps.ref.outputs.hash }}.zip
|
||||||
|
./minecraftpe-${{ steps.ref.outputs.hash }}-windows.zip
|
||||||
|
./minecraftpe-server-${{ steps.ref.outputs.hash }}-windows.zip
|
||||||
|
./minecraftpe-${{ steps.ref.outputs.hash }}-linux.zip
|
||||||
|
./minecraftpe-${{ steps.ref.outputs.hash }}-android-arm64-v8a.apk
|
||||||
|
./minecraftpe-${{ steps.ref.outputs.hash }}-android-armeabi-v7a.apk
|
||||||
|
./minecraftpe-server-${{ steps.ref.outputs.hash }}-linux.zip
|
||||||
./minecraftpe-${{ steps.ref.outputs.hash }}-android-arm64-v8a.zip
|
./minecraftpe-${{ steps.ref.outputs.hash }}-android-arm64-v8a.zip
|
||||||
./minecraftpe-${{ steps.ref.outputs.hash }}-android-armeabi-v7a.zip
|
./minecraftpe-${{ steps.ref.outputs.hash }}-android-armeabi-v7a.zip
|
||||||
|
./minecraftpe-${{ steps.ref.outputs.hash }}-web.zip
|
||||||
|
|||||||
@@ -7,10 +7,6 @@ set(CMAKE_CXX_STANDARD 14)
|
|||||||
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
|
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
|
||||||
set(CMAKE_POLICY_VERSION_MINIMUM 3.10)
|
set(CMAKE_POLICY_VERSION_MINIMUM 3.10)
|
||||||
|
|
||||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
||||||
set(CMAKE_CXX_FLAGS "-Wno-c++11-narrowing -Wno-narrowing -Wno-invalid-source-encoding -Wno-reserved-user-defined-literal")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include(cmake/EnumOption.cmake)
|
include(cmake/EnumOption.cmake)
|
||||||
|
|
||||||
if(EMSCRIPTEN)
|
if(EMSCRIPTEN)
|
||||||
@@ -20,15 +16,26 @@ endif()
|
|||||||
|
|
||||||
enum_option(PLATFORM "Desktop;Web" "Platform to build for.")
|
enum_option(PLATFORM "Desktop;Web" "Platform to build for.")
|
||||||
|
|
||||||
find_package(Threads REQUIRED)
|
if(NOT EMSCRIPTEN)
|
||||||
|
find_package(Threads REQUIRED)
|
||||||
|
endif()
|
||||||
find_package(OpenSSL)
|
find_package(OpenSSL)
|
||||||
|
|
||||||
if (${PLATFORM} STREQUAL "Desktop")
|
if (${PLATFORM} STREQUAL "Desktop")
|
||||||
set(PLATFORM_CPP "PLATFORM_DESKTOP")
|
set(PLATFORM_CPP "PLATFORM_DESKTOP")
|
||||||
|
|
||||||
|
if (MINGW)
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-c++11-narrowing -Wno-narrowing -Wno-invalid-source-encoding -Wno-reserved-user-defined-literal")
|
||||||
|
endif()
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||||
set(EXTRA_LIBS ws2_32)
|
include_directories(misc/windows)
|
||||||
|
set(EXTRA_LIBS ws2_32 winhttp)
|
||||||
elseif(UNIX)
|
elseif(UNIX)
|
||||||
find_library(pthread NAMES pthread)
|
find_library(pthread NAMES pthread)
|
||||||
set(EXTRA_LIBS pthread m)
|
set(EXTRA_LIBS pthread m)
|
||||||
@@ -51,6 +58,7 @@ if(${PLATFORM} MATCHES "Web")
|
|||||||
|
|
||||||
add_library(png INTERFACE IMPORTED)
|
add_library(png INTERFACE IMPORTED)
|
||||||
set_target_properties(png PROPERTIES
|
set_target_properties(png PROPERTIES
|
||||||
|
INTERFACE_COMPILE_OPTIONS "-sUSE_LIBPNG=1"
|
||||||
INTERFACE_LINK_OPTIONS "-sUSE_LIBPNG=1"
|
INTERFACE_LINK_OPTIONS "-sUSE_LIBPNG=1"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -100,9 +108,11 @@ CPMAddPackage(
|
|||||||
"ALSOFT_TESTS OFF"
|
"ALSOFT_TESTS OFF"
|
||||||
"ALSOFT_UTILS OFF"
|
"ALSOFT_UTILS OFF"
|
||||||
"LIBTYPE ${AL_LIBTYPE}"
|
"LIBTYPE ${AL_LIBTYPE}"
|
||||||
|
"ALSOFT_ENABLE_MODULES OFF"
|
||||||
|
"ALSOFT_STATIC_STDCXX ON"
|
||||||
|
"ALSOFT_STATIC_LIBGCC ON"
|
||||||
)
|
)
|
||||||
|
|
||||||
# TODO: Clear this paths with *
|
|
||||||
file(GLOB SERVER_SOURCES
|
file(GLOB SERVER_SOURCES
|
||||||
"project/lib_projects/raknet/jni/RaknetSources/*.cpp"
|
"project/lib_projects/raknet/jni/RaknetSources/*.cpp"
|
||||||
"src/NinecraftApp.cpp"
|
"src/NinecraftApp.cpp"
|
||||||
@@ -141,7 +151,6 @@ file(GLOB SERVER_SOURCES
|
|||||||
|
|
||||||
"src/platform/CThread.cpp"
|
"src/platform/CThread.cpp"
|
||||||
"src/platform/HttpClient.cpp"
|
"src/platform/HttpClient.cpp"
|
||||||
"src/platform/PngLoader.cpp"
|
|
||||||
"src/platform/time.cpp"
|
"src/platform/time.cpp"
|
||||||
|
|
||||||
"src/platform/input/Controller.cpp"
|
"src/platform/input/Controller.cpp"
|
||||||
@@ -157,6 +166,7 @@ file(GLOB SERVER_SOURCES
|
|||||||
"src/util/Mth.cpp"
|
"src/util/Mth.cpp"
|
||||||
"src/util/PerfTimer.cpp"
|
"src/util/PerfTimer.cpp"
|
||||||
"src/util/StringUtils.cpp"
|
"src/util/StringUtils.cpp"
|
||||||
|
"src/util/Color.cpp"
|
||||||
|
|
||||||
"src/world/Direction.cpp"
|
"src/world/Direction.cpp"
|
||||||
|
|
||||||
@@ -190,6 +200,9 @@ file(GLOB SERVER_SOURCES
|
|||||||
|
|
||||||
"src/world/level/dimension/Dimension.cpp"
|
"src/world/level/dimension/Dimension.cpp"
|
||||||
|
|
||||||
|
"src/world/level/dimension/FoliageColor.cpp"
|
||||||
|
"src/world/level/GrassColor.cpp"
|
||||||
|
|
||||||
"src/world/level/levelgen/*.cpp"
|
"src/world/level/levelgen/*.cpp"
|
||||||
"src/world/level/levelgen/feature/Feature.cpp"
|
"src/world/level/levelgen/feature/Feature.cpp"
|
||||||
"src/world/level/levelgen/synth/*.cpp"
|
"src/world/level/levelgen/synth/*.cpp"
|
||||||
@@ -203,6 +216,7 @@ file(GLOB SERVER_SOURCES
|
|||||||
"src/world/level/tile/entity/*.cpp"
|
"src/world/level/tile/entity/*.cpp"
|
||||||
|
|
||||||
"src/world/phys/HitResult.cpp"
|
"src/world/phys/HitResult.cpp"
|
||||||
|
"src/commands/*.cpp"
|
||||||
)
|
)
|
||||||
|
|
||||||
file(GLOB CLIENT_SOURCES
|
file(GLOB CLIENT_SOURCES
|
||||||
@@ -249,6 +263,8 @@ file(GLOB CLIENT_SOURCES
|
|||||||
|
|
||||||
"src/util/**.cpp"
|
"src/util/**.cpp"
|
||||||
|
|
||||||
|
"src/util/Color.cpp"
|
||||||
|
|
||||||
"src/world/*.cpp"
|
"src/world/*.cpp"
|
||||||
"src/world/phys/*.cpp"
|
"src/world/phys/*.cpp"
|
||||||
"src/world/entity/*.cpp"
|
"src/world/entity/*.cpp"
|
||||||
@@ -284,6 +300,8 @@ file(GLOB CLIENT_SOURCES
|
|||||||
|
|
||||||
"src/AppPlatform_glfw.cpp"
|
"src/AppPlatform_glfw.cpp"
|
||||||
"src/main.cpp"
|
"src/main.cpp"
|
||||||
|
|
||||||
|
"src/commands/*.cpp"
|
||||||
)
|
)
|
||||||
|
|
||||||
if (${PLATFORM} STREQUAL "Desktop")
|
if (${PLATFORM} STREQUAL "Desktop")
|
||||||
@@ -291,21 +309,23 @@ if (${PLATFORM} STREQUAL "Desktop")
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Server
|
# Server
|
||||||
if(UNIX)
|
add_executable("${PROJECT_NAME}-server" ${SERVER_SOURCES})
|
||||||
add_executable("${PROJECT_NAME}-server" ${SERVER_SOURCES})
|
|
||||||
|
|
||||||
target_compile_definitions("${PROJECT_NAME}-server" PUBLIC "STANDALONE_SERVER" "SERVER_PROFILER")
|
target_compile_definitions("${PROJECT_NAME}-server" PUBLIC "STANDALONE_SERVER" "SERVER_PROFILER")
|
||||||
|
|
||||||
target_include_directories("${PROJECT_NAME}-server" PUBLIC
|
target_include_directories("${PROJECT_NAME}-server" PUBLIC
|
||||||
"${CMAKE_SOURCE_DIR}/src/"
|
"${CMAKE_SOURCE_DIR}/src/"
|
||||||
"project/lib_projects/raknet/jni/RaknetSources"
|
"project/lib_projects/raknet/jni/RaknetSources"
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries("${PROJECT_NAME}-server" ${CMAKE_THREAD_LIBS_INIT})
|
target_link_libraries("${PROJECT_NAME}-server" ${CMAKE_THREAD_LIBS_INIT} ${EXTRA_LIBS})
|
||||||
endif()
|
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME} ${CLIENT_SOURCES})
|
add_executable(${PROJECT_NAME} ${CLIENT_SOURCES})
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
target_sources(${PROJECT_NAME} PRIVATE data/images/pe.rc)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_compile_definitions(${PROJECT_NAME} PUBLIC ${PLATFORM_CPP})
|
target_compile_definitions(${PROJECT_NAME} PUBLIC ${PLATFORM_CPP})
|
||||||
|
|
||||||
target_include_directories(${PROJECT_NAME} PUBLIC
|
target_include_directories(${PROJECT_NAME} PUBLIC
|
||||||
@@ -319,11 +339,11 @@ target_include_directories(${PROJECT_NAME} PUBLIC
|
|||||||
if(${PLATFORM} MATCHES "Web")
|
if(${PLATFORM} MATCHES "Web")
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
# uuuh i hate it
|
# uuuh i hate it
|
||||||
set(EM_FLAGS "-pthread -sUSE_PTHREADS=1 -sSHARED_MEMORY=1")
|
set(EM_FLAGS "-pthread -sUSE_PTHREADS=1 -sUSE_LIBPNG=1 -sSHARED_MEMORY=1")
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EM_FLAGS}")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EM_FLAGS}")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EM_FLAGS}")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EM_FLAGS}")
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EM_FLAGS} --preload-file ${CMAKE_SOURCE_DIR}/data@/data -sPROXY_TO_PTHREAD")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EM_FLAGS} --preload-file ${CMAKE_SOURCE_DIR}/data@/data")
|
||||||
|
|
||||||
target_compile_options(${PROJECT_NAME} PUBLIC
|
target_compile_options(${PROJECT_NAME} PUBLIC
|
||||||
"-Os"
|
"-Os"
|
||||||
|
|||||||
77
README.md
@@ -1,6 +1,6 @@
|
|||||||
# MinecraftPE
|
# MinecraftPE
|
||||||
> [!Warning]
|
> [!Warning]
|
||||||
> Github repository **isnt main**. All issues and pull requests should be send in [Gitea Repository](https://gitea.sffempire.ru/Kolyah35/minecraft-pe-0.6.1).
|
> [Github repository](https://github.com/Minecraft-PE-0-6-1/minecraft-pe-0.6.1-on-all) **isnt main**. All issues and pull requests should be send in [Gitea Repository](https://gitea.sffempire.ru/Kolyah35/minecraft-pe-0.6.1).
|
||||||
|
|
||||||
> [!Important]
|
> [!Important]
|
||||||
> We have a discord server, where you can report bugs or send feedback https://discord.gg/c58YesBxve
|
> We have a discord server, where you can report bugs or send feedback https://discord.gg/c58YesBxve
|
||||||
@@ -9,23 +9,20 @@ Source code for **Minecraft Pocket Edition 0.6.1 alpha** with various fixes and
|
|||||||
|
|
||||||
This project aims to preserve and improve this early version of Minecraft PE.
|
This project aims to preserve and improve this early version of Minecraft PE.
|
||||||
|
|
||||||
# TODO / Roadmap
|
# Features
|
||||||
- [x] Add platform GLFW
|
- Support for modern IOS and Android, Linux, Web
|
||||||
- [x] Compile for Linux
|
- Improved Dedicated Server (Windows build, anticheat, commands, etc)
|
||||||
- [x] Compile for android aarch64
|
- Features from Beta version of Minecraft (Grass tint, Beta sky, Smooth lighting, etc) and other tweaks
|
||||||
- [x] Touch control improvements
|
|
||||||
- [ ] Screen fixes
|
# Screenshots
|
||||||
- [ ] Rewrite platform logic
|
<p align="center">
|
||||||
- [x] Fix sound
|
|
||||||
- [x] Do a server connection GUI
|
<img width="49%" alt="menu" src="https://sffempire.ru/mcpe-screenshots/menu.png" />
|
||||||
- [ ] Controller support
|
<img width="49%" alt="settings" src="https://sffempire.ru/mcpe-screenshots/settings.png" />
|
||||||
- [x] Minecraft server hosting
|
<img width="49%" alt="worlds" src="https://sffempire.ru/mcpe-screenshots/worlds.png" />
|
||||||
- [x] Screen fixess
|
<img width="49%" alt="gameplay" src="https://sffempire.ru/mcpe-screenshots/gameplay.png" />
|
||||||
- [x] Fix fog
|
|
||||||
- [x] Add sprinting
|
</p>
|
||||||
- [x] Chat (semi working) and commands
|
|
||||||
- [x] Implementing options
|
|
||||||
- [x] Better F3
|
|
||||||
|
|
||||||
# Build
|
# Build
|
||||||
|
|
||||||
@@ -79,8 +76,14 @@ cmake --build .
|
|||||||
```
|
```
|
||||||
C:\android-ndk-r14b
|
C:\android-ndk-r14b
|
||||||
```
|
```
|
||||||
|
3. Install **Build tools 35** with [SDKManager](https://dl.google.com/android/repository/commandlinetools-win-15859902_latest.zip) (build-tools should be in AppData):
|
||||||
|
|
||||||
3. Run the build script:
|
```powershell
|
||||||
|
sdkmanager "build-tools;35.0.0" --sdk_root="%LocalAppData%\Android\Sdk"
|
||||||
|
sdkmanager "build-tools;android-36" --sdk_root="%LocalAppData%\Android\Sdk"
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Run the build script:
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
# Full build (NDK + Java + APK + install)
|
# Full build (NDK + Java + APK + install)
|
||||||
@@ -154,7 +157,6 @@ cmake --build .
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
35.0.0
|
35.0.0
|
||||||
33.0.2
|
|
||||||
```
|
```
|
||||||
|
|
||||||
6. Download **Android NDK r14b**:
|
6. Download **Android NDK r14b**:
|
||||||
@@ -198,3 +200,38 @@ cmake --build .
|
|||||||
```
|
```
|
||||||
emrun --port 8080 .
|
emrun --port 8080 .
|
||||||
```
|
```
|
||||||
|
## iOS
|
||||||
|
### Xcode
|
||||||
|
> [!Note]
|
||||||
|
> There's a precompiled IPA artifact in the GitHub mirror under Actions for those who either don't have Macs or don't want to build themself. But if you want to build youself, you'll need a Mac with Xcode. Download Xcode from the Mac App Store.
|
||||||
|
|
||||||
|
### 1. Clone
|
||||||
|
Open your terminal and clone the repository
|
||||||
|
```bash
|
||||||
|
git clone https://gitea.sffempire.ru/Kolyah35/minecraft-pe-0.6.1.git
|
||||||
|
cd minecraft-pe-0.6.1
|
||||||
|
```
|
||||||
|
You can also build from the ios-support branch by checking out to it
|
||||||
|
```
|
||||||
|
git checkout ios-support
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Open in Xcode
|
||||||
|
|
||||||
|
The project file is in `minecraft-pe-0.6.1/project/iosproj/minecraftpe.xcodeproj`. Open it.
|
||||||
|
|
||||||
|
### 3. Configure Code Signing
|
||||||
|
|
||||||
|
Before you can deploy to an iPhone, you must sign the app with your own Apple Developer account:
|
||||||
|
|
||||||
|
1. Select the **minecraftpe** project in the left sidebar.
|
||||||
|
2. Go to **Signing & Capabilities**.
|
||||||
|
3. Change the **Bundle Identifier** to something unique (e.g., `com.yourname.mcpe`).
|
||||||
|
4. Select your **Team** from the dropdown menu.
|
||||||
|
|
||||||
|
### 4. Build and Run
|
||||||
|
|
||||||
|
1. Connect your iPhone via USB or LAN.
|
||||||
|
2. Select your device from the run destination menu at the top of Xcode.
|
||||||
|
3. Press **Cmd + R** (or the Play button).
|
||||||
|
4. **Note:** If you encounter a "Developer Mode" or "Untrusted Developer" error on your phone, go to **Settings > General > VPN & Device Management** to trust your certificate.
|
||||||
|
|||||||
BIN
data/images/misc/foliagecolor.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
data/images/misc/grasscolor.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
data/images/misc/shadow.png
Normal file
|
After Width: | Height: | Size: 868 B |
BIN
data/images/misc/vignette.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
data/images/misc/water.png
Normal file
|
After Width: | Height: | Size: 306 B |
BIN
data/images/pe.ico
Normal file
|
After Width: | Height: | Size: 63 KiB |
1
data/images/pe.rc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
IDI_ICON1 ICON "pe.ico"
|
||||||
BIN
data/images/terrain/moon.png
Normal file
|
After Width: | Height: | Size: 910 B |
BIN
data/images/terrain/sun.png
Normal file
|
After Width: | Height: | Size: 799 B |
@@ -153,7 +153,33 @@ options.group.tweaks=Tweaks
|
|||||||
options.allowSprint=Allow sprint
|
options.allowSprint=Allow sprint
|
||||||
options.barOnTop=HUD above inventory
|
options.barOnTop=HUD above inventory
|
||||||
options.rpiCursor=Show Raspberry PI cursor
|
options.rpiCursor=Show Raspberry PI cursor
|
||||||
options.autojump=Auto Jump
|
options.foliagetint=Foliage Tinting
|
||||||
|
options.javaHud=Beta Java hotbar tweaks
|
||||||
|
options.blockOutline=Block Outline Selection
|
||||||
|
options.fogType=Fog/Sky Color
|
||||||
|
options.fogType.vanilla=Vanilla
|
||||||
|
options.fogType.java=Beta Java
|
||||||
|
options.fogType.unused=Unused
|
||||||
|
|
||||||
|
options.debugStyle=Debug Menu Style
|
||||||
|
options.debugStyle.javaBeta=Java Beta
|
||||||
|
options.debugStyle.custom=Custom
|
||||||
|
|
||||||
|
options.beautifulSky=Beautiful Skies
|
||||||
|
|
||||||
|
options.useVignette=Vignette Overlay
|
||||||
|
|
||||||
|
options.tintedSide=Tint Grass Sides
|
||||||
|
|
||||||
|
options.betaSky=Java Beta Sky
|
||||||
|
|
||||||
|
options.restoredAnims=Restored Animations
|
||||||
|
|
||||||
|
options.normalLighting=Java Beta/Normals Shading
|
||||||
|
|
||||||
|
options.isJoyTouchArea=Use Split Controls
|
||||||
|
|
||||||
|
options.autoJump=Auto Jump
|
||||||
options.thirdperson=Third Person
|
options.thirdperson=Third Person
|
||||||
options.servervisible=Server Visible
|
options.servervisible=Server Visible
|
||||||
options.sensitivity=Sensitivity
|
options.sensitivity=Sensitivity
|
||||||
@@ -182,9 +208,10 @@ options.graphics.fast=Fast
|
|||||||
options.guiScale=GUI Scale
|
options.guiScale=GUI Scale
|
||||||
options.guiScale.auto=Auto
|
options.guiScale.auto=Auto
|
||||||
options.guiScale.small=Small
|
options.guiScale.small=Small
|
||||||
options.guiScale.normal=Normal
|
options.guiScale.medium=Medium
|
||||||
options.guiScale.large=Large
|
options.guiScale.large=Large
|
||||||
options.guiScale.larger=Larger
|
options.guiScale.larger=Larger
|
||||||
|
options.guiScale.largest=Largest
|
||||||
options.advancedOpengl=Advanced OpenGL
|
options.advancedOpengl=Advanced OpenGL
|
||||||
options.renderClouds=Clouds
|
options.renderClouds=Clouds
|
||||||
options.farWarning1=A 64 bit Java installation is recommended
|
options.farWarning1=A 64 bit Java installation is recommended
|
||||||
@@ -202,6 +229,12 @@ options.fancyGraphics=Fancy graphics
|
|||||||
options.renderDebug=Debug render
|
options.renderDebug=Debug render
|
||||||
options.anaglyph3d=3D anaglyph
|
options.anaglyph3d=3D anaglyph
|
||||||
|
|
||||||
|
options.windowScale =Window Scaling
|
||||||
|
|
||||||
|
options.menuStyle =Menu Style
|
||||||
|
options.menuStyle.pocket =Pocket Edition
|
||||||
|
options.menuStyle.xperia =Xperia/Pi
|
||||||
|
options.menuStyle.java =Java Beta
|
||||||
|
|
||||||
performance.max=Max FPS
|
performance.max=Max FPS
|
||||||
performance.balanced=Balanced
|
performance.balanced=Balanced
|
||||||
@@ -987,5 +1020,5 @@ desc.netherbrickitem=Used to form blocks of Nether bricks.
|
|||||||
desc.netherquartz=Quartz from the Nether, used to create Blocks of Quartz.
|
desc.netherquartz=Quartz from the Nether, used to create Blocks of Quartz.
|
||||||
desc.quartzblock=Decorative block, used to create other kinds of Quartz blocks.
|
desc.quartzblock=Decorative block, used to create other kinds of Quartz blocks.
|
||||||
desc.stonecutter=For crafting stoneblocks.
|
desc.stonecutter=For crafting stoneblocks.
|
||||||
desc.seedsmelon=Allows for more melons.
|
desc.seeds_melon=Allows for more melons.
|
||||||
desc.tile.melon=Can be cut up and eaten.
|
desc.tile.melon=Can be cut up and eaten.
|
||||||
|
|||||||
@@ -1,143 +1,46 @@
|
|||||||
<!doctype html>
|
<!DOCTYPE html>
|
||||||
<html lang="en-us">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<title>MCPE 0.6.1</title>
|
||||||
<title>Emscripten-Generated Code</title>
|
<style>
|
||||||
<style>
|
html, body {
|
||||||
.emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; }
|
margin: 0;
|
||||||
textarea.emscripten { font-family: monospace; width: 80%; }
|
padding: 0;
|
||||||
div.emscripten { text-align: center; }
|
height: 100%;
|
||||||
div.emscripten_border { border: 1px solid black; }
|
background: black;
|
||||||
/* the canvas *must not* have any border or padding, or mouse coords will be wrong */
|
overflow: hidden;
|
||||||
canvas.emscripten { border: 0px none; background-color: black; }
|
}
|
||||||
|
|
||||||
.spinner {
|
#canvas {
|
||||||
height: 50px;
|
width: 100vw;
|
||||||
width: 50px;
|
height: 100vh;
|
||||||
margin: 0px auto;
|
display: block;
|
||||||
-webkit-animation: rotation .8s linear infinite;
|
}
|
||||||
-moz-animation: rotation .8s linear infinite;
|
</style>
|
||||||
-o-animation: rotation .8s linear infinite;
|
</head>
|
||||||
animation: rotation 0.8s linear infinite;
|
<body>
|
||||||
border-left: 10px solid rgb(0,150,240);
|
|
||||||
border-right: 10px solid rgb(0,150,240);
|
|
||||||
border-bottom: 10px solid rgb(0,150,240);
|
|
||||||
border-top: 10px solid rgb(100,0,200);
|
|
||||||
border-radius: 100%;
|
|
||||||
background-color: rgb(200,100,250);
|
|
||||||
}
|
|
||||||
@-webkit-keyframes rotation {
|
|
||||||
from {-webkit-transform: rotate(0deg);}
|
|
||||||
to {-webkit-transform: rotate(360deg);}
|
|
||||||
}
|
|
||||||
@-moz-keyframes rotation {
|
|
||||||
from {-moz-transform: rotate(0deg);}
|
|
||||||
to {-moz-transform: rotate(360deg);}
|
|
||||||
}
|
|
||||||
@-o-keyframes rotation {
|
|
||||||
from {-o-transform: rotate(0deg);}
|
|
||||||
to {-o-transform: rotate(360deg);}
|
|
||||||
}
|
|
||||||
@keyframes rotation {
|
|
||||||
from {transform: rotate(0deg);}
|
|
||||||
to {transform: rotate(360deg);}
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
<canvas id="canvas"></canvas>
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<hr/>
|
|
||||||
<figure style="overflow:visible;" id="spinner"><div class="spinner"></div><center style="margin-top:0.5em"><strong>emscripten</strong></center></figure>
|
|
||||||
<div class="emscripten" id="status">Downloading...</div>
|
|
||||||
<div class="emscripten">
|
|
||||||
<progress value="0" max="100" id="progress" hidden=1></progress>
|
|
||||||
</div>
|
|
||||||
<div class="emscripten_border">
|
|
||||||
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" tabindex=-1></canvas>
|
|
||||||
</div>
|
|
||||||
<hr/>
|
|
||||||
<div class="emscripten">
|
|
||||||
<input type="checkbox" id="resize">Resize canvas
|
|
||||||
<input type="checkbox" id="pointerLock" checked>Lock/hide mouse pointer
|
|
||||||
|
|
||||||
<input type="button" value="Fullscreen" onclick="Module.requestFullscreen(document.getElementById('pointerLock').checked,
|
|
||||||
document.getElementById('resize').checked)">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr/>
|
<script>
|
||||||
<textarea class="emscripten" id="output" rows="8"></textarea>
|
var Module = {
|
||||||
<hr>
|
canvas: document.getElementById('canvas'),
|
||||||
<script type='text/javascript'>
|
onRuntimeInitialized: function () { resizeCanvas() }
|
||||||
var statusElement = document.getElementById('status');
|
};
|
||||||
var progressElement = document.getElementById('progress');
|
|
||||||
var spinnerElement = document.getElementById('spinner');
|
|
||||||
var canvasElement = document.getElementById('canvas');
|
|
||||||
var outputElement = document.getElementById('output');
|
|
||||||
if (outputElement) outputElement.value = ''; // clear browser cache
|
|
||||||
|
|
||||||
// As a default initial behavior, pop up an alert when webgl context is lost. To make your
|
function resizeCanvas() {
|
||||||
// application robust, you may want to override this behavior before shipping!
|
const canvas = Module.canvas;
|
||||||
// See http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15.2
|
canvas.width = window.innerWidth;
|
||||||
canvasElement.addEventListener("webglcontextlost", (e) => {
|
canvas.height = window.innerHeight;
|
||||||
alert('WebGL context lost. You will need to reload the page.');
|
}
|
||||||
e.preventDefault();
|
|
||||||
}, false);
|
|
||||||
|
|
||||||
function setStatus(text) {
|
window.addEventListener('resize', resizeCanvas);
|
||||||
if (!setStatus.last) setStatus.last = { time: Date.now(), text: '' };
|
window.addEventListener('onunload', () => {
|
||||||
if (text === setStatus.last.text) return;
|
FS.syncfs(true, function (err) { console.log('Sync FS failed: ' + err) });
|
||||||
var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/);
|
})
|
||||||
var now = Date.now();
|
</script>
|
||||||
if (m && now - setStatus.last.time < 30) return; // if this is a progress update, skip it if too soon
|
|
||||||
setStatus.last.time = now;
|
|
||||||
setStatus.last.text = text;
|
|
||||||
if (m) {
|
|
||||||
text = m[1];
|
|
||||||
progressElement.value = parseInt(m[2])*100;
|
|
||||||
progressElement.max = parseInt(m[4])*100;
|
|
||||||
progressElement.hidden = false;
|
|
||||||
spinnerElement.hidden = false;
|
|
||||||
} else {
|
|
||||||
progressElement.value = null;
|
|
||||||
progressElement.max = null;
|
|
||||||
progressElement.hidden = true;
|
|
||||||
if (!text) spinnerElement.hidden = true;
|
|
||||||
}
|
|
||||||
statusElement.innerHTML = text;
|
|
||||||
}
|
|
||||||
|
|
||||||
var Module = {
|
<script src="MinecraftPE.js"></script>
|
||||||
print(...args) {
|
</body>
|
||||||
// These replacements are necessary if you render to raw HTML
|
|
||||||
//text = text.replace(/&/g, "&");
|
|
||||||
//text = text.replace(/</g, "<");
|
|
||||||
//text = text.replace(/>/g, ">");
|
|
||||||
//text = text.replace('\n', '<br>', 'g');
|
|
||||||
console.log(...args);
|
|
||||||
if (outputElement) {
|
|
||||||
var text = args.join(' ');
|
|
||||||
outputElement.value += text + "\n";
|
|
||||||
outputElement.scrollTop = outputElement.scrollHeight; // focus on bottom
|
|
||||||
}
|
|
||||||
},
|
|
||||||
canvas: canvasElement,
|
|
||||||
setStatus: setStatus,
|
|
||||||
totalDependencies: 0,
|
|
||||||
monitorRunDependencies(left) {
|
|
||||||
this.totalDependencies = Math.max(this.totalDependencies, left);
|
|
||||||
setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
setStatus('Downloading...');
|
|
||||||
window.onerror = () => {
|
|
||||||
setStatus('Exception thrown, see JavaScript console');
|
|
||||||
spinnerElement.style.display = 'none';
|
|
||||||
setStatus = (text) => {
|
|
||||||
if (text) console.error('[post-exception status] ' + text);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<script src="MinecraftPE.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
@@ -168,9 +168,10 @@ options.graphics.fast=Fast
|
|||||||
options.guiScale=GUI Scale
|
options.guiScale=GUI Scale
|
||||||
options.guiScale.auto=Auto
|
options.guiScale.auto=Auto
|
||||||
options.guiScale.small=Small
|
options.guiScale.small=Small
|
||||||
options.guiScale.normal=Normal
|
options.guiScale.medium=Medium
|
||||||
options.guiScale.large=Large
|
options.guiScale.large=Large
|
||||||
options.guiScale.larger=Larger
|
options.guiScale.larger=Larger
|
||||||
|
options.guiScale.largest=Largest
|
||||||
options.advancedOpengl=Advanced OpenGL
|
options.advancedOpengl=Advanced OpenGL
|
||||||
options.renderClouds=Clouds
|
options.renderClouds=Clouds
|
||||||
options.farWarning1=A 64 bit Java installation is recommended
|
options.farWarning1=A 64 bit Java installation is recommended
|
||||||
@@ -964,5 +965,5 @@ desc.netherbrickitem=Used to form blocks of Nether bricks.
|
|||||||
desc.netherquartz=Quartz from the Nether, used to create Blocks of Quartz.
|
desc.netherquartz=Quartz from the Nether, used to create Blocks of Quartz.
|
||||||
desc.quartzblock=Decorative block, used to create other kinds of Quartz blocks.
|
desc.quartzblock=Decorative block, used to create other kinds of Quartz blocks.
|
||||||
desc.stonecutter=For crafting stoneblocks.
|
desc.stonecutter=For crafting stoneblocks.
|
||||||
desc.seedsmelon=Allows for more melons.
|
desc.seeds_melon=Allows for more melons.
|
||||||
desc.tile.melon=Can be cut up and eaten.
|
desc.tile.melon=Can be cut up and eaten.
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
|||||||
../../../src/client/player/RemotePlayer.cpp \
|
../../../src/client/player/RemotePlayer.cpp \
|
||||||
../../../src/client/player/input/KeyboardInput.cpp \
|
../../../src/client/player/input/KeyboardInput.cpp \
|
||||||
../../../src/client/player/input/touchscreen/TouchscreenInput.cpp \
|
../../../src/client/player/input/touchscreen/TouchscreenInput.cpp \
|
||||||
|
../../../src/client/renderer/Lighting.cpp \
|
||||||
../../../src/client/renderer/Chunk.cpp \
|
../../../src/client/renderer/Chunk.cpp \
|
||||||
../../../src/client/renderer/EntityTileRenderer.cpp \
|
../../../src/client/renderer/EntityTileRenderer.cpp \
|
||||||
../../../src/client/renderer/GameRenderer.cpp \
|
../../../src/client/renderer/GameRenderer.cpp \
|
||||||
@@ -109,6 +110,7 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
|||||||
../../../src/client/renderer/Textures.cpp \
|
../../../src/client/renderer/Textures.cpp \
|
||||||
../../../src/client/renderer/TileRenderer.cpp \
|
../../../src/client/renderer/TileRenderer.cpp \
|
||||||
../../../src/client/renderer/gles.cpp \
|
../../../src/client/renderer/gles.cpp \
|
||||||
|
../../../src/world/level/LevelConstants.cpp \
|
||||||
../../../src/client/renderer/culling/Frustum.cpp \
|
../../../src/client/renderer/culling/Frustum.cpp \
|
||||||
../../../src/client/renderer/entity/ArrowRenderer.cpp \
|
../../../src/client/renderer/entity/ArrowRenderer.cpp \
|
||||||
../../../src/client/renderer/entity/ChickenRenderer.cpp \
|
../../../src/client/renderer/entity/ChickenRenderer.cpp \
|
||||||
@@ -139,6 +141,12 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
|||||||
../../../src/network/Packet.cpp \
|
../../../src/network/Packet.cpp \
|
||||||
../../../src/network/RakNetInstance.cpp \
|
../../../src/network/RakNetInstance.cpp \
|
||||||
../../../src/network/ServerSideNetworkHandler.cpp \
|
../../../src/network/ServerSideNetworkHandler.cpp \
|
||||||
|
../../../src/commands/Command.cpp \
|
||||||
|
../../../src/commands/CommandHelp.cpp \
|
||||||
|
../../../src/commands/CommandKick.cpp \
|
||||||
|
../../../src/commands/CommandBan.cpp \
|
||||||
|
../../../src/commands/CommandManager.cpp \
|
||||||
|
../../../src/commands/CommandOp.cpp \
|
||||||
../../../src/server/ServerLevel.cpp \
|
../../../src/server/ServerLevel.cpp \
|
||||||
../../../src/server/ServerPlayer.cpp \
|
../../../src/server/ServerPlayer.cpp \
|
||||||
../../../src/util/DataIO.cpp \
|
../../../src/util/DataIO.cpp \
|
||||||
@@ -146,6 +154,7 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
|||||||
../../../src/util/StringUtils.cpp \
|
../../../src/util/StringUtils.cpp \
|
||||||
../../../src/util/PerfTimer.cpp \
|
../../../src/util/PerfTimer.cpp \
|
||||||
../../../src/util/PerfRenderer.cpp \
|
../../../src/util/PerfRenderer.cpp \
|
||||||
|
../../../src/util/Color.cpp \
|
||||||
../../../src/world/Direction.cpp \
|
../../../src/world/Direction.cpp \
|
||||||
../../../src/world/entity/AgableMob.cpp \
|
../../../src/world/entity/AgableMob.cpp \
|
||||||
../../../src/world/entity/Entity.cpp \
|
../../../src/world/entity/Entity.cpp \
|
||||||
@@ -209,6 +218,8 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
|||||||
../../../src/world/level/MobSpawner.cpp \
|
../../../src/world/level/MobSpawner.cpp \
|
||||||
../../../src/world/level/Region.cpp \
|
../../../src/world/level/Region.cpp \
|
||||||
../../../src/world/level/TickNextTickData.cpp \
|
../../../src/world/level/TickNextTickData.cpp \
|
||||||
|
../../../src/world/level/FoliageColor.cpp \
|
||||||
|
../../../src/world/level/GrassColor.cpp \
|
||||||
../../../src/world/level/biome/Biome.cpp \
|
../../../src/world/level/biome/Biome.cpp \
|
||||||
../../../src/world/level/biome/BiomeSource.cpp \
|
../../../src/world/level/biome/BiomeSource.cpp \
|
||||||
../../../src/world/level/chunk/LevelChunk.cpp \
|
../../../src/world/level/chunk/LevelChunk.cpp \
|
||||||
|
|||||||
@@ -168,8 +168,10 @@ options.graphics.fast=Fast
|
|||||||
options.guiScale=GUI Scale
|
options.guiScale=GUI Scale
|
||||||
options.guiScale.auto=Auto
|
options.guiScale.auto=Auto
|
||||||
options.guiScale.small=Small
|
options.guiScale.small=Small
|
||||||
options.guiScale.normal=Normal
|
options.guiScale.medium=Medium
|
||||||
options.guiScale.large=Large
|
options.guiScale.large=Large
|
||||||
|
options.guiScale.larger=Larger
|
||||||
|
options.guiScale.largest=Largest
|
||||||
options.advancedOpengl=Advanced OpenGL
|
options.advancedOpengl=Advanced OpenGL
|
||||||
options.renderClouds=Clouds
|
options.renderClouds=Clouds
|
||||||
options.farWarning1=A 64 bit Java installation is recommended
|
options.farWarning1=A 64 bit Java installation is recommended
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
|||||||
../../../src/client/player/RemotePlayer.cpp \
|
../../../src/client/player/RemotePlayer.cpp \
|
||||||
../../../src/client/player/input/KeyboardInput.cpp \
|
../../../src/client/player/input/KeyboardInput.cpp \
|
||||||
../../../src/client/player/input/touchscreen/TouchscreenInput.cpp \
|
../../../src/client/player/input/touchscreen/TouchscreenInput.cpp \
|
||||||
|
../../../src/client/renderer/Lighting.cpp \
|
||||||
../../../src/client/renderer/Chunk.cpp \
|
../../../src/client/renderer/Chunk.cpp \
|
||||||
../../../src/client/renderer/EntityTileRenderer.cpp \
|
../../../src/client/renderer/EntityTileRenderer.cpp \
|
||||||
../../../src/client/renderer/GameRenderer.cpp \
|
../../../src/client/renderer/GameRenderer.cpp \
|
||||||
@@ -122,6 +123,7 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
|||||||
../../../src/util/StringUtils.cpp \
|
../../../src/util/StringUtils.cpp \
|
||||||
../../../src/util/PerfTimer.cpp \
|
../../../src/util/PerfTimer.cpp \
|
||||||
../../../src/util/PerfRenderer.cpp \
|
../../../src/util/PerfRenderer.cpp \
|
||||||
|
../../../src/util/Color.cpp \
|
||||||
../../../src/world/Direction.cpp \
|
../../../src/world/Direction.cpp \
|
||||||
../../../src/world/entity/AgableMob.cpp \
|
../../../src/world/entity/AgableMob.cpp \
|
||||||
../../../src/world/entity/Entity.cpp \
|
../../../src/world/entity/Entity.cpp \
|
||||||
@@ -183,6 +185,8 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
|||||||
../../../src/world/level/MobSpawner.cpp \
|
../../../src/world/level/MobSpawner.cpp \
|
||||||
../../../src/world/level/Region.cpp \
|
../../../src/world/level/Region.cpp \
|
||||||
../../../src/world/level/TickNextTickData.cpp \
|
../../../src/world/level/TickNextTickData.cpp \
|
||||||
|
../../../src/world/level/FoliageColor.cpp \
|
||||||
|
../../../src/world/level/GrassColor.cpp \
|
||||||
../../../src/world/level/biome/Biome.cpp \
|
../../../src/world/level/biome/Biome.cpp \
|
||||||
../../../src/world/level/biome/BiomeSource.cpp \
|
../../../src/world/level/biome/BiomeSource.cpp \
|
||||||
../../../src/world/level/chunk/LevelChunk.cpp \
|
../../../src/world/level/chunk/LevelChunk.cpp \
|
||||||
@@ -228,6 +232,7 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
|||||||
../../../src/world/level/tile/entity/TileEntity.cpp \
|
../../../src/world/level/tile/entity/TileEntity.cpp \
|
||||||
../../../src/world/level/tile/entity/FurnaceTileEntity.cpp \
|
../../../src/world/level/tile/entity/FurnaceTileEntity.cpp \
|
||||||
../../../src/world/phys/HitResult.cpp
|
../../../src/world/phys/HitResult.cpp
|
||||||
|
../../../src/world/level/LevelConstants.cpp
|
||||||
|
|
||||||
LOCAL_CFLAGS := -Wno-psabi $(LOCAL_CFLAGS)
|
LOCAL_CFLAGS := -Wno-psabi $(LOCAL_CFLAGS)
|
||||||
|
|
||||||
|
|||||||
BIN
project/android_java/res/raw/burp1.ogg
Normal file
@@ -129,6 +129,7 @@ public class SoundPlayer
|
|||||||
new SoundId(R.raw.eat1, "random.eat"),
|
new SoundId(R.raw.eat1, "random.eat"),
|
||||||
new SoundId(R.raw.eat2, "random.eat"),
|
new SoundId(R.raw.eat2, "random.eat"),
|
||||||
new SoundId(R.raw.eat3, "random.eat"),
|
new SoundId(R.raw.eat3, "random.eat"),
|
||||||
|
new SoundId(R.raw.burp1, "random.burp"),
|
||||||
new SoundId(R.raw.fuse, "random.fuse"),
|
new SoundId(R.raw.fuse, "random.fuse"),
|
||||||
|
|
||||||
new SoundId(R.raw.zpig1, "mob.zombiepig.zpig"),
|
new SoundId(R.raw.zpig1, "mob.zombiepig.zpig"),
|
||||||
|
|||||||
48
project/iosproj/Launch Screen.storyboard
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||||
|
<dependencies>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/>
|
||||||
|
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
|
||||||
|
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<scenes>
|
||||||
|
<!--View Controller-->
|
||||||
|
<scene sceneID="EHf-IW-A2E">
|
||||||
|
<objects>
|
||||||
|
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||||
|
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="obG-Y5-kRd">
|
||||||
|
<rect key="frame" x="0.0" y="626.5" width="375" height="20.5"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="minecraftpe" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb">
|
||||||
|
<rect key="frame" x="0.0" y="202" width="375" height="43"/>
|
||||||
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
|
||||||
|
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="obG-Y5-kRd" secondAttribute="centerX" id="5cz-MP-9tL"/>
|
||||||
|
<constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/>
|
||||||
|
<constraint firstItem="obG-Y5-kRd" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" constant="20" symbolic="YES" id="SfN-ll-jLj"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="obG-Y5-kRd" secondAttribute="bottom" constant="20" id="Y44-ml-fuU"/>
|
||||||
|
<constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/>
|
||||||
|
<constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" constant="20" symbolic="YES" id="x7j-FC-K8j"/>
|
||||||
|
</constraints>
|
||||||
|
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
|
||||||
|
</view>
|
||||||
|
</viewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="53" y="375"/>
|
||||||
|
</scene>
|
||||||
|
</scenes>
|
||||||
|
</document>
|
||||||
@@ -41,13 +41,14 @@
|
|||||||
042A91AE16B17517007ABBC6 /* GuiElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A316B17517007ABBC6 /* GuiElement.cpp */; };
|
042A91AE16B17517007ABBC6 /* GuiElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A316B17517007ABBC6 /* GuiElement.cpp */; };
|
||||||
042A91AF16B17517007ABBC6 /* NinePatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A516B17517007ABBC6 /* NinePatch.cpp */; };
|
042A91AF16B17517007ABBC6 /* NinePatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A516B17517007ABBC6 /* NinePatch.cpp */; };
|
||||||
042A91B016B17517007ABBC6 /* OptionsGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A716B17517007ABBC6 /* OptionsGroup.cpp */; };
|
042A91B016B17517007ABBC6 /* OptionsGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A716B17517007ABBC6 /* OptionsGroup.cpp */; };
|
||||||
042A91B116B17517007ABBC6 /* OptionsPane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A916B17517007ABBC6 /* OptionsPane.cpp */; };
|
|
||||||
042A91B216B17517007ABBC6 /* TextBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91AB16B17517007ABBC6 /* TextBox.cpp */; };
|
042A91B216B17517007ABBC6 /* TextBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91AB16B17517007ABBC6 /* TextBox.cpp */; };
|
||||||
044129071682FF9600B70EE6 /* MouseHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 044129061682FF9600B70EE6 /* MouseHandler.cpp */; };
|
044129071682FF9600B70EE6 /* MouseHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 044129061682FF9600B70EE6 /* MouseHandler.cpp */; };
|
||||||
9D293CE716071C08000305C8 /* CreateNewWorld_iphone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9D293CE616071C08000305C8 /* CreateNewWorld_iphone.xib */; };
|
9D293CE716071C08000305C8 /* CreateNewWorld_iphone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9D293CE616071C08000305C8 /* CreateNewWorld_iphone.xib */; };
|
||||||
9D293CE816071C08000305C8 /* CreateNewWorld_iphone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9D293CE616071C08000305C8 /* CreateNewWorld_iphone.xib */; };
|
9D293CE816071C08000305C8 /* CreateNewWorld_iphone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9D293CE616071C08000305C8 /* CreateNewWorld_iphone.xib */; };
|
||||||
9D293CEB160720D6000305C8 /* worldname_iphone5_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D293CEA160720D6000305C8 /* worldname_iphone5_3.png */; };
|
9D293CEB160720D6000305C8 /* worldname_iphone5_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D293CEA160720D6000305C8 /* worldname_iphone5_3.png */; };
|
||||||
9D293CEC160720D6000305C8 /* worldname_iphone5_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D293CEA160720D6000305C8 /* worldname_iphone5_3.png */; };
|
9D293CEC160720D6000305C8 /* worldname_iphone5_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D293CEA160720D6000305C8 /* worldname_iphone5_3.png */; };
|
||||||
|
BEEF202614CFF670005F0002 /* Lighting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEEF202614CFF670005F0001 /* Lighting.cpp */; };
|
||||||
|
BEEF202614CFF670005F0003 /* Lighting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEEF202614CFF670005F0001 /* Lighting.cpp */; };
|
||||||
D506D3E2161288BD0099FA65 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D959AFF16036BEE00E23A6F /* Default-568h@2x.png */; };
|
D506D3E2161288BD0099FA65 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9D959AFF16036BEE00E23A6F /* Default-568h@2x.png */; };
|
||||||
D51DC73614581D4E00E3D761 /* itemframe.png in Resources */ = {isa = PBXBuildFile; fileRef = D51DC73514581D4E00E3D761 /* itemframe.png */; };
|
D51DC73614581D4E00E3D761 /* itemframe.png in Resources */ = {isa = PBXBuildFile; fileRef = D51DC73514581D4E00E3D761 /* itemframe.png */; };
|
||||||
D51DC74314592B8B00E3D761 /* PVRTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = D51DC74214592B8A00E3D761 /* PVRTexture.m */; };
|
D51DC74314592B8B00E3D761 /* PVRTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = D51DC74214592B8A00E3D761 /* PVRTexture.m */; };
|
||||||
@@ -1147,6 +1148,52 @@
|
|||||||
D5F3B7DD14548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D5F3B7C814548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.xib */; };
|
D5F3B7DD14548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D5F3B7C814548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.xib */; };
|
||||||
D5F3B7DE14548E7900D25470 /* IASKSpecifierValuesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D5F3B7C914548E7900D25470 /* IASKSpecifierValuesView.xib */; };
|
D5F3B7DE14548E7900D25470 /* IASKSpecifierValuesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D5F3B7C914548E7900D25470 /* IASKSpecifierValuesView.xib */; };
|
||||||
D5F3B7E51454930400D25470 /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D5F3B7E41454930400D25470 /* InAppSettings.bundle */; };
|
D5F3B7E51454930400D25470 /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D5F3B7E41454930400D25470 /* InAppSettings.bundle */; };
|
||||||
|
F912B8CF2F6C3D5200BC60DF /* TextBox.h in Sources */ = {isa = PBXBuildFile; fileRef = 042A91AC16B17517007ABBC6 /* TextBox.h */; };
|
||||||
|
F99D341F2F736AA100DC153E /* HttpClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D341E2F736AA100DC153E /* HttpClient.cpp */; };
|
||||||
|
F99D34202F736AA100DC153E /* HttpClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D341E2F736AA100DC153E /* HttpClient.cpp */; };
|
||||||
|
F99D34232F736AD400DC153E /* TextOption.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34222F736AD400DC153E /* TextOption.cpp */; };
|
||||||
|
F99D34242F736AD400DC153E /* TextOption.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34222F736AD400DC153E /* TextOption.cpp */; };
|
||||||
|
F99D34272F736AFB00DC153E /* OptionsFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34262F736AFB00DC153E /* OptionsFile.cpp */; };
|
||||||
|
F99D34282F736AFB00DC153E /* OptionsFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34262F736AFB00DC153E /* OptionsFile.cpp */; };
|
||||||
|
F99D342B2F736B6F00DC153E /* OptionsItem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D342A2F736B6F00DC153E /* OptionsItem.cpp */; };
|
||||||
|
F99D342C2F736B6F00DC153E /* OptionsItem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D342A2F736B6F00DC153E /* OptionsItem.cpp */; };
|
||||||
|
F99D342F2F736BAD00DC153E /* ConsoleScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D342E2F736BAD00DC153E /* ConsoleScreen.cpp */; };
|
||||||
|
F99D34302F736BAD00DC153E /* ConsoleScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D342E2F736BAD00DC153E /* ConsoleScreen.cpp */; };
|
||||||
|
F99D34332F736BDA00DC153E /* CreditsScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34322F736BDA00DC153E /* CreditsScreen.cpp */; };
|
||||||
|
F99D34342F736BDA00DC153E /* CreditsScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34322F736BDA00DC153E /* CreditsScreen.cpp */; };
|
||||||
|
F99D34372F736C1000DC153E /* JoinByIPScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34362F736C1000DC153E /* JoinByIPScreen.cpp */; };
|
||||||
|
F99D34382F736C1000DC153E /* JoinByIPScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34362F736C1000DC153E /* JoinByIPScreen.cpp */; };
|
||||||
|
F99D343B2F736C3B00DC153E /* UsernameScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D343A2F736C3B00DC153E /* UsernameScreen.cpp */; };
|
||||||
|
F99D343C2F736C3B00DC153E /* UsernameScreen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D343A2F736C3B00DC153E /* UsernameScreen.cpp */; };
|
||||||
|
F99D343F2F736C8400DC153E /* GuiElementContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D343E2F736C8400DC153E /* GuiElementContainer.cpp */; };
|
||||||
|
F99D34402F736C8400DC153E /* GuiElementContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D343E2F736C8400DC153E /* GuiElementContainer.cpp */; };
|
||||||
|
F99D34432F736F9400DC153E /* Option.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34422F736F9400DC153E /* Option.cpp */; };
|
||||||
|
F99D34442F736F9400DC153E /* Option.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34422F736F9400DC153E /* Option.cpp */; };
|
||||||
|
F99D34472F736FE800DC153E /* KeyOption.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34462F736FE800DC153E /* KeyOption.cpp */; };
|
||||||
|
F99D34482F736FE800DC153E /* KeyOption.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D34462F736FE800DC153E /* KeyOption.cpp */; };
|
||||||
|
F99D344B2F7370CF00DC153E /* Slider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D344A2F7370CF00DC153E /* Slider.cpp */; };
|
||||||
|
F99D344C2F7370CF00DC153E /* Slider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99D344A2F7370CF00DC153E /* Slider.cpp */; };
|
||||||
|
F99D344E2F7372A100DC153E /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F99D344D2F7372A100DC153E /* Launch Screen.storyboard */; };
|
||||||
|
F99D344F2F7372A100DC153E /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F99D344D2F7372A100DC153E /* Launch Screen.storyboard */; };
|
||||||
|
F99F0FA92F84369F00F2B29A /* GrassColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99F0FA82F84369F00F2B29A /* GrassColor.cpp */; };
|
||||||
|
F99F0FAA2F84369F00F2B29A /* GrassColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99F0FA82F84369F00F2B29A /* GrassColor.cpp */; };
|
||||||
|
F99F0FAC2F8436CE00F2B29A /* FoliageColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99F0FAB2F8436CE00F2B29A /* FoliageColor.cpp */; };
|
||||||
|
F99F0FAD2F8436CE00F2B29A /* FoliageColor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99F0FAB2F8436CE00F2B29A /* FoliageColor.cpp */; };
|
||||||
|
F99F0FAF2F8436EB00F2B29A /* Color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99F0FAE2F8436EB00F2B29A /* Color.cpp */; };
|
||||||
|
F99F0FB02F8436EB00F2B29A /* Color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F99F0FAE2F8436EB00F2B29A /* Color.cpp */; };
|
||||||
|
F9E5A772300E7A8700164066 /* LevelConstants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9E5A771300E7A8700164066 /* LevelConstants.cpp */; };
|
||||||
|
F9E5A775300E7AB700164066 /* CommandManager.hpp in Sources */ = {isa = PBXBuildFile; fileRef = F9E5A773300E7AB700164066 /* CommandManager.hpp */; };
|
||||||
|
F9E5A776300E7AB700164066 /* CommandManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9E5A774300E7AB700164066 /* CommandManager.cpp */; };
|
||||||
|
F9E5A779300E7AD500164066 /* CommandBan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9E5A777300E7AD500164066 /* CommandBan.cpp */; };
|
||||||
|
F9E5A77A300E7AD500164066 /* CommandBan.hpp in Sources */ = {isa = PBXBuildFile; fileRef = F9E5A778300E7AD500164066 /* CommandBan.hpp */; };
|
||||||
|
F9E5A77D300E7AF400164066 /* CommandHelp.hpp in Sources */ = {isa = PBXBuildFile; fileRef = F9E5A77B300E7AF400164066 /* CommandHelp.hpp */; };
|
||||||
|
F9E5A77E300E7AF400164066 /* CommandHelp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9E5A77C300E7AF400164066 /* CommandHelp.cpp */; };
|
||||||
|
F9E5A783300E7B0B00164066 /* CommandKick.hpp in Sources */ = {isa = PBXBuildFile; fileRef = F9E5A77F300E7B0A00164066 /* CommandKick.hpp */; };
|
||||||
|
F9E5A784300E7B0B00164066 /* CommandOp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9E5A780300E7B0A00164066 /* CommandOp.cpp */; };
|
||||||
|
F9E5A785300E7B0B00164066 /* CommandKick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9E5A781300E7B0B00164066 /* CommandKick.cpp */; };
|
||||||
|
F9E5A786300E7B0B00164066 /* CommandOp.hpp in Sources */ = {isa = PBXBuildFile; fileRef = F9E5A782300E7B0B00164066 /* CommandOp.hpp */; };
|
||||||
|
F9E5A789300E7B3400164066 /* Command.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9E5A787300E7B3400164066 /* Command.cpp */; };
|
||||||
|
F9E5A78A300E7B3400164066 /* Command.hpp in Sources */ = {isa = PBXBuildFile; fileRef = F9E5A788300E7B3400164066 /* Command.hpp */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
@@ -1208,14 +1255,13 @@
|
|||||||
042A91A616B17517007ABBC6 /* NinePatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NinePatch.h; sourceTree = "<group>"; };
|
042A91A616B17517007ABBC6 /* NinePatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NinePatch.h; sourceTree = "<group>"; };
|
||||||
042A91A716B17517007ABBC6 /* OptionsGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OptionsGroup.cpp; sourceTree = "<group>"; };
|
042A91A716B17517007ABBC6 /* OptionsGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OptionsGroup.cpp; sourceTree = "<group>"; };
|
||||||
042A91A816B17517007ABBC6 /* OptionsGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OptionsGroup.h; sourceTree = "<group>"; };
|
042A91A816B17517007ABBC6 /* OptionsGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OptionsGroup.h; sourceTree = "<group>"; };
|
||||||
042A91A916B17517007ABBC6 /* OptionsPane.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OptionsPane.cpp; sourceTree = "<group>"; };
|
|
||||||
042A91AA16B17517007ABBC6 /* OptionsPane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OptionsPane.h; sourceTree = "<group>"; };
|
|
||||||
042A91AB16B17517007ABBC6 /* TextBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextBox.cpp; sourceTree = "<group>"; };
|
042A91AB16B17517007ABBC6 /* TextBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextBox.cpp; sourceTree = "<group>"; };
|
||||||
042A91AC16B17517007ABBC6 /* TextBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextBox.h; sourceTree = "<group>"; };
|
042A91AC16B17517007ABBC6 /* TextBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TextBox.h; path = ../../src/client/gui/components/TextBox.h; sourceTree = SOURCE_ROOT; };
|
||||||
044129061682FF9600B70EE6 /* MouseHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MouseHandler.cpp; sourceTree = "<group>"; };
|
044129061682FF9600B70EE6 /* MouseHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MouseHandler.cpp; sourceTree = "<group>"; };
|
||||||
9D293CE616071C08000305C8 /* CreateNewWorld_iphone.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = CreateNewWorld_iphone.xib; path = minecraftpe/dialogs/CreateNewWorld_iphone.xib; sourceTree = "<group>"; };
|
9D293CE616071C08000305C8 /* CreateNewWorld_iphone.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = CreateNewWorld_iphone.xib; path = minecraftpe/dialogs/CreateNewWorld_iphone.xib; sourceTree = "<group>"; };
|
||||||
9D293CEA160720D6000305C8 /* worldname_iphone5_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = worldname_iphone5_3.png; sourceTree = "<group>"; };
|
9D293CEA160720D6000305C8 /* worldname_iphone5_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = worldname_iphone5_3.png; sourceTree = "<group>"; };
|
||||||
9D959AFF16036BEE00E23A6F /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
|
9D959AFF16036BEE00E23A6F /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
|
||||||
|
BEEF202614CFF670005F0001 /* Lighting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Lighting.cpp; sourceTree = "<group>"; };
|
||||||
D51A8B01146A200000E5D720 /* minecraftpedemo-info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "minecraftpedemo-info.plist"; sourceTree = "<group>"; };
|
D51A8B01146A200000E5D720 /* minecraftpedemo-info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "minecraftpedemo-info.plist"; sourceTree = "<group>"; };
|
||||||
D51DC73514581D4E00E3D761 /* itemframe.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = itemframe.png; sourceTree = "<group>"; };
|
D51DC73514581D4E00E3D761 /* itemframe.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = itemframe.png; sourceTree = "<group>"; };
|
||||||
D51DC74114592B8A00E3D761 /* PVRTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVRTexture.h; sourceTree = "<group>"; };
|
D51DC74114592B8A00E3D761 /* PVRTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PVRTexture.h; sourceTree = "<group>"; };
|
||||||
@@ -2017,7 +2063,7 @@
|
|||||||
D5B50D6914CFF66F005F7284 /* Multitouch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Multitouch.h; sourceTree = "<group>"; };
|
D5B50D6914CFF66F005F7284 /* Multitouch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Multitouch.h; sourceTree = "<group>"; };
|
||||||
D5B50D6A14CFF66F005F7284 /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = "<group>"; };
|
D5B50D6A14CFF66F005F7284 /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = "<group>"; };
|
||||||
D5B50D6B14CFF66F005F7284 /* time.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = time.cpp; sourceTree = "<group>"; };
|
D5B50D6B14CFF66F005F7284 /* time.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = time.cpp; sourceTree = "<group>"; };
|
||||||
D5B50D6C14CFF66F005F7284 /* time.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = time.h; sourceTree = "<group>"; };
|
D5B50D6C14CFF66F005F7284 /* time.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = time.h; sourceTree = "<group>"; };
|
||||||
D5B50E5614CFF66F005F7284 /* SharedConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SharedConstants.h; sourceTree = "<group>"; };
|
D5B50E5614CFF66F005F7284 /* SharedConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SharedConstants.h; sourceTree = "<group>"; };
|
||||||
D5B50E5714CFF66F005F7284 /* terrain_4444.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = terrain_4444.h; sourceTree = "<group>"; };
|
D5B50E5714CFF66F005F7284 /* terrain_4444.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = terrain_4444.h; sourceTree = "<group>"; };
|
||||||
D5B50E5814CFF66F005F7284 /* terrain_5551.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = terrain_5551.h; sourceTree = "<group>"; };
|
D5B50E5814CFF66F005F7284 /* terrain_5551.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = terrain_5551.h; sourceTree = "<group>"; };
|
||||||
@@ -2408,6 +2454,47 @@
|
|||||||
D5F3B7C814548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSToggleSwitchSpecifierViewCell.xib; sourceTree = "<group>"; };
|
D5F3B7C814548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSToggleSwitchSpecifierViewCell.xib; sourceTree = "<group>"; };
|
||||||
D5F3B7C914548E7900D25470 /* IASKSpecifierValuesView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKSpecifierValuesView.xib; sourceTree = "<group>"; };
|
D5F3B7C914548E7900D25470 /* IASKSpecifierValuesView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKSpecifierValuesView.xib; sourceTree = "<group>"; };
|
||||||
D5F3B7E41454930400D25470 /* InAppSettings.bundle */ = {isa = PBXFileReference; explicitFileType = "wrapper.installer-pkg"; path = InAppSettings.bundle; sourceTree = "<group>"; };
|
D5F3B7E41454930400D25470 /* InAppSettings.bundle */ = {isa = PBXFileReference; explicitFileType = "wrapper.installer-pkg"; path = InAppSettings.bundle; sourceTree = "<group>"; };
|
||||||
|
F99D341D2F736AA100DC153E /* HttpClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HttpClient.h; path = ../../src/platform/HttpClient.h; sourceTree = "<group>"; };
|
||||||
|
F99D341E2F736AA100DC153E /* HttpClient.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = HttpClient.cpp; path = ../../src/platform/HttpClient.cpp; sourceTree = "<group>"; };
|
||||||
|
F99D34212F736AD400DC153E /* TextOption.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TextOption.h; path = ../../src/client/gui/components/TextOption.h; sourceTree = "<group>"; };
|
||||||
|
F99D34222F736AD400DC153E /* TextOption.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = TextOption.cpp; path = ../../src/client/gui/components/TextOption.cpp; sourceTree = "<unknown>"; };
|
||||||
|
F99D34252F736AFB00DC153E /* OptionsFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionsFile.h; path = ../../src/client/OptionsFile.h; sourceTree = "<group>"; };
|
||||||
|
F99D34262F736AFB00DC153E /* OptionsFile.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = OptionsFile.cpp; path = ../../src/client/OptionsFile.cpp; sourceTree = "<group>"; };
|
||||||
|
F99D34292F736B6F00DC153E /* OptionsItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionsItem.h; path = ../../src/client/gui/components/OptionsItem.h; sourceTree = "<group>"; };
|
||||||
|
F99D342A2F736B6F00DC153E /* OptionsItem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = OptionsItem.cpp; path = ../../src/client/gui/components/OptionsItem.cpp; sourceTree = "<group>"; };
|
||||||
|
F99D342D2F736BAD00DC153E /* ConsoleScreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ConsoleScreen.h; path = ../../src/client/gui/screens/ConsoleScreen.h; sourceTree = "<group>"; };
|
||||||
|
F99D342E2F736BAD00DC153E /* ConsoleScreen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ConsoleScreen.cpp; path = ../../src/client/gui/screens/ConsoleScreen.cpp; sourceTree = "<group>"; };
|
||||||
|
F99D34312F736BDA00DC153E /* CreditsScreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CreditsScreen.h; path = ../../src/client/gui/screens/CreditsScreen.h; sourceTree = "<group>"; };
|
||||||
|
F99D34322F736BDA00DC153E /* CreditsScreen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CreditsScreen.cpp; path = ../../src/client/gui/screens/CreditsScreen.cpp; sourceTree = "<group>"; };
|
||||||
|
F99D34352F736C1000DC153E /* JoinByIPScreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JoinByIPScreen.h; path = ../../src/client/gui/screens/JoinByIPScreen.h; sourceTree = "<group>"; };
|
||||||
|
F99D34362F736C1000DC153E /* JoinByIPScreen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = JoinByIPScreen.cpp; path = ../../src/client/gui/screens/JoinByIPScreen.cpp; sourceTree = "<group>"; };
|
||||||
|
F99D34392F736C3B00DC153E /* UsernameScreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = UsernameScreen.h; path = ../../src/client/gui/screens/UsernameScreen.h; sourceTree = "<group>"; };
|
||||||
|
F99D343A2F736C3B00DC153E /* UsernameScreen.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = UsernameScreen.cpp; path = ../../src/client/gui/screens/UsernameScreen.cpp; sourceTree = "<group>"; };
|
||||||
|
F99D343D2F736C8400DC153E /* GuiElementContainer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = GuiElementContainer.h; path = ../../src/client/gui/components/GuiElementContainer.h; sourceTree = "<group>"; };
|
||||||
|
F99D343E2F736C8400DC153E /* GuiElementContainer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = GuiElementContainer.cpp; path = ../../src/client/gui/components/GuiElementContainer.cpp; sourceTree = "<group>"; };
|
||||||
|
F99D34412F736F9400DC153E /* Option.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Option.h; path = ../../src/client/Option.h; sourceTree = "<group>"; };
|
||||||
|
F99D34422F736F9400DC153E /* Option.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Option.cpp; path = ../../src/client/Option.cpp; sourceTree = "<group>"; };
|
||||||
|
F99D34452F736FE800DC153E /* KeyOption.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = KeyOption.h; path = ../../src/client/gui/components/KeyOption.h; sourceTree = "<group>"; };
|
||||||
|
F99D34462F736FE800DC153E /* KeyOption.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = KeyOption.cpp; path = ../../src/client/gui/components/KeyOption.cpp; sourceTree = "<group>"; };
|
||||||
|
F99D34492F7370CF00DC153E /* Slider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Slider.h; path = ../../src/client/gui/components/Slider.h; sourceTree = "<group>"; };
|
||||||
|
F99D344A2F7370CF00DC153E /* Slider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Slider.cpp; path = ../../src/client/gui/components/Slider.cpp; sourceTree = "<group>"; };
|
||||||
|
F99D344D2F7372A100DC153E /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = "<group>"; };
|
||||||
|
F99F0FA82F84369F00F2B29A /* GrassColor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GrassColor.cpp; sourceTree = "<group>"; };
|
||||||
|
F99F0FAB2F8436CE00F2B29A /* FoliageColor.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FoliageColor.cpp; sourceTree = "<group>"; };
|
||||||
|
F99F0FAE2F8436EB00F2B29A /* Color.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Color.cpp; sourceTree = "<group>"; };
|
||||||
|
F9E5A771300E7A8700164066 /* LevelConstants.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LevelConstants.cpp; path = ../../src/world/level/LevelConstants.cpp; sourceTree = "<group>"; };
|
||||||
|
F9E5A773300E7AB700164066 /* CommandManager.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = CommandManager.hpp; path = ../../src/commands/CommandManager.hpp; sourceTree = "<group>"; };
|
||||||
|
F9E5A774300E7AB700164066 /* CommandManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CommandManager.cpp; path = ../../src/commands/CommandManager.cpp; sourceTree = "<group>"; };
|
||||||
|
F9E5A777300E7AD500164066 /* CommandBan.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CommandBan.cpp; path = ../../src/commands/CommandBan.cpp; sourceTree = "<group>"; };
|
||||||
|
F9E5A778300E7AD500164066 /* CommandBan.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = CommandBan.hpp; path = ../../src/commands/CommandBan.hpp; sourceTree = "<group>"; };
|
||||||
|
F9E5A77B300E7AF400164066 /* CommandHelp.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = CommandHelp.hpp; path = ../../src/commands/CommandHelp.hpp; sourceTree = "<group>"; };
|
||||||
|
F9E5A77C300E7AF400164066 /* CommandHelp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CommandHelp.cpp; path = ../../src/commands/CommandHelp.cpp; sourceTree = "<group>"; };
|
||||||
|
F9E5A77F300E7B0A00164066 /* CommandKick.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = CommandKick.hpp; path = ../../src/commands/CommandKick.hpp; sourceTree = "<group>"; };
|
||||||
|
F9E5A780300E7B0A00164066 /* CommandOp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CommandOp.cpp; path = ../../src/commands/CommandOp.cpp; sourceTree = "<group>"; };
|
||||||
|
F9E5A781300E7B0B00164066 /* CommandKick.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CommandKick.cpp; path = ../../src/commands/CommandKick.cpp; sourceTree = "<group>"; };
|
||||||
|
F9E5A782300E7B0B00164066 /* CommandOp.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = CommandOp.hpp; path = ../../src/commands/CommandOp.hpp; sourceTree = "<group>"; };
|
||||||
|
F9E5A787300E7B3400164066 /* Command.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Command.cpp; path = ../../src/commands/Command.cpp; sourceTree = "<group>"; };
|
||||||
|
F9E5A788300E7B3400164066 /* Command.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = Command.hpp; path = ../../src/commands/Command.hpp; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@@ -3226,8 +3313,6 @@
|
|||||||
042A91A616B17517007ABBC6 /* NinePatch.h */,
|
042A91A616B17517007ABBC6 /* NinePatch.h */,
|
||||||
042A91A716B17517007ABBC6 /* OptionsGroup.cpp */,
|
042A91A716B17517007ABBC6 /* OptionsGroup.cpp */,
|
||||||
042A91A816B17517007ABBC6 /* OptionsGroup.h */,
|
042A91A816B17517007ABBC6 /* OptionsGroup.h */,
|
||||||
042A91A916B17517007ABBC6 /* OptionsPane.cpp */,
|
|
||||||
042A91AA16B17517007ABBC6 /* OptionsPane.h */,
|
|
||||||
042A91AB16B17517007ABBC6 /* TextBox.cpp */,
|
042A91AB16B17517007ABBC6 /* TextBox.cpp */,
|
||||||
042A91AC16B17517007ABBC6 /* TextBox.h */,
|
042A91AC16B17517007ABBC6 /* TextBox.h */,
|
||||||
D5B50C2814CFF66F005F7284 /* Button.cpp */,
|
D5B50C2814CFF66F005F7284 /* Button.cpp */,
|
||||||
@@ -3477,6 +3562,7 @@
|
|||||||
D5B50CF114CFF66F005F7284 /* TileRenderer.cpp */,
|
D5B50CF114CFF66F005F7284 /* TileRenderer.cpp */,
|
||||||
D5B50CF214CFF66F005F7284 /* TileRenderer.h */,
|
D5B50CF214CFF66F005F7284 /* TileRenderer.h */,
|
||||||
D5B50CF314CFF66F005F7284 /* VertecDecl.h */,
|
D5B50CF314CFF66F005F7284 /* VertecDecl.h */,
|
||||||
|
BEEF202614CFF670005F0001 /* Lighting.cpp */,
|
||||||
);
|
);
|
||||||
path = renderer;
|
path = renderer;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -3714,6 +3800,7 @@
|
|||||||
D5B50E6914CFF66F005F7284 /* StringUtils.cpp */,
|
D5B50E6914CFF66F005F7284 /* StringUtils.cpp */,
|
||||||
D5B50E6A14CFF66F005F7284 /* StringUtils.h */,
|
D5B50E6A14CFF66F005F7284 /* StringUtils.h */,
|
||||||
D5B50E6B14CFF66F005F7284 /* WeighedRandom.h */,
|
D5B50E6B14CFF66F005F7284 /* WeighedRandom.h */,
|
||||||
|
F99F0FAE2F8436EB00F2B29A /* Color.cpp */,
|
||||||
);
|
);
|
||||||
path = util;
|
path = util;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -3978,6 +4065,8 @@
|
|||||||
D5B50F3714CFF66F005F7284 /* TickNextTickData.h */,
|
D5B50F3714CFF66F005F7284 /* TickNextTickData.h */,
|
||||||
D5B50F3814CFF66F005F7284 /* tile */,
|
D5B50F3814CFF66F005F7284 /* tile */,
|
||||||
D5B50F6814CFF66F005F7284 /* TilePos.h */,
|
D5B50F6814CFF66F005F7284 /* TilePos.h */,
|
||||||
|
F99F0FA82F84369F00F2B29A /* GrassColor.cpp */,
|
||||||
|
F99F0FAB2F8436CE00F2B29A /* FoliageColor.cpp */,
|
||||||
);
|
);
|
||||||
path = level;
|
path = level;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -4256,6 +4345,20 @@
|
|||||||
D5CF9C37144C225000E4244F = {
|
D5CF9C37144C225000E4244F = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
F9E5A788300E7B3400164066 /* Command.hpp */,
|
||||||
|
F9E5A787300E7B3400164066 /* Command.cpp */,
|
||||||
|
F9E5A77F300E7B0A00164066 /* CommandKick.hpp */,
|
||||||
|
F9E5A781300E7B0B00164066 /* CommandKick.cpp */,
|
||||||
|
F9E5A782300E7B0B00164066 /* CommandOp.hpp */,
|
||||||
|
F9E5A780300E7B0A00164066 /* CommandOp.cpp */,
|
||||||
|
F9E5A77B300E7AF400164066 /* CommandHelp.hpp */,
|
||||||
|
F9E5A77C300E7AF400164066 /* CommandHelp.cpp */,
|
||||||
|
F9E5A778300E7AD500164066 /* CommandBan.hpp */,
|
||||||
|
F9E5A777300E7AD500164066 /* CommandBan.cpp */,
|
||||||
|
F9E5A773300E7AB700164066 /* CommandManager.hpp */,
|
||||||
|
F9E5A774300E7AB700164066 /* CommandManager.cpp */,
|
||||||
|
F9E5A771300E7A8700164066 /* LevelConstants.cpp */,
|
||||||
|
F99D344D2F7372A100DC153E /* Launch Screen.storyboard */,
|
||||||
D5E1BA9A1451C8A0007DCC4F /* Default@2x.png */,
|
D5E1BA9A1451C8A0007DCC4F /* Default@2x.png */,
|
||||||
9D959AFF16036BEE00E23A6F /* Default-568h@2x.png */,
|
9D959AFF16036BEE00E23A6F /* Default-568h@2x.png */,
|
||||||
D5F07744145EF79B00EC30FB /* Default-Landscape~ipad.png */,
|
D5F07744145EF79B00EC30FB /* Default-Landscape~ipad.png */,
|
||||||
@@ -4267,6 +4370,30 @@
|
|||||||
D5CF9C45144C225000E4244F /* Frameworks */,
|
D5CF9C45144C225000E4244F /* Frameworks */,
|
||||||
D5CF9C43144C225000E4244F /* Products */,
|
D5CF9C43144C225000E4244F /* Products */,
|
||||||
D5B50C1614CFF66F005F7284 /* src */,
|
D5B50C1614CFF66F005F7284 /* src */,
|
||||||
|
F99D341D2F736AA100DC153E /* HttpClient.h */,
|
||||||
|
F99D341E2F736AA100DC153E /* HttpClient.cpp */,
|
||||||
|
F99D34212F736AD400DC153E /* TextOption.h */,
|
||||||
|
F99D34222F736AD400DC153E /* TextOption.cpp */,
|
||||||
|
F99D34252F736AFB00DC153E /* OptionsFile.h */,
|
||||||
|
F99D34262F736AFB00DC153E /* OptionsFile.cpp */,
|
||||||
|
F99D34292F736B6F00DC153E /* OptionsItem.h */,
|
||||||
|
F99D342A2F736B6F00DC153E /* OptionsItem.cpp */,
|
||||||
|
F99D342D2F736BAD00DC153E /* ConsoleScreen.h */,
|
||||||
|
F99D342E2F736BAD00DC153E /* ConsoleScreen.cpp */,
|
||||||
|
F99D34312F736BDA00DC153E /* CreditsScreen.h */,
|
||||||
|
F99D34322F736BDA00DC153E /* CreditsScreen.cpp */,
|
||||||
|
F99D34352F736C1000DC153E /* JoinByIPScreen.h */,
|
||||||
|
F99D34362F736C1000DC153E /* JoinByIPScreen.cpp */,
|
||||||
|
F99D34392F736C3B00DC153E /* UsernameScreen.h */,
|
||||||
|
F99D343A2F736C3B00DC153E /* UsernameScreen.cpp */,
|
||||||
|
F99D343D2F736C8400DC153E /* GuiElementContainer.h */,
|
||||||
|
F99D343E2F736C8400DC153E /* GuiElementContainer.cpp */,
|
||||||
|
F99D34412F736F9400DC153E /* Option.h */,
|
||||||
|
F99D34422F736F9400DC153E /* Option.cpp */,
|
||||||
|
F99D34452F736FE800DC153E /* KeyOption.h */,
|
||||||
|
F99D34462F736FE800DC153E /* KeyOption.cpp */,
|
||||||
|
F99D34492F7370CF00DC153E /* Slider.h */,
|
||||||
|
F99D344A2F7370CF00DC153E /* Slider.cpp */,
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
@@ -4527,10 +4654,16 @@
|
|||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastUpgradeCheck = 0420;
|
LastUpgradeCheck = 0420;
|
||||||
|
TargetAttributes = {
|
||||||
|
D5CF9C41144C225000E4244F = {
|
||||||
|
DevelopmentTeam = PZUVNW8F2U;
|
||||||
|
ProvisioningStyle = Automatic;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
buildConfigurationList = D5CF9C3C144C225000E4244F /* Build configuration list for PBXProject "minecraftpe" */;
|
buildConfigurationList = D5CF9C3C144C225000E4244F /* Build configuration list for PBXProject "minecraftpe" */;
|
||||||
compatibilityVersion = "Xcode 3.2";
|
compatibilityVersion = "Xcode 3.2";
|
||||||
developmentRegion = English;
|
developmentRegion = en;
|
||||||
hasScannedForEncodings = 0;
|
hasScannedForEncodings = 0;
|
||||||
knownRegions = (
|
knownRegions = (
|
||||||
en,
|
en,
|
||||||
@@ -4599,6 +4732,7 @@
|
|||||||
D5B50A5614CFF492005F7284 /* pig.png in Resources */,
|
D5B50A5614CFF492005F7284 /* pig.png in Resources */,
|
||||||
D5B50A5814CFF492005F7284 /* sheep_fur.png in Resources */,
|
D5B50A5814CFF492005F7284 /* sheep_fur.png in Resources */,
|
||||||
D5B50A5A14CFF492005F7284 /* sheep.png in Resources */,
|
D5B50A5A14CFF492005F7284 /* sheep.png in Resources */,
|
||||||
|
F99D344F2F7372A100DC153E /* Launch Screen.storyboard in Resources */,
|
||||||
D5B50A5C14CFF492005F7284 /* skeleton.png in Resources */,
|
D5B50A5C14CFF492005F7284 /* skeleton.png in Resources */,
|
||||||
D5B50A5E14CFF492005F7284 /* spider.png in Resources */,
|
D5B50A5E14CFF492005F7284 /* spider.png in Resources */,
|
||||||
D5B50A6014CFF492005F7284 /* zombie.png in Resources */,
|
D5B50A6014CFF492005F7284 /* zombie.png in Resources */,
|
||||||
@@ -4935,6 +5069,7 @@
|
|||||||
D5ACF26F15C03DBF00E21C22 /* sand2.m4a in Resources */,
|
D5ACF26F15C03DBF00E21C22 /* sand2.m4a in Resources */,
|
||||||
D5ACF27115C03DBF00E21C22 /* sand3.m4a in Resources */,
|
D5ACF27115C03DBF00E21C22 /* sand3.m4a in Resources */,
|
||||||
D5ACF27315C03DBF00E21C22 /* sand4.m4a in Resources */,
|
D5ACF27315C03DBF00E21C22 /* sand4.m4a in Resources */,
|
||||||
|
F99D344E2F7372A100DC153E /* Launch Screen.storyboard in Resources */,
|
||||||
D5ACF27515C03DBF00E21C22 /* snow1.m4a in Resources */,
|
D5ACF27515C03DBF00E21C22 /* snow1.m4a in Resources */,
|
||||||
D5ACF27715C03DBF00E21C22 /* snow2.m4a in Resources */,
|
D5ACF27715C03DBF00E21C22 /* snow2.m4a in Resources */,
|
||||||
D5ACF27915C03DBF00E21C22 /* snow3.m4a in Resources */,
|
D5ACF27915C03DBF00E21C22 /* snow3.m4a in Resources */,
|
||||||
@@ -5011,18 +5146,22 @@
|
|||||||
D58BB544146A0B910002C9F5 /* IASKSettingsStore.m in Sources */,
|
D58BB544146A0B910002C9F5 /* IASKSettingsStore.m in Sources */,
|
||||||
D58BB545146A0B910002C9F5 /* IASKSettingsStoreFile.m in Sources */,
|
D58BB545146A0B910002C9F5 /* IASKSettingsStoreFile.m in Sources */,
|
||||||
D58BB546146A0B910002C9F5 /* IASKSettingsStoreUserDefaults.m in Sources */,
|
D58BB546146A0B910002C9F5 /* IASKSettingsStoreUserDefaults.m in Sources */,
|
||||||
|
F99D34232F736AD400DC153E /* TextOption.cpp in Sources */,
|
||||||
D58BB547146A0B910002C9F5 /* IASKSpecifier.m in Sources */,
|
D58BB547146A0B910002C9F5 /* IASKSpecifier.m in Sources */,
|
||||||
D58BB548146A0B910002C9F5 /* IASKPSSliderSpecifierViewCell.m in Sources */,
|
D58BB548146A0B910002C9F5 /* IASKPSSliderSpecifierViewCell.m in Sources */,
|
||||||
D58BB549146A0B910002C9F5 /* IASKPSTextFieldSpecifierViewCell.m in Sources */,
|
D58BB549146A0B910002C9F5 /* IASKPSTextFieldSpecifierViewCell.m in Sources */,
|
||||||
D58BB54A146A0B910002C9F5 /* IASKPSTitleValueSpecifierViewCell.m in Sources */,
|
D58BB54A146A0B910002C9F5 /* IASKPSTitleValueSpecifierViewCell.m in Sources */,
|
||||||
D58BB54B146A0B910002C9F5 /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */,
|
D58BB54B146A0B910002C9F5 /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */,
|
||||||
|
F99D343B2F736C3B00DC153E /* UsernameScreen.cpp in Sources */,
|
||||||
D58BB54C146A0B910002C9F5 /* IASKSlider.m in Sources */,
|
D58BB54C146A0B910002C9F5 /* IASKSlider.m in Sources */,
|
||||||
D58BB54D146A0B910002C9F5 /* IASKSwitch.m in Sources */,
|
D58BB54D146A0B910002C9F5 /* IASKSwitch.m in Sources */,
|
||||||
|
F99D34302F736BAD00DC153E /* ConsoleScreen.cpp in Sources */,
|
||||||
D58BB54E146A0B910002C9F5 /* IASKTextField.m in Sources */,
|
D58BB54E146A0B910002C9F5 /* IASKTextField.m in Sources */,
|
||||||
D58BB550146A0B910002C9F5 /* PVRTexture.m in Sources */,
|
D58BB550146A0B910002C9F5 /* PVRTexture.m in Sources */,
|
||||||
D5D43CC9146AF4B4002ED842 /* RenameMPWorldViewController.mm in Sources */,
|
D5D43CC9146AF4B4002ED842 /* RenameMPWorldViewController.mm in Sources */,
|
||||||
D5B50F7014CFF670005F7284 /* AppPlatform_iOS.mm in Sources */,
|
D5B50F7014CFF670005F7284 /* AppPlatform_iOS.mm in Sources */,
|
||||||
D5B50F7414CFF670005F7284 /* CreativeMode.cpp in Sources */,
|
D5B50F7414CFF670005F7284 /* CreativeMode.cpp in Sources */,
|
||||||
|
F99D34432F736F9400DC153E /* Option.cpp in Sources */,
|
||||||
D5B50F7614CFF670005F7284 /* GameMode.cpp in Sources */,
|
D5B50F7614CFF670005F7284 /* GameMode.cpp in Sources */,
|
||||||
D5B50F7814CFF670005F7284 /* Button.cpp in Sources */,
|
D5B50F7814CFF670005F7284 /* Button.cpp in Sources */,
|
||||||
D5B50F7A14CFF670005F7284 /* ImageButton.cpp in Sources */,
|
D5B50F7A14CFF670005F7284 /* ImageButton.cpp in Sources */,
|
||||||
@@ -5067,6 +5206,7 @@
|
|||||||
D5B50FC814CFF670005F7284 /* KeyboardInput.cpp in Sources */,
|
D5B50FC814CFF670005F7284 /* KeyboardInput.cpp in Sources */,
|
||||||
D5B50FCA14CFF670005F7284 /* TouchscreenInput.cpp in Sources */,
|
D5B50FCA14CFF670005F7284 /* TouchscreenInput.cpp in Sources */,
|
||||||
D5B50FCC14CFF670005F7284 /* LocalPlayer.cpp in Sources */,
|
D5B50FCC14CFF670005F7284 /* LocalPlayer.cpp in Sources */,
|
||||||
|
F99D34482F736FE800DC153E /* KeyOption.cpp in Sources */,
|
||||||
D5B50FCE14CFF670005F7284 /* Chunk.cpp in Sources */,
|
D5B50FCE14CFF670005F7284 /* Chunk.cpp in Sources */,
|
||||||
D5B50FD014CFF670005F7284 /* Frustum.cpp in Sources */,
|
D5B50FD014CFF670005F7284 /* Frustum.cpp in Sources */,
|
||||||
D5B50FD214CFF670005F7284 /* ChickenRenderer.cpp in Sources */,
|
D5B50FD214CFF670005F7284 /* ChickenRenderer.cpp in Sources */,
|
||||||
@@ -5109,6 +5249,7 @@
|
|||||||
D5B5111014CFF670005F7284 /* Mth.cpp in Sources */,
|
D5B5111014CFF670005F7284 /* Mth.cpp in Sources */,
|
||||||
D5B5111214CFF670005F7284 /* PerfRenderer.cpp in Sources */,
|
D5B5111214CFF670005F7284 /* PerfRenderer.cpp in Sources */,
|
||||||
D5B5111414CFF670005F7284 /* PerfTimer.cpp in Sources */,
|
D5B5111414CFF670005F7284 /* PerfTimer.cpp in Sources */,
|
||||||
|
F99F0FA92F84369F00F2B29A /* GrassColor.cpp in Sources */,
|
||||||
D5B5111614CFF670005F7284 /* StringUtils.cpp in Sources */,
|
D5B5111614CFF670005F7284 /* StringUtils.cpp in Sources */,
|
||||||
D5B5111814CFF670005F7284 /* Direction.cpp in Sources */,
|
D5B5111814CFF670005F7284 /* Direction.cpp in Sources */,
|
||||||
D5B5111A14CFF670005F7284 /* Animal.cpp in Sources */,
|
D5B5111A14CFF670005F7284 /* Animal.cpp in Sources */,
|
||||||
@@ -5125,17 +5266,21 @@
|
|||||||
D5B5113014CFF670005F7284 /* TripodCamera.cpp in Sources */,
|
D5B5113014CFF670005F7284 /* TripodCamera.cpp in Sources */,
|
||||||
D5B5113214CFF670005F7284 /* Mob.cpp in Sources */,
|
D5B5113214CFF670005F7284 /* Mob.cpp in Sources */,
|
||||||
D5B5113414CFF670005F7284 /* MobCategory.cpp in Sources */,
|
D5B5113414CFF670005F7284 /* MobCategory.cpp in Sources */,
|
||||||
|
F99D34282F736AFB00DC153E /* OptionsFile.cpp in Sources */,
|
||||||
D5B5113814CFF670005F7284 /* PathFinderMob.cpp in Sources */,
|
D5B5113814CFF670005F7284 /* PathFinderMob.cpp in Sources */,
|
||||||
D5B5113A14CFF670005F7284 /* Inventory.cpp in Sources */,
|
D5B5113A14CFF670005F7284 /* Inventory.cpp in Sources */,
|
||||||
D5B5113C14CFF670005F7284 /* Player.cpp in Sources */,
|
D5B5113C14CFF670005F7284 /* Player.cpp in Sources */,
|
||||||
|
F99F0FB02F8436EB00F2B29A /* Color.cpp in Sources */,
|
||||||
D5B5113E14CFF670005F7284 /* Arrow.cpp in Sources */,
|
D5B5113E14CFF670005F7284 /* Arrow.cpp in Sources */,
|
||||||
D5B5114014CFF670005F7284 /* Recipes.cpp in Sources */,
|
D5B5114014CFF670005F7284 /* Recipes.cpp in Sources */,
|
||||||
D5B5114214CFF670005F7284 /* ToolRecipes.cpp in Sources */,
|
D5B5114214CFF670005F7284 /* ToolRecipes.cpp in Sources */,
|
||||||
D5B5114414CFF670005F7284 /* WeaponRecipes.cpp in Sources */,
|
D5B5114414CFF670005F7284 /* WeaponRecipes.cpp in Sources */,
|
||||||
D5B5114614CFF670005F7284 /* HatchetItem.cpp in Sources */,
|
D5B5114614CFF670005F7284 /* HatchetItem.cpp in Sources */,
|
||||||
D5B5114814CFF670005F7284 /* Item.cpp in Sources */,
|
D5B5114814CFF670005F7284 /* Item.cpp in Sources */,
|
||||||
|
F99F0FAC2F8436CE00F2B29A /* FoliageColor.cpp in Sources */,
|
||||||
D5B5114A14CFF670005F7284 /* ItemInstance.cpp in Sources */,
|
D5B5114A14CFF670005F7284 /* ItemInstance.cpp in Sources */,
|
||||||
D5B5114C14CFF670005F7284 /* PickaxeItem.cpp in Sources */,
|
D5B5114C14CFF670005F7284 /* PickaxeItem.cpp in Sources */,
|
||||||
|
F99D344B2F7370CF00DC153E /* Slider.cpp in Sources */,
|
||||||
D5B5114E14CFF670005F7284 /* ShovelItem.cpp in Sources */,
|
D5B5114E14CFF670005F7284 /* ShovelItem.cpp in Sources */,
|
||||||
D5B5115014CFF670005F7284 /* Biome.cpp in Sources */,
|
D5B5115014CFF670005F7284 /* Biome.cpp in Sources */,
|
||||||
D5B5115214CFF670005F7284 /* BiomeSource.cpp in Sources */,
|
D5B5115214CFF670005F7284 /* BiomeSource.cpp in Sources */,
|
||||||
@@ -5186,6 +5331,7 @@
|
|||||||
D5251DBA1538192700FC82C8 /* CloudServer.cpp in Sources */,
|
D5251DBA1538192700FC82C8 /* CloudServer.cpp in Sources */,
|
||||||
D5251DBE1538192700FC82C8 /* CommandParserInterface.cpp in Sources */,
|
D5251DBE1538192700FC82C8 /* CommandParserInterface.cpp in Sources */,
|
||||||
D5251DC01538192700FC82C8 /* ConnectionGraph2.cpp in Sources */,
|
D5251DC01538192700FC82C8 /* ConnectionGraph2.cpp in Sources */,
|
||||||
|
F99D34402F736C8400DC153E /* GuiElementContainer.cpp in Sources */,
|
||||||
D5251DC21538192700FC82C8 /* ConsoleServer.cpp in Sources */,
|
D5251DC21538192700FC82C8 /* ConsoleServer.cpp in Sources */,
|
||||||
D5251DC41538192700FC82C8 /* DataCompressor.cpp in Sources */,
|
D5251DC41538192700FC82C8 /* DataCompressor.cpp in Sources */,
|
||||||
D5251DC61538192700FC82C8 /* DirectoryDeltaTransfer.cpp in Sources */,
|
D5251DC61538192700FC82C8 /* DirectoryDeltaTransfer.cpp in Sources */,
|
||||||
@@ -5210,6 +5356,8 @@
|
|||||||
D5251DEC1538192700FC82C8 /* HTTPConnection.cpp in Sources */,
|
D5251DEC1538192700FC82C8 /* HTTPConnection.cpp in Sources */,
|
||||||
D5251DEE1538192700FC82C8 /* IncrementalReadInterface.cpp in Sources */,
|
D5251DEE1538192700FC82C8 /* IncrementalReadInterface.cpp in Sources */,
|
||||||
D5251DF01538192700FC82C8 /* Itoa.cpp in Sources */,
|
D5251DF01538192700FC82C8 /* Itoa.cpp in Sources */,
|
||||||
|
F99D34202F736AA100DC153E /* HttpClient.cpp in Sources */,
|
||||||
|
F99D34382F736C1000DC153E /* JoinByIPScreen.cpp in Sources */,
|
||||||
D5251DF21538192700FC82C8 /* LinuxStrings.cpp in Sources */,
|
D5251DF21538192700FC82C8 /* LinuxStrings.cpp in Sources */,
|
||||||
D5251DF41538192700FC82C8 /* LocklessTypes.cpp in Sources */,
|
D5251DF41538192700FC82C8 /* LocklessTypes.cpp in Sources */,
|
||||||
D5251DF61538192700FC82C8 /* LogCommandParser.cpp in Sources */,
|
D5251DF61538192700FC82C8 /* LogCommandParser.cpp in Sources */,
|
||||||
@@ -5238,6 +5386,7 @@
|
|||||||
D5251E2A1538192700FC82C8 /* RakSleep.cpp in Sources */,
|
D5251E2A1538192700FC82C8 /* RakSleep.cpp in Sources */,
|
||||||
D5251E2C1538192700FC82C8 /* RakString.cpp in Sources */,
|
D5251E2C1538192700FC82C8 /* RakString.cpp in Sources */,
|
||||||
D5251E2E1538192700FC82C8 /* RakThread.cpp in Sources */,
|
D5251E2E1538192700FC82C8 /* RakThread.cpp in Sources */,
|
||||||
|
F99D34332F736BDA00DC153E /* CreditsScreen.cpp in Sources */,
|
||||||
D5251E301538192700FC82C8 /* RakWString.cpp in Sources */,
|
D5251E301538192700FC82C8 /* RakWString.cpp in Sources */,
|
||||||
D5251E321538192700FC82C8 /* Rand.cpp in Sources */,
|
D5251E321538192700FC82C8 /* Rand.cpp in Sources */,
|
||||||
D5251E341538192700FC82C8 /* rdlmalloc.cpp in Sources */,
|
D5251E341538192700FC82C8 /* rdlmalloc.cpp in Sources */,
|
||||||
@@ -5280,6 +5429,7 @@
|
|||||||
D5951EEB159349100043A12A /* TileEntity.cpp in Sources */,
|
D5951EEB159349100043A12A /* TileEntity.cpp in Sources */,
|
||||||
D5951EEF159349680043A12A /* FurnaceScreen.cpp in Sources */,
|
D5951EEF159349680043A12A /* FurnaceScreen.cpp in Sources */,
|
||||||
D5951EF215934A2D0043A12A /* Feature.cpp in Sources */,
|
D5951EF215934A2D0043A12A /* Feature.cpp in Sources */,
|
||||||
|
F99D342C2F736B6F00DC153E /* OptionsItem.cpp in Sources */,
|
||||||
D5951EF815934AC50043A12A /* BaseContainerMenu.cpp in Sources */,
|
D5951EF815934AC50043A12A /* BaseContainerMenu.cpp in Sources */,
|
||||||
D5951EFA15934AC50043A12A /* FurnaceMenu.cpp in Sources */,
|
D5951EFA15934AC50043A12A /* FurnaceMenu.cpp in Sources */,
|
||||||
D5D381F315A1A1CF00B6C50E /* FillingContainer.cpp in Sources */,
|
D5D381F315A1A1CF00B6C50E /* FillingContainer.cpp in Sources */,
|
||||||
@@ -5332,6 +5482,7 @@
|
|||||||
D5D8C4C41639341100FD35F0 /* Motive.cpp in Sources */,
|
D5D8C4C41639341100FD35F0 /* Motive.cpp in Sources */,
|
||||||
D5D8C4C8163934BB00FD35F0 /* HangingEntityItem.cpp in Sources */,
|
D5D8C4C8163934BB00FD35F0 /* HangingEntityItem.cpp in Sources */,
|
||||||
D5D8C4CC1639362F00FD35F0 /* NetherReactorPattern.cpp in Sources */,
|
D5D8C4CC1639362F00FD35F0 /* NetherReactorPattern.cpp in Sources */,
|
||||||
|
BEEF202614CFF670005F0002 /* Lighting.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -5339,8 +5490,23 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
F9E5A789300E7B3400164066 /* Command.cpp in Sources */,
|
||||||
|
F9E5A78A300E7B3400164066 /* Command.hpp in Sources */,
|
||||||
|
F9E5A783300E7B0B00164066 /* CommandKick.hpp in Sources */,
|
||||||
|
F9E5A784300E7B0B00164066 /* CommandOp.cpp in Sources */,
|
||||||
|
F9E5A785300E7B0B00164066 /* CommandKick.cpp in Sources */,
|
||||||
|
F9E5A786300E7B0B00164066 /* CommandOp.hpp in Sources */,
|
||||||
|
F9E5A77D300E7AF400164066 /* CommandHelp.hpp in Sources */,
|
||||||
|
F9E5A77E300E7AF400164066 /* CommandHelp.cpp in Sources */,
|
||||||
|
F9E5A779300E7AD500164066 /* CommandBan.cpp in Sources */,
|
||||||
|
F9E5A77A300E7AD500164066 /* CommandBan.hpp in Sources */,
|
||||||
|
F9E5A775300E7AB700164066 /* CommandManager.hpp in Sources */,
|
||||||
|
F9E5A776300E7AB700164066 /* CommandManager.cpp in Sources */,
|
||||||
|
F9E5A772300E7A8700164066 /* LevelConstants.cpp in Sources */,
|
||||||
|
F912B8CF2F6C3D5200BC60DF /* TextBox.h in Sources */,
|
||||||
D5CF9C57144C225000E4244F /* main.mm in Sources */,
|
D5CF9C57144C225000E4244F /* main.mm in Sources */,
|
||||||
D5CF9C5B144C225000E4244F /* minecraftpeAppDelegate.mm in Sources */,
|
D5CF9C5B144C225000E4244F /* minecraftpeAppDelegate.mm in Sources */,
|
||||||
|
F99D343C2F736C3B00DC153E /* UsernameScreen.cpp in Sources */,
|
||||||
D5CF9C65144C225000E4244F /* EAGLView.m in Sources */,
|
D5CF9C65144C225000E4244F /* EAGLView.m in Sources */,
|
||||||
D5CFA01D144C453900E4244F /* minecraftpeViewController.mm in Sources */,
|
D5CFA01D144C453900E4244F /* minecraftpeViewController.mm in Sources */,
|
||||||
D5A55E4914500EDE00A7571B /* CreateNewWorldViewController.mm in Sources */,
|
D5A55E4914500EDE00A7571B /* CreateNewWorldViewController.mm in Sources */,
|
||||||
@@ -5354,6 +5520,7 @@
|
|||||||
D5F3B7D014548E7900D25470 /* IASKSettingsStoreUserDefaults.m in Sources */,
|
D5F3B7D014548E7900D25470 /* IASKSettingsStoreUserDefaults.m in Sources */,
|
||||||
D5F3B7D114548E7900D25470 /* IASKSpecifier.m in Sources */,
|
D5F3B7D114548E7900D25470 /* IASKSpecifier.m in Sources */,
|
||||||
D5F3B7D214548E7900D25470 /* IASKPSSliderSpecifierViewCell.m in Sources */,
|
D5F3B7D214548E7900D25470 /* IASKPSSliderSpecifierViewCell.m in Sources */,
|
||||||
|
F99D34472F736FE800DC153E /* KeyOption.cpp in Sources */,
|
||||||
D5F3B7D314548E7900D25470 /* IASKPSTextFieldSpecifierViewCell.m in Sources */,
|
D5F3B7D314548E7900D25470 /* IASKPSTextFieldSpecifierViewCell.m in Sources */,
|
||||||
D5F3B7D414548E7900D25470 /* IASKPSTitleValueSpecifierViewCell.m in Sources */,
|
D5F3B7D414548E7900D25470 /* IASKPSTitleValueSpecifierViewCell.m in Sources */,
|
||||||
D5F3B7D514548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */,
|
D5F3B7D514548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */,
|
||||||
@@ -5433,6 +5600,7 @@
|
|||||||
D5B5102F14CFF670005F7284 /* main.cpp in Sources */,
|
D5B5102F14CFF670005F7284 /* main.cpp in Sources */,
|
||||||
D5B5103514CFF670005F7284 /* Tag.cpp in Sources */,
|
D5B5103514CFF670005F7284 /* Tag.cpp in Sources */,
|
||||||
D5B5103714CFF670005F7284 /* ClientSideNetworkHandler.cpp in Sources */,
|
D5B5103714CFF670005F7284 /* ClientSideNetworkHandler.cpp in Sources */,
|
||||||
|
F99F0FAF2F8436EB00F2B29A /* Color.cpp in Sources */,
|
||||||
D5B5103914CFF670005F7284 /* NetEventCallback.cpp in Sources */,
|
D5B5103914CFF670005F7284 /* NetEventCallback.cpp in Sources */,
|
||||||
D5B5103B14CFF670005F7284 /* Packet.cpp in Sources */,
|
D5B5103B14CFF670005F7284 /* Packet.cpp in Sources */,
|
||||||
D5B5103D14CFF670005F7284 /* RakNetInstance.cpp in Sources */,
|
D5B5103D14CFF670005F7284 /* RakNetInstance.cpp in Sources */,
|
||||||
@@ -5453,6 +5621,7 @@
|
|||||||
D5B5111514CFF670005F7284 /* StringUtils.cpp in Sources */,
|
D5B5111514CFF670005F7284 /* StringUtils.cpp in Sources */,
|
||||||
D5B5111714CFF670005F7284 /* Direction.cpp in Sources */,
|
D5B5111714CFF670005F7284 /* Direction.cpp in Sources */,
|
||||||
D5B5111914CFF670005F7284 /* Animal.cpp in Sources */,
|
D5B5111914CFF670005F7284 /* Animal.cpp in Sources */,
|
||||||
|
F99F0FAD2F8436CE00F2B29A /* FoliageColor.cpp in Sources */,
|
||||||
D5B5111B14CFF670005F7284 /* Chicken.cpp in Sources */,
|
D5B5111B14CFF670005F7284 /* Chicken.cpp in Sources */,
|
||||||
D5B5111D14CFF670005F7284 /* Cow.cpp in Sources */,
|
D5B5111D14CFF670005F7284 /* Cow.cpp in Sources */,
|
||||||
D5B5111F14CFF670005F7284 /* Pig.cpp in Sources */,
|
D5B5111F14CFF670005F7284 /* Pig.cpp in Sources */,
|
||||||
@@ -5465,11 +5634,13 @@
|
|||||||
D5B5112D14CFF670005F7284 /* PrimedTnt.cpp in Sources */,
|
D5B5112D14CFF670005F7284 /* PrimedTnt.cpp in Sources */,
|
||||||
D5B5112F14CFF670005F7284 /* TripodCamera.cpp in Sources */,
|
D5B5112F14CFF670005F7284 /* TripodCamera.cpp in Sources */,
|
||||||
D5B5113114CFF670005F7284 /* Mob.cpp in Sources */,
|
D5B5113114CFF670005F7284 /* Mob.cpp in Sources */,
|
||||||
|
F99D34442F736F9400DC153E /* Option.cpp in Sources */,
|
||||||
D5B5113314CFF670005F7284 /* MobCategory.cpp in Sources */,
|
D5B5113314CFF670005F7284 /* MobCategory.cpp in Sources */,
|
||||||
D5B5113714CFF670005F7284 /* PathFinderMob.cpp in Sources */,
|
D5B5113714CFF670005F7284 /* PathFinderMob.cpp in Sources */,
|
||||||
D5B5113914CFF670005F7284 /* Inventory.cpp in Sources */,
|
D5B5113914CFF670005F7284 /* Inventory.cpp in Sources */,
|
||||||
D5B5113B14CFF670005F7284 /* Player.cpp in Sources */,
|
D5B5113B14CFF670005F7284 /* Player.cpp in Sources */,
|
||||||
D5B5113D14CFF670005F7284 /* Arrow.cpp in Sources */,
|
D5B5113D14CFF670005F7284 /* Arrow.cpp in Sources */,
|
||||||
|
F99D343F2F736C8400DC153E /* GuiElementContainer.cpp in Sources */,
|
||||||
D5B5113F14CFF670005F7284 /* Recipes.cpp in Sources */,
|
D5B5113F14CFF670005F7284 /* Recipes.cpp in Sources */,
|
||||||
D5B5114114CFF670005F7284 /* ToolRecipes.cpp in Sources */,
|
D5B5114114CFF670005F7284 /* ToolRecipes.cpp in Sources */,
|
||||||
D5B5114314CFF670005F7284 /* WeaponRecipes.cpp in Sources */,
|
D5B5114314CFF670005F7284 /* WeaponRecipes.cpp in Sources */,
|
||||||
@@ -5501,16 +5672,19 @@
|
|||||||
D5B5117714CFF670005F7284 /* ExternalFileLevelStorageSource.cpp in Sources */,
|
D5B5117714CFF670005F7284 /* ExternalFileLevelStorageSource.cpp in Sources */,
|
||||||
D5B5117914CFF670005F7284 /* RegionFile.cpp in Sources */,
|
D5B5117914CFF670005F7284 /* RegionFile.cpp in Sources */,
|
||||||
D5B5117B14CFF670005F7284 /* TickNextTickData.cpp in Sources */,
|
D5B5117B14CFF670005F7284 /* TickNextTickData.cpp in Sources */,
|
||||||
|
F99F0FAA2F84369F00F2B29A /* GrassColor.cpp in Sources */,
|
||||||
D5B5117D14CFF670005F7284 /* DoorTile.cpp in Sources */,
|
D5B5117D14CFF670005F7284 /* DoorTile.cpp in Sources */,
|
||||||
D5B5118114CFF670005F7284 /* StoneSlabTile.cpp in Sources */,
|
D5B5118114CFF670005F7284 /* StoneSlabTile.cpp in Sources */,
|
||||||
D5B5118314CFF670005F7284 /* Tile.cpp in Sources */,
|
D5B5118314CFF670005F7284 /* Tile.cpp in Sources */,
|
||||||
D5B5118514CFF670005F7284 /* HitResult.cpp in Sources */,
|
D5B5118514CFF670005F7284 /* HitResult.cpp in Sources */,
|
||||||
D5B5118B14D03342005F7284 /* SynchedEntityData.cpp in Sources */,
|
D5B5118B14D03342005F7284 /* SynchedEntityData.cpp in Sources */,
|
||||||
D5B5118E14DEA27F005F7284 /* DeathScreen.cpp in Sources */,
|
D5B5118E14DEA27F005F7284 /* DeathScreen.cpp in Sources */,
|
||||||
|
F99D34242F736AD400DC153E /* TextOption.cpp in Sources */,
|
||||||
D5B5119114DEA2B7005F7284 /* LevelData.cpp in Sources */,
|
D5B5119114DEA2B7005F7284 /* LevelData.cpp in Sources */,
|
||||||
D5B5119414DEA2EF005F7284 /* DyePowderItem.cpp in Sources */,
|
D5B5119414DEA2EF005F7284 /* DyePowderItem.cpp in Sources */,
|
||||||
D584926D14FD234400741128 /* SharedConstants.cpp in Sources */,
|
D584926D14FD234400741128 /* SharedConstants.cpp in Sources */,
|
||||||
D584927314FD236700741128 /* MoveControl.cpp in Sources */,
|
D584927314FD236700741128 /* MoveControl.cpp in Sources */,
|
||||||
|
F99D344C2F7370CF00DC153E /* Slider.cpp in Sources */,
|
||||||
D584928614FD240D00741128 /* IConfigListener.cpp in Sources */,
|
D584928614FD240D00741128 /* IConfigListener.cpp in Sources */,
|
||||||
D584928914FD2FAF00741128 /* Path.cpp in Sources */,
|
D584928914FD2FAF00741128 /* Path.cpp in Sources */,
|
||||||
D5B86281153810BD00F3238A /* I18n.cpp in Sources */,
|
D5B86281153810BD00F3238A /* I18n.cpp in Sources */,
|
||||||
@@ -5562,6 +5736,7 @@
|
|||||||
D5251E011538192700FC82C8 /* NatTypeDetectionServer.cpp in Sources */,
|
D5251E011538192700FC82C8 /* NatTypeDetectionServer.cpp in Sources */,
|
||||||
D5251E031538192700FC82C8 /* NetworkIDManager.cpp in Sources */,
|
D5251E031538192700FC82C8 /* NetworkIDManager.cpp in Sources */,
|
||||||
D5251E051538192700FC82C8 /* NetworkIDObject.cpp in Sources */,
|
D5251E051538192700FC82C8 /* NetworkIDObject.cpp in Sources */,
|
||||||
|
F99D34372F736C1000DC153E /* JoinByIPScreen.cpp in Sources */,
|
||||||
D5251E071538192700FC82C8 /* PacketConsoleLogger.cpp in Sources */,
|
D5251E071538192700FC82C8 /* PacketConsoleLogger.cpp in Sources */,
|
||||||
D5251E091538192700FC82C8 /* PacketFileLogger.cpp in Sources */,
|
D5251E091538192700FC82C8 /* PacketFileLogger.cpp in Sources */,
|
||||||
D5251E0B1538192700FC82C8 /* PacketizedTCP.cpp in Sources */,
|
D5251E0B1538192700FC82C8 /* PacketizedTCP.cpp in Sources */,
|
||||||
@@ -5591,11 +5766,13 @@
|
|||||||
D5251E411538192700FC82C8 /* SendToThread.cpp in Sources */,
|
D5251E411538192700FC82C8 /* SendToThread.cpp in Sources */,
|
||||||
D5251E431538192700FC82C8 /* SHA1.cpp in Sources */,
|
D5251E431538192700FC82C8 /* SHA1.cpp in Sources */,
|
||||||
D5251E451538192700FC82C8 /* SignaledEvent.cpp in Sources */,
|
D5251E451538192700FC82C8 /* SignaledEvent.cpp in Sources */,
|
||||||
|
F99D34342F736BDA00DC153E /* CreditsScreen.cpp in Sources */,
|
||||||
D5251E471538192700FC82C8 /* SimpleMutex.cpp in Sources */,
|
D5251E471538192700FC82C8 /* SimpleMutex.cpp in Sources */,
|
||||||
D5251E491538192700FC82C8 /* SocketLayer.cpp in Sources */,
|
D5251E491538192700FC82C8 /* SocketLayer.cpp in Sources */,
|
||||||
D5251E4B1538192700FC82C8 /* StringCompressor.cpp in Sources */,
|
D5251E4B1538192700FC82C8 /* StringCompressor.cpp in Sources */,
|
||||||
D5251E4D1538192700FC82C8 /* StringTable.cpp in Sources */,
|
D5251E4D1538192700FC82C8 /* StringTable.cpp in Sources */,
|
||||||
D5251E4F1538192700FC82C8 /* SuperFastHash.cpp in Sources */,
|
D5251E4F1538192700FC82C8 /* SuperFastHash.cpp in Sources */,
|
||||||
|
F99D342B2F736B6F00DC153E /* OptionsItem.cpp in Sources */,
|
||||||
D5251E511538192700FC82C8 /* TableSerializer.cpp in Sources */,
|
D5251E511538192700FC82C8 /* TableSerializer.cpp in Sources */,
|
||||||
D5251E531538192700FC82C8 /* TCPInterface.cpp in Sources */,
|
D5251E531538192700FC82C8 /* TCPInterface.cpp in Sources */,
|
||||||
D5251E551538192700FC82C8 /* TeamBalancer.cpp in Sources */,
|
D5251E551538192700FC82C8 /* TeamBalancer.cpp in Sources */,
|
||||||
@@ -5618,6 +5795,7 @@
|
|||||||
D5951EDD159348C50043A12A /* ItemPane.cpp in Sources */,
|
D5951EDD159348C50043A12A /* ItemPane.cpp in Sources */,
|
||||||
D5951EE3159349000043A12A /* FurnaceTile.cpp in Sources */,
|
D5951EE3159349000043A12A /* FurnaceTile.cpp in Sources */,
|
||||||
D5951EE8159349100043A12A /* FurnaceTileEntity.cpp in Sources */,
|
D5951EE8159349100043A12A /* FurnaceTileEntity.cpp in Sources */,
|
||||||
|
F99D342F2F736BAD00DC153E /* ConsoleScreen.cpp in Sources */,
|
||||||
D5951EEA159349100043A12A /* TileEntity.cpp in Sources */,
|
D5951EEA159349100043A12A /* TileEntity.cpp in Sources */,
|
||||||
D5951EEE159349680043A12A /* FurnaceScreen.cpp in Sources */,
|
D5951EEE159349680043A12A /* FurnaceScreen.cpp in Sources */,
|
||||||
D5951EF115934A2D0043A12A /* Feature.cpp in Sources */,
|
D5951EF115934A2D0043A12A /* Feature.cpp in Sources */,
|
||||||
@@ -5654,6 +5832,7 @@
|
|||||||
D544941E15D13F45005FA9B0 /* PlayerRenderer.cpp in Sources */,
|
D544941E15D13F45005FA9B0 /* PlayerRenderer.cpp in Sources */,
|
||||||
D544942215D13F5E005FA9B0 /* RemotePlayer.cpp in Sources */,
|
D544942215D13F5E005FA9B0 /* RemotePlayer.cpp in Sources */,
|
||||||
D5B17ED515E226F50056E751 /* Throwable.cpp in Sources */,
|
D5B17ED515E226F50056E751 /* Throwable.cpp in Sources */,
|
||||||
|
F99D341F2F736AA100DC153E /* HttpClient.cpp in Sources */,
|
||||||
D5B17ED915E2273F0056E751 /* SurvivalMode.cpp in Sources */,
|
D5B17ED915E2273F0056E751 /* SurvivalMode.cpp in Sources */,
|
||||||
D5B17EDD15E227670056E751 /* TrapDoorTile.cpp in Sources */,
|
D5B17EDD15E227670056E751 /* TrapDoorTile.cpp in Sources */,
|
||||||
D5B17EE115E260910056E751 /* MoveFolder.mm in Sources */,
|
D5B17EE115E260910056E751 /* MoveFolder.mm in Sources */,
|
||||||
@@ -5689,6 +5868,7 @@
|
|||||||
0400453A16A4125C003EB6FA /* FallingTileRenderer.cpp in Sources */,
|
0400453A16A4125C003EB6FA /* FallingTileRenderer.cpp in Sources */,
|
||||||
0413970716A82E1E008A9F1A /* ArmorItem.cpp in Sources */,
|
0413970716A82E1E008A9F1A /* ArmorItem.cpp in Sources */,
|
||||||
0413970D16A82E6B008A9F1A /* CraftingFilters.cpp in Sources */,
|
0413970D16A82E6B008A9F1A /* CraftingFilters.cpp in Sources */,
|
||||||
|
F99D34272F736AFB00DC153E /* OptionsFile.cpp in Sources */,
|
||||||
0413970E16A82E6B008A9F1A /* StonecutterScreen.cpp in Sources */,
|
0413970E16A82E6B008A9F1A /* StonecutterScreen.cpp in Sources */,
|
||||||
0413971116A82E7B008A9F1A /* ArmorScreen.cpp in Sources */,
|
0413971116A82E7B008A9F1A /* ArmorScreen.cpp in Sources */,
|
||||||
0413971516A82EB9008A9F1A /* ArmorRecipes.cpp in Sources */,
|
0413971516A82EB9008A9F1A /* ArmorRecipes.cpp in Sources */,
|
||||||
@@ -5697,8 +5877,8 @@
|
|||||||
042A91AE16B17517007ABBC6 /* GuiElement.cpp in Sources */,
|
042A91AE16B17517007ABBC6 /* GuiElement.cpp in Sources */,
|
||||||
042A91AF16B17517007ABBC6 /* NinePatch.cpp in Sources */,
|
042A91AF16B17517007ABBC6 /* NinePatch.cpp in Sources */,
|
||||||
042A91B016B17517007ABBC6 /* OptionsGroup.cpp in Sources */,
|
042A91B016B17517007ABBC6 /* OptionsGroup.cpp in Sources */,
|
||||||
042A91B116B17517007ABBC6 /* OptionsPane.cpp in Sources */,
|
|
||||||
042A91B216B17517007ABBC6 /* TextBox.cpp in Sources */,
|
042A91B216B17517007ABBC6 /* TextBox.cpp in Sources */,
|
||||||
|
BEEF202614CFF670005F0003 /* Lighting.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -5735,25 +5915,29 @@
|
|||||||
D50BE20815EE05B8008AA75E /* Ad-Hoc */ = {
|
D50BE20815EE05B8008AA75E /* Ad-Hoc */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = YES;
|
||||||
ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
|
ARCHS = "$(ARCHS_STANDARD)";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Mojang AB";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Mojang AB";
|
||||||
COPY_PHASE_STRIP = YES;
|
COPY_PHASE_STRIP = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = PUBLISH;
|
GCC_PREPROCESSOR_DEFINITIONS = PUBLISH;
|
||||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
GCC_VERSION = "";
|
||||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
||||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||||
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "C93D3524-5C6F-466E-B12B-833663B7EAE0";
|
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "C93D3524-5C6F-466E-B12B-833663B7EAE0";
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos6.0;
|
SDKROOT = iphoneos;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||||
|
USE_HEADERMAP = NO;
|
||||||
VALIDATE_PRODUCT = YES;
|
VALIDATE_PRODUCT = YES;
|
||||||
};
|
};
|
||||||
name = "Ad-Hoc";
|
name = "Ad-Hoc";
|
||||||
@@ -5765,15 +5949,26 @@
|
|||||||
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = "";
|
GCC_PREPROCESSOR_DEFINITIONS = "";
|
||||||
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
||||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
GCC_VERSION = "";
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
||||||
HEADER_SEARCH_PATHS = "";
|
HEADER_SEARCH_PATHS = (
|
||||||
|
"$(SRCROOT)/../../src",
|
||||||
|
"$(SRCROOT)/../../src/client/gui/components",
|
||||||
|
"$(SRCROOT)/../../src/world",
|
||||||
|
"$(SRCROOT)/../../src/platform/input",
|
||||||
|
"$(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views",
|
||||||
|
);
|
||||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = "com.mojang.mcpe-arm64";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos6.0;
|
SDKROOT = iphoneos;
|
||||||
VALID_ARCHS = "i386 armv6 armv7";
|
SYSTEM_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
||||||
|
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../lib_projects/InAppSettingsKit/Models $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
||||||
|
USE_HEADERMAP = NO;
|
||||||
WRAPPER_EXTENSION = app;
|
WRAPPER_EXTENSION = app;
|
||||||
};
|
};
|
||||||
name = "Ad-Hoc";
|
name = "Ad-Hoc";
|
||||||
@@ -5846,24 +6041,28 @@
|
|||||||
D5A20ADB146AAD9C00A52FEC /* AppStore */ = {
|
D5A20ADB146AAD9C00A52FEC /* AppStore */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = YES;
|
||||||
ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
|
ARCHS = "$(ARCHS_STANDARD)";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Mojang AB";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Mojang AB";
|
||||||
COPY_PHASE_STRIP = YES;
|
COPY_PHASE_STRIP = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
GCC_VERSION = "";
|
||||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
||||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||||
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "64BA8967-1A9A-4980-972C-42E75AD5E023";
|
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "64BA8967-1A9A-4980-972C-42E75AD5E023";
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos6.0;
|
SDKROOT = iphoneos;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||||
|
USE_HEADERMAP = NO;
|
||||||
VALIDATE_PRODUCT = YES;
|
VALIDATE_PRODUCT = YES;
|
||||||
};
|
};
|
||||||
name = AppStore;
|
name = AppStore;
|
||||||
@@ -5876,11 +6075,19 @@
|
|||||||
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = PUBLISH;
|
GCC_PREPROCESSOR_DEFINITIONS = PUBLISH;
|
||||||
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
||||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
GCC_VERSION = "";
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
||||||
HEADER_SEARCH_PATHS = "";
|
HEADER_SEARCH_PATHS = (
|
||||||
|
"$(SRCROOT)/../../src",
|
||||||
|
"$(SRCROOT)/../../src/client/gui/components",
|
||||||
|
"$(SRCROOT)/../../src/world",
|
||||||
|
"$(SRCROOT)/../../src/platform/input",
|
||||||
|
"$(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views",
|
||||||
|
);
|
||||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
OTHER_CFLAGS = (
|
OTHER_CFLAGS = (
|
||||||
"-DNS_BLOCK_ASSERTIONS=1",
|
"-DNS_BLOCK_ASSERTIONS=1",
|
||||||
"-DANDROID_PUBLISH",
|
"-DANDROID_PUBLISH",
|
||||||
@@ -5888,8 +6095,10 @@
|
|||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "1B194957-98CF-49B7-A0E7-76692B4B722D";
|
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "1B194957-98CF-49B7-A0E7-76692B4B722D";
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos6.0;
|
SDKROOT = iphoneos;
|
||||||
VALID_ARCHS = "i386 armv6 armv7";
|
SYSTEM_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
||||||
|
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../lib_projects/InAppSettingsKit/Models $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
||||||
|
USE_HEADERMAP = NO;
|
||||||
WRAPPER_EXTENSION = app;
|
WRAPPER_EXTENSION = app;
|
||||||
};
|
};
|
||||||
name = AppStore;
|
name = AppStore;
|
||||||
@@ -5922,8 +6131,8 @@
|
|||||||
D5CF9C6C144C225000E4244F /* Debug */ = {
|
D5CF9C6C144C225000E4244F /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = YES;
|
||||||
ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
|
ARCHS = "$(ARCHS_STANDARD)";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
@@ -5935,41 +6144,50 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
);
|
);
|
||||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
GCC_VERSION = "";
|
||||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
||||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos6.0;
|
SDKROOT = iphoneos;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||||
|
USE_HEADERMAP = NO;
|
||||||
|
VALIDATE_PRODUCT = YES;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
D5CF9C6D144C225000E4244F /* Release */ = {
|
D5CF9C6D144C225000E4244F /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = YES;
|
||||||
ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
|
ARCHS = "$(ARCHS_STANDARD)";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
COPY_PHASE_STRIP = YES;
|
COPY_PHASE_STRIP = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = PUBLISH;
|
GCC_PREPROCESSOR_DEFINITIONS = PUBLISH;
|
||||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
GCC_VERSION = "";
|
||||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
||||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos6.0;
|
SDKROOT = iphoneos;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||||
|
USE_HEADERMAP = NO;
|
||||||
VALIDATE_PRODUCT = YES;
|
VALIDATE_PRODUCT = YES;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
@@ -5977,19 +6195,34 @@
|
|||||||
D5CF9C6F144C225000E4244F /* Debug */ = {
|
D5CF9C6F144C225000E4244F /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
DEVELOPMENT_TEAM = PZUVNW8F2U;
|
||||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
|
GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
|
||||||
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
||||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
GCC_VERSION = "";
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
||||||
HEADER_SEARCH_PATHS = "";
|
HEADER_SEARCH_PATHS = (
|
||||||
|
"$(SRCROOT)/../../src",
|
||||||
|
"$(SRCROOT)/../../src/client/gui/components",
|
||||||
|
"$(SRCROOT)/../../src/world",
|
||||||
|
"$(SRCROOT)/../../src/platform/input",
|
||||||
|
"$(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views",
|
||||||
|
);
|
||||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = "com.mojang.mcpe-arm64";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos6.0;
|
SDKROOT = iphoneos;
|
||||||
VALID_ARCHS = "i386 armv6 armv7";
|
SYSTEM_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
||||||
|
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../lib_projects/InAppSettingsKit/Models $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
||||||
|
USE_HEADERMAP = NO;
|
||||||
WRAPPER_EXTENSION = app;
|
WRAPPER_EXTENSION = app;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
@@ -5997,19 +6230,34 @@
|
|||||||
D5CF9C70144C225000E4244F /* Release */ = {
|
D5CF9C70144C225000E4244F /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
DEVELOPMENT_TEAM = PZUVNW8F2U;
|
||||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = "";
|
GCC_PREPROCESSOR_DEFINITIONS = "";
|
||||||
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
||||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
GCC_VERSION = "";
|
||||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
||||||
HEADER_SEARCH_PATHS = "";
|
HEADER_SEARCH_PATHS = (
|
||||||
|
"$(SRCROOT)/../../src",
|
||||||
|
"$(SRCROOT)/../../src/client/gui/components",
|
||||||
|
"$(SRCROOT)/../../src/world",
|
||||||
|
"$(SRCROOT)/../../src/platform/input",
|
||||||
|
"$(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views",
|
||||||
|
);
|
||||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = "com.mojang.mcpe-arm64";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||||
SDKROOT = iphoneos6.0;
|
SDKROOT = iphoneos;
|
||||||
VALID_ARCHS = "i386 armv6 armv7";
|
SYSTEM_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
||||||
|
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src $(SRCROOT)/../lib_projects/InAppSettingsKit/Models $(SRCROOT)/../../src/client/gui/components $(SRCROOT)/../../src/world $(SRCROOT)/../../src/platform/input $(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views";
|
||||||
|
USE_HEADERMAP = NO;
|
||||||
WRAPPER_EXTENSION = app;
|
WRAPPER_EXTENSION = app;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>com.mojang.${PRODUCT_NAME:rfc1034identifier}</string>
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
<string>6.0</string>
|
<string>6.0</string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
@@ -58,6 +58,8 @@
|
|||||||
<array>
|
<array>
|
||||||
<string>minecraft.ttf</string>
|
<string>minecraft.ttf</string>
|
||||||
</array>
|
</array>
|
||||||
|
<key>UILaunchStoryboardName</key>
|
||||||
|
<string>Launch Screen</string>
|
||||||
<key>UIPrerenderedIcon</key>
|
<key>UIPrerenderedIcon</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>UIRequiresPersistentWiFi</key>
|
<key>UIRequiresPersistentWiFi</key>
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ RakNet::TimeUS GetTimeUS_Windows( void )
|
|||||||
#if _MSC_VER >= 1400 && defined (_M_X64)
|
#if _MSC_VER >= 1400 && defined (_M_X64)
|
||||||
GetProcessAffinityMask(mProc, (PDWORD_PTR)&mProcMask, (PDWORD_PTR)&mSysMask);
|
GetProcessAffinityMask(mProc, (PDWORD_PTR)&mProcMask, (PDWORD_PTR)&mSysMask);
|
||||||
#else
|
#else
|
||||||
GetProcessAffinityMask(mProc, &mProcMask, &mSysMask);
|
GetProcessAffinityMask(mProc, (PDWORD_PTR)&mProcMask, (PDWORD_PTR)&mSysMask);
|
||||||
#endif
|
#endif
|
||||||
mThread = GetCurrentThread();
|
mThread = GetCurrentThread();
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#if defined(X360__)
|
#if defined(X360__)
|
||||||
#elif defined (_WIN32)
|
#elif defined (_WIN32)
|
||||||
#include <WinSock2.h>
|
#include <winsock2.h>
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <Ws2tcpip.h>
|
#include <ws2tcpip.h>
|
||||||
|
|
||||||
// Must always include Winsock2.h before windows.h
|
// Must always include Winsock2.h before windows.h
|
||||||
// or else:
|
// or else:
|
||||||
|
|||||||
@@ -20,6 +20,10 @@
|
|||||||
#include <shellapi.h>
|
#include <shellapi.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __EMSCRIPTEN__
|
||||||
|
#include <emscripten/html5.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
static void png_funcReadFile(png_structp pngPtr, png_bytep data, png_size_t length) {
|
static void png_funcReadFile(png_structp pngPtr, png_bytep data, png_size_t length) {
|
||||||
((std::istream*)png_get_io_ptr(pngPtr))->read((char*)data, length);
|
((std::istream*)png_get_io_ptr(pngPtr))->read((char*)data, length);
|
||||||
}
|
}
|
||||||
@@ -102,14 +106,33 @@ public:
|
|||||||
return std::string(mbstr);
|
return std::string(mbstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual int getScreenWidth() override { return 854; };
|
virtual int getScreenWidth() override {
|
||||||
virtual int getScreenHeight() override { return 480; };
|
#ifdef __EMSCRIPTEN__
|
||||||
|
int w, h;
|
||||||
|
emscripten_get_canvas_element_size("canvas", &w, &h);
|
||||||
|
|
||||||
|
return w;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 854;
|
||||||
|
};
|
||||||
|
|
||||||
|
virtual int getScreenHeight() override {
|
||||||
|
#ifdef __EMSCRIPTEN__
|
||||||
|
int w, h;
|
||||||
|
emscripten_get_canvas_element_size("canvas", &w, &h);
|
||||||
|
|
||||||
|
return h;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 480;
|
||||||
|
};
|
||||||
|
|
||||||
virtual float getPixelsPerMillimeter() override;
|
virtual float getPixelsPerMillimeter() override;
|
||||||
|
|
||||||
virtual bool supportsTouchscreen() override { return true; }
|
virtual bool supportsTouchscreen() override { return false; /* glfw supports only mouse and keyboard */ }
|
||||||
|
|
||||||
virtual void hideCursor(bool hide) {
|
virtual void hideCursor(bool hide) override {
|
||||||
int isHide = hide ? GLFW_CURSOR_NORMAL : GLFW_CURSOR_HIDDEN;
|
int isHide = hide ? GLFW_CURSOR_NORMAL : GLFW_CURSOR_HIDDEN;
|
||||||
glfwSetInputMode(window, GLFW_CURSOR, isHide);
|
glfwSetInputMode(window, GLFW_CURSOR, isHide);
|
||||||
}
|
}
|
||||||
@@ -120,6 +143,8 @@ public:
|
|||||||
#elif __linux__
|
#elif __linux__
|
||||||
std::string command = "xdg-open " + url;
|
std::string command = "xdg-open " + url;
|
||||||
system(command.c_str());
|
system(command.c_str());
|
||||||
|
#elif __EMSCRIPTEN__
|
||||||
|
emscripten_run_script(std::string("window.open('" + url + "', '_blank')").c_str());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,11 +52,10 @@ public:
|
|||||||
|
|
||||||
virtual StringVector getOptionStrings();
|
virtual StringVector getOptionStrings();
|
||||||
|
|
||||||
virtual bool isPowerVR() { return false; }
|
virtual bool isPowerVR();
|
||||||
virtual bool isSuperFast();
|
virtual bool isSuperFast();
|
||||||
virtual void showKeyboard();
|
virtual void showKeyboard();
|
||||||
virtual void hideKeyboard();
|
virtual void hideKeyboard();
|
||||||
virtual void isPowerVR();
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
std::string _basePath;
|
std::string _basePath;
|
||||||
|
|||||||
@@ -275,7 +275,9 @@ void AppPlatform_iOS::hideKeyboard() {
|
|||||||
[_viewController hideKeyboard];
|
[_viewController hideKeyboard];
|
||||||
super::hideKeyboard();
|
super::hideKeyboard();
|
||||||
}
|
}
|
||||||
void AppPlatform_iOS::isPowerVR() {
|
|
||||||
|
// this was originally void but i changed it to bool because void cant return values
|
||||||
|
bool AppPlatform_iOS::isPowerVR() {
|
||||||
const char* s = (const char*)glGetString(GL_RENDERER);
|
const char* s = (const char*)glGetString(GL_RENDERER);
|
||||||
if (!s) return false;
|
if (!s) return false;
|
||||||
return strstr(s, "SGX") != NULL;
|
return strstr(s, "SGX") != NULL;
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ void NinecraftApp::teardown()
|
|||||||
Recipes ::teardownRecipes();
|
Recipes ::teardownRecipes();
|
||||||
TileEntity::teardownTileEntities();
|
TileEntity::teardownTileEntities();
|
||||||
#endif
|
#endif
|
||||||
#ifdef WIN32
|
#if defined(WIN32) && !defined(STANDALONE_SERVER)
|
||||||
ItemRenderer::teardown_static();
|
ItemRenderer::teardown_static();
|
||||||
if (EntityTileRenderer::instance != NULL) {
|
if (EntityTileRenderer::instance != NULL) {
|
||||||
delete EntityTileRenderer::instance;
|
delete EntityTileRenderer::instance;
|
||||||
|
|||||||
@@ -4,12 +4,11 @@ namespace Common {
|
|||||||
|
|
||||||
std::string getGameVersionString(const std::string& versionSuffix /* = "" */)
|
std::string getGameVersionString(const std::string& versionSuffix /* = "" */)
|
||||||
{
|
{
|
||||||
std::string result = std::string("v0.6.1") + versionSuffix;
|
std::string result = std::string("v0.1.0 (forked from v0.6.1 alpha)") + versionSuffix;
|
||||||
// append 64-bit port marker only on Android 64‑bit targets
|
// append 64-bit port marker only on Android 64‑bit targets
|
||||||
#if defined(ANDROID) && (defined(__aarch64__) || defined(__x86_64__))
|
#if defined(ANDROID) && (defined(__aarch64__) || defined(__x86_64__))
|
||||||
result += " (64-bit port)";
|
result += " (64-bit)";
|
||||||
#endif
|
#endif
|
||||||
result += " alpha";
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
21
src/client/KeyMapping.h
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#ifndef NET_MINECRAFT_CLIENT__KeyMapping_H__
|
||||||
|
#define NET_MINECRAFT_CLIENT__KeyMapping_H__
|
||||||
|
|
||||||
|
//package net.minecraft.client;
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class KeyMapping
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
std::string name;
|
||||||
|
int key;
|
||||||
|
|
||||||
|
KeyMapping() {}
|
||||||
|
|
||||||
|
KeyMapping(const std::string& name_, int key_)
|
||||||
|
: name(name_),
|
||||||
|
key(key_)
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*NET_MINECRAFT_CLIENT__KeyMapping_H__*/
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
#define NET_MINECRAFT_CLIENT__Minecraft_H__
|
#define NET_MINECRAFT_CLIENT__Minecraft_H__
|
||||||
|
|
||||||
#include "Options.h"
|
#include "Options.h"
|
||||||
|
#include "commands/CommandManager.hpp"
|
||||||
#ifndef STANDALONE_SERVER
|
#ifndef STANDALONE_SERVER
|
||||||
#include "MouseHandler.h"
|
#include "MouseHandler.h"
|
||||||
#include "gui/Gui.h"
|
#include "gui/Gui.h"
|
||||||
@@ -87,6 +88,14 @@ public:
|
|||||||
|
|
||||||
void update();
|
void update();
|
||||||
|
|
||||||
|
std::string gatherStats1();
|
||||||
|
|
||||||
|
std::string gatherStats2();
|
||||||
|
|
||||||
|
std::string gatherStats4();
|
||||||
|
|
||||||
|
std::string gatherStats3();
|
||||||
|
|
||||||
void tick(int nTick, int maxTick);
|
void tick(int nTick, int maxTick);
|
||||||
void tickInput();
|
void tickInput();
|
||||||
|
|
||||||
@@ -109,6 +118,8 @@ public:
|
|||||||
|
|
||||||
bool isLevelGenerated();
|
bool isLevelGenerated();
|
||||||
|
|
||||||
|
void handleMouseDown(int button, bool down);
|
||||||
|
|
||||||
void audioEngineOn();
|
void audioEngineOn();
|
||||||
void audioEngineOff();
|
void audioEngineOff();
|
||||||
|
|
||||||
@@ -118,11 +129,17 @@ public:
|
|||||||
void optionUpdated(OptionId option, bool value);
|
void optionUpdated(OptionId option, bool value);
|
||||||
void optionUpdated(OptionId option, float value);
|
void optionUpdated(OptionId option, float value);
|
||||||
void optionUpdated(OptionId option, int value);
|
void optionUpdated(OptionId option, int value);
|
||||||
|
|
||||||
|
int getTicks() { return ticks; }
|
||||||
|
|
||||||
|
void addMessage(const std::string& msg);
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
bool _isSuperFast;
|
bool _isSuperFast;
|
||||||
bool isSuperFast() { return _isSuperFast; }
|
bool isSuperFast() { return _isSuperFast; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
CommandManager& commandManager() { return m_commandManager; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void _levelGenerated();
|
void _levelGenerated();
|
||||||
|
|
||||||
@@ -195,7 +212,8 @@ public:
|
|||||||
std::string externalCacheStoragePath;
|
std::string externalCacheStoragePath;
|
||||||
protected:
|
protected:
|
||||||
Timer timer;
|
Timer timer;
|
||||||
// @note @attn @warn: this is dangerous as fuck!
|
|
||||||
|
// @note @attn @warn: this is dangerous as fuck!
|
||||||
volatile bool isGeneratingLevel;
|
volatile bool isGeneratingLevel;
|
||||||
bool _hasSignaledGeneratingLevelFinished;
|
bool _hasSignaledGeneratingLevelFinished;
|
||||||
|
|
||||||
@@ -219,9 +237,12 @@ private:
|
|||||||
bool _isCreativeMode;
|
bool _isCreativeMode;
|
||||||
//int _respawnPlayerTicks;
|
//int _respawnPlayerTicks;
|
||||||
Player* _pendingRemovePlayer; // @attn @todo @fix: remove this shait and fix the respawn behaviour
|
Player* _pendingRemovePlayer; // @attn @todo @fix: remove this shait and fix the respawn behaviour
|
||||||
|
// shit* lmao
|
||||||
|
|
||||||
PerfRenderer* _perfRenderer;
|
PerfRenderer* _perfRenderer;
|
||||||
CommandServer* _commandServer;
|
CommandServer* _commandServer;
|
||||||
|
|
||||||
|
CommandManager m_commandManager;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /*NET_MINECRAFT_CLIENT__Minecraft_H__*/
|
#endif /*NET_MINECRAFT_CLIENT__Minecraft_H__*/
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
#include <SDL/SDL.h>
|
#include <SDL/SDL.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef PLATFORM_DESKTOP
|
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
|
||||||
#include <GLFW/glfw3.h>
|
#include <GLFW/glfw3.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ void MouseHandler::grab() {
|
|||||||
SDL_ShowCursor(0);
|
SDL_ShowCursor(0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef PLATFORM_DESKTOP
|
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
|
||||||
glfwSetInputMode(glfwGetCurrentContext(), GLFW_CURSOR, GLFW_CURSOR_DISABLED);
|
glfwSetInputMode(glfwGetCurrentContext(), GLFW_CURSOR, GLFW_CURSOR_DISABLED);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -46,7 +46,7 @@ void MouseHandler::release() {
|
|||||||
SDL_ShowCursor(1);
|
SDL_ShowCursor(1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef PLATFORM_DESKTOP
|
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
|
||||||
glfwSetInputMode(glfwGetCurrentContext(), GLFW_CURSOR, GLFW_CURSOR_NORMAL);
|
glfwSetInputMode(glfwGetCurrentContext(), GLFW_CURSOR, GLFW_CURSOR_NORMAL);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,11 +54,33 @@ OptionBool limitFramerate("limitFramerate", false);
|
|||||||
OptionBool vsync("vsync", true);
|
OptionBool vsync("vsync", true);
|
||||||
OptionBool fancyGraphics("fancyGraphics", true);
|
OptionBool fancyGraphics("fancyGraphics", true);
|
||||||
OptionBool viewBobbing("viewBobbing", true);
|
OptionBool viewBobbing("viewBobbing", true);
|
||||||
OptionBool ambientOcclusion("ao", false);
|
OptionBool ambientOcclusion("ao", true);
|
||||||
|
|
||||||
|
OptionBool useNormalLighting("normalLighting", true);
|
||||||
|
|
||||||
|
OptionBool beautifulSky("beautifulSky", true);
|
||||||
|
|
||||||
|
OptionBool useVignette("useVignette", true);
|
||||||
|
|
||||||
OptionBool useTouchscreen("useTouchscreen", true);
|
OptionBool useTouchscreen("useTouchscreen", true);
|
||||||
|
|
||||||
OptionBool serverVisible("servervisible", true);
|
OptionBool serverVisible("servervisible", true);
|
||||||
|
OptionBool foliageTint("foliagetint", false);
|
||||||
|
OptionInt fogType("fogType", 0, 0, 2);
|
||||||
|
|
||||||
|
OptionBool javaHud("javaHud", false);
|
||||||
|
|
||||||
|
OptionBool betaSky("betaSky", false);
|
||||||
|
OptionBool tintedSide("tintedSide", false);
|
||||||
|
OptionBool blockOutline("blockOutline", false);
|
||||||
|
|
||||||
|
OptionBool restoredAnims("restoredAnims", true);
|
||||||
|
|
||||||
|
OptionInt debugStyle("debugStyle", 0, 0, 1);
|
||||||
|
|
||||||
|
OptionInt menuStyle("menuStyle",0, 0, 2);
|
||||||
|
|
||||||
|
OptionBool windowScale("windowScale", false);
|
||||||
|
|
||||||
OptionInt keyForward("key.forward", Keyboard::KEY_W);
|
OptionInt keyForward("key.forward", Keyboard::KEY_W);
|
||||||
OptionInt keyLeft("key.left", Keyboard::KEY_A);
|
OptionInt keyLeft("key.left", Keyboard::KEY_A);
|
||||||
@@ -112,6 +134,7 @@ void Options::initTable() {
|
|||||||
|
|
||||||
|
|
||||||
m_options[OPTIONS_GUI_SCALE] = &guiScale;
|
m_options[OPTIONS_GUI_SCALE] = &guiScale;
|
||||||
|
m_options[OPTIONS_WINDOW_SCALE] = &windowScale;
|
||||||
|
|
||||||
m_options[OPTIONS_SKIN] = &skin;
|
m_options[OPTIONS_SKIN] = &skin;
|
||||||
m_options[OPTIONS_USERNAME] = &username;
|
m_options[OPTIONS_USERNAME] = &username;
|
||||||
@@ -136,8 +159,20 @@ void Options::initTable() {
|
|||||||
|
|
||||||
m_options[OPTIONS_USE_TOUCHSCREEN] = &useTouchscreen;
|
m_options[OPTIONS_USE_TOUCHSCREEN] = &useTouchscreen;
|
||||||
|
|
||||||
|
m_options[OPTIONS_BLOCK_OUTLINE] = &blockOutline;
|
||||||
|
|
||||||
|
m_options[OPTIONS_VIGNETTE] = &useVignette;
|
||||||
|
|
||||||
|
m_options[OPTIONS_BEAUTIFUL_SKY] = &beautifulSky;
|
||||||
|
|
||||||
|
m_options[OPTIONS_NORMAL_LIGHTING] = &useNormalLighting;
|
||||||
|
|
||||||
|
m_options[OPTIONS_RESTORED_ANIMS] = &restoredAnims;
|
||||||
|
|
||||||
m_options[OPTIONS_SERVER_VISIBLE] = &serverVisible;
|
m_options[OPTIONS_SERVER_VISIBLE] = &serverVisible;
|
||||||
|
|
||||||
|
m_options[OPTIONS_MENU_STYLE] = &menuStyle;
|
||||||
|
|
||||||
m_options[OPTIONS_KEY_FORWARD] = &keyForward;
|
m_options[OPTIONS_KEY_FORWARD] = &keyForward;
|
||||||
m_options[OPTIONS_KEY_LEFT] = &keyLeft;
|
m_options[OPTIONS_KEY_LEFT] = &keyLeft;
|
||||||
m_options[OPTIONS_KEY_BACK] = &keyBack;
|
m_options[OPTIONS_KEY_BACK] = &keyBack;
|
||||||
@@ -160,6 +195,15 @@ void Options::initTable() {
|
|||||||
m_options[OPTIONS_BAR_ON_TOP] = &barOnTop;
|
m_options[OPTIONS_BAR_ON_TOP] = &barOnTop;
|
||||||
m_options[OPTIONS_ALLOW_SPRINT] = &allowSprint;
|
m_options[OPTIONS_ALLOW_SPRINT] = &allowSprint;
|
||||||
m_options[OPTIONS_RPI_CURSOR] = &rpiCursor;
|
m_options[OPTIONS_RPI_CURSOR] = &rpiCursor;
|
||||||
|
m_options[OPTIONS_FOLIAGE_TINT] = &foliageTint;
|
||||||
|
// more options yay
|
||||||
|
m_options[OPTIONS_FOG_TYPE] = &fogType;
|
||||||
|
|
||||||
|
m_options[OPTIONS_DEBUG_STYLE] = &debugStyle;
|
||||||
|
|
||||||
|
m_options[OPTIONS_BETA_SKY] = &betaSky;
|
||||||
|
m_options[OPTIONS_TINTED_SIDE] = &tintedSide;
|
||||||
|
m_options[OPTIONS_JAVA_HUD] = &javaHud;
|
||||||
|
|
||||||
m_options[OPTIONS_AUTOJUMP] = &autoJump;
|
m_options[OPTIONS_AUTOJUMP] = &autoJump;
|
||||||
m_options[OPTIONS_LAST_IP] = &lastIp;
|
m_options[OPTIONS_LAST_IP] = &lastIp;
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ enum OptionId {
|
|||||||
OPTIONS_BAR_ON_TOP,
|
OPTIONS_BAR_ON_TOP,
|
||||||
OPTIONS_ALLOW_SPRINT,
|
OPTIONS_ALLOW_SPRINT,
|
||||||
OPTIONS_AUTOJUMP,
|
OPTIONS_AUTOJUMP,
|
||||||
|
OPTIONS_WINDOW_SCALE,
|
||||||
|
|
||||||
// Graphics
|
// Graphics
|
||||||
OPTIONS_RENDER_DEBUG,
|
OPTIONS_RENDER_DEBUG,
|
||||||
@@ -49,6 +50,8 @@ enum OptionId {
|
|||||||
OPTIONS_LIMIT_FRAMERATE,
|
OPTIONS_LIMIT_FRAMERATE,
|
||||||
OPTIONS_VSYNC,
|
OPTIONS_VSYNC,
|
||||||
OPTIONS_FANCY_GRAPHICS,
|
OPTIONS_FANCY_GRAPHICS,
|
||||||
|
OPTIONS_NORMAL_LIGHTING,
|
||||||
|
|
||||||
|
|
||||||
// Cheats / debug
|
// Cheats / debug
|
||||||
OPTIONS_FLY_SPEED,
|
OPTIONS_FLY_SPEED,
|
||||||
@@ -56,6 +59,7 @@ enum OptionId {
|
|||||||
OPTIONS_IS_FLYING,
|
OPTIONS_IS_FLYING,
|
||||||
|
|
||||||
// Control
|
// Control
|
||||||
|
OPTIONS_BLOCK_OUTLINE,
|
||||||
OPTIONS_USE_MOUSE_FOR_DIGGING,
|
OPTIONS_USE_MOUSE_FOR_DIGGING,
|
||||||
OPTIONS_IS_LEFT_HANDED,
|
OPTIONS_IS_LEFT_HANDED,
|
||||||
OPTIONS_IS_JOY_TOUCH_AREA,
|
OPTIONS_IS_JOY_TOUCH_AREA,
|
||||||
@@ -84,6 +88,17 @@ enum OptionId {
|
|||||||
OPTIONS_LAST_IP,
|
OPTIONS_LAST_IP,
|
||||||
|
|
||||||
OPTIONS_RPI_CURSOR,
|
OPTIONS_RPI_CURSOR,
|
||||||
|
OPTIONS_FOLIAGE_TINT,
|
||||||
|
OPTIONS_FOG_TYPE,
|
||||||
|
OPTIONS_JAVA_HUD,
|
||||||
|
OPTIONS_RESTORED_ANIMS,
|
||||||
|
OPTIONS_TINTED_SIDE,
|
||||||
|
OPTIONS_BETA_SKY,
|
||||||
|
OPTIONS_BEAUTIFUL_SKY,
|
||||||
|
OPTIONS_VIGNETTE,
|
||||||
|
OPTIONS_DEBUG_STYLE,
|
||||||
|
OPTIONS_COMPLETE_LIGHTING,
|
||||||
|
OPTIONS_MENU_STYLE,
|
||||||
// Should be last!
|
// Should be last!
|
||||||
OPTIONS_COUNT
|
OPTIONS_COUNT
|
||||||
};
|
};
|
||||||
@@ -94,6 +109,10 @@ typedef std::vector<std::string> StringVector;
|
|||||||
class Options
|
class Options
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
// deepfriedwaffles: for iOS, was getting compile errors saying: No member named 'sound' in 'Options' and No member named 'music' in 'Options' so I floated them here. 1.0f means full volume out of the box, but if everything is too loud, you might want to try adjusting this
|
||||||
|
float sound = 1.0f;
|
||||||
|
float music = 1.0f;
|
||||||
|
|
||||||
static bool debugGl;
|
static bool debugGl;
|
||||||
|
|
||||||
Options(Minecraft* minecraft, const std::string& workingDirectory = "")
|
Options(Minecraft* minecraft, const std::string& workingDirectory = "")
|
||||||
|
|||||||
@@ -4,10 +4,11 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <platform/log.h>
|
#include <platform/log.h>
|
||||||
|
|
||||||
#if !defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#include <sys/stat.h>
|
#include <direct.h>
|
||||||
#include <sys/types.h>
|
#else
|
||||||
#include <unistd.h>
|
#include <sys/stat.h>
|
||||||
|
#include <sys/types.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
OptionsFile::OptionsFile() {
|
OptionsFile::OptionsFile() {
|
||||||
@@ -15,6 +16,8 @@ OptionsFile::OptionsFile() {
|
|||||||
settingsPath = "./Documents/options.txt";
|
settingsPath = "./Documents/options.txt";
|
||||||
#elif defined(ANDROID)
|
#elif defined(ANDROID)
|
||||||
settingsPath = "options.txt";
|
settingsPath = "options.txt";
|
||||||
|
#elif defined(__EMSCRIPTEN__)
|
||||||
|
settingsPath = "/games/com.mojang/options.txt";
|
||||||
#else
|
#else
|
||||||
settingsPath = "options.txt";
|
settingsPath = "options.txt";
|
||||||
#endif
|
#endif
|
||||||
@@ -27,39 +30,44 @@ void OptionsFile::setOptionsPath(const std::string& path) {
|
|||||||
std::string OptionsFile::getOptionsPath() const {
|
std::string OptionsFile::getOptionsPath() const {
|
||||||
return settingsPath;
|
return settingsPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OptionsFile::save(const StringVector& settings) {
|
void OptionsFile::save(const StringVector& settings) {
|
||||||
FILE* pFile = fopen(settingsPath.c_str(), "w");
|
FILE* pFile = fopen(settingsPath.c_str(), "w");
|
||||||
if(pFile != NULL) {
|
|
||||||
for(StringVector::const_iterator it = settings.begin(); it != settings.end(); ++it) {
|
|
||||||
fprintf(pFile, "%s\n", it->c_str());
|
|
||||||
}
|
|
||||||
fclose(pFile);
|
|
||||||
} else {
|
|
||||||
if (errno != ENOENT)
|
|
||||||
LOGI("OptionsFile::save failed to open '%s' for writing: %s", settingsPath.c_str(), strerror(errno));
|
|
||||||
|
|
||||||
// Ensure parent directory exists for safekeeping if path contains directories
|
if (!pFile && errno == ENOENT) {
|
||||||
std::string dir = settingsPath;
|
std::string dir = settingsPath;
|
||||||
size_t fpos = dir.find_last_of("/\\");
|
size_t fpos = dir.find_last_of("/\\");
|
||||||
if (fpos != std::string::npos) {
|
if (fpos != std::string::npos) {
|
||||||
dir.resize(fpos);
|
dir.resize(fpos);
|
||||||
struct stat st;
|
|
||||||
if (stat(dir.c_str(), &st) != 0) {
|
std::string toCreate;
|
||||||
// attempt recursive mkdir
|
for (size_t i = 0; i <= dir.size(); ++i) {
|
||||||
std::string toCreate;
|
if (i == dir.size() || dir[i] == '/' || dir[i] == '\\') {
|
||||||
for (size_t i = 0; i <= dir.size(); ++i) {
|
if (!toCreate.empty()) {
|
||||||
if (i == dir.size() || dir[i] == '/' || dir[i] == '\\') {
|
#if defined(_WIN32)
|
||||||
if (!toCreate.empty()) {
|
_mkdir(toCreate.c_str());
|
||||||
mkdir(toCreate.c_str(), 0755);
|
#else
|
||||||
}
|
mkdir(toCreate.c_str(), 0755);
|
||||||
}
|
#endif
|
||||||
if (i < dir.size())
|
}
|
||||||
toCreate.push_back(dir[i]);
|
}
|
||||||
}
|
if (i < dir.size())
|
||||||
}
|
toCreate.push_back(dir[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pFile = fopen(settingsPath.c_str(), "w");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pFile) {
|
||||||
|
LOGI("OptionsFile::save failed: %s", strerror(errno));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const auto& s : settings) {
|
||||||
|
fprintf(pFile, "%s\n", s.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(pFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -54,16 +54,3 @@ void CreativeMode::initAbilities( Abilities& abilities ) {
|
|||||||
bool CreativeMode::isCreativeType() {
|
bool CreativeMode::isCreativeType() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreativeMode::releaseUsingItem( Player* player ) {
|
|
||||||
if(player->getCarriedItem() != NULL) {
|
|
||||||
int oldItemId = player->getCarriedItem()->id;
|
|
||||||
int oldAux = player->getAuxData();
|
|
||||||
super::releaseUsingItem(player);
|
|
||||||
if(player->getCarriedItem() != NULL && player->getCarriedItem()->id == oldItemId) {
|
|
||||||
player->getCarriedItem()->setAuxValue(oldAux);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
super::releaseUsingItem(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ public:
|
|||||||
|
|
||||||
void initAbilities(Abilities& abilities);
|
void initAbilities(Abilities& abilities);
|
||||||
|
|
||||||
void releaseUsingItem(Player* player);
|
|
||||||
private:
|
private:
|
||||||
void creativeDestroyBlock(int x, int y, int z, int face);
|
void creativeDestroyBlock(int x, int y, int z, int face);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -92,19 +92,6 @@ bool CreatorMode::isCreativeType() {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreatorMode::releaseUsingItem( Player* player ) {
|
|
||||||
if(player->getCarriedItem() != NULL) {
|
|
||||||
int oldItemId = player->getCarriedItem()->id;
|
|
||||||
int oldAux = player->getAuxData();
|
|
||||||
super::releaseUsingItem(player);
|
|
||||||
if(player->getCarriedItem() != NULL && player->getCarriedItem()->id == oldItemId) {
|
|
||||||
player->getCarriedItem()->setAuxValue(oldAux);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
super::releaseUsingItem(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ICreator* CreatorMode::getCreator() {
|
ICreator* CreatorMode::getCreator() {
|
||||||
return _creator;
|
return _creator;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -118,7 +118,6 @@ public:
|
|||||||
|
|
||||||
void initAbilities(Abilities& abilities);
|
void initAbilities(Abilities& abilities);
|
||||||
|
|
||||||
void releaseUsingItem(Player* player);
|
|
||||||
private:
|
private:
|
||||||
void CreatorDestroyBlock(int x, int y, int z, int face);
|
void CreatorDestroyBlock(int x, int y, int z, int face);
|
||||||
|
|
||||||
|
|||||||
@@ -89,9 +89,13 @@ bool GameMode::useItemOn(Player* player, Level* level, ItemInstance* item, int x
|
|||||||
float clickX = hit.x - x;
|
float clickX = hit.x - x;
|
||||||
float clickY = hit.y - y;
|
float clickY = hit.y - y;
|
||||||
float clickZ = hit.z - z;
|
float clickZ = hit.z - z;
|
||||||
item = player->inventory->getSelected();
|
if (level->isClientSide) {
|
||||||
if(level->isClientSide) {
|
LOGI("%f %f %f \n", player->x, player->y, player->z);
|
||||||
UseItemPacket packet(x, y, z, face, item, player->entityId, clickX, clickY, clickZ);
|
|
||||||
|
item = player->inventory->getSelected();
|
||||||
|
UseItemPacket packet(x, y, z, face, item, player->entityId, clickX, clickY, clickZ, player->x, player->y, player->z,
|
||||||
|
player->bb.x0, player->bb.y0, player->bb.z0, player->bb.x1, player->bb.y1, player->bb.z1);
|
||||||
|
|
||||||
minecraft->raknetInstance->send(packet);
|
minecraft->raknetInstance->send(packet);
|
||||||
}
|
}
|
||||||
int t = level->getTile(x, y, z);
|
int t = level->getTile(x, y, z);
|
||||||
@@ -100,7 +104,7 @@ bool GameMode::useItemOn(Player* player, Level* level, ItemInstance* item, int x
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (item == NULL) return false;
|
if (item == NULL) return false;
|
||||||
if(isCreativeType()) {
|
if (isCreativeType()) {
|
||||||
int aux = item->getAuxValue();
|
int aux = item->getAuxValue();
|
||||||
int count = item->count;
|
int count = item->count;
|
||||||
bool success = item->useOn(player, level, x, y, z, face, clickX, clickY, clickZ);
|
bool success = item->useOn(player, level, x, y, z, face, clickX, clickY, clickZ);
|
||||||
@@ -117,7 +121,8 @@ bool GameMode::useItem( Player* player, Level* level, ItemInstance* item ) {
|
|||||||
|
|
||||||
ItemInstance* itemInstance = item->use(level, player);
|
ItemInstance* itemInstance = item->use(level, player);
|
||||||
if(level->isClientSide) {
|
if(level->isClientSide) {
|
||||||
UseItemPacket packet(item, player->entityId, player->aimDirection);
|
UseItemPacket packet(item, player->entityId, player->aimDirection, player->x, player->y, player->z,
|
||||||
|
player->bb.x0, player->bb.y0, player->bb.z0, player->bb.x1, player->bb.y1, player->bb.z1);
|
||||||
minecraft->raknetInstance->send(packet);
|
minecraft->raknetInstance->send(packet);
|
||||||
}
|
}
|
||||||
if (itemInstance != item || (itemInstance != NULL && itemInstance->count != oldCount)) {
|
if (itemInstance != item || (itemInstance != NULL && itemInstance->count != oldCount)) {
|
||||||
@@ -149,7 +154,7 @@ void GameMode::initPlayer( Player* player ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void GameMode::releaseUsingItem(Player* player){
|
void GameMode::releaseUsingItem(Player* player){
|
||||||
if(minecraft->level->isClientSide) {
|
if (minecraft->level->isClientSide && player->isUsingItem()) {
|
||||||
PlayerActionPacket packet(PlayerActionPacket::RELEASE_USE_ITEM, 0, 0, 0, 0, player->entityId);
|
PlayerActionPacket packet(PlayerActionPacket::RELEASE_USE_ITEM, 0, 0, 0, 0, player->entityId);
|
||||||
minecraft->raknetInstance->send(packet);
|
minecraft->raknetInstance->send(packet);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ bool SurvivalMode::destroyBlock( int x, int y, int z, int face ) {
|
|||||||
minecraft->player->inventory->clearSlot(minecraft->player->inventory->selected);
|
minecraft->player->inventory->clearSlot(minecraft->player->inventory->selected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (changed && couldDestroy) {
|
if (changed && couldDestroy) {
|
||||||
ItemInstance instance(t, 1, data);
|
ItemInstance instance(t, 1, data);
|
||||||
Tile::tiles[t]->playerDestroy(minecraft->level, minecraft->player, x, y, z, data);
|
Tile::tiles[t]->playerDestroy(minecraft->level, minecraft->player, x, y, z, data);
|
||||||
|
|||||||
@@ -186,7 +186,7 @@ void Font::draw( const std::string& str, float x, float y, int color, bool darke
|
|||||||
glPushMatrix2();
|
glPushMatrix2();
|
||||||
glTranslatef2((GLfloat)x, (GLfloat)y, 0.0f);
|
glTranslatef2((GLfloat)x, (GLfloat)y, 0.0f);
|
||||||
for (unsigned int i = 0; i < str.length(); i++) {
|
for (unsigned int i = 0; i < str.length(); i++) {
|
||||||
while (str.length() > i + 1 && str[i] == '§') {
|
while (str.length() > i + 1 && str[i] == '\xa7') {
|
||||||
int cc = hex.find((char)tolower(str[i + 1]));
|
int cc = hex.find((char)tolower(str[i + 1]));
|
||||||
if (cc < 0 || cc > 15) cc = 15;
|
if (cc < 0 || cc > 15) cc = 15;
|
||||||
lists[index++] = listPos + 256 + cc + (darken ? 16 : 0);
|
lists[index++] = listPos + 256 + cc + (darken ? 16 : 0);
|
||||||
@@ -235,7 +235,7 @@ int Font::width( const std::string& str )
|
|||||||
int len = 0;
|
int len = 0;
|
||||||
|
|
||||||
for (unsigned int i = 0; i < str.length(); i++) {
|
for (unsigned int i = 0; i < str.length(); i++) {
|
||||||
if (str[i] == '§') {
|
if (str[i] == '\xa7') {
|
||||||
i++;
|
i++;
|
||||||
} else {
|
} else {
|
||||||
//int ch = SharedConstants.acceptableLetters.indexOf(str.charAt(i));
|
//int ch = SharedConstants.acceptableLetters.indexOf(str.charAt(i));
|
||||||
@@ -274,7 +274,7 @@ std::string Font::sanitize( const std::string& str )
|
|||||||
int j = 0;
|
int j = 0;
|
||||||
|
|
||||||
for (unsigned int i = 0; i < str.length(); i++) {
|
for (unsigned int i = 0; i < str.length(); i++) {
|
||||||
if (str[i] == '§') {
|
if (str[i] == '\xa7') {
|
||||||
i++;
|
i++;
|
||||||
//} else if (SharedConstants.acceptableLetters.indexOf(str.charAt(i)) >= 0) {
|
//} else if (SharedConstants.acceptableLetters.indexOf(str.charAt(i)) >= 0) {
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include "screens/ConsoleScreen.h"
|
#include "screens/ConsoleScreen.h"
|
||||||
#include "../Minecraft.h"
|
#include "../Minecraft.h"
|
||||||
#include "../player/LocalPlayer.h"
|
#include "../player/LocalPlayer.h"
|
||||||
|
#include "../renderer/Chunk.h"
|
||||||
#include "../renderer/Tesselator.h"
|
#include "../renderer/Tesselator.h"
|
||||||
#include "../renderer/TileRenderer.h"
|
#include "../renderer/TileRenderer.h"
|
||||||
#include "../renderer/LevelRenderer.h"
|
#include "../renderer/LevelRenderer.h"
|
||||||
@@ -36,7 +37,7 @@ const float Gui::DropTicks = 40.0f;
|
|||||||
//#include <android/log.h>
|
//#include <android/log.h>
|
||||||
|
|
||||||
Gui::Gui(Minecraft* minecraft)
|
Gui::Gui(Minecraft* minecraft)
|
||||||
: minecraft(minecraft),
|
: minecraft(minecraft),
|
||||||
tickCount(0),
|
tickCount(0),
|
||||||
progress(0),
|
progress(0),
|
||||||
overlayMessageTime(0),
|
overlayMessageTime(0),
|
||||||
@@ -51,7 +52,8 @@ Gui::Gui(Minecraft* minecraft)
|
|||||||
_currentDropTicks(-1),
|
_currentDropTicks(-1),
|
||||||
_currentDropSlot(-1),
|
_currentDropSlot(-1),
|
||||||
MAX_MESSAGE_WIDTH(240),
|
MAX_MESSAGE_WIDTH(240),
|
||||||
itemNameOverlayTime(2)
|
itemNameOverlayTime(2),
|
||||||
|
_openInventorySlot(minecraft->useTouchscreen())
|
||||||
{
|
{
|
||||||
glGenBuffers2(1, &_inventoryRc.vboId);
|
glGenBuffers2(1, &_inventoryRc.vboId);
|
||||||
glGenBuffers2(1, &rcFeedbackInner.vboId);
|
glGenBuffers2(1, &rcFeedbackInner.vboId);
|
||||||
@@ -75,11 +77,8 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) {
|
|||||||
//minecraft->gameRenderer->setupGuiScreen();
|
//minecraft->gameRenderer->setupGuiScreen();
|
||||||
Font* font = minecraft->font;
|
Font* font = minecraft->font;
|
||||||
|
|
||||||
#ifdef PLATFORM_DESKTOP
|
|
||||||
const bool isTouchInterface = false;
|
|
||||||
#else
|
|
||||||
const bool isTouchInterface = minecraft->useTouchscreen();
|
const bool isTouchInterface = minecraft->useTouchscreen();
|
||||||
#endif
|
|
||||||
const int screenWidth = (int)(minecraft->width * InvGuiScale);
|
const int screenWidth = (int)(minecraft->width * InvGuiScale);
|
||||||
const int screenHeight = (int)(minecraft->height * InvGuiScale);
|
const int screenHeight = (int)(minecraft->height * InvGuiScale);
|
||||||
blitOffset = -90;
|
blitOffset = -90;
|
||||||
@@ -88,9 +87,9 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) {
|
|||||||
glColor4f2(1, 1, 1, 1);
|
glColor4f2(1, 1, 1, 1);
|
||||||
|
|
||||||
// H: 4
|
// H: 4
|
||||||
// T: 7
|
// T: 7
|
||||||
// L: 6
|
// L: 6
|
||||||
// F: 3
|
// F: 3
|
||||||
int ySlot = screenHeight - 16 - 3;
|
int ySlot = screenHeight - 16 - 3;
|
||||||
|
|
||||||
if (!minecraft->options.getBooleanValue(OPTIONS_HIDEGUI)) {
|
if (!minecraft->options.getBooleanValue(OPTIONS_HIDEGUI)) {
|
||||||
@@ -105,6 +104,12 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// viginette has been fixed, was due to gl_blend not being enabled, my bad
|
||||||
|
if (minecraft->options.getBooleanValue(OPTIONS_FANCY_GRAPHICS) && minecraft->options.getBooleanValue(OPTIONS_VIGNETTE)){
|
||||||
|
renderVignette(this->minecraft->player->getBrightness(a), screenWidth, screenHeight);
|
||||||
|
}
|
||||||
|
// shredder end
|
||||||
|
|
||||||
if(minecraft->player->getSleepTimer() > 0) {
|
if(minecraft->player->getSleepTimer() > 0) {
|
||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
glDisable(GL_ALPHA_TEST);
|
glDisable(GL_ALPHA_TEST);
|
||||||
@@ -115,38 +120,41 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) {
|
|||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
}
|
}
|
||||||
if (!minecraft->options.getBooleanValue(OPTIONS_HIDEGUI)) {
|
if (!minecraft->options.getBooleanValue(OPTIONS_HIDEGUI)) {
|
||||||
renderToolBar(a, ySlot, screenWidth);
|
renderToolBar(a, ySlot, screenWidth);
|
||||||
|
|
||||||
glEnable(GL_BLEND);
|
// font->drawShadow("Minecraft - Pocket Edition ", 2, 2, 0xffffffff);
|
||||||
bool isChatting = (minecraft->screen && (dynamic_cast<ChatScreen*>(minecraft->screen) || dynamic_cast<ConsoleScreen*>(minecraft->screen)));
|
// font->drawShadow("This is a demo, not the finished product", 2, 10 + 2, 0xffffffff);
|
||||||
unsigned int max = 10;
|
|
||||||
if (isChatting) {
|
glEnable(GL_BLEND);
|
||||||
int lineHeight = 9;
|
bool isChatting = (minecraft->screen && (dynamic_cast<ChatScreen*>(minecraft->screen) || dynamic_cast<ConsoleScreen*>(minecraft->screen)));
|
||||||
max = (screenHeight - 48) / lineHeight;
|
unsigned int max = 10;
|
||||||
if (max < 1) max = 1;
|
if (isChatting) {
|
||||||
int maxScroll = (int)guiMessages.size() - (int)max;
|
int lineHeight = 9;
|
||||||
if (maxScroll < 0) maxScroll = 0;
|
max = (screenHeight - 48) / lineHeight;
|
||||||
if (chatScrollOffset > maxScroll) chatScrollOffset = maxScroll;
|
if (max < 1) max = 1;
|
||||||
} else {
|
int maxScroll = (int)guiMessages.size() - (int)max;
|
||||||
chatScrollOffset = 0;
|
if (maxScroll < 0) maxScroll = 0;
|
||||||
}
|
if (chatScrollOffset > maxScroll) chatScrollOffset = maxScroll;
|
||||||
renderChatMessages(screenHeight, max, isChatting, font);
|
} else {
|
||||||
|
chatScrollOffset = 0;
|
||||||
|
}
|
||||||
|
renderChatMessages(screenHeight, max, isChatting, font);
|
||||||
#if !defined(RPI)
|
#if !defined(RPI)
|
||||||
renderOnSelectItemNameText(screenWidth, font, ySlot);
|
renderOnSelectItemNameText(screenWidth, font, ySlot);
|
||||||
#endif
|
#endif
|
||||||
#if defined(RPI)
|
#if defined(RPI)
|
||||||
renderDebugInfo();
|
renderDebugInfo();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (Keyboard::isKeyDown(Keyboard::KEY_TAB)) {
|
if (Keyboard::isKeyDown(Keyboard::KEY_TAB)) {
|
||||||
renderPlayerList(font, screenWidth, screenHeight);
|
renderPlayerList(font, screenWidth, screenHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (minecraft->options.getBooleanValue(OPTIONS_RENDER_DEBUG))
|
||||||
|
renderDebugInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (minecraft->options.getBooleanValue(OPTIONS_RENDER_DEBUG))
|
glDisable(GL_BLEND);
|
||||||
renderDebugInfo();
|
|
||||||
}
|
|
||||||
|
|
||||||
glDisable(GL_BLEND);
|
|
||||||
glEnable2(GL_ALPHA_TEST);
|
glEnable2(GL_ALPHA_TEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -185,7 +193,7 @@ void Gui::getSlotPos(int slot, int& posX, int& posY) {
|
|||||||
int screenWidth = (int)(minecraft->width * InvGuiScale);
|
int screenWidth = (int)(minecraft->width * InvGuiScale);
|
||||||
int screenHeight = (int)(minecraft->height * InvGuiScale);
|
int screenHeight = (int)(minecraft->height * InvGuiScale);
|
||||||
posX = screenWidth / 2 - getNumSlots() * 10 + slot * 20,
|
posX = screenWidth / 2 - getNumSlots() * 10 + slot * 20,
|
||||||
posY = screenHeight - 22;
|
posY = screenHeight - 22;
|
||||||
}
|
}
|
||||||
|
|
||||||
RectangleArea Gui::getRectangleArea(int extendSide) {
|
RectangleArea Gui::getRectangleArea(int extendSide) {
|
||||||
@@ -206,74 +214,68 @@ void Gui::handleClick(int button, int x, int y) {
|
|||||||
if (button != MouseAction::ACTION_LEFT) return;
|
if (button != MouseAction::ACTION_LEFT) return;
|
||||||
|
|
||||||
int slot = getSlotIdAt(x, y);
|
int slot = getSlotIdAt(x, y);
|
||||||
if (slot != -1)
|
if (slot != -1) {
|
||||||
{
|
if (_openInventorySlot && slot == (getNumSlots()-1)) {
|
||||||
#ifndef PLATFORM_DESKTOP
|
|
||||||
if (slot == (getNumSlots()-1))
|
|
||||||
{
|
|
||||||
minecraft->screenChooser.setScreen(SCREEN_BLOCKSELECTION);
|
minecraft->screenChooser.setScreen(SCREEN_BLOCKSELECTION);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
minecraft->player->inventory->selectSlot(slot);
|
minecraft->player->inventory->selectSlot(slot);
|
||||||
itemNameOverlayTime = 0;
|
itemNameOverlayTime = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Gui::handleKeyPressed(int key)
|
void Gui::handleKeyPressed(int key)
|
||||||
{
|
{
|
||||||
bool isChatting = (minecraft->screen && (dynamic_cast<ChatScreen*>(minecraft->screen) || dynamic_cast<ConsoleScreen*>(minecraft->screen)));
|
bool isChatting = (minecraft->screen && (dynamic_cast<ChatScreen*>(minecraft->screen) || dynamic_cast<ConsoleScreen*>(minecraft->screen)));
|
||||||
if (isChatting) {
|
if (isChatting) {
|
||||||
// Allow scrolling the chat history with the mouse/keyboard when chat is open
|
// Allow scrolling the chat history with the mouse/keyboard when chat is open
|
||||||
if (key == 38) { // VK_UP
|
if (key == 38) { // VK_UP
|
||||||
scrollChat(1);
|
scrollChat(1);
|
||||||
return;
|
return;
|
||||||
} else if (key == 40) { // VK_DOWN
|
} else if (key == 40) { // VK_DOWN
|
||||||
scrollChat(-1);
|
scrollChat(-1);
|
||||||
return;
|
return;
|
||||||
} else if (key == 33) { // VK_PRIOR (Page Up)
|
} else if (key == 33) { // VK_PRIOR (Page Up)
|
||||||
// Scroll by a page
|
// Scroll by a page
|
||||||
int screenHeight = (int)(minecraft->height * InvGuiScale);
|
int screenHeight = (int)(minecraft->height * InvGuiScale);
|
||||||
int maxVisible = (screenHeight - 48) / 9;
|
int maxVisible = (screenHeight - 48) / 9;
|
||||||
scrollChat(maxVisible);
|
scrollChat(maxVisible);
|
||||||
return;
|
return;
|
||||||
} else if (key == 34) { // VK_NEXT (Page Down)
|
} else if (key == 34) { // VK_NEXT (Page Down)
|
||||||
int screenHeight = (int)(minecraft->height * InvGuiScale);
|
int screenHeight = (int)(minecraft->height * InvGuiScale);
|
||||||
int maxVisible = (screenHeight - 48) / 9;
|
int maxVisible = (screenHeight - 48) / 9;
|
||||||
scrollChat(-maxVisible);
|
scrollChat(-maxVisible);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (key == Keyboard::KEY_F1) {
|
if (key == Keyboard::KEY_F1) {
|
||||||
minecraft->options.toggle(OPTIONS_HIDEGUI);
|
minecraft->options.toggle(OPTIONS_HIDEGUI);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key == 99)
|
if (key == 99)
|
||||||
{
|
|
||||||
if (minecraft->player->inventory->selected > 0)
|
|
||||||
{
|
{
|
||||||
minecraft->player->inventory->selected--;
|
if (minecraft->player->inventory->selected > 0)
|
||||||
|
{
|
||||||
|
minecraft->player->inventory->selected--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (key == 4)
|
||||||
|
{
|
||||||
|
if (minecraft->player->inventory->selected < (getNumSlots() - 2))
|
||||||
|
{
|
||||||
|
minecraft->player->inventory->selected++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (key == 100)
|
||||||
|
{
|
||||||
|
minecraft->screenChooser.setScreen(SCREEN_BLOCKSELECTION);
|
||||||
|
}
|
||||||
|
else if (key == minecraft->options.getIntValue(OPTIONS_KEY_DROP))
|
||||||
|
{
|
||||||
|
minecraft->player->inventory->dropSlot(minecraft->player->inventory->selected, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (key == 4)
|
|
||||||
{
|
|
||||||
if (minecraft->player->inventory->selected < (getNumSlots() - 2))
|
|
||||||
{
|
|
||||||
minecraft->player->inventory->selected++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (key == 100)
|
|
||||||
{
|
|
||||||
minecraft->screenChooser.setScreen(SCREEN_BLOCKSELECTION);
|
|
||||||
}
|
|
||||||
else if (key == minecraft->options.getIntValue(OPTIONS_KEY_DROP))
|
|
||||||
{
|
|
||||||
minecraft->player->inventory->dropSlot(minecraft->player->inventory->selected, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Gui::scrollChat(int delta) {
|
void Gui::scrollChat(int delta) {
|
||||||
if (delta == 0)
|
if (delta == 0)
|
||||||
@@ -298,11 +300,11 @@ void Gui::tick() {
|
|||||||
if(itemNameOverlayTime < 2)
|
if(itemNameOverlayTime < 2)
|
||||||
itemNameOverlayTime += 1.0f / SharedConstants::TicksPerSecond;
|
itemNameOverlayTime += 1.0f / SharedConstants::TicksPerSecond;
|
||||||
for (unsigned int i = 0; i < guiMessages.size(); i++) {
|
for (unsigned int i = 0; i < guiMessages.size(); i++) {
|
||||||
guiMessages.at(i).ticks++;
|
guiMessages.at(i).ticks++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!minecraft->isCreativeMode())
|
if (!minecraft->isCreativeMode())
|
||||||
tickItemDrop();
|
tickItemDrop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Gui::addMessage(const std::string& _string) {
|
void Gui::addMessage(const std::string& _string) {
|
||||||
@@ -349,9 +351,11 @@ void Gui::setNowPlaying(const std::string& string) {
|
|||||||
void Gui::displayClientMessage(const std::string& messageId) {
|
void Gui::displayClientMessage(const std::string& messageId) {
|
||||||
//Language language = Language.getInstance();
|
//Language language = Language.getInstance();
|
||||||
//std::string languageString = language.getElement(messageId);
|
//std::string languageString = language.getElement(messageId);
|
||||||
addMessage(std::string("Client message: ") + messageId);
|
addMessage(messageId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @todo - shredder: Function seems to be completely fine and ported over from java beta, but renders opaque??? need to investigate
|
||||||
void Gui::renderVignette(float br, int w, int h) {
|
void Gui::renderVignette(float br, int w, int h) {
|
||||||
br = 1 - br;
|
br = 1 - br;
|
||||||
if (br < 0) br = 0;
|
if (br < 0) br = 0;
|
||||||
@@ -360,9 +364,13 @@ void Gui::renderVignette(float br, int w, int h) {
|
|||||||
|
|
||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
glDepthMask(false);
|
glDepthMask(false);
|
||||||
|
glEnable(GL_BLEND);
|
||||||
glBlendFunc2(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
|
glBlendFunc2(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
|
||||||
glColor4f2(tbr, tbr, tbr, 1);
|
glColor4f2(tbr, tbr, tbr, 1);
|
||||||
|
|
||||||
minecraft->textures->loadAndBindTexture("misc/vignette.png");
|
minecraft->textures->loadAndBindTexture("misc/vignette.png");
|
||||||
|
glTexParameteri2(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
glTexParameteri2(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
|
|
||||||
Tesselator& t = Tesselator::instance;
|
Tesselator& t = Tesselator::instance;
|
||||||
t.begin();
|
t.begin();
|
||||||
@@ -373,6 +381,7 @@ void Gui::renderVignette(float br, int w, int h) {
|
|||||||
t.draw();
|
t.draw();
|
||||||
glDepthMask(true);
|
glDepthMask(true);
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
glDisable(GL_BLEND);
|
||||||
glColor4f2(1, 1, 1, 1);
|
glColor4f2(1, 1, 1, 1);
|
||||||
glBlendFunc2(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc2(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
}
|
}
|
||||||
@@ -415,7 +424,7 @@ void Gui::inventoryUpdated() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Gui::onGraphicsReset() {
|
void Gui::onGraphicsReset() {
|
||||||
inventoryUpdated();
|
inventoryUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Gui::texturesLoaded( Textures* textures ) {
|
void Gui::texturesLoaded( Textures* textures ) {
|
||||||
@@ -537,11 +546,7 @@ void Gui::tickItemDrop()
|
|||||||
static bool isCurrentlyActive = false;
|
static bool isCurrentlyActive = false;
|
||||||
isCurrentlyActive = false;
|
isCurrentlyActive = false;
|
||||||
|
|
||||||
int slots = getNumSlots();
|
int slots = getNumSlots() - _openInventorySlot;
|
||||||
|
|
||||||
#ifndef PLATFORM_DESKTOP
|
|
||||||
slots--;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (Mouse::isButtonDown(MouseAction::ACTION_LEFT)) {
|
if (Mouse::isButtonDown(MouseAction::ACTION_LEFT)) {
|
||||||
int slot = getSlotIdAt(Mouse::getX(), Mouse::getY());
|
int slot = getSlotIdAt(Mouse::getX(), Mouse::getY());
|
||||||
@@ -597,12 +602,13 @@ void Gui::renderProgressIndicator( const bool isTouchInterface, const int screen
|
|||||||
bool bowEquipped = currentItem != NULL ? currentItem->getItem() == Item::bow : false;
|
bool bowEquipped = currentItem != NULL ? currentItem->getItem() == Item::bow : false;
|
||||||
bool itemInUse = currentItem != NULL ? currentItem->getItem() == minecraft->player->getUseItem()->getItem() : false;
|
bool itemInUse = currentItem != NULL ? currentItem->getItem() == minecraft->player->getUseItem()->getItem() : false;
|
||||||
if ((!isTouchInterface || minecraft->options.getBooleanValue(OPTIONS_IS_JOY_TOUCH_AREA)
|
if ((!isTouchInterface || minecraft->options.getBooleanValue(OPTIONS_IS_JOY_TOUCH_AREA)
|
||||||
|| (bowEquipped && itemInUse)) && !minecraft->options.getBooleanValue(OPTIONS_HIDEGUI)) {
|
|| (bowEquipped && itemInUse)) && !minecraft->options.getBooleanValue(OPTIONS_HIDEGUI))
|
||||||
minecraft->textures->loadAndBindTexture("gui/icons.png");
|
{
|
||||||
glEnable(GL_BLEND);
|
minecraft->textures->loadAndBindTexture("gui/icons.png");
|
||||||
glBlendFunc2(GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_COLOR);
|
glEnable(GL_BLEND);
|
||||||
blit(screenWidth/2 - 8, screenHeight/2 - 8, 0, 0, 16, 16);
|
glBlendFunc2(GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_COLOR);
|
||||||
glDisable(GL_BLEND);
|
blit(screenWidth/2 - 8, screenHeight/2 - 8, 0, 0, 16, 16);
|
||||||
|
glDisable(GL_BLEND);
|
||||||
} else if(!bowEquipped) {
|
} else if(!bowEquipped) {
|
||||||
const float tprogress = minecraft->gameMode->destroyProgress;
|
const float tprogress = minecraft->gameMode->destroyProgress;
|
||||||
const float alpha = Mth::clamp(minecraft->inputHolder->alpha, 0.0f, 1.0f);
|
const float alpha = Mth::clamp(minecraft->inputHolder->alpha, 0.0f, 1.0f);
|
||||||
@@ -621,7 +627,7 @@ void Gui::renderProgressIndicator( const bool isTouchInterface, const int screen
|
|||||||
const float x = InvGuiScale * minecraft->inputHolder->mousex;
|
const float x = InvGuiScale * minecraft->inputHolder->mousex;
|
||||||
const float y = InvGuiScale * minecraft->inputHolder->mousey;
|
const float y = InvGuiScale * minecraft->inputHolder->mousey;
|
||||||
glTranslatef2(x, y, 0);
|
glTranslatef2(x, y, 0);
|
||||||
drawArrayVT(rcFeedbackOuter.vboId, rcFeedbackOuter.vertexCount, 24);
|
drawArrayVT(rcFeedbackOuter.vboId, rcFeedbackOuter.vertexCount, 36);
|
||||||
glTranslatef2(-x, -y, 0);
|
glTranslatef2(-x, -y, 0);
|
||||||
|
|
||||||
glEnable2(GL_TEXTURE_2D);
|
glEnable2(GL_TEXTURE_2D);
|
||||||
@@ -642,12 +648,12 @@ void Gui::renderProgressIndicator( const bool isTouchInterface, const int screen
|
|||||||
const float y = InvGuiScale * minecraft->inputHolder->mousey;
|
const float y = InvGuiScale * minecraft->inputHolder->mousey;
|
||||||
glPushMatrix2();
|
glPushMatrix2();
|
||||||
glTranslatef2(x, y, 0);
|
glTranslatef2(x, y, 0);
|
||||||
drawArrayVT(rcFeedbackOuter.vboId, rcFeedbackOuter.vertexCount, 24);
|
drawArrayVT(rcFeedbackOuter.vboId, rcFeedbackOuter.vertexCount, 36);
|
||||||
glScalef2(0.5f + progress, 0.5f + progress, 1);
|
glScalef2(0.5f + progress, 0.5f + progress, 1);
|
||||||
//glDisable2(GL_CULL_FACE);
|
//glDisable2(GL_CULL_FACE);
|
||||||
glColor4f2(1, 1, 1, 1);
|
glColor4f2(1, 1, 1, 1);
|
||||||
glBlendFunc2(GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_COLOR);
|
glBlendFunc2(GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_COLOR);
|
||||||
drawArrayVT(rcFeedbackInner.vboId, rcFeedbackInner.vertexCount, 24, GL_TRIANGLE_FAN);
|
drawArrayVT(rcFeedbackInner.vboId, rcFeedbackInner.vertexCount, 36, GL_TRIANGLE_FAN);
|
||||||
glPopMatrix2();
|
glPopMatrix2();
|
||||||
|
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
@@ -677,10 +683,10 @@ void Gui::renderHearts() {
|
|||||||
int ip2 = i + i + 1;
|
int ip2 = i + i + 1;
|
||||||
|
|
||||||
if (armor > 0) {
|
if (armor > 0) {
|
||||||
int xo = xx + 80 + i * 8 + 4;
|
int xo = xx + 80 + i * 8 + 4;
|
||||||
if (ip2 < armor) blit(xo, yo, 16 + 2 * 9, 9 * 1, 9, 9);
|
if (ip2 < armor) blit(xo, yo, 16 + 2 * 9, 9 * 1, 9, 9);
|
||||||
else if (ip2 == armor) blit(xo, yo, 16 + 4 * 9, 9 * 1, 9, 9);
|
else if (ip2 == armor) blit(xo, yo, 16 + 4 * 9, 9 * 1, 9, 9);
|
||||||
else if (ip2 > armor) blit(xo, yo, 16 + 0 * 9, 9 * 1, 9, 9);
|
else if (ip2 > armor) blit(xo, yo, 16 + 0 * 9, 9 * 1, 9, 9);
|
||||||
}
|
}
|
||||||
|
|
||||||
int bg = 0;
|
int bg = 0;
|
||||||
@@ -726,13 +732,20 @@ void Gui::onLevelGenerated() {
|
|||||||
|
|
||||||
void Gui::renderDebugInfo() {
|
void Gui::renderDebugInfo() {
|
||||||
// FPS counter (updates once per second)
|
// FPS counter (updates once per second)
|
||||||
static float fps = 0.0f;
|
static int fps = 0;
|
||||||
static float fpsLastTime = 0.0f;
|
static int fpsLastTime = 0;
|
||||||
static int fpsFrames = 0;
|
static int fpsFrames = 0;
|
||||||
|
static int displayChunkUpdates = 0;
|
||||||
float now = getTimeS();
|
float now = getTimeS();
|
||||||
fpsFrames++;
|
fpsFrames++;
|
||||||
if (now - fpsLastTime >= 1.0f) {
|
if (now - fpsLastTime >= 1) {
|
||||||
fps = fpsFrames / (now - fpsLastTime);
|
fps = fpsFrames / (now - fpsLastTime);
|
||||||
|
|
||||||
|
displayChunkUpdates = Chunk::updates;
|
||||||
|
|
||||||
|
// 3. RESET the actual game counter to 0 for the next second
|
||||||
|
Chunk::updates = 0;
|
||||||
|
|
||||||
fpsFrames = 0;
|
fpsFrames = 0;
|
||||||
fpsLastTime = now;
|
fpsLastTime = now;
|
||||||
}
|
}
|
||||||
@@ -742,7 +755,6 @@ void Gui::renderDebugInfo() {
|
|||||||
|
|
||||||
// Position
|
// Position
|
||||||
float px = p->x, py = p->y - p->heightOffset, pz = p->z;
|
float px = p->x, py = p->y - p->heightOffset, pz = p->z;
|
||||||
posTranslator.to(px, py, pz);
|
|
||||||
int bx = (int)floorf(px), by = (int)floorf(py), bz = (int)floorf(pz);
|
int bx = (int)floorf(px), by = (int)floorf(py), bz = (int)floorf(pz);
|
||||||
int cx = bx >> 4, cz = bz >> 4;
|
int cx = bx >> 4, cz = bz >> 4;
|
||||||
|
|
||||||
@@ -769,7 +781,70 @@ void Gui::renderDebugInfo() {
|
|||||||
long day = worldTime / Level::TICKS_PER_DAY;
|
long day = worldTime / Level::TICKS_PER_DAY;
|
||||||
long seed = lvl ? lvl->getSeed() : 0;
|
long seed = lvl ? lvl->getSeed() : 0;
|
||||||
|
|
||||||
|
// Block looking at
|
||||||
|
std::string CurrentTile = "Air";
|
||||||
|
if (minecraft->hitResult.type == TILE) {
|
||||||
|
int LookingX = minecraft->hitResult.x;
|
||||||
|
int LookingY = minecraft->hitResult.y;
|
||||||
|
int LookingZ = minecraft->hitResult.z;
|
||||||
|
|
||||||
|
int tileID = minecraft->level->getTile(LookingX, LookingY, LookingZ);
|
||||||
|
if (tileID > 0 && tileID < 256){
|
||||||
|
Tile* LookingTile = Tile::tiles[tileID];
|
||||||
|
if (LookingTile != NULL) {
|
||||||
|
CurrentTile = LookingTile->getDescriptionId();
|
||||||
|
} else {
|
||||||
|
CurrentTile = "Unknown Tile";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
CurrentTile = "Air";
|
||||||
|
}
|
||||||
|
}
|
||||||
// Build lines (NULL entry = blank gap)
|
// Build lines (NULL entry = blank gap)
|
||||||
|
Font* font = minecraft->font;
|
||||||
|
|
||||||
|
// @todo - add our own debug screen as an option alongside the restored java one, why does renderdebug have to be so jank - shredder
|
||||||
|
|
||||||
|
// if java beta's restored debug menu is enabled
|
||||||
|
if (minecraft->options.getIntValue(OPTIONS_DEBUG_STYLE) == 0){
|
||||||
|
|
||||||
|
char buf[128];
|
||||||
|
|
||||||
|
sprintf(buf, "Minecraft - Pocket Edition (%d fps, %d chunk updates)", (int)fps, displayChunkUpdates);
|
||||||
|
font->drawShadow(buf, 2, 2, 0xffffff);
|
||||||
|
|
||||||
|
font->drawShadow(minecraft->gatherStats1(), 2, 12, 0xFFFFFF);
|
||||||
|
font->drawShadow(minecraft->gatherStats2(), 2, 22, 0xFFFFFF);
|
||||||
|
font->drawShadow(minecraft->gatherStats3(), 2, 32, 0xFFFFFF);
|
||||||
|
font->drawShadow(minecraft->gatherStats4(), 2, 42, 0xFFFFFF);
|
||||||
|
|
||||||
|
sprintf(buf, "x: %.8f", minecraft->player->x);
|
||||||
|
drawString(font, buf, 2, 64, 0xE0E0E0);
|
||||||
|
|
||||||
|
sprintf(buf, "y: %.8f", minecraft->player->y);
|
||||||
|
drawString(font, buf, 2, 72, 0xE0E0E0);
|
||||||
|
|
||||||
|
sprintf(buf, "z: %.8f", minecraft->player->z);
|
||||||
|
drawString(font, buf, 2, 80, 0xE0E0E0);
|
||||||
|
|
||||||
|
sprintf(buf, "f: %d",Mth::floor(minecraft->player->yRot * 4.0f / 360.0f + 0.5) & 0x3);
|
||||||
|
drawString(font, buf, 2, 88, 0xE0E0E0);
|
||||||
|
|
||||||
|
sprintf(buf, "Seed: %.ld", lvl->getSeed());
|
||||||
|
drawString(font, buf, 2, 104, 0xE0E0E0);
|
||||||
|
|
||||||
|
sprintf(buf, "Dimension: %d (%s)", lvl->dimension->id, lvl->dimension->getDimension().c_str());
|
||||||
|
drawString(font, buf, 2, 114, 0xE0E0E0);
|
||||||
|
|
||||||
|
sprintf(buf, "Biome: %s", biomeName);
|
||||||
|
drawString(font, buf, 2, 124, 0xE0E0E0);
|
||||||
|
|
||||||
|
sprintf(buf, "Looking at: %s", CurrentTile.c_str());
|
||||||
|
drawString(font, buf, 2, 134, 0xE0E0E0);
|
||||||
|
}
|
||||||
|
else if (minecraft->options.getIntValue(OPTIONS_DEBUG_STYLE) == 1){
|
||||||
|
|
||||||
|
|
||||||
static char ln[8][96];
|
static char ln[8][96];
|
||||||
sprintf(ln[0], "Minecraft PE 0.6.1 alpha (mcpe64)");
|
sprintf(ln[0], "Minecraft PE 0.6.1 alpha (mcpe64)");
|
||||||
sprintf(ln[1], "%.1f fps", fps);
|
sprintf(ln[1], "%.1f fps", fps);
|
||||||
@@ -784,7 +859,7 @@ void Gui::renderDebugInfo() {
|
|||||||
const float LH = (float)Font::DefaultLineHeight; // 10 font-pixels
|
const float LH = (float)Font::DefaultLineHeight; // 10 font-pixels
|
||||||
const float MGN = 2.0f; // left/top margin in font-pixels
|
const float MGN = 2.0f; // left/top margin in font-pixels
|
||||||
const float PAD = 2.0f; // horizontal padding for background
|
const float PAD = 2.0f; // horizontal padding for background
|
||||||
Font* font = minecraft->font;
|
// Font* font = minecraft->font;
|
||||||
|
|
||||||
// 1) Draw semi-transparent background boxes behind each line
|
// 1) Draw semi-transparent background boxes behind each line
|
||||||
for (int i = 0; i < N; i++) {
|
for (int i = 0; i < N; i++) {
|
||||||
@@ -807,6 +882,7 @@ void Gui::renderDebugInfo() {
|
|||||||
font->draw(ln[i], MGN, y, col);
|
font->draw(ln[i], MGN, y, col);
|
||||||
}
|
}
|
||||||
t.endOverrideAndDraw();
|
t.endOverrideAndDraw();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Gui::renderPlayerList(Font* font, int screenWidth, int screenHeight) {
|
void Gui::renderPlayerList(Font* font, int screenWidth, int screenHeight) {
|
||||||
@@ -922,64 +998,64 @@ void Gui::renderOnSelectItemNameText( const int screenWidth, Font* font, int ySl
|
|||||||
|
|
||||||
// helper structure used by drawColoredString
|
// helper structure used by drawColoredString
|
||||||
struct ColorSegment {
|
struct ColorSegment {
|
||||||
std::string text;
|
std::string text;
|
||||||
uint32_t color;
|
uint32_t color;
|
||||||
};
|
};
|
||||||
|
|
||||||
// parse [tag] and [/tag] markers; tags may contain a color name (gold, green, etc.)
|
// parse [tag] and [/tag] markers; tags may contain a color name (gold, green, etc.)
|
||||||
static void parseColorTags(const std::string& in, std::vector<ColorSegment>& out) {
|
static void parseColorTags(const std::string& in, std::vector<ColorSegment>& out) {
|
||||||
uint32_t curColor = 0xffffff;
|
uint32_t curColor = 0xffffff;
|
||||||
size_t pos = 0;
|
size_t pos = 0;
|
||||||
while (pos < in.size()) {
|
while (pos < in.size()) {
|
||||||
size_t open = in.find('[', pos);
|
size_t open = in.find('[', pos);
|
||||||
if (open == std::string::npos) {
|
if (open == std::string::npos) {
|
||||||
out.push_back({in.substr(pos), curColor});
|
out.push_back({in.substr(pos), curColor});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (open > pos) {
|
if (open > pos) {
|
||||||
out.push_back({in.substr(pos, open - pos), curColor});
|
out.push_back({in.substr(pos, open - pos), curColor});
|
||||||
}
|
}
|
||||||
size_t close = in.find(']', open);
|
size_t close = in.find(']', open);
|
||||||
if (close == std::string::npos) {
|
if (close == std::string::npos) {
|
||||||
out.push_back({in.substr(open), curColor});
|
out.push_back({in.substr(open), curColor});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
std::string tag = in.substr(open + 1, close - open - 1);
|
std::string tag = in.substr(open + 1, close - open - 1);
|
||||||
if (!tag.empty() && tag[0] == '/') {
|
if (!tag.empty() && tag[0] == '/') {
|
||||||
curColor = 0xffffff;
|
curColor = 0xffffff;
|
||||||
} else {
|
} else {
|
||||||
std::string lower;
|
std::string lower;
|
||||||
lower.resize(tag.size());
|
lower.resize(tag.size());
|
||||||
std::transform(tag.begin(), tag.end(), lower.begin(), ::tolower);
|
std::transform(tag.begin(), tag.end(), lower.begin(), ::tolower);
|
||||||
if (lower.find("gold") != std::string::npos) curColor = 0xffd700;
|
if (lower.find("gold") != std::string::npos) curColor = 0xffd700;
|
||||||
else if (lower.find("green") != std::string::npos) curColor = 0x00ff00;
|
else if (lower.find("green") != std::string::npos) curColor = 0x00ff00;
|
||||||
else if (lower.find("yellow") != std::string::npos) curColor = 0xffff00;
|
else if (lower.find("yellow") != std::string::npos) curColor = 0xffff00;
|
||||||
else if (lower.find("red") != std::string::npos) curColor = 0xff0000;
|
else if (lower.find("red") != std::string::npos) curColor = 0xff0000;
|
||||||
else if (lower.find("blue") != std::string::npos) curColor = 0x0000ff;
|
else if (lower.find("blue") != std::string::npos) curColor = 0x0000ff;
|
||||||
}
|
}
|
||||||
pos = close + 1;
|
pos = close + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Gui::drawColoredString(Font* font, const std::string& text, float x, float y, int alpha) {
|
void Gui::drawColoredString(Font* font, const std::string& text, float x, float y, int alpha) {
|
||||||
std::vector<ColorSegment> segs;
|
std::vector<ColorSegment> segs;
|
||||||
parseColorTags(text, segs);
|
parseColorTags(text, segs);
|
||||||
float cx = x;
|
float cx = x;
|
||||||
for (auto &s : segs) {
|
for (auto &s : segs) {
|
||||||
int color = s.color + (alpha << 24);
|
int color = s.color + (alpha << 24);
|
||||||
font->drawShadow(s.text, cx, y, color);
|
font->drawShadow(s.text, cx, y, color);
|
||||||
cx += font->width(s.text);
|
cx += font->width(s.text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float Gui::getColoredWidth(Font* font, const std::string& text) {
|
float Gui::getColoredWidth(Font* font, const std::string& text) {
|
||||||
std::vector<ColorSegment> segs;
|
std::vector<ColorSegment> segs;
|
||||||
parseColorTags(text, segs);
|
parseColorTags(text, segs);
|
||||||
float w = 0;
|
float w = 0;
|
||||||
for (auto &s : segs) {
|
for (auto &s : segs) {
|
||||||
w += font->width(s.text);
|
w += font->width(s.text);
|
||||||
}
|
}
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Gui::renderChatMessages( const int screenHeight, unsigned int max, bool isChatting, Font* font ) {
|
void Gui::renderChatMessages( const int screenHeight, unsigned int max, bool isChatting, Font* font ) {
|
||||||
@@ -1023,20 +1099,23 @@ void Gui::renderChatMessages( const int screenHeight, unsigned int max, bool isC
|
|||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
|
|
||||||
// special-case join/leave announcements
|
// special-case join/leave announcements
|
||||||
int baseColor = 0xffffff;
|
int baseColor = 0xffffff;
|
||||||
if (msg.find(" joined the game") != std::string::npos ||
|
if (msg.find(" joined the game") != std::string::npos ||
|
||||||
msg.find(" left the game") != std::string::npos) {
|
msg.find(" left the game") != std::string::npos) {
|
||||||
baseColor = 0xffff00; // yellow
|
baseColor = 0xffff00; // yellow
|
||||||
}
|
}
|
||||||
// replace previous logic; allow full colour tags now
|
// replace previous logic; allow full colour tags now
|
||||||
Gui::drawColoredString(font, msg, x, y, alpha);
|
Gui::drawColoredString(font, msg, x, y, alpha);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Gui::renderToolBar( float a, int ySlot, const int screenWidth ) {
|
void Gui::renderToolBar( float a, int ySlot, const int screenWidth ) {
|
||||||
glColor4f2(1, 1, 1, .5);
|
glColor4f2(1, 1, 1, 1);
|
||||||
|
glEnable(GL_BLEND);
|
||||||
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
|
||||||
minecraft->textures->loadAndBindTexture("gui/gui.png");
|
minecraft->textures->loadAndBindTexture("gui/gui.png");
|
||||||
|
|
||||||
Inventory* inventory = minecraft->player->inventory;
|
Inventory* inventory = minecraft->player->inventory;
|
||||||
@@ -1083,13 +1162,7 @@ void Gui::renderToolBar( float a, int ySlot, const int screenWidth ) {
|
|||||||
|
|
||||||
float x = baseItemX;
|
float x = baseItemX;
|
||||||
|
|
||||||
int slots = getNumSlots();
|
int slots = getNumSlots() - _openInventorySlot;
|
||||||
|
|
||||||
// TODO: if using touchscreen
|
|
||||||
|
|
||||||
#ifndef PLATFORM_DESKTOP
|
|
||||||
slots--;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (int i = 0; i < slots; i++) {
|
for (int i = 0; i < slots; i++) {
|
||||||
renderSlot(i, (int)x, ySlot, a);
|
renderSlot(i, (int)x, ySlot, a);
|
||||||
@@ -1097,9 +1170,10 @@ void Gui::renderToolBar( float a, int ySlot, const int screenWidth ) {
|
|||||||
}
|
}
|
||||||
_inventoryNeedsUpdate = false;
|
_inventoryNeedsUpdate = false;
|
||||||
|
|
||||||
#ifndef PLATFORM_DESKTOP
|
|
||||||
blit(screenWidth / 2 + 10 * getNumSlots() - 20 + 4, ySlot + 6, 242, 252, 14, 4, 14, 4);
|
if (_openInventorySlot) {
|
||||||
#endif
|
blit(screenWidth / 2 + 10 * getNumSlots() - 20 + 4, ySlot + 6, 242, 252, 14, 4, 14, 4);
|
||||||
|
}
|
||||||
|
|
||||||
minecraft->textures->loadAndBindTexture("gui/gui_blocks.png");
|
minecraft->textures->loadAndBindTexture("gui/gui_blocks.png");
|
||||||
t.endOverrideAndDraw();
|
t.endOverrideAndDraw();
|
||||||
@@ -1122,22 +1196,41 @@ void Gui::renderToolBar( float a, int ySlot, const int screenWidth ) {
|
|||||||
|
|
||||||
// Draw count
|
// Draw count
|
||||||
//Tesselator& t = Tesselator::instance;
|
//Tesselator& t = Tesselator::instance;
|
||||||
glPushMatrix2();
|
|
||||||
glScalef2(InvGuiScale + InvGuiScale, InvGuiScale + InvGuiScale, 1);
|
|
||||||
const float k = 0.5f * GuiScale;
|
const float k = 0.5f * GuiScale;
|
||||||
|
if (minecraft->options.getBooleanValue(OPTIONS_JAVA_HUD)) // if true enables the java beta item count size and color and calls the java items decorations
|
||||||
t.beginOverride();
|
{
|
||||||
if (minecraft->gameMode->isSurvivalType()) {
|
t.beginOverride();
|
||||||
x = baseItemX;
|
if (minecraft->gameMode->isSurvivalType()) {
|
||||||
for (int i = 0; i < slots; i++) {
|
x = baseItemX;
|
||||||
ItemInstance* item = minecraft->player->inventory->getItem(i);
|
for (int i = 0; i < slots; i++) {
|
||||||
if (item && item->count >= 0)
|
ItemInstance* item = minecraft->player->inventory->getItem(i);
|
||||||
renderSlotText(item, k*x, k*ySlot + 1, true, true);
|
if (item && item->count >= 0)
|
||||||
x += 20;
|
ItemRenderer::renderGuiItemDecorations(minecraft->font, minecraft->textures, minecraft->player->inventory->getItem(i), x, (float)ySlot);
|
||||||
|
x += 20;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
minecraft->textures->loadAndBindTexture("font/default8.png");
|
||||||
|
t.endOverrideAndDraw();
|
||||||
|
}
|
||||||
|
else { // otherwise uses the normal pocket edition one
|
||||||
|
glPushMatrix2();
|
||||||
|
glScalef2(InvGuiScale + InvGuiScale, InvGuiScale + InvGuiScale, 1);
|
||||||
|
t.beginOverride();
|
||||||
|
if (minecraft->gameMode->isSurvivalType()) {
|
||||||
|
x = baseItemX;
|
||||||
|
for (int i = 0; i < slots; i++) {
|
||||||
|
ItemInstance* item = minecraft->player->inventory->getItem(i);
|
||||||
|
if (item && item->count >= 0)
|
||||||
|
renderSlotText(item, k*x, k*ySlot, true, true);
|
||||||
|
x += 20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
minecraft->textures->loadAndBindTexture("font/default8.png");
|
||||||
|
t.endOverrideAndDraw();
|
||||||
|
|
||||||
|
glPopMatrix2();
|
||||||
}
|
}
|
||||||
minecraft->textures->loadAndBindTexture("font/default8.png");
|
|
||||||
t.endOverrideAndDraw();
|
|
||||||
|
|
||||||
glPopMatrix2();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,6 +127,8 @@ private:
|
|||||||
static const float DropTicks;
|
static const float DropTicks;
|
||||||
float _currentDropTicks;
|
float _currentDropTicks;
|
||||||
int _currentDropSlot;
|
int _currentDropSlot;
|
||||||
|
|
||||||
|
bool _openInventorySlot;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /*NET_MINECRAFT_CLIENT_GUI__Gui_H__*/
|
#endif /*NET_MINECRAFT_CLIENT_GUI__Gui_H__*/
|
||||||
|
|||||||
@@ -177,9 +177,11 @@ void Screen::keyPressed( int eventKey )
|
|||||||
textbox->keyPressed(minecraft, eventKey);
|
textbox->keyPressed(minecraft, eventKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef TABBING
|
||||||
if (minecraft->useTouchscreen())
|
if (minecraft->useTouchscreen())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
// "Tabbing" the buttons (walking with keys)
|
// "Tabbing" the buttons (walking with keys)
|
||||||
const int tabButtonCount = tabButtons.size();
|
const int tabButtonCount = tabButtons.size();
|
||||||
if (!tabButtonCount)
|
if (!tabButtonCount)
|
||||||
@@ -199,6 +201,7 @@ void Screen::keyPressed( int eventKey )
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateTabButtonSelection();
|
updateTabButtonSelection();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Screen::charPressed(char inputChar) {
|
void Screen::charPressed(char inputChar) {
|
||||||
@@ -209,11 +212,13 @@ void Screen::charPressed(char inputChar) {
|
|||||||
|
|
||||||
void Screen::updateTabButtonSelection()
|
void Screen::updateTabButtonSelection()
|
||||||
{
|
{
|
||||||
|
#ifdef TABBING
|
||||||
if (minecraft->useTouchscreen())
|
if (minecraft->useTouchscreen())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (unsigned int i = 0; i < tabButtons.size(); ++i)
|
for (unsigned int i = 0; i < tabButtons.size(); ++i)
|
||||||
tabButtons[i]->selected = (i == tabButtonIndex);
|
tabButtons[i]->selected = (i == tabButtonIndex);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Screen::mouseClicked( int x, int y, int buttonNum )
|
void Screen::mouseClicked( int x, int y, int buttonNum )
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ void Button::renderBg( Minecraft* minecraft, int xm, int ym )
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Button::hovered(Minecraft* minecraft, int xm , int ym) {
|
bool Button::hovered(Minecraft* minecraft, int xm , int ym) {
|
||||||
return minecraft->useTouchscreen()? (_currentlyDown && isInside(xm, ym)) : false;
|
return minecraft->useTouchscreen()? (_currentlyDown && isInside(xm, ym)) : isInside(xm, ym);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Button::isInside( int xm, int ym ) {
|
bool Button::isInside( int xm, int ym ) {
|
||||||
@@ -143,7 +143,8 @@ TButton::TButton( int id, int x, int y, int w, int h, const std::string& msg )
|
|||||||
|
|
||||||
void TButton::renderBg( Minecraft* minecraft, int xm, int ym )
|
void TButton::renderBg( Minecraft* minecraft, int xm, int ym )
|
||||||
{
|
{
|
||||||
bool hovered = active && (minecraft->useTouchscreen()? (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : false);
|
bool hovered = active && (minecraft->useTouchscreen()? (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : isInside(xm, ym));
|
||||||
|
// bool hovered = active && (_currentlyDown && isInside(xm, ym));
|
||||||
|
|
||||||
minecraft->textures->loadAndBindTexture("gui/touchgui.png");
|
minecraft->textures->loadAndBindTexture("gui/touchgui.png");
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,17 @@ void GuiElementContainer::removeChild( GuiElement* element ) {
|
|||||||
children.erase(it);
|
children.erase(it);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GuiElementContainer::containsPointInChildren(int x, int y) const {
|
||||||
|
for (auto it = children.begin(); it != children.end(); ++it) {
|
||||||
|
GuiElement* child = *it;
|
||||||
|
if (child == NULL || !child->visible) continue;
|
||||||
|
if (child->pointInside(x, y)) return true;
|
||||||
|
const GuiElementContainer* container = dynamic_cast<const GuiElementContainer*>(child);
|
||||||
|
if (container != NULL && container->containsPointInChildren(x, y)) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void GuiElementContainer::tick( Minecraft* minecraft ) {
|
void GuiElementContainer::tick( Minecraft* minecraft ) {
|
||||||
for(std::vector<GuiElement*>::iterator it = children.begin(); it != children.end(); ++it) {
|
for(std::vector<GuiElement*>::iterator it = children.begin(); it != children.end(); ++it) {
|
||||||
(*it)->tick(minecraft);
|
(*it)->tick(minecraft);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ public:
|
|||||||
virtual void setupPositions();
|
virtual void setupPositions();
|
||||||
virtual void addChild(GuiElement* element);
|
virtual void addChild(GuiElement* element);
|
||||||
virtual void removeChild(GuiElement* element);
|
virtual void removeChild(GuiElement* element);
|
||||||
|
bool containsPointInChildren(int x, int y) const;
|
||||||
|
|
||||||
virtual void tick( Minecraft* minecraft );
|
virtual void tick( Minecraft* minecraft );
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ void ImageButton::render(Minecraft* minecraft, int xm, int ym) {
|
|||||||
//minecraft->textures->loadAndBindTexture("gui/gui.png");
|
//minecraft->textures->loadAndBindTexture("gui/gui.png");
|
||||||
glColor4f2(1, 1, 1, 1);
|
glColor4f2(1, 1, 1, 1);
|
||||||
|
|
||||||
bool hovered = active && (minecraft->useTouchscreen()? (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : false);
|
bool hovered = active && (minecraft->useTouchscreen()? (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : isInside(xm, ym));
|
||||||
bool IsSecondImage = isSecondImage(hovered);
|
bool IsSecondImage = isSecondImage(hovered);
|
||||||
|
|
||||||
//printf("ButtonId: %d - Hovered? %d (cause: %d, %d, %d, %d, <> %d, %d)\n", id, hovered, x, y, x+w, y+h, xm, ym);
|
//printf("ButtonId: %d - Hovered? %d (cause: %d, %d, %d, %d, <> %d, %d)\n", id, hovered, x, y, x+w, y+h, xm, ym);
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ void LargeImageButton::render(Minecraft* minecraft, int xm, int ym) {
|
|||||||
|
|
||||||
//minecraft->textures->loadAndBindTexture("gui/gui.png");
|
//minecraft->textures->loadAndBindTexture("gui/gui.png");
|
||||||
glColor4f2(1, 1, 1, 1);
|
glColor4f2(1, 1, 1, 1);
|
||||||
bool hovered = active && (minecraft->useTouchscreen()? (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : false);
|
bool hovered = active && (minecraft->useTouchscreen()? (_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : isInside(xm, ym));
|
||||||
|
|
||||||
//printf("ButtonId: %d - Hovered? %d (cause: %d, %d, %d, %d, <> %d, %d)\n", id, hovered, x, y, x+w, y+h, xm, ym);
|
//printf("ButtonId: %d - Hovered? %d (cause: %d, %d, %d, %d, <> %d, %d)\n", id, hovered, x, y, x+w, y+h, xm, ym);
|
||||||
//int yImage = getYImage(hovered || selected);
|
//int yImage = getYImage(hovered || selected);
|
||||||
|
|||||||
@@ -6,15 +6,26 @@
|
|||||||
#include "../../../locale/I18n.h"
|
#include "../../../locale/I18n.h"
|
||||||
#include "TextOption.h"
|
#include "TextOption.h"
|
||||||
#include "KeyOption.h"
|
#include "KeyOption.h"
|
||||||
|
#include <algorithm>
|
||||||
|
#include "../Gui.h"
|
||||||
|
#include "../Screen.h"
|
||||||
|
#include "../../../platform/input/Mouse.h"
|
||||||
|
#include "../../../util/Mth.h"
|
||||||
|
|
||||||
OptionsGroup::OptionsGroup( std::string labelID ) {
|
OptionsGroup::OptionsGroup( std::string labelID ) {
|
||||||
label = I18n::get(labelID);
|
label = I18n::get(labelID);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OptionsGroup::setupPositions() {
|
void OptionsGroup::setupPositions() {
|
||||||
|
const int labelHeight = 18;
|
||||||
|
const int bottomPadding = 36;
|
||||||
|
const float requestedScroll = scrollOffsetY;
|
||||||
|
const int scrollOffset = (int)requestedScroll;
|
||||||
|
int curY = y + labelHeight - scrollOffset;
|
||||||
|
const int contentStartY = y + labelHeight;
|
||||||
|
|
||||||
// First we write the header and then we add the items
|
// First we write the header and then we add the items
|
||||||
int curY = y + 18;
|
for(auto it = children.begin(); it != children.end(); ++it) {
|
||||||
for(std::vector<GuiElement*>::iterator it = children.begin(); it != children.end(); ++it) {
|
|
||||||
(*it)->width = width - 5;
|
(*it)->width = width - 5;
|
||||||
|
|
||||||
(*it)->y = curY;
|
(*it)->y = curY;
|
||||||
@@ -22,16 +33,109 @@ void OptionsGroup::setupPositions() {
|
|||||||
(*it)->setupPositions();
|
(*it)->setupPositions();
|
||||||
curY += (*it)->height + 3;
|
curY += (*it)->height + 3;
|
||||||
}
|
}
|
||||||
height = curY;
|
curY += bottomPadding;
|
||||||
|
contentHeight = std::max(0, curY - contentStartY + scrollOffset);
|
||||||
|
maxScrollOffsetY = std::max(0, contentHeight - (height - labelHeight));
|
||||||
|
const float clampedScroll = Mth::clamp(requestedScroll, 0.0f, maxScrollOffsetY);
|
||||||
|
if (clampedScroll != requestedScroll) {
|
||||||
|
scrollOffsetY = clampedScroll;
|
||||||
|
setupPositions();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OptionsGroup::render( Minecraft* minecraft, int xm, int ym ) {
|
void OptionsGroup::render( Minecraft* minecraft, int xm, int ym ) {
|
||||||
float padX = 10.0f;
|
float padX = 10.0f;
|
||||||
float padY = 5.0f;
|
float padY = 5.0f;
|
||||||
|
const int labelHeight = 18;
|
||||||
|
|
||||||
minecraft->font->draw(label, (float)x + padX, (float)y + padY, 0xffffffff, false);
|
minecraft->font->draw(label, (float)x + padX, (float)y + padY, 0xffffffff, false);
|
||||||
|
|
||||||
|
glEnable2(GL_SCISSOR_TEST);
|
||||||
|
glScissor(
|
||||||
|
Gui::GuiScale * x,
|
||||||
|
minecraft->height - Gui::GuiScale * (y + height),
|
||||||
|
Gui::GuiScale * width,
|
||||||
|
Gui::GuiScale * (height - labelHeight)
|
||||||
|
);
|
||||||
|
|
||||||
super::render(minecraft, xm, ym);
|
super::render(minecraft, xm, ym);
|
||||||
|
glDisable2(GL_SCISSOR_TEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OptionsGroup::tick(Minecraft* minecraft) {
|
||||||
|
int xm = Mouse::getX();
|
||||||
|
int ym = Mouse::getY();
|
||||||
|
if (minecraft->screen != NULL) {
|
||||||
|
minecraft->screen->toGUICoordinate(xm, ym);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool leftDown = Mouse::isButtonDown(MouseAction::ACTION_LEFT);
|
||||||
|
|
||||||
|
if (trackingScrollGesture && leftDown) {
|
||||||
|
int dy = ym - lastDragY;
|
||||||
|
int dx = xm - dragStartX;
|
||||||
|
if (!scrollingGesture) {
|
||||||
|
int totalDx = xm - dragStartX;
|
||||||
|
int totalDy = ym - dragStartY;
|
||||||
|
if (std::abs(totalDx) >= ScrollStartThreshold || std::abs(totalDy) >= ScrollStartThreshold) {
|
||||||
|
if (std::abs(totalDy) >= std::abs(totalDx)) {
|
||||||
|
scrollingGesture = true;
|
||||||
|
} else if (!touchDispatched) {
|
||||||
|
super::mouseClicked(minecraft, touchStartX, touchStartY, MouseAction::ACTION_LEFT);
|
||||||
|
touchDispatched = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (scrollingGesture && dy != 0) {
|
||||||
|
scrollByPixels((float)dy);
|
||||||
|
}
|
||||||
|
lastDragY = ym;
|
||||||
|
}
|
||||||
|
super::tick(minecraft);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OptionsGroup::mouseClicked(Minecraft* minecraft, int x, int y, int buttonNum) {
|
||||||
|
trackingScrollGesture = false;
|
||||||
|
scrollingGesture = false;
|
||||||
|
touchDispatched = false;
|
||||||
|
|
||||||
|
if (buttonNum == MouseAction::ACTION_LEFT && pointInside(x, y)) {
|
||||||
|
trackingScrollGesture = true;
|
||||||
|
dragStartX = x;
|
||||||
|
dragStartY = y;
|
||||||
|
lastDragY = y;
|
||||||
|
touchStartX = x;
|
||||||
|
touchStartY = y;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
super::mouseClicked(minecraft, x, y, buttonNum);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OptionsGroup::mouseReleased(Minecraft* minecraft, int x, int y, int buttonNum) {
|
||||||
|
bool wasScrolling = scrollingGesture;
|
||||||
|
bool wasTracking = trackingScrollGesture;
|
||||||
|
trackingScrollGesture = false;
|
||||||
|
scrollingGesture = false;
|
||||||
|
if (buttonNum == MouseAction::ACTION_LEFT && wasTracking && !touchDispatched && pointInside(touchStartX, touchStartY)) {
|
||||||
|
super::mouseClicked(minecraft, touchStartX, touchStartY, buttonNum);
|
||||||
|
touchDispatched = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!wasScrolling) {
|
||||||
|
super::mouseReleased(minecraft, x, y, buttonNum);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OptionsGroup::scrollByPixels(float deltaY) {
|
||||||
|
if (deltaY == 0.0f || maxScrollOffsetY <= 0.0f) return;
|
||||||
|
|
||||||
|
scrollOffsetY = Mth::clamp(scrollOffsetY - deltaY, 0.0f, maxScrollOffsetY);
|
||||||
|
setupPositions();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OptionsGroup::isScrollingGestureActive() const {
|
||||||
|
return trackingScrollGesture || scrollingGesture;
|
||||||
}
|
}
|
||||||
|
|
||||||
OptionsGroup& OptionsGroup::addOptionItem(OptionId optId, Minecraft* minecraft ) {
|
OptionsGroup& OptionsGroup::addOptionItem(OptionId optId, Minecraft* minecraft ) {
|
||||||
@@ -65,7 +169,7 @@ void OptionsGroup::createToggle(OptionId optId, Minecraft* minecraft ) {
|
|||||||
|
|
||||||
std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId());
|
std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId());
|
||||||
|
|
||||||
OptionsItem* item = new OptionsItem(itemLabel, element);
|
OptionsItem* item = new OptionsItem(optId, itemLabel, element);
|
||||||
|
|
||||||
addChild(item);
|
addChild(item);
|
||||||
setupPositions();
|
setupPositions();
|
||||||
@@ -77,7 +181,7 @@ void OptionsGroup::createProgressSlider(OptionId optId, Minecraft* minecraft ) {
|
|||||||
element->height = 20;
|
element->height = 20;
|
||||||
|
|
||||||
std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId());
|
std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId());
|
||||||
OptionsItem* item = new OptionsItem(itemLabel, element);
|
OptionsItem* item = new OptionsItem(optId, itemLabel, element);
|
||||||
addChild(item);
|
addChild(item);
|
||||||
setupPositions();
|
setupPositions();
|
||||||
}
|
}
|
||||||
@@ -87,7 +191,7 @@ void OptionsGroup::createStepSlider(OptionId optId, Minecraft* minecraft ) {
|
|||||||
element->width = 100;
|
element->width = 100;
|
||||||
element->height = 20;
|
element->height = 20;
|
||||||
std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId());
|
std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId());
|
||||||
OptionsItem* item = new OptionsItem(itemLabel, element);
|
OptionsItem* item = new OptionsItem(optId, itemLabel, element);
|
||||||
addChild(item);
|
addChild(item);
|
||||||
setupPositions();
|
setupPositions();
|
||||||
}
|
}
|
||||||
@@ -98,7 +202,7 @@ void OptionsGroup::createTextbox(OptionId optId, Minecraft* minecraft) {
|
|||||||
element->height = 20;
|
element->height = 20;
|
||||||
|
|
||||||
std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId());
|
std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId());
|
||||||
OptionsItem* item = new OptionsItem(itemLabel, element);
|
OptionsItem* item = new OptionsItem(optId, itemLabel, element);
|
||||||
addChild(item);
|
addChild(item);
|
||||||
setupPositions();
|
setupPositions();
|
||||||
}
|
}
|
||||||
@@ -109,7 +213,7 @@ void OptionsGroup::createKey(OptionId optId, Minecraft* minecraft) {
|
|||||||
element->height = 20;
|
element->height = 20;
|
||||||
|
|
||||||
std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId());
|
std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId());
|
||||||
OptionsItem* item = new OptionsItem(itemLabel, element);
|
OptionsItem* item = new OptionsItem(optId, itemLabel, element);
|
||||||
addChild(item);
|
addChild(item);
|
||||||
setupPositions();
|
setupPositions();
|
||||||
}
|
}
|
||||||
@@ -17,7 +17,12 @@ public:
|
|||||||
OptionsGroup(std::string labelID);
|
OptionsGroup(std::string labelID);
|
||||||
virtual void setupPositions();
|
virtual void setupPositions();
|
||||||
virtual void render(Minecraft* minecraft, int xm, int ym);
|
virtual void render(Minecraft* minecraft, int xm, int ym);
|
||||||
|
virtual void tick(Minecraft* minecraft);
|
||||||
|
virtual void mouseClicked(Minecraft* minecraft, int x, int y, int buttonNum);
|
||||||
|
virtual void mouseReleased(Minecraft* minecraft, int x, int y, int buttonNum);
|
||||||
OptionsGroup& addOptionItem(OptionId optId, Minecraft* minecraft);
|
OptionsGroup& addOptionItem(OptionId optId, Minecraft* minecraft);
|
||||||
|
void scrollByPixels(float deltaY);
|
||||||
|
bool isScrollingGestureActive() const;
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
void createToggle(OptionId optId, Minecraft* minecraft);
|
void createToggle(OptionId optId, Minecraft* minecraft);
|
||||||
@@ -27,6 +32,18 @@ protected:
|
|||||||
void createKey(OptionId optId, Minecraft* minecraft);
|
void createKey(OptionId optId, Minecraft* minecraft);
|
||||||
|
|
||||||
std::string label;
|
std::string label;
|
||||||
|
int contentHeight = 0;
|
||||||
|
float scrollOffsetY = 0.f;
|
||||||
|
float maxScrollOffsetY = 0.f;
|
||||||
|
bool trackingScrollGesture = false;
|
||||||
|
bool scrollingGesture = false;
|
||||||
|
bool touchDispatched = false;
|
||||||
|
int dragStartX = 0;
|
||||||
|
int dragStartY = 0;
|
||||||
|
int lastDragY = 0;
|
||||||
|
int touchStartX = 0;
|
||||||
|
int touchStartY = 0;
|
||||||
|
static const int ScrollStartThreshold = 5;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /*NET_MINECRAFT_CLIENT_GUI_COMPONENTS__OptionsGroup_H__*/
|
#endif /*NET_MINECRAFT_CLIENT_GUI_COMPONENTS__OptionsGroup_H__*/
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
#include "OptionsItem.h"
|
#include "OptionsItem.h"
|
||||||
#include "../../Minecraft.h"
|
#include "../../Minecraft.h"
|
||||||
|
#include "../../../locale/I18n.h"
|
||||||
#include "../../../util/Mth.h"
|
#include "../../../util/Mth.h"
|
||||||
OptionsItem::OptionsItem( std::string label, GuiElement* element )
|
OptionsItem::OptionsItem( OptionId optionId, std::string label, GuiElement* element )
|
||||||
: GuiElementContainer(false, true, 0, 0, 24, 12),
|
: GuiElementContainer(false, true, 0, 0, 24, 12),
|
||||||
label(label) {
|
m_optionId(optionId),
|
||||||
|
m_label(label) {
|
||||||
addChild(element);
|
addChild(element);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -19,6 +21,64 @@ void OptionsItem::setupPositions() {
|
|||||||
|
|
||||||
void OptionsItem::render( Minecraft* minecraft, int xm, int ym ) {
|
void OptionsItem::render( Minecraft* minecraft, int xm, int ym ) {
|
||||||
int yOffset = (height - 8) / 2;
|
int yOffset = (height - 8) / 2;
|
||||||
minecraft->font->draw(label, (float)x, (float)y + yOffset, 0x909090, false);
|
std::string text = m_label;
|
||||||
|
if (m_optionId == OPTIONS_GUI_SCALE) {
|
||||||
|
int value = minecraft->options.getIntValue(OPTIONS_GUI_SCALE);
|
||||||
|
std::string scaleText;
|
||||||
|
switch (value) {
|
||||||
|
case 0: scaleText = I18n::get("options.guiScale.auto"); break;
|
||||||
|
case 1: scaleText = I18n::get("options.guiScale.small"); break;
|
||||||
|
case 2: scaleText = I18n::get("options.guiScale.medium"); break;
|
||||||
|
case 3: scaleText = I18n::get("options.guiScale.large"); break;
|
||||||
|
case 4: scaleText = I18n::get("options.guiScale.larger"); break;
|
||||||
|
case 5: scaleText = I18n::get("options.guiScale.largest"); break;
|
||||||
|
default: scaleText = I18n::get("options.guiScale.auto"); break;
|
||||||
|
}
|
||||||
|
text += ": " + scaleText;
|
||||||
|
}
|
||||||
|
if (m_optionId == OPTIONS_FOG_TYPE) {
|
||||||
|
int value = minecraft->options.getIntValue(OPTIONS_FOG_TYPE);
|
||||||
|
std::string scaleText;
|
||||||
|
switch (value) {
|
||||||
|
case 0: scaleText = I18n::get("options.fogType.vanilla"); break;
|
||||||
|
case 1: scaleText = I18n::get("options.fogType.java"); break;
|
||||||
|
case 2: scaleText = I18n::get("options.fogType.unused"); break;
|
||||||
|
}
|
||||||
|
text += ": " + scaleText;
|
||||||
|
}
|
||||||
|
if (m_optionId == OPTIONS_DEBUG_STYLE) {
|
||||||
|
int value = minecraft->options.getIntValue(OPTIONS_DEBUG_STYLE);
|
||||||
|
std::string scaleText;
|
||||||
|
switch (value) {
|
||||||
|
case 0: scaleText = I18n::get("options.debugStyle.javaBeta"); break;
|
||||||
|
case 1: scaleText = I18n::get("options.debugStyle.custom"); break;
|
||||||
|
case 2: scaleText = I18n::get("options.fogType.unused"); break;
|
||||||
|
}
|
||||||
|
text += ": " + scaleText;
|
||||||
|
}
|
||||||
|
if (m_optionId == OPTIONS_MENU_STYLE) {
|
||||||
|
int value = minecraft->options.getIntValue(OPTIONS_MENU_STYLE);
|
||||||
|
std::string scaleText;
|
||||||
|
switch (value) {
|
||||||
|
case 0: scaleText = I18n::get("options.menuStyle.pocket"); break;
|
||||||
|
case 1: scaleText = I18n::get("options.menuStyle.xperia"); break;
|
||||||
|
case 2: scaleText = I18n::get("options.menuStyle.java"); break;
|
||||||
|
}
|
||||||
|
text += ": " + scaleText;
|
||||||
|
}
|
||||||
|
if (m_optionId == OPTIONS_VIEW_DISTANCE) {
|
||||||
|
int value = minecraft->options.getIntValue(OPTIONS_VIEW_DISTANCE);
|
||||||
|
std::string scaleText;
|
||||||
|
switch (value) {
|
||||||
|
case 0: scaleText = I18n::get("options.renderDistance.far"); break;
|
||||||
|
case 1: scaleText = I18n::get("options.renderDistance.normal"); break;
|
||||||
|
case 2: scaleText = I18n::get("options.renderDistance.short"); break;
|
||||||
|
case 3: scaleText = I18n::get("options.renderDistance.tiny"); break;
|
||||||
|
default: scaleText = "Debug"; break;
|
||||||
|
}
|
||||||
|
text += ": " + scaleText;
|
||||||
|
}
|
||||||
|
|
||||||
|
minecraft->font->draw(text, (float)x, (float)y + yOffset, 0x909090, false);
|
||||||
super::render(minecraft, xm, ym);
|
super::render(minecraft, xm, ym);
|
||||||
}
|
}
|
||||||
@@ -15,12 +15,13 @@ class OptionsItem: public GuiElementContainer
|
|||||||
{
|
{
|
||||||
typedef GuiElementContainer super;
|
typedef GuiElementContainer super;
|
||||||
public:
|
public:
|
||||||
OptionsItem(std::string label, GuiElement* element);
|
OptionsItem(OptionId optionId, std::string label, GuiElement* element);
|
||||||
virtual void render(Minecraft* minecraft, int xm, int ym);
|
virtual void render(Minecraft* minecraft, int xm, int ym);
|
||||||
void setupPositions();
|
void setupPositions();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string label;
|
OptionId m_optionId;
|
||||||
|
std::string m_label;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /*NET_MINECRAFT_CLIENT_GUI_COMPONENTS__OptionsItem_H__*/
|
#endif /*NET_MINECRAFT_CLIENT_GUI_COMPONENTS__OptionsItem_H__*/
|
||||||
|
|||||||
64
src/client/gui/components/OptionsPane.cpp
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
#include "OptionsPane.h"
|
||||||
|
#include "OptionsGroup.h"
|
||||||
|
#include "OptionsItem.h"
|
||||||
|
#include "ImageButton.h"
|
||||||
|
#include "Slider.h"
|
||||||
|
#include "../../Minecraft.h"
|
||||||
|
#include "client/Options.h"
|
||||||
|
|
||||||
|
OptionsPane::OptionsPane() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void OptionsPane::setupPositions() {
|
||||||
|
int currentHeight = y + 1;
|
||||||
|
for(std::vector<GuiElement*>::iterator it = children.begin(); it != children.end(); ++it ) {
|
||||||
|
(*it)->width = width;
|
||||||
|
(*it)->y = currentHeight;
|
||||||
|
(*it)->x = x;
|
||||||
|
currentHeight += (*it)->height + 1;
|
||||||
|
}
|
||||||
|
height = currentHeight;
|
||||||
|
super::setupPositions();
|
||||||
|
}
|
||||||
|
|
||||||
|
OptionsGroup& OptionsPane::createOptionsGroup( std::string label ) {
|
||||||
|
OptionsGroup* newGroup = new OptionsGroup(label);
|
||||||
|
children.push_back(newGroup);
|
||||||
|
// create and return a new group index
|
||||||
|
return *newGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OptionsPane::createToggle( unsigned int group, std::string label, OptionId option ) {
|
||||||
|
if(group > children.size()) return;
|
||||||
|
ImageDef def;
|
||||||
|
def.setSrc(IntRectangle(160, 206, 39, 20));
|
||||||
|
def.name = "gui/touchgui.png";
|
||||||
|
def.width = 39 * 0.7f;
|
||||||
|
def.height = 20 * 0.7f;
|
||||||
|
OptionButton* element = new OptionButton(option);
|
||||||
|
element->setImageDef(def, true);
|
||||||
|
OptionsItem* item = new OptionsItem(option, label, element);
|
||||||
|
((OptionsGroup*)children[group])->addChild(item);
|
||||||
|
setupPositions();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OptionsPane::createProgressSlider( Minecraft* minecraft, unsigned int group, std::string label, OptionId option, float progressMin/*=1.0f*/, float progressMax/*=1.0f */ ) {
|
||||||
|
if(group > children.size()) return;
|
||||||
|
Slider* element = new SliderFloat(minecraft, option);
|
||||||
|
element->width = 100;
|
||||||
|
element->height = 20;
|
||||||
|
OptionsItem* item = new OptionsItem(option, label, element);
|
||||||
|
((OptionsGroup*)children[group])->addChild(item);
|
||||||
|
setupPositions();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OptionsPane::createStepSlider( Minecraft* minecraft, unsigned int group, std::string label, OptionId option, const std::vector<int>& stepVec ) {
|
||||||
|
if(group > children.size()) return;
|
||||||
|
Slider* element = new SliderInt(minecraft, option);
|
||||||
|
element->width = 100;
|
||||||
|
element->height = 20;
|
||||||
|
OptionsItem* item = new OptionsItem(option, label, element);
|
||||||
|
((OptionsGroup*)children[group])->addChild(item);
|
||||||
|
setupPositions();
|
||||||
|
}
|
||||||
30
src/client/gui/components/OptionsPane.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#ifndef ITEMPANE_H__
|
||||||
|
#define ITEMPANE_H__
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include "GuiElementContainer.h"
|
||||||
|
#include "../../../world/item/ItemInstance.h"
|
||||||
|
#include "../../../client/Options.h"
|
||||||
|
class Font;
|
||||||
|
class Textures;
|
||||||
|
class NinePatchLayer;
|
||||||
|
class ItemPane;
|
||||||
|
class OptionButton;
|
||||||
|
class Button;
|
||||||
|
class OptionsGroup;
|
||||||
|
class Slider;
|
||||||
|
class Minecraft;
|
||||||
|
class OptionsPane: public GuiElementContainer
|
||||||
|
{
|
||||||
|
typedef GuiElementContainer super;
|
||||||
|
public:
|
||||||
|
OptionsPane();
|
||||||
|
OptionsGroup& createOptionsGroup( std::string label );
|
||||||
|
void createToggle( unsigned int group, std::string label, OptionId option );
|
||||||
|
void createProgressSlider(Minecraft* minecraft, unsigned int group, std::string label, OptionId option, float progressMin=1.0f, float progressMax=1.0f );
|
||||||
|
void createStepSlider(Minecraft* minecraft, unsigned int group, std::string label, OptionId option, const std::vector<int>& stepVec );
|
||||||
|
void setupPositions();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*ITEMPANE_H__*/
|
||||||
@@ -20,6 +20,9 @@ static const float kMinimumTrackingForDrag = 5;
|
|||||||
static const float kMinIndicatorLength = 34.0f / 3;
|
static const float kMinIndicatorLength = 34.0f / 3;
|
||||||
static const float PKScrollIndicatorEndSize = 3;
|
static const float PKScrollIndicatorEndSize = 3;
|
||||||
static const float PKScrollIndicatorThickness = 7.0f /3;
|
static const float PKScrollIndicatorThickness = 7.0f /3;
|
||||||
|
static const float kWheelOverscrollMax = 80.0f;
|
||||||
|
static const float kWheelOverscrollDamping = 0.6f;
|
||||||
|
static const float kWheelOverscrollRestoreAlpha = 0.18f;
|
||||||
|
|
||||||
ScrollingPane::ScrollingPane(
|
ScrollingPane::ScrollingPane(
|
||||||
int optionFlags,
|
int optionFlags,
|
||||||
@@ -70,13 +73,19 @@ ScrollingPane::ScrollingPane(
|
|||||||
}
|
}
|
||||||
//LOGI("%d, %d :: %d\n", bbox.w, itemBbox.w, this->columns);
|
//LOGI("%d, %d :: %d\n", bbox.w, itemBbox.w, this->columns);
|
||||||
|
|
||||||
rows = 1 + (numItems-1) / this->columns,
|
rows = 1 + (numItems-1) / this->columns;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (columns * itemBbox.w <= bbox.w) flags |= SF_LockX;
|
if (columns * itemBbox.w <= bbox.w) flags |= SF_LockX;
|
||||||
if (rows * itemBbox.h <= bbox.h) flags |= SF_LockY;
|
if (rows * itemBbox.h <= bbox.h) flags |= SF_LockY;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// initialize content bounds immediately
|
||||||
|
adjustContentSize();
|
||||||
|
minPoint.set((float)(this->size.w - this->adjustedContentSize.w), (float)(this->size.h - this->adjustedContentSize.h), 0);
|
||||||
|
this->snapContentOffsetToBounds(false);
|
||||||
|
|
||||||
|
|
||||||
dragDeltas.reserve(128);
|
dragDeltas.reserve(128);
|
||||||
|
|
||||||
te_moved = 0;
|
te_moved = 0;
|
||||||
@@ -114,6 +123,34 @@ void ScrollingPane::tick() {
|
|||||||
updateScrollFade(vScroll);
|
updateScrollFade(vScroll);
|
||||||
updateScrollFade(hScroll);
|
updateScrollFade(hScroll);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isNotSet(SF_HardLimits) && !Mouse::isButtonDown(MouseAction::ACTION_LEFT) && !dragging && !tracking && !decelerating) {
|
||||||
|
float targetX = _contentOffset.x;
|
||||||
|
float targetY = _contentOffset.y;
|
||||||
|
bool corrected = false;
|
||||||
|
|
||||||
|
if (targetX > 0.0f) {
|
||||||
|
targetX = Mth::lerp(targetX, 0.0f, kWheelOverscrollRestoreAlpha);
|
||||||
|
corrected = true;
|
||||||
|
} else if (targetX < minPoint.x) {
|
||||||
|
targetX = Mth::lerp(targetX, minPoint.x, kWheelOverscrollRestoreAlpha);
|
||||||
|
corrected = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (targetY > 0.0f) {
|
||||||
|
targetY = Mth::lerp(targetY, 0.0f, kWheelOverscrollRestoreAlpha);
|
||||||
|
corrected = true;
|
||||||
|
} else if (targetY < minPoint.y) {
|
||||||
|
targetY = Mth::lerp(targetY, minPoint.y, kWheelOverscrollRestoreAlpha);
|
||||||
|
corrected = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (corrected) {
|
||||||
|
if (Mth::abs(targetX - _contentOffset.x) < 0.25f) targetX = (targetX > 0.0f ? 0.0f : (targetX < minPoint.x ? minPoint.x : targetX));
|
||||||
|
if (Mth::abs(targetY - _contentOffset.y) < 0.25f) targetY = (targetY > 0.0f ? 0.0f : (targetY < minPoint.y ? minPoint.y : targetY));
|
||||||
|
setContentOffset(Vec3(targetX, targetY, 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ScrollingPane::getGridItemFor_slow(int itemIndex, GridItem& out) {
|
bool ScrollingPane::getGridItemFor_slow(int itemIndex, GridItem& out) {
|
||||||
@@ -167,22 +204,23 @@ void ScrollingPane::render( int xm, int ym, float alpha ) {
|
|||||||
|
|
||||||
const float bxx = bbox.x - (fpx /*+ dx*alpha*/) + (nw.xf - nw.x);
|
const float bxx = bbox.x - (fpx /*+ dx*alpha*/) + (nw.xf - nw.x);
|
||||||
const float byy = bbox.y - (fpy /*+ dy*alpha*/) + (nw.yf - nw.y);
|
const float byy = bbox.y - (fpy /*+ dy*alpha*/) + (nw.yf - nw.y);
|
||||||
for (int y = nw.y; y <= se.y; ++y)
|
for (int y = nw.y; y <= se.y; ++y) {
|
||||||
for (int x = nw.x; x <= se.x; ++x) {
|
for (int x = nw.x; x <= se.x; ++x) {
|
||||||
int id = y * columns + x;
|
int id = y * columns + x;
|
||||||
if (y <0 || id < 0 || id >= numItems) continue; // @todo: break rather
|
if (y <0 || id < 0 || id >= numItems) continue; // @todo: break rather
|
||||||
if (isNotSet(SF_WrapX) && (x < 0 || x >= columns)) continue; // @todo: break rather
|
if (isNotSet(SF_WrapX) && (x < 0 || x >= columns)) continue; // @todo: break rather
|
||||||
GridItem item; //@todo: v- Does not support SF_Wrapping
|
GridItem item; //@todo: v- Does not support SF_Wrapping
|
||||||
item.id = id;
|
item.id = id;
|
||||||
item.xf = bxx + x * itemBbox.w;
|
item.xf = bxx + x * itemBbox.w;
|
||||||
item.yf = byy + y * itemBbox.h;
|
item.yf = byy + y * itemBbox.h;
|
||||||
item.x = (int)item.xf;
|
item.x = (int)item.xf;
|
||||||
item.y = (int)item.yf;
|
item.y = (int)item.yf;
|
||||||
//LOGI("i: %d (%.1f, %.1f)\t", id, item.xf, item.yf);
|
//LOGI("i: %d (%.1f, %.1f)\t", id, item.xf, item.yf);
|
||||||
if (isSet(SF_MultiSelect)) item.selected = selected[id];
|
if (isSet(SF_MultiSelect)) item.selected = selected[id];
|
||||||
else item.selected = (id == selectedId);
|
else item.selected = (id == selectedId);
|
||||||
|
|
||||||
itemsToRender.push_back(item);
|
itemsToRender.push_back(item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
renderBatch(itemsToRender, alpha);
|
renderBatch(itemsToRender, alpha);
|
||||||
|
|
||||||
@@ -549,11 +587,39 @@ void ScrollingPane::stepThroughDecelerationAnimation(bool noAnimation) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScrollingPane::scrollBy(float dx, float dy) {
|
void ScrollingPane::scrollBy(float dx, float dy) {
|
||||||
// adjust the translation offsets fpx/fpy by the requested amount
|
// compute target content offset from wheel delta (in screen-space w/ opposite sign)
|
||||||
float nfpx = fpx + dx;
|
float targetX = _contentOffset.x - dx;
|
||||||
float nfpy = fpy + dy;
|
float targetY = _contentOffset.y - dy;
|
||||||
// convert back to content offset (fpx = -contentOffset.x)
|
|
||||||
setContentOffset(Vec3(-nfpx, -nfpy, 0));
|
if (isSet(SF_LockX)) targetX = _contentOffset.x;
|
||||||
|
if (isSet(SF_LockY)) targetY = _contentOffset.y;
|
||||||
|
|
||||||
|
if (isSet(SF_HardLimits)) {
|
||||||
|
targetX = Mth::clamp(targetX, minPoint.x, 0.0f);
|
||||||
|
targetY = Mth::clamp(targetY, minPoint.y, 0.0f);
|
||||||
|
} else {
|
||||||
|
if (targetX > 0.0f) {
|
||||||
|
float overshoot = targetX;
|
||||||
|
overshoot = Mth::Min(overshoot, kWheelOverscrollMax);
|
||||||
|
targetX = overshoot * kWheelOverscrollDamping;
|
||||||
|
} else if (targetX < minPoint.x) {
|
||||||
|
float overshoot = targetX - minPoint.x;
|
||||||
|
overshoot = Mth::Max(overshoot, -kWheelOverscrollMax);
|
||||||
|
targetX = minPoint.x + overshoot * kWheelOverscrollDamping;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (targetY > 0.0f) {
|
||||||
|
float overshoot = targetY;
|
||||||
|
overshoot = Mth::Min(overshoot, kWheelOverscrollMax);
|
||||||
|
targetY = overshoot * kWheelOverscrollDamping;
|
||||||
|
} else if (targetY < minPoint.y) {
|
||||||
|
float overshoot = targetY - minPoint.y;
|
||||||
|
overshoot = Mth::Max(overshoot, -kWheelOverscrollMax);
|
||||||
|
targetY = minPoint.y + overshoot * kWheelOverscrollDamping;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setContentOffset(Vec3(targetX, targetY, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScrollingPane::setContentOffset(float x, float y) {
|
void ScrollingPane::setContentOffset(float x, float y) {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#include "../../Minecraft.h"
|
#include "../../Minecraft.h"
|
||||||
#include "../../renderer/Textures.h"
|
#include "../../renderer/Textures.h"
|
||||||
#include "../Screen.h"
|
#include "../Screen.h"
|
||||||
|
#include "../../../locale/I18n.h"
|
||||||
#include "../../../util/Mth.h"
|
#include "../../../util/Mth.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -21,7 +22,7 @@ void Slider::render( Minecraft* minecraft, int xm, int ym ) {
|
|||||||
|
|
||||||
if (m_numSteps > 2) {
|
if (m_numSteps > 2) {
|
||||||
int stepDistance = barWidth / (m_numSteps-1);
|
int stepDistance = barWidth / (m_numSteps-1);
|
||||||
for(int a = 0; a <= m_numSteps; ++a) {
|
for(int a = 0; a < m_numSteps; ++a) {
|
||||||
int renderSliderStepPosX = xSliderStart + a * stepDistance + 1;
|
int renderSliderStepPosX = xSliderStart + a * stepDistance + 1;
|
||||||
fill(renderSliderStepPosX - 1, ySliderStart - 2, renderSliderStepPosX + 1, ySliderEnd + 2, 0xff606060);
|
fill(renderSliderStepPosX - 1, ySliderStart - 2, renderSliderStepPosX + 1, ySliderEnd + 2, 0xff606060);
|
||||||
}
|
}
|
||||||
@@ -64,15 +65,20 @@ SliderFloat::SliderFloat(Minecraft* minecraft, OptionId option)
|
|||||||
SliderInt::SliderInt(Minecraft* minecraft, OptionId option)
|
SliderInt::SliderInt(Minecraft* minecraft, OptionId option)
|
||||||
: Slider(option), m_option(dynamic_cast<OptionInt*>(minecraft->options.getOpt(option)))
|
: Slider(option), m_option(dynamic_cast<OptionInt*>(minecraft->options.getOpt(option)))
|
||||||
{
|
{
|
||||||
m_numSteps = m_option->getMax() - m_option->getMin();
|
m_numSteps = m_option->getMax() - m_option->getMin() + 1;
|
||||||
m_percentage = float(m_option->get() - m_option->getMin()) / (m_numSteps-1);
|
m_percentage = float(m_option->get() - m_option->getMin()) / (m_numSteps-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SliderInt::render( Minecraft* minecraft, int xm, int ym ) {
|
||||||
|
Slider::render(minecraft, xm, ym);
|
||||||
|
}
|
||||||
|
|
||||||
void SliderInt::mouseReleased( Minecraft* minecraft, int x, int y, int buttonNum ) {
|
void SliderInt::mouseReleased( Minecraft* minecraft, int x, int y, int buttonNum ) {
|
||||||
Slider::mouseReleased(minecraft, x, y, buttonNum);
|
Slider::mouseReleased(minecraft, x, y, buttonNum);
|
||||||
|
|
||||||
if (pointInside(x, y)) {
|
if (pointInside(x, y)) {
|
||||||
int curStep = Mth::floor(m_percentage * (m_numSteps-1));
|
int curStep = int(m_percentage * (m_numSteps-1) + 0.5f);
|
||||||
|
curStep = Mth::clamp(curStep + m_option->getMin(), m_option->getMin(), m_option->getMax());
|
||||||
m_percentage = float(curStep - m_option->getMin()) / (m_numSteps-1);
|
m_percentage = float(curStep - m_option->getMin()) / (m_numSteps-1);
|
||||||
|
|
||||||
minecraft->options.set(m_optId, curStep);
|
minecraft->options.set(m_optId, curStep);
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
#include "GuiElement.h"
|
#include "GuiElement.h"
|
||||||
#include "../../../client/Options.h"
|
#include "../../../client/Options.h"
|
||||||
#include <client/Option.h>
|
|
||||||
|
|
||||||
class Slider : public GuiElement {
|
class Slider : public GuiElement {
|
||||||
typedef GuiElement super;
|
typedef GuiElement super;
|
||||||
@@ -38,6 +37,7 @@ class SliderInt : public Slider {
|
|||||||
public:
|
public:
|
||||||
SliderInt(Minecraft* minecraft, OptionId option);
|
SliderInt(Minecraft* minecraft, OptionId option);
|
||||||
|
|
||||||
|
virtual void render( Minecraft* minecraft, int xm, int ym ) override;
|
||||||
virtual void mouseReleased( Minecraft* minecraft, int x, int y, int buttonNum ) override;
|
virtual void mouseReleased( Minecraft* minecraft, int x, int y, int buttonNum ) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
24
src/client/gui/components/SmallButton.cpp
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#include "SmallButton.h"
|
||||||
|
|
||||||
|
SmallButton::SmallButton( int id, int x, int y, const std::string& msg )
|
||||||
|
: super(id, x, y, 150, 20, msg),
|
||||||
|
option(NULL)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
SmallButton::SmallButton( int id, int x, int y, int width, int height, const std::string& msg )
|
||||||
|
: super(id, x, y, width, height, msg),
|
||||||
|
option(NULL)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
SmallButton::SmallButton( int id, int x, int y, Option* item, const std::string& msg )
|
||||||
|
: super(id, x, y, 150, 20, msg),
|
||||||
|
option(item)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
Option* SmallButton::getOption()
|
||||||
|
{
|
||||||
|
return option;
|
||||||
|
}
|
||||||
23
src/client/gui/components/SmallButton.h
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#ifndef NET_MINECRAFT_CLIENT_GUI_COMPONENTS__SmallButton_H__
|
||||||
|
#define NET_MINECRAFT_CLIENT_GUI_COMPONENTS__SmallButton_H__
|
||||||
|
|
||||||
|
//package net.minecraft.client.gui;
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include "Button.h"
|
||||||
|
#include "../../Options.h"
|
||||||
|
|
||||||
|
class SmallButton: public Button
|
||||||
|
{
|
||||||
|
typedef Button super;
|
||||||
|
public:
|
||||||
|
SmallButton(int id, int x, int y, const std::string& msg);
|
||||||
|
SmallButton(int id, int x, int y, int width, int height, const std::string& msg);
|
||||||
|
SmallButton(int id, int x, int y, Option* item, const std::string& msg);
|
||||||
|
|
||||||
|
Option* getOption();
|
||||||
|
private:
|
||||||
|
Option* option;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*NET_MINECRAFT_CLIENT_GUI_COMPONENTS__SmallButton_H__*/
|
||||||
26
src/client/gui/screens/BuyGameScreen.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#ifndef NET_MINECRAFT_CLIENT_GUI_SCREENS__BuyGameScreen_H__
|
||||||
|
#define NET_MINECRAFT_CLIENT_GUI_SCREENS__BuyGameScreen_H__
|
||||||
|
|
||||||
|
#include "../Screen.h"
|
||||||
|
#include "../components/Button.h"
|
||||||
|
|
||||||
|
class BuyGameScreen: public Screen
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
BuyGameScreen() {}
|
||||||
|
virtual ~BuyGameScreen() {}
|
||||||
|
|
||||||
|
void init();
|
||||||
|
|
||||||
|
void render(int xm, int ym, float a);
|
||||||
|
|
||||||
|
void buttonClicked(Button* button) {
|
||||||
|
//if (button->id == bQuit.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
//Button bQuit;
|
||||||
|
//Button bBuyGame;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*NET_MINECRAFT_CLIENT_GUI_SCREENS__BuyGameScreen_H__*/
|
||||||
@@ -329,7 +329,10 @@ bool ChestScreen::handleAddItem(FillingContainer* from, FillingContainer* to, in
|
|||||||
added = (takenItem.count != wantedCount);
|
added = (takenItem.count != wantedCount);
|
||||||
|
|
||||||
if (added) {
|
if (added) {
|
||||||
item->count -= (wantedCount - takenItem.count);
|
if (!minecraft->isCreativeMode()) {
|
||||||
|
item->count -= (wantedCount - takenItem.count);
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<int> changed;
|
std::vector<int> changed;
|
||||||
std::vector<const ItemInstance*> items = getItems(toPane);
|
std::vector<const ItemInstance*> items = getItems(toPane);
|
||||||
differ.getDiff(items, changed);
|
differ.getDiff(items, changed);
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ ConfirmScreen::~ConfirmScreen() {
|
|||||||
|
|
||||||
void ConfirmScreen::init()
|
void ConfirmScreen::init()
|
||||||
{
|
{
|
||||||
if (minecraft->useTouchscreen()) {
|
if (/* minecraft->useTouchscreen() */ true) {
|
||||||
yesButton = new Touch::TButton(0, 0, 0, yesButtonText),
|
yesButton = new Touch::TButton(0, 0, 0, yesButtonText),
|
||||||
noButton = new Touch::TButton(1, 0, 0, noButtonText);
|
noButton = new Touch::TButton(1, 0, 0, noButtonText);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -6,8 +6,9 @@
|
|||||||
#include "../../../world/level/Level.h"
|
#include "../../../world/level/Level.h"
|
||||||
#include "../../../network/RakNetInstance.h"
|
#include "../../../network/RakNetInstance.h"
|
||||||
#include "../../../network/ServerSideNetworkHandler.h"
|
#include "../../../network/ServerSideNetworkHandler.h"
|
||||||
#include "../../../network/packet/ChatPacket.h"
|
#include "../../../network/packet/MessagePacket.h"
|
||||||
#include "../../../platform/log.h"
|
#include "../../../platform/log.h"
|
||||||
|
#include "util/StringUtils.h"
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
@@ -54,141 +55,40 @@ void ConsoleScreen::charPressed(char inputChar)
|
|||||||
_input += inputChar;
|
_input += inputChar;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
|
||||||
// execute: run _input as a command, print result, close screen
|
|
||||||
// ---------------------------------------------------------------------------
|
|
||||||
void ConsoleScreen::execute()
|
void ConsoleScreen::execute()
|
||||||
{
|
{
|
||||||
|
if (!minecraft->level) return;
|
||||||
|
|
||||||
if (_input.empty()) {
|
if (_input.empty()) {
|
||||||
minecraft->setScreen(NULL);
|
return minecraft->setScreen(NULL);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_input[0] == '/') {
|
if (minecraft->netCallback && !minecraft->raknetInstance->isServer()) {
|
||||||
// Command
|
MessagePacket packet(_input.c_str());
|
||||||
std::string result = processCommand(_input);
|
minecraft->raknetInstance->send(&packet);
|
||||||
if (!result.empty())
|
} else if (_input[0] == '/') {
|
||||||
minecraft->gui.addMessage(result);
|
_input = Util::stringTrim(_input.substr(1));
|
||||||
} else {
|
|
||||||
// Chat message: <name> message
|
std::istringstream iss(
|
||||||
std::string msg = std::string("<") + minecraft->player->name + "> " + _input;
|
minecraft->commandManager().execute(*minecraft, *minecraft->player, _input)
|
||||||
if (minecraft->netCallback && minecraft->raknetInstance->isServer()) {
|
);
|
||||||
// Hosting a LAN game: displayGameMessage shows locally + broadcasts MessagePacket to clients
|
|
||||||
static_cast<ServerSideNetworkHandler*>(minecraft->netCallback)->displayGameMessage(msg);
|
for (std::string line; std::getline(iss, line);) {
|
||||||
} else if (minecraft->netCallback) {
|
minecraft->gui.addMessage(line);
|
||||||
// Connected client: send ChatPacket to server; server echoes it back as MessagePacket
|
|
||||||
ChatPacket chatPkt(msg);
|
|
||||||
minecraft->raknetInstance->send(chatPkt);
|
|
||||||
} else {
|
|
||||||
// Singleplayer: show locally only
|
|
||||||
minecraft->gui.addMessage(msg);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
if (minecraft->raknetInstance->isServer()) {
|
||||||
|
MessagePacket packet(_input.c_str());
|
||||||
|
minecraft->raknetInstance->send(&packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
minecraft->gui.addMessage("<" + minecraft->player->name + "> " + _input);
|
||||||
|
}
|
||||||
|
|
||||||
minecraft->setScreen(NULL);
|
minecraft->setScreen(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
|
||||||
// processCommand
|
|
||||||
// ---------------------------------------------------------------------------
|
|
||||||
static std::string trim(const std::string& s) {
|
|
||||||
size_t a = s.find_first_not_of(" \t");
|
|
||||||
if (a == std::string::npos) return "";
|
|
||||||
size_t b = s.find_last_not_of(" \t");
|
|
||||||
return s.substr(a, b - a + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string ConsoleScreen::processCommand(const std::string& raw)
|
|
||||||
{
|
|
||||||
// strip leading '/'
|
|
||||||
std::string line = raw;
|
|
||||||
if (!line.empty() && line[0] == '/') line = line.substr(1);
|
|
||||||
line = trim(line);
|
|
||||||
|
|
||||||
// tokenise
|
|
||||||
std::vector<std::string> args;
|
|
||||||
{
|
|
||||||
std::istringstream ss(line);
|
|
||||||
std::string tok;
|
|
||||||
while (ss >> tok) args.push_back(tok);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.empty()) return "";
|
|
||||||
|
|
||||||
Level* level = minecraft->level;
|
|
||||||
if (!level) return "No level loaded.";
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------
|
|
||||||
// /time ...
|
|
||||||
// -----------------------------------------------------------------------
|
|
||||||
if (args[0] == "time") {
|
|
||||||
if (args.size() < 2)
|
|
||||||
return "Usage: /time <add|set|query> ...";
|
|
||||||
|
|
||||||
const std::string& sub = args[1];
|
|
||||||
|
|
||||||
// -- time add <value> -----------------------------------------------
|
|
||||||
if (sub == "add") {
|
|
||||||
if (args.size() < 3) return "Usage: /time add <value>";
|
|
||||||
long delta = std::atol(args[2].c_str());
|
|
||||||
long newTime = level->getTime() + delta;
|
|
||||||
level->setTime(newTime);
|
|
||||||
std::ostringstream out;
|
|
||||||
out << "Set the time to " << (newTime % Level::TICKS_PER_DAY);
|
|
||||||
return out.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
// -- time set <value|day|night|noon|midnight> -----------------------
|
|
||||||
if (sub == "set") {
|
|
||||||
if (args.size() < 3) return "Usage: /time set <value|day|night|noon|midnight>";
|
|
||||||
const std::string& val = args[2];
|
|
||||||
|
|
||||||
long t = -1;
|
|
||||||
if (val == "day") t = 1000;
|
|
||||||
else if (val == "noon") t = 6000;
|
|
||||||
else if (val == "night") t = 13000;
|
|
||||||
else if (val == "midnight") t = 18000;
|
|
||||||
else {
|
|
||||||
// numeric — accept positive integers only
|
|
||||||
bool numeric = true;
|
|
||||||
for (char c : val)
|
|
||||||
if (!std::isdigit((unsigned char)c)) { numeric = false; break; }
|
|
||||||
if (!numeric) return std::string("Unknown value: ") + val;
|
|
||||||
t = std::atol(val.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Preserve the total day count so only the time-of-day changes
|
|
||||||
long dayCount = level->getTime() / Level::TICKS_PER_DAY;
|
|
||||||
long newTime = dayCount * Level::TICKS_PER_DAY + (t % Level::TICKS_PER_DAY);
|
|
||||||
level->setTime(newTime);
|
|
||||||
std::ostringstream out;
|
|
||||||
out << "Set the time to " << t;
|
|
||||||
return out.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
// -- time query <daytime|gametime|day> ------------------------------
|
|
||||||
if (sub == "query") {
|
|
||||||
if (args.size() < 3) return "Usage: /time query <daytime|gametime|day>";
|
|
||||||
const std::string& what = args[2];
|
|
||||||
|
|
||||||
long total = level->getTime();
|
|
||||||
long daytime = total % Level::TICKS_PER_DAY;
|
|
||||||
long day = total / Level::TICKS_PER_DAY;
|
|
||||||
|
|
||||||
std::ostringstream out;
|
|
||||||
if (what == "daytime") { out << "The time of day is " << daytime; }
|
|
||||||
else if (what == "gametime") { out << "The game time is " << total; }
|
|
||||||
else if (what == "day") { out << "The day is " << day; }
|
|
||||||
else return std::string("Unknown query: ") + what;
|
|
||||||
return out.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
return "Unknown sub-command. Usage: /time <add|set|query> ...";
|
|
||||||
}
|
|
||||||
|
|
||||||
return std::string("Unknown command: /") + args[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// render
|
// render
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void execute();
|
void execute();
|
||||||
std::string processCommand(const std::string& cmd);
|
|
||||||
|
|
||||||
std::string _input;
|
std::string _input;
|
||||||
int _cursorBlink; // tick counter for cursor blink
|
int _cursorBlink; // tick counter for cursor blink
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ void CreditsScreen::init() {
|
|||||||
buttons.push_back(bHeader);
|
buttons.push_back(bHeader);
|
||||||
buttons.push_back(btnBack);
|
buttons.push_back(btnBack);
|
||||||
|
|
||||||
|
// TODO: rewrite it
|
||||||
// prepare text lines
|
// prepare text lines
|
||||||
_lines.clear();
|
_lines.clear();
|
||||||
_lines.push_back("Minecraft: Pocket Edition");
|
_lines.push_back("Minecraft: Pocket Edition");
|
||||||
@@ -39,6 +40,8 @@ void CreditsScreen::init() {
|
|||||||
_lines.push_back("Kolyah35");
|
_lines.push_back("Kolyah35");
|
||||||
_lines.push_back("karson");
|
_lines.push_back("karson");
|
||||||
_lines.push_back("deepfriedwaffles");
|
_lines.push_back("deepfriedwaffles");
|
||||||
|
_lines.push_back("EpikIzCool");
|
||||||
|
_lines.push_back("fileshredder");
|
||||||
_lines.push_back("");
|
_lines.push_back("");
|
||||||
// avoid color tags around the URL so it isn't mangled by the parser please
|
// avoid color tags around the URL so it isn't mangled by the parser please
|
||||||
_lines.push_back("Join our Discord server: https://discord.gg/c58YesBxve");
|
_lines.push_back("Join our Discord server: https://discord.gg/c58YesBxve");
|
||||||
|
|||||||
@@ -23,12 +23,15 @@ DeathScreen::~DeathScreen()
|
|||||||
|
|
||||||
void DeathScreen::init()
|
void DeathScreen::init()
|
||||||
{
|
{
|
||||||
if (minecraft->useTouchscreen()) {
|
if (minecraft->options.getIntValue(OPTIONS_MENU_STYLE) == 0) {
|
||||||
bRespawn = new Touch::TButton(1, "Respawn!");
|
bRespawn = new Touch::TButton(1, "Respawn!");
|
||||||
bTitle = new Touch::TButton(2, "Main menu");
|
bTitle = new Touch::TButton(2, "Main menu");
|
||||||
} else {
|
} else if (minecraft->options.getIntValue(OPTIONS_MENU_STYLE) == 1) {
|
||||||
bRespawn = new Button(1, "Respawn!");
|
bRespawn = new Button(1, "Respawn!");
|
||||||
bTitle = new Button(2, "Main menu");
|
bTitle = new Button(2, "Main menu");
|
||||||
|
} else {
|
||||||
|
bRespawn = new Button(1, 0, 0, 200, 20, "Respawn");
|
||||||
|
bTitle = new Button(2, 0, 0, 200, 20, "Title menu");
|
||||||
}
|
}
|
||||||
buttons.push_back(bRespawn);
|
buttons.push_back(bRespawn);
|
||||||
buttons.push_back(bTitle);
|
buttons.push_back(bTitle);
|
||||||
@@ -39,13 +42,23 @@ void DeathScreen::init()
|
|||||||
|
|
||||||
void DeathScreen::setupPositions()
|
void DeathScreen::setupPositions()
|
||||||
{
|
{
|
||||||
bRespawn->width = bTitle->width = width / 4;
|
if (minecraft->options.getIntValue(OPTIONS_MENU_STYLE) == 2){
|
||||||
|
bRespawn->width = 200;
|
||||||
|
bTitle->width = 200;
|
||||||
|
|
||||||
|
int centerX = (width / 2) - (bRespawn->width / 2);
|
||||||
|
bRespawn->x = centerX;
|
||||||
|
bTitle->x = centerX;
|
||||||
|
|
||||||
|
bRespawn->y = (height / 2);
|
||||||
|
bTitle->y = bRespawn->y + 24;
|
||||||
|
} else {
|
||||||
|
bRespawn->width = bTitle->width = width / 4;
|
||||||
bRespawn->y = bTitle->y = height / 2;
|
bRespawn->y = bTitle->y = height / 2;
|
||||||
bRespawn->x = width/2 - bRespawn->width - 10;
|
bRespawn->x = width/2 - bRespawn->width - 10;
|
||||||
bTitle->x = width/2 + 10;
|
bTitle->x = width/2 + 10;
|
||||||
|
}
|
||||||
LOGI("xyz: %d, %d (%d, %d)\n", bTitle->x, bTitle->y, width, height);
|
// LOGI("xyz: %d, %d (%d, %d)\n", bTitle->x, bTitle->y, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeathScreen::tick() {
|
void DeathScreen::tick() {
|
||||||
@@ -56,10 +69,20 @@ void DeathScreen::render( int xm, int ym, float a )
|
|||||||
{
|
{
|
||||||
fillGradient(0, 0, width, height, 0x60500000, 0xa0803030);
|
fillGradient(0, 0, width, height, 0x60500000, 0xa0803030);
|
||||||
|
|
||||||
|
if (minecraft->options.getIntValue(OPTIONS_MENU_STYLE) == 2){
|
||||||
glPushMatrix2();
|
glPushMatrix2();
|
||||||
glScalef2(2, 2, 2);
|
glScalef2(2, 2, 2);
|
||||||
drawCenteredString(font, "You died!", width / 2 / 2, height / 8, 0xffffff);
|
drawCenteredString(font, I18n::get("deathScreen.title.hardcore"), width / 4, height / 8, 0xffffff);
|
||||||
glPopMatrix2();
|
glPopMatrix2();
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << "Score: &e" << minecraft->player->getScore();
|
||||||
|
drawCenteredString(font, ss.str(), width / 2, (height / 4) + 32, 0xffffff);
|
||||||
|
} else {
|
||||||
|
glPushMatrix2();
|
||||||
|
glScalef2(2, 2, 2);
|
||||||
|
drawCenteredString(font, I18n::get("deathScreen.title"), width / 4, height / 8, 0xffffff);
|
||||||
|
glPopMatrix2();
|
||||||
|
}
|
||||||
|
|
||||||
if (_tick >= WAIT_TICKS)
|
if (_tick >= WAIT_TICKS)
|
||||||
Screen::render(xm, ym, a);
|
Screen::render(xm, ym, a);
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void init() {
|
void init() {
|
||||||
if (minecraft->useTouchscreen())
|
if (/* minecraft->useTouchscreen() */ true)
|
||||||
_back = new Touch::TButton(1, "Ok");
|
_back = new Touch::TButton(1, "Ok");
|
||||||
else
|
else
|
||||||
_back = new Button(1, "Ok");
|
_back = new Button(1, "Ok");
|
||||||
|
|||||||
@@ -500,6 +500,8 @@ ItemInstance FurnaceScreen::moveOver(const ItemInstance* item, int maxCount) {
|
|||||||
setIfNotSet(doRecreatePane, newSize != oldSize);
|
setIfNotSet(doRecreatePane, newSize != oldSize);
|
||||||
return removed;
|
return removed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return ItemInstance();
|
return ItemInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ InBedScreen::~InBedScreen() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void InBedScreen::init() {
|
void InBedScreen::init() {
|
||||||
if (minecraft->useTouchscreen()) {
|
if (/* minecraft->useTouchscreen() */ true) {
|
||||||
bWakeUp = new Touch::TButton(1, "Leave Bed");
|
bWakeUp = new Touch::TButton(1, "Leave Bed");
|
||||||
} else {
|
} else {
|
||||||
bWakeUp = new Button(1, "Leave Bed");
|
bWakeUp = new Button(1, "Leave Bed");
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#include "IngameBlockSelectionScreen.h"
|
#include "IngameBlockSelectionScreen.h"
|
||||||
#include "../../renderer/TileRenderer.h"
|
#include "../../renderer/TileRenderer.h"
|
||||||
|
#include "../../renderer/Lighting.h"
|
||||||
#include "../../player/LocalPlayer.h"
|
#include "../../player/LocalPlayer.h"
|
||||||
#include "../../renderer/gles.h"
|
#include "../../renderer/gles.h"
|
||||||
#include "../../Minecraft.h"
|
#include "../../Minecraft.h"
|
||||||
@@ -11,6 +12,7 @@
|
|||||||
#include "../../renderer/Textures.h"
|
#include "../../renderer/Textures.h"
|
||||||
#include "../../gamemode/GameMode.h"
|
#include "../../gamemode/GameMode.h"
|
||||||
#include "ArmorScreen.h"
|
#include "ArmorScreen.h"
|
||||||
|
#include "crafting/WorkbenchScreen.h"
|
||||||
#include "../components/Button.h"
|
#include "../components/Button.h"
|
||||||
|
|
||||||
#if defined(__APPLE__)
|
#if defined(__APPLE__)
|
||||||
@@ -26,7 +28,8 @@ IngameBlockSelectionScreen::IngameBlockSelectionScreen()
|
|||||||
InventoryRows(1),
|
InventoryRows(1),
|
||||||
InventoryCols(1),
|
InventoryCols(1),
|
||||||
InventorySize(1),
|
InventorySize(1),
|
||||||
bArmor(1, "Armor")
|
bArmor(1, "Armor"),
|
||||||
|
bCrafting(1, "Crafting")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,6 +45,19 @@ void IngameBlockSelectionScreen::init()
|
|||||||
(float)getSlotPosX(InventoryCols) + 4,
|
(float)getSlotPosX(InventoryCols) + 4,
|
||||||
(float)getSlotPosY(InventoryRows) + 4);
|
(float)getSlotPosY(InventoryRows) + 4);
|
||||||
|
|
||||||
|
if (!minecraft->isCreativeMode()) {
|
||||||
|
bArmor.width = 42;
|
||||||
|
bCrafting.width = 42;
|
||||||
|
|
||||||
|
bArmor.x = 0;
|
||||||
|
bArmor.y = height - bArmor.height;
|
||||||
|
|
||||||
|
bCrafting.x = 0;
|
||||||
|
bCrafting.y = height - bCrafting.height - 30;
|
||||||
|
buttons.push_back(&bArmor);
|
||||||
|
buttons.push_back(&bCrafting);
|
||||||
|
}
|
||||||
|
|
||||||
ItemInstance* selected = inventory->getSelected();
|
ItemInstance* selected = inventory->getSelected();
|
||||||
if (!selected || selected->isNull()) {
|
if (!selected || selected->isNull()) {
|
||||||
selectedItem = 0;
|
selectedItem = 0;
|
||||||
@@ -57,13 +73,6 @@ void IngameBlockSelectionScreen::init()
|
|||||||
}
|
}
|
||||||
if (!isAllowed(selectedItem))
|
if (!isAllowed(selectedItem))
|
||||||
selectedItem = 0;
|
selectedItem = 0;
|
||||||
|
|
||||||
if (!minecraft->isCreativeMode()) {
|
|
||||||
bArmor.width = 42;
|
|
||||||
bArmor.x = 0;
|
|
||||||
bArmor.y = height - bArmor.height;
|
|
||||||
buttons.push_back(&bArmor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void IngameBlockSelectionScreen::removed()
|
void IngameBlockSelectionScreen::removed()
|
||||||
@@ -80,10 +89,10 @@ void IngameBlockSelectionScreen::renderSlots()
|
|||||||
|
|
||||||
blitOffset = -90;
|
blitOffset = -90;
|
||||||
|
|
||||||
//glEnable2(GL_RESCALE_NORMAL);
|
glEnable2(GL_RESCALE_NORMAL);
|
||||||
//glPushMatrix2();
|
//glPushMatrix2();
|
||||||
//glRotatef2(180, 1, 0, 0);
|
//glRotatef2(180, 1, 0, 0);
|
||||||
//Lighting::turnOn();
|
Lighting::turnOn(minecraft);
|
||||||
//glPopMatrix2();
|
//glPopMatrix2();
|
||||||
|
|
||||||
minecraft->textures->loadAndBindTexture("gui/gui.png");
|
minecraft->textures->loadAndBindTexture("gui/gui.png");
|
||||||
@@ -122,8 +131,8 @@ void IngameBlockSelectionScreen::renderSlots()
|
|||||||
//w.stop();
|
//w.stop();
|
||||||
//w.printEvery(1000, "render-blocksel");
|
//w.printEvery(1000, "render-blocksel");
|
||||||
|
|
||||||
//glDisable2(GL_RESCALE_NORMAL);
|
glDisable2(GL_RESCALE_NORMAL);
|
||||||
//Lighting::turnOn();
|
Lighting::turnOff();
|
||||||
}
|
}
|
||||||
|
|
||||||
int IngameBlockSelectionScreen::getSlotPosX(int slotX) {
|
int IngameBlockSelectionScreen::getSlotPosX(int slotX) {
|
||||||
@@ -248,7 +257,7 @@ void IngameBlockSelectionScreen::mouseClicked(int x, int y, int buttonNum)
|
|||||||
//minecraft->soundEngine->playUI("random.click", 1, 1);
|
//minecraft->soundEngine->playUI("random.click", 1, 1);
|
||||||
} else {
|
} else {
|
||||||
_pendingQuit = !_area.isInside((float)x, (float)y)
|
_pendingQuit = !_area.isInside((float)x, (float)y)
|
||||||
&& !bArmor.isInside(x, y);
|
&& !bArmor.isInside(x, y) && !bCrafting.isInside(x, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!_pendingQuit)
|
if (!_pendingQuit)
|
||||||
@@ -337,5 +346,8 @@ void IngameBlockSelectionScreen::buttonClicked( Button* button )
|
|||||||
if (button == &bArmor) {
|
if (button == &bArmor) {
|
||||||
minecraft->setScreen(new ArmorScreen());
|
minecraft->setScreen(new ArmorScreen());
|
||||||
}
|
}
|
||||||
|
if (button == &bCrafting) {
|
||||||
|
minecraft->setScreen(new WorkbenchScreen(Recipe::SIZE_2X2));
|
||||||
|
}
|
||||||
super::buttonClicked(button);
|
super::buttonClicked(button);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ private:
|
|||||||
bool _pendingQuit;
|
bool _pendingQuit;
|
||||||
|
|
||||||
Button bArmor;
|
Button bArmor;
|
||||||
|
Button bCrafting;
|
||||||
|
|
||||||
RectangleArea _area;
|
RectangleArea _area;
|
||||||
};
|
};
|
||||||
|
|||||||
107
src/client/gui/screens/InvalidLicenseScreen.h
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
#ifndef NET_MINECRAFT_CLIENT_GUI_SCREENS__InvalidLicenseScreen_H__
|
||||||
|
#define NET_MINECRAFT_CLIENT_GUI_SCREENS__InvalidLicenseScreen_H__
|
||||||
|
|
||||||
|
#include "../Screen.h"
|
||||||
|
#include "../components/Button.h"
|
||||||
|
#include "../../Minecraft.h"
|
||||||
|
#include "../../../LicenseCodes.h"
|
||||||
|
|
||||||
|
class InvalidLicenseScreen: public Screen
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
InvalidLicenseScreen(int id, bool hasBuyButton)
|
||||||
|
: _id(id),
|
||||||
|
_hasBuyButton(hasBuyButton),
|
||||||
|
_baseY(0),
|
||||||
|
bOk(0),
|
||||||
|
bBuy(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual ~InvalidLicenseScreen() {
|
||||||
|
delete bOk;
|
||||||
|
delete bBuy;
|
||||||
|
}
|
||||||
|
|
||||||
|
void init() {
|
||||||
|
if (minecraft->useTouchscreen()) {
|
||||||
|
bOk = new Touch::TButton(1, "Ok");
|
||||||
|
bBuy = new Touch::TButton(2, "Buy");
|
||||||
|
} else {
|
||||||
|
bOk = new Button(1, "Ok");
|
||||||
|
bBuy = new Button(2, "Buy");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_hasBuyButton)
|
||||||
|
bOk->msg = "Quit";
|
||||||
|
|
||||||
|
if (!LicenseCodes::isOk(_id)) {
|
||||||
|
char buf[20] = {0};
|
||||||
|
sprintf(buf, "%d", _id);
|
||||||
|
|
||||||
|
desc1 = "License verification failed (error ";
|
||||||
|
desc1 += buf;
|
||||||
|
desc1 += ")";
|
||||||
|
desc2 = "Try again later.";
|
||||||
|
hint = "You need to be connected to the internet\n";
|
||||||
|
hint += "once while you start the game.";
|
||||||
|
}
|
||||||
|
|
||||||
|
buttons.push_back(bOk);
|
||||||
|
tabButtons.push_back(bOk);
|
||||||
|
|
||||||
|
if (_hasBuyButton) {
|
||||||
|
buttons.push_back(bBuy);
|
||||||
|
tabButtons.push_back(bBuy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setupPositions() {
|
||||||
|
_baseY = height/5 + 6;
|
||||||
|
//if (_hasBuyButton)
|
||||||
|
_baseY -= 24;
|
||||||
|
|
||||||
|
bOk->width = bBuy->width = 200;
|
||||||
|
bOk->x = bBuy->x = (width - bOk->width) / 2;
|
||||||
|
bBuy->y = _baseY + 84;
|
||||||
|
bOk->y = bBuy->y + bBuy->height + 4;
|
||||||
|
|
||||||
|
if (!_hasBuyButton)
|
||||||
|
bOk->y -= 24;
|
||||||
|
}
|
||||||
|
|
||||||
|
void tick() {}
|
||||||
|
|
||||||
|
//void keyPressed(int eventKey) {}
|
||||||
|
|
||||||
|
void render(int xm, int ym, float a) {
|
||||||
|
renderDirtBackground(0);
|
||||||
|
drawCenteredString(minecraft->font, desc1, width/2, _baseY, 0xffffff);
|
||||||
|
drawCenteredString(minecraft->font, desc2, width/2, _baseY + 24, 0xffffff);
|
||||||
|
|
||||||
|
drawCenteredString(minecraft->font, hint, width/2, _baseY + 60, 0xffffff);
|
||||||
|
|
||||||
|
Screen::render(xm, ym, a);
|
||||||
|
}
|
||||||
|
|
||||||
|
void buttonClicked(Button* button) {
|
||||||
|
if (button->id == bOk->id) {
|
||||||
|
minecraft->quit();
|
||||||
|
}
|
||||||
|
if (button->id == bBuy->id) {
|
||||||
|
minecraft->platform()->buyGame();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
private:
|
||||||
|
int _id;
|
||||||
|
std::string desc1;
|
||||||
|
std::string desc2;
|
||||||
|
std::string hint;
|
||||||
|
|
||||||
|
Button* bOk;
|
||||||
|
Button* bBuy;
|
||||||
|
bool _hasBuyButton;
|
||||||
|
int _baseY;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*NET_MINECRAFT_CLIENT_GUI_SCREENS__InvalidLicenseScreen_H__*/
|
||||||
@@ -2,8 +2,8 @@
|
|||||||
#include "../Screen.h"
|
#include "../Screen.h"
|
||||||
#include "../components/Button.h"
|
#include "../components/Button.h"
|
||||||
#include "../../Minecraft.h"
|
#include "../../Minecraft.h"
|
||||||
#include "client/gui/components/ImageButton.h"
|
#include "../components/ImageButton.h"
|
||||||
#include "client/gui/components/TextBox.h"
|
#include "../components/TextBox.h"
|
||||||
|
|
||||||
class JoinByIPScreen: public Screen
|
class JoinByIPScreen: public Screen
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ OptionsScreen::OptionsScreen()
|
|||||||
}
|
}
|
||||||
|
|
||||||
OptionsScreen::~OptionsScreen() {
|
OptionsScreen::~OptionsScreen() {
|
||||||
|
|
||||||
if (btnClose != NULL) {
|
if (btnClose != NULL) {
|
||||||
delete btnClose;
|
delete btnClose;
|
||||||
btnClose = NULL;
|
btnClose = NULL;
|
||||||
@@ -53,7 +52,6 @@ OptionsScreen::~OptionsScreen() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void OptionsScreen::init() {
|
void OptionsScreen::init() {
|
||||||
|
|
||||||
bHeader = new Touch::THeader(0, "Options");
|
bHeader = new Touch::THeader(0, "Options");
|
||||||
|
|
||||||
btnClose = new ImageButton(1, "");
|
btnClose = new ImageButton(1, "");
|
||||||
@@ -89,7 +87,6 @@ void OptionsScreen::init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void OptionsScreen::setupPositions() {
|
void OptionsScreen::setupPositions() {
|
||||||
|
|
||||||
int buttonHeight = btnClose->height;
|
int buttonHeight = btnClose->height;
|
||||||
|
|
||||||
btnClose->x = width - btnClose->width;
|
btnClose->x = width - btnClose->width;
|
||||||
@@ -124,6 +121,7 @@ void OptionsScreen::setupPositions() {
|
|||||||
(*it)->x = categoryButtons[0]->width;
|
(*it)->x = categoryButtons[0]->width;
|
||||||
(*it)->y = bHeader->height;
|
(*it)->y = bHeader->height;
|
||||||
(*it)->width = width - categoryButtons[0]->width;
|
(*it)->width = width - categoryButtons[0]->width;
|
||||||
|
(*it)->height = height - bHeader->height;
|
||||||
|
|
||||||
(*it)->setupPositions();
|
(*it)->setupPositions();
|
||||||
}
|
}
|
||||||
@@ -134,7 +132,6 @@ void OptionsScreen::setupPositions() {
|
|||||||
|
|
||||||
|
|
||||||
void OptionsScreen::render(int xm, int ym, float a) {
|
void OptionsScreen::render(int xm, int ym, float a) {
|
||||||
|
|
||||||
renderBackground();
|
renderBackground();
|
||||||
|
|
||||||
int xmm = xm * width / minecraft->width;
|
int xmm = xm * width / minecraft->width;
|
||||||
@@ -150,10 +147,13 @@ void OptionsScreen::removed() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void OptionsScreen::buttonClicked(Button* button) {
|
void OptionsScreen::buttonClicked(Button* button) {
|
||||||
|
|
||||||
if (button == btnClose) {
|
if (button == btnClose) {
|
||||||
minecraft->options.save();
|
minecraft->options.save();
|
||||||
minecraft->screenChooser.setScreen(SCREEN_STARTMENU);
|
if (minecraft->screen != NULL) {
|
||||||
|
minecraft->setScreen(NULL);
|
||||||
|
} else {
|
||||||
|
minecraft->screenChooser.setScreen(SCREEN_STARTMENU);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (button->id > 1 && button->id < 7) {
|
else if (button->id > 1 && button->id < 7) {
|
||||||
int categoryButton = button->id - categoryButtons[0]->id;
|
int categoryButton = button->id - categoryButtons[0]->id;
|
||||||
@@ -165,7 +165,6 @@ void OptionsScreen::buttonClicked(Button* button) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void OptionsScreen::selectCategory(int index) {
|
void OptionsScreen::selectCategory(int index) {
|
||||||
|
|
||||||
int currentIndex = 0;
|
int currentIndex = 0;
|
||||||
|
|
||||||
for (std::vector<Touch::TButton*>::iterator it = categoryButtons.begin(); it != categoryButtons.end(); ++it) {
|
for (std::vector<Touch::TButton*>::iterator it = categoryButtons.begin(); it != categoryButtons.end(); ++it) {
|
||||||
@@ -199,6 +198,7 @@ void OptionsScreen::generateOptionScreens() {
|
|||||||
optionPanes[1]->addOptionItem(OPTIONS_DIFFICULTY, minecraft)
|
optionPanes[1]->addOptionItem(OPTIONS_DIFFICULTY, minecraft)
|
||||||
.addOptionItem(OPTIONS_SERVER_VISIBLE, minecraft)
|
.addOptionItem(OPTIONS_SERVER_VISIBLE, minecraft)
|
||||||
.addOptionItem(OPTIONS_THIRD_PERSON_VIEW, minecraft)
|
.addOptionItem(OPTIONS_THIRD_PERSON_VIEW, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_WINDOW_SCALE, minecraft)
|
||||||
.addOptionItem(OPTIONS_GUI_SCALE, minecraft)
|
.addOptionItem(OPTIONS_GUI_SCALE, minecraft)
|
||||||
.addOptionItem(OPTIONS_SENSITIVITY, minecraft)
|
.addOptionItem(OPTIONS_SENSITIVITY, minecraft)
|
||||||
.addOptionItem(OPTIONS_MUSIC_VOLUME, minecraft)
|
.addOptionItem(OPTIONS_MUSIC_VOLUME, minecraft)
|
||||||
@@ -209,7 +209,10 @@ void OptionsScreen::generateOptionScreens() {
|
|||||||
|
|
||||||
// // Controls Pane
|
// // Controls Pane
|
||||||
optionPanes[2]->addOptionItem(OPTIONS_INVERT_Y_MOUSE, minecraft)
|
optionPanes[2]->addOptionItem(OPTIONS_INVERT_Y_MOUSE, minecraft)
|
||||||
.addOptionItem(OPTIONS_USE_TOUCHSCREEN, minecraft);
|
.addOptionItem(OPTIONS_USE_TOUCHSCREEN, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_AUTOJUMP, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_BLOCK_OUTLINE, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_IS_JOY_TOUCH_AREA, minecraft);
|
||||||
|
|
||||||
for (int i = OPTIONS_KEY_FORWARD; i <= OPTIONS_KEY_USE; i++) {
|
for (int i = OPTIONS_KEY_FORWARD; i <= OPTIONS_KEY_USE; i++) {
|
||||||
optionPanes[2]->addOptionItem((OptionId)i, minecraft);
|
optionPanes[2]->addOptionItem((OptionId)i, minecraft);
|
||||||
@@ -217,20 +220,37 @@ void OptionsScreen::generateOptionScreens() {
|
|||||||
|
|
||||||
// // Graphics Pane
|
// // Graphics Pane
|
||||||
optionPanes[3]->addOptionItem(OPTIONS_FANCY_GRAPHICS, minecraft)
|
optionPanes[3]->addOptionItem(OPTIONS_FANCY_GRAPHICS, minecraft)
|
||||||
|
// .addOptionItem(&Option::VIEW_BOBBING, minecraft)
|
||||||
|
// .addOptionItem(&Option::AMBIENT_OCCLUSION, minecraft)
|
||||||
|
// .addOptionItem(&Option::ANAGLYPH, minecraft)
|
||||||
.addOptionItem(OPTIONS_LIMIT_FRAMERATE, minecraft)
|
.addOptionItem(OPTIONS_LIMIT_FRAMERATE, minecraft)
|
||||||
.addOptionItem(OPTIONS_VSYNC, minecraft)
|
.addOptionItem(OPTIONS_VSYNC, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_VIEW_DISTANCE, minecraft)
|
||||||
.addOptionItem(OPTIONS_RENDER_DEBUG, minecraft)
|
.addOptionItem(OPTIONS_RENDER_DEBUG, minecraft)
|
||||||
.addOptionItem(OPTIONS_ANAGLYPH_3D, minecraft)
|
.addOptionItem(OPTIONS_ANAGLYPH_3D, minecraft)
|
||||||
.addOptionItem(OPTIONS_VIEW_BOBBING, minecraft)
|
.addOptionItem(OPTIONS_VIEW_BOBBING, minecraft)
|
||||||
.addOptionItem(OPTIONS_AMBIENT_OCCLUSION, minecraft);
|
.addOptionItem(OPTIONS_AMBIENT_OCCLUSION, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_NORMAL_LIGHTING, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_BEAUTIFUL_SKY, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_VIGNETTE, minecraft);
|
||||||
|
|
||||||
optionPanes[4]->addOptionItem(OPTIONS_ALLOW_SPRINT, minecraft)
|
optionPanes[4]->addOptionItem(OPTIONS_ALLOW_SPRINT, minecraft)
|
||||||
.addOptionItem(OPTIONS_BAR_ON_TOP, minecraft)
|
.addOptionItem(OPTIONS_BAR_ON_TOP, minecraft)
|
||||||
.addOptionItem(OPTIONS_RPI_CURSOR, minecraft);
|
.addOptionItem(OPTIONS_MENU_STYLE, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_RPI_CURSOR, minecraft)
|
||||||
|
#ifndef __APPLE__
|
||||||
|
.addOptionItem(OPTIONS_FOLIAGE_TINT, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_TINTED_SIDE, minecraft)
|
||||||
|
#endif
|
||||||
|
.addOptionItem(OPTIONS_JAVA_HUD, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_FOG_TYPE, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_BETA_SKY, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_RESTORED_ANIMS, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_DEBUG_STYLE, minecraft);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OptionsScreen::mouseClicked(int x, int y, int buttonNum) {
|
void OptionsScreen::mouseClicked(int x, int y, int buttonNum) {
|
||||||
|
|
||||||
if (currentOptionsGroup != NULL)
|
if (currentOptionsGroup != NULL)
|
||||||
currentOptionsGroup->mouseClicked(minecraft, x, y, buttonNum);
|
currentOptionsGroup->mouseClicked(minecraft, x, y, buttonNum);
|
||||||
|
|
||||||
@@ -238,13 +258,18 @@ void OptionsScreen::mouseClicked(int x, int y, int buttonNum) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void OptionsScreen::mouseReleased(int x, int y, int buttonNum) {
|
void OptionsScreen::mouseReleased(int x, int y, int buttonNum) {
|
||||||
|
|
||||||
if (currentOptionsGroup != NULL)
|
if (currentOptionsGroup != NULL)
|
||||||
currentOptionsGroup->mouseReleased(minecraft, x, y, buttonNum);
|
currentOptionsGroup->mouseReleased(minecraft, x, y, buttonNum);
|
||||||
|
|
||||||
super::mouseReleased(x, y, buttonNum);
|
super::mouseReleased(x, y, buttonNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OptionsScreen::mouseWheel(int dx, int dy, int xm, int ym) {
|
||||||
|
if (currentOptionsGroup != NULL && currentOptionsGroup->pointInside(xm, ym) && dy != 0) {
|
||||||
|
currentOptionsGroup->scrollByPixels((float)dy * 18.0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void OptionsScreen::keyPressed(int eventKey) {
|
void OptionsScreen::keyPressed(int eventKey) {
|
||||||
if (currentOptionsGroup != NULL)
|
if (currentOptionsGroup != NULL)
|
||||||
currentOptionsGroup->keyPressed(minecraft, eventKey);
|
currentOptionsGroup->keyPressed(minecraft, eventKey);
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ public:
|
|||||||
|
|
||||||
virtual void mouseClicked(int x, int y, int buttonNum);
|
virtual void mouseClicked(int x, int y, int buttonNum);
|
||||||
virtual void mouseReleased(int x, int y, int buttonNum);
|
virtual void mouseReleased(int x, int y, int buttonNum);
|
||||||
|
virtual void mouseWheel(int dx, int dy, int xm, int ym);
|
||||||
virtual void keyPressed(int eventKey);
|
virtual void keyPressed(int eventKey);
|
||||||
virtual void charPressed(char inputChar);
|
virtual void charPressed(char inputChar);
|
||||||
|
|
||||||
|
|||||||
@@ -5,19 +5,23 @@
|
|||||||
#include "../../../util/Mth.h"
|
#include "../../../util/Mth.h"
|
||||||
#include "../../../network/RakNetInstance.h"
|
#include "../../../network/RakNetInstance.h"
|
||||||
#include "../../../network/ServerSideNetworkHandler.h"
|
#include "../../../network/ServerSideNetworkHandler.h"
|
||||||
|
#include "client/Options.h"
|
||||||
|
#include "client/gui/components/Button.h"
|
||||||
|
#include "client/gui/screens/OptionsScreen.h"
|
||||||
|
|
||||||
PauseScreen::PauseScreen(bool wasBackPaused)
|
PauseScreen::PauseScreen(bool wasBackPaused)
|
||||||
: saveStep(0),
|
: saveStep(0),
|
||||||
visibleTime(0),
|
visibleTime(0),
|
||||||
bContinue(0),
|
bContinue(0),
|
||||||
bQuit(0),
|
bQuit(0),
|
||||||
|
bOptions(0),
|
||||||
bQuitAndSaveLocally(0),
|
bQuitAndSaveLocally(0),
|
||||||
bServerVisibility(0),
|
bServerVisibility(0),
|
||||||
// bThirdPerson(0),
|
// bThirdPerson(0),
|
||||||
wasBackPaused(wasBackPaused),
|
wasBackPaused(wasBackPaused),
|
||||||
// bSound(OPTIONS_SOUND_VOLUME, 1, 0),
|
// bSound(OPTIONS_SOUND_VOLUME, 1, 0),
|
||||||
bThirdPerson(OPTIONS_THIRD_PERSON_VIEW),
|
bThirdPerson(OPTIONS_THIRD_PERSON_VIEW),
|
||||||
bHideGui(OPTIONS_HIDEGUI)
|
bHideGui(OPTIONS_HIDEGUI)
|
||||||
{
|
{
|
||||||
ImageDef def;
|
ImageDef def;
|
||||||
def.setSrc(IntRectangle(160, 144, 39, 31));
|
def.setSrc(IntRectangle(160, 144, 39, 31));
|
||||||
@@ -30,7 +34,7 @@ PauseScreen::PauseScreen(bool wasBackPaused)
|
|||||||
// bSound.setImageDef(def, true);
|
// bSound.setImageDef(def, true);
|
||||||
defSrc.y += defSrc.h;
|
defSrc.y += defSrc.h;
|
||||||
bThirdPerson.setImageDef(def, true);
|
bThirdPerson.setImageDef(def, true);
|
||||||
bHideGui.setImageDef(def, true);
|
bHideGui.setImageDef(def, true);
|
||||||
//void setImageDef(ImageDef& imageDef, bool setButtonSize);
|
//void setImageDef(ImageDef& imageDef, bool setButtonSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -39,38 +43,48 @@ PauseScreen::~PauseScreen() {
|
|||||||
delete bQuit;
|
delete bQuit;
|
||||||
delete bQuitAndSaveLocally;
|
delete bQuitAndSaveLocally;
|
||||||
delete bServerVisibility;
|
delete bServerVisibility;
|
||||||
// delete bThirdPerson;
|
delete bOptions;
|
||||||
|
// delete bThirdPerson;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PauseScreen::init() {
|
void PauseScreen::init() {
|
||||||
if (minecraft->useTouchscreen()) {
|
if (minecraft->options.getIntValue(OPTIONS_MENU_STYLE) == 0) {
|
||||||
bContinue = new Touch::TButton(1, "Back to game");
|
bContinue = new Touch::TButton(1, "Back to game");
|
||||||
|
bOptions = new Touch::TButton(5, "Options");
|
||||||
bQuit = new Touch::TButton(2, "Quit to title");
|
bQuit = new Touch::TButton(2, "Quit to title");
|
||||||
bQuitAndSaveLocally = new Touch::TButton(3, "Quit and copy map");
|
bQuitAndSaveLocally = new Touch::TButton(3, "Quit and copy map");
|
||||||
bServerVisibility = new Touch::TButton(4, "");
|
bServerVisibility = new Touch::TButton(4, "");
|
||||||
// bThirdPerson = new Touch::TButton(5, "Toggle 3:rd person view");
|
// bThirdPerson = new Touch::TButton(5, "Toggle 3:rd person view");
|
||||||
} else {
|
} else if (minecraft->options.getIntValue(OPTIONS_MENU_STYLE) == 1) {
|
||||||
bContinue = new Button(1, "Back to game");
|
bContinue = new Button(1, "Back to game");
|
||||||
|
bOptions = new Button(5, "Options");
|
||||||
bQuit = new Button(2, "Quit to title");
|
bQuit = new Button(2, "Quit to title");
|
||||||
bQuitAndSaveLocally = new Button(3, "Quit and copy map");
|
bQuitAndSaveLocally = new Button(3, "Quit and copy map");
|
||||||
bServerVisibility = new Button(4, "");
|
bServerVisibility = new Button(4, "");
|
||||||
// bThirdPerson = new Button(5, "Toggle 3:rd person view");
|
// bThirdPerson = new Button(5, "Toggle 3:rd person view");
|
||||||
|
} else {
|
||||||
|
bContinue = new Button(1, 0, 0, 200, 20, "Back to game");
|
||||||
|
bServerVisibility = new Button(4, 0, 0, 200, 20, "");
|
||||||
|
bOptions = new Button(5, 0, 0, 200, 20, "Options...");
|
||||||
|
bQuit = new Button(2, 0, 0, 200, 20, "Save and quit to title");
|
||||||
|
bQuitAndSaveLocally = new Button(3, 0, 0, 200, 20, "Copy and quit map");
|
||||||
|
// bThirdPerson = new Button(5, "Toggle 3:rd person view");
|
||||||
}
|
}
|
||||||
|
|
||||||
buttons.push_back(bContinue);
|
buttons.push_back(bContinue);
|
||||||
buttons.push_back(bQuit);
|
buttons.push_back(bQuit);
|
||||||
|
buttons.push_back(bOptions);
|
||||||
// bSound.updateImage(&minecraft->options);
|
// bSound.updateImage(&minecraft->options);
|
||||||
bThirdPerson.updateImage(&minecraft->options);
|
bThirdPerson.updateImage(&minecraft->options);
|
||||||
bHideGui.updateImage(&minecraft->options);
|
bHideGui.updateImage(&minecraft->options);
|
||||||
// buttons.push_back(&bSound);
|
// buttons.push_back(&bSound);
|
||||||
buttons.push_back(&bThirdPerson);
|
buttons.push_back(&bThirdPerson);
|
||||||
//buttons.push_back(&bHideGui);
|
//buttons.push_back(&bHideGui);
|
||||||
|
|
||||||
// If Back wasn't pressed, set up additional items (more than Quit to menu
|
// If Back wasn't pressed, set up additional items (more than Quit to menu
|
||||||
// and Back to game) here
|
// and Back to game) here
|
||||||
|
|
||||||
#if !defined(APPLE_DEMO_PROMOTION) && !defined(RPI)
|
#if !defined(APPLE_DEMO_PROMOTION) && !defined(RPI)
|
||||||
if (true || !wasBackPaused) {
|
if (true || !wasBackPaused) {
|
||||||
if (minecraft->raknetInstance) {
|
if (minecraft->raknetInstance) {
|
||||||
if (minecraft->raknetInstance->isServer()) {
|
if (minecraft->raknetInstance->isServer()) {
|
||||||
@@ -78,14 +92,14 @@ void PauseScreen::init() {
|
|||||||
buttons.push_back(bServerVisibility);
|
buttons.push_back(bServerVisibility);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
#if !defined(DEMO_MODE)
|
#if !defined(DEMO_MODE)
|
||||||
buttons.push_back(bQuitAndSaveLocally);
|
buttons.push_back(bQuitAndSaveLocally);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
// buttons.push_back(bThirdPerson);
|
// buttons.push_back(bThirdPerson);
|
||||||
|
|
||||||
for (unsigned int i = 0; i < buttons.size(); ++i) {
|
for (unsigned int i = 0; i < buttons.size(); ++i) {
|
||||||
// if (buttons[i] == &bSound) continue;
|
// if (buttons[i] == &bSound) continue;
|
||||||
@@ -96,24 +110,48 @@ void PauseScreen::init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PauseScreen::setupPositions() {
|
void PauseScreen::setupPositions() {
|
||||||
saveStep = 0;
|
saveStep = 0;
|
||||||
int yBase = 16;
|
int yBase = 16;
|
||||||
|
if (minecraft->options.getIntValue(OPTIONS_MENU_STYLE) == 2){
|
||||||
|
yBase = 50;
|
||||||
|
|
||||||
bContinue->width = bQuit->width = /*bThirdPerson->w =*/ 160;
|
bContinue->width = bOptions->width = bQuit->width = /*bThirdPerson->w =*/ 200;
|
||||||
bQuitAndSaveLocally->width = bServerVisibility->width = 160;
|
bQuitAndSaveLocally->width = bServerVisibility->width = 200;
|
||||||
|
|
||||||
bContinue->x = (width - bContinue->width) / 2;
|
bContinue->x = (width - bContinue->width) / 2;
|
||||||
bContinue->y = yBase + 32 * 1;
|
bContinue->y = yBase + 24 * 1;
|
||||||
|
|
||||||
bQuit->x = (width - bQuit->width) / 2;
|
bQuitAndSaveLocally->x = bServerVisibility->x = (width - bQuitAndSaveLocally->width) / 2;
|
||||||
bQuit->y = yBase + 32 * 2;
|
bQuitAndSaveLocally->y = bServerVisibility->y = yBase + 24 * 2;
|
||||||
|
|
||||||
|
bOptions->x = (width - bOptions->width) / 2;
|
||||||
|
bOptions->y = yBase + 24 * 3 + 24;
|
||||||
|
|
||||||
|
bQuit->x = (width - bQuit->width) / 2;
|
||||||
|
bQuit->y = yBase + 24 * 4 + 24;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
bContinue->width = bOptions->width = bQuit->width = /*bThirdPerson->w =*/ 160;
|
||||||
|
bQuitAndSaveLocally->width = bServerVisibility->width = 160;
|
||||||
|
|
||||||
|
bContinue->x = (width - bContinue->width) / 2;
|
||||||
|
bContinue->y = yBase + 32 * 1;
|
||||||
|
|
||||||
|
bOptions->x = (width - bOptions->width) / 2;
|
||||||
|
bOptions->y = yBase + 32 * 2;
|
||||||
|
|
||||||
|
bQuit->x = (width - bQuit->width) / 2;
|
||||||
|
bQuit->y = yBase + 32 * 3;
|
||||||
|
|
||||||
#if APPLE_DEMO_PROMOTION
|
#if APPLE_DEMO_PROMOTION
|
||||||
bQuit->y += 16;
|
bQuit->y += 16;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bQuitAndSaveLocally->x = bServerVisibility->x = (width - bQuitAndSaveLocally->width) / 2;
|
bQuitAndSaveLocally->x = bServerVisibility->x = (width - bQuitAndSaveLocally->width) / 2;
|
||||||
bQuitAndSaveLocally->y = bServerVisibility->y = yBase + 32 * 3;
|
bQuitAndSaveLocally->y = bServerVisibility->y = yBase + 32 * 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// bSound.y = bThirdPerson.y = 8;
|
// bSound.y = bThirdPerson.y = 8;
|
||||||
// bSound.x = 4;
|
// bSound.x = 4;
|
||||||
@@ -151,13 +189,15 @@ void PauseScreen::buttonClicked(Button* button) {
|
|||||||
minecraft->setScreen(NULL);
|
minecraft->setScreen(NULL);
|
||||||
//minecraft->grabMouse();
|
//minecraft->grabMouse();
|
||||||
}
|
}
|
||||||
if (button->id == bQuit->id) {
|
if (button->id == bQuit->id) {
|
||||||
minecraft->leaveGame();
|
minecraft->leaveGame();
|
||||||
}
|
}
|
||||||
if (button->id == bQuitAndSaveLocally->id) {
|
if (button->id == bQuitAndSaveLocally->id) {
|
||||||
minecraft->leaveGame(true);
|
minecraft->leaveGame(true);
|
||||||
}
|
}
|
||||||
|
if (button->id == bOptions->id) {
|
||||||
|
minecraft->setScreen(new OptionsScreen());
|
||||||
|
}
|
||||||
if (button->id == bServerVisibility->id) {
|
if (button->id == bServerVisibility->id) {
|
||||||
if (minecraft->raknetInstance && minecraft->netCallback && minecraft->raknetInstance->isServer()) {
|
if (minecraft->raknetInstance && minecraft->netCallback && minecraft->raknetInstance->isServer()) {
|
||||||
ServerSideNetworkHandler* ss = (ServerSideNetworkHandler*) minecraft->netCallback;
|
ServerSideNetworkHandler* ss = (ServerSideNetworkHandler*) minecraft->netCallback;
|
||||||
@@ -185,5 +225,5 @@ void PauseScreen::updateServerVisibilityText()
|
|||||||
ServerSideNetworkHandler* ss = (ServerSideNetworkHandler*) minecraft->netCallback;
|
ServerSideNetworkHandler* ss = (ServerSideNetworkHandler*) minecraft->netCallback;
|
||||||
bServerVisibility->msg = ss->allowsIncomingConnections()?
|
bServerVisibility->msg = ss->allowsIncomingConnections()?
|
||||||
"Server is visible"
|
"Server is visible"
|
||||||
: "Server is invisible";
|
: "Server is invisible";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,9 @@ private:
|
|||||||
Button* bQuit;
|
Button* bQuit;
|
||||||
Button* bQuitAndSaveLocally;
|
Button* bQuitAndSaveLocally;
|
||||||
Button* bServerVisibility;
|
Button* bServerVisibility;
|
||||||
// Button* bThirdPerson;
|
Button* bOptions;
|
||||||
|
|
||||||
|
// Button* bThirdPerson;
|
||||||
|
|
||||||
// OptionButton bSound;
|
// OptionButton bSound;
|
||||||
OptionButton bThirdPerson;
|
OptionButton bThirdPerson;
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ public:
|
|||||||
void render(int xm, int ym, float a);
|
void render(int xm, int ym, float a);
|
||||||
bool isInGameScreen();
|
bool isInGameScreen();
|
||||||
|
|
||||||
|
virtual void keyPressed(int eventKey) {}
|
||||||
|
|
||||||
void tick();
|
void tick();
|
||||||
private:
|
private:
|
||||||
int ticks;
|
int ticks;
|
||||||
|
|||||||
@@ -14,14 +14,14 @@
|
|||||||
|
|
||||||
#include "../../Minecraft.h"
|
#include "../../Minecraft.h"
|
||||||
|
|
||||||
#include <client/gui/screens/UsernameScreen.h>
|
#include "UsernameScreen.h"
|
||||||
|
|
||||||
Screen* ScreenChooser::createScreen( ScreenId id )
|
Screen* ScreenChooser::createScreen( ScreenId id )
|
||||||
{
|
{
|
||||||
Screen* screen = NULL;
|
Screen* screen = NULL;
|
||||||
|
|
||||||
// :sob:
|
// :sob:
|
||||||
if (_mc->useTouchscreen()) {
|
if (_mc->options.getIntValue(OPTIONS_MENU_STYLE) == 0) {
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case SCREEN_STARTMENU: screen = new Touch::StartMenuScreen(); break;
|
case SCREEN_STARTMENU: screen = new Touch::StartMenuScreen(); break;
|
||||||
case SCREEN_SELECTWORLD: screen = new Touch::SelectWorldScreen();break;
|
case SCREEN_SELECTWORLD: screen = new Touch::SelectWorldScreen();break;
|
||||||
|
|||||||
@@ -8,13 +8,14 @@
|
|||||||
#include "../../../platform/time.h"
|
#include "../../../platform/time.h"
|
||||||
#include "../../../platform/input/Keyboard.h"
|
#include "../../../platform/input/Keyboard.h"
|
||||||
#include "../../../platform/log.h"
|
#include "../../../platform/log.h"
|
||||||
|
#include <locale/I18n.h>
|
||||||
|
|
||||||
SimpleChooseLevelScreen::SimpleChooseLevelScreen(const std::string& levelName)
|
SimpleChooseLevelScreen::SimpleChooseLevelScreen(const std::string& levelName)
|
||||||
: bHeader(0),
|
: bHeader(nullptr),
|
||||||
bGamemode(0),
|
bGamemode(nullptr),
|
||||||
bCheats(0),
|
bCheats(nullptr),
|
||||||
bBack(0),
|
bBack(nullptr),
|
||||||
bCreate(0),
|
bCreate(nullptr),
|
||||||
levelName(levelName),
|
levelName(levelName),
|
||||||
hasChosen(false),
|
hasChosen(false),
|
||||||
gamemode(GameType::Survival),
|
gamemode(GameType::Survival),
|
||||||
@@ -42,10 +43,10 @@ void SimpleChooseLevelScreen::init()
|
|||||||
// first") when the name already existed.
|
// first") when the name already existed.
|
||||||
ChooseLevelScreen::init();
|
ChooseLevelScreen::init();
|
||||||
|
|
||||||
tLevelName.text = "New world";
|
tLevelName.text = I18n::get("selectWorld.newWorld");
|
||||||
|
|
||||||
// header + close button
|
// header + close button
|
||||||
bHeader = new Touch::THeader(0, "Create World");
|
bHeader = new Touch::THeader(0, I18n::get("selectWorld.create"));
|
||||||
// create the back/X button as ImageButton like CreditsScreen
|
// create the back/X button as ImageButton like CreditsScreen
|
||||||
bBack = new ImageButton(2, "");
|
bBack = new ImageButton(2, "");
|
||||||
{
|
{
|
||||||
@@ -56,14 +57,14 @@ void SimpleChooseLevelScreen::init()
|
|||||||
def.setSrc(IntRectangle(150, 0, (int)def.width, (int)def.height));
|
def.setSrc(IntRectangle(150, 0, (int)def.width, (int)def.height));
|
||||||
bBack->setImageDef(def, true);
|
bBack->setImageDef(def, true);
|
||||||
}
|
}
|
||||||
if (minecraft->useTouchscreen()) {
|
if (minecraft->options.getIntValue(OPTIONS_MENU_STYLE) != 2) {
|
||||||
bGamemode = new Touch::TButton(1, "Survival mode");
|
bGamemode = new Touch::TButton(1, I18n::get("selectWorld.gameMode.survival"));
|
||||||
bCheats = new Touch::TButton(4, "Cheats: Off");
|
bCheats = new Touch::TButton(4, "Cheats: Off");
|
||||||
bCreate = new Touch::TButton(3, "Create");
|
bCreate = new Touch::TButton(3, I18n::get("selectWorld.create"));
|
||||||
} else {
|
} else {
|
||||||
bGamemode = new Button(1, "Survival mode");
|
bGamemode = new Button(1, I18n::get("selectWorld.gameMode.survival"));
|
||||||
bCheats = new Button(4, "Cheats: Off");
|
bCheats = new Button(4, "Cheats: Off");
|
||||||
bCreate = new Button(3, "Create");
|
bCreate = new Button(3, I18n::get("Create"));
|
||||||
}
|
}
|
||||||
|
|
||||||
buttons.push_back(bHeader);
|
buttons.push_back(bHeader);
|
||||||
|
|||||||
@@ -23,49 +23,62 @@
|
|||||||
|
|
||||||
// Some kind of default settings, might be overridden in ::init
|
// Some kind of default settings, might be overridden in ::init
|
||||||
StartMenuScreen::StartMenuScreen()
|
StartMenuScreen::StartMenuScreen()
|
||||||
: bHost( 2, 0, 0, 160, 24, "Start Game"),
|
|
||||||
bJoin( 3, 0, 0, 160, 24, "Join Game"),
|
|
||||||
bOptions( 4, 0, 0, 160, 24, "Options"),
|
|
||||||
bQuit( 5, "")
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
StartMenuScreen::~StartMenuScreen()
|
StartMenuScreen::~StartMenuScreen()
|
||||||
{
|
{
|
||||||
|
delete bHost;
|
||||||
|
delete bJoin;
|
||||||
|
delete bOptions;
|
||||||
|
delete bQuit;
|
||||||
}
|
}
|
||||||
|
|
||||||
void StartMenuScreen::init()
|
void StartMenuScreen::init()
|
||||||
{
|
{
|
||||||
bJoin.active = bHost.active = bOptions.active = true;
|
if (minecraft->options.getIntValue(OPTIONS_MENU_STYLE) == 2){
|
||||||
|
bHost = new Button( 2, 0, 0, 200, 20, "Singleplayer");
|
||||||
|
bJoin = new Button( 3, 0, 0, 200, 20, "Multiplayer");
|
||||||
|
bOptions = new Button( 4, 0, 0, 200, 20, "Options...");
|
||||||
|
bQuit = new Button( 5, 0, 0, 200, 20, "Ouit Game");
|
||||||
|
} else {
|
||||||
|
bHost = new Button( 2, 0, 0, 160, 24, "Start Game");
|
||||||
|
bJoin = new Button( 3, 0, 0, 160, 24, "Join Game");
|
||||||
|
bOptions = new Button( 4, 0, 0, 160, 24, "Options");
|
||||||
|
bQuit = new Button( 5, 0, 0, 160, 24, "Ouit Game");
|
||||||
|
}
|
||||||
|
bJoin->active = bHost->active = bOptions->active = true;
|
||||||
|
|
||||||
if (minecraft->options.getStringValue(OPTIONS_USERNAME).empty()) {
|
if (minecraft->options.getStringValue(OPTIONS_USERNAME).empty()) {
|
||||||
return; // tick() will redirect to UsernameScreen
|
return; // tick() will redirect to UsernameScreen
|
||||||
}
|
}
|
||||||
|
|
||||||
buttons.push_back(&bHost);
|
buttons.push_back(bHost);
|
||||||
buttons.push_back(&bJoin);
|
buttons.push_back(bJoin);
|
||||||
//buttons.push_back(&bTest);
|
//buttons.push_back(&bTest);
|
||||||
|
buttons.push_back(bQuit);
|
||||||
|
|
||||||
tabButtons.push_back(&bHost);
|
tabButtons.push_back(bHost);
|
||||||
tabButtons.push_back(&bJoin);
|
tabButtons.push_back(bJoin);
|
||||||
|
tabButtons.push_back(bQuit);
|
||||||
|
|
||||||
#ifndef RPI
|
#ifndef RPI
|
||||||
buttons.push_back(&bOptions);
|
buttons.push_back(bOptions);
|
||||||
tabButtons.push_back(&bOptions);
|
tabButtons.push_back(bOptions);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// add quit button (top right X icon) – match OptionsScreen style
|
//// add quit button (top right X icon) – match OptionsScreen style
|
||||||
{
|
//{
|
||||||
ImageDef def;
|
// ImageDef def;
|
||||||
def.name = "gui/touchgui.png";
|
// def.name = "gui/touchgui.png";
|
||||||
def.width = 34;
|
// def.width = 34;
|
||||||
def.height = 26;
|
// def.height = 26;
|
||||||
def.setSrc(IntRectangle(150, 0, (int)def.width, (int)def.height));
|
// def.setSrc(IntRectangle(150, 0, (int)def.width, (int)def.height));
|
||||||
bQuit.setImageDef(def, true);
|
// bQuit.setImageDef(def, true);
|
||||||
bQuit.scaleWhenPressed = false;
|
// bQuit.scaleWhenPressed = false;
|
||||||
buttons.push_back(&bQuit);
|
// buttons.push_back(&bQuit);
|
||||||
// don't include in tab navigation
|
// // don't include in tab navigation
|
||||||
}
|
//}
|
||||||
|
|
||||||
copyright = "\xffMojang AB";//. Do not distribute!";
|
copyright = "\xffMojang AB";//. Do not distribute!";
|
||||||
|
|
||||||
@@ -93,20 +106,30 @@ void StartMenuScreen::init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void StartMenuScreen::setupPositions() {
|
void StartMenuScreen::setupPositions() {
|
||||||
int yBase = height / 2;
|
if (minecraft->options.getIntValue(OPTIONS_MENU_STYLE) == 2){
|
||||||
|
int yBase = (height / 2) - 20;
|
||||||
|
|
||||||
bHost.y = yBase;
|
bHost->y = yBase;
|
||||||
bJoin.y = bHost.y + 24 + 4;
|
bJoin->y = bHost->y + 24;
|
||||||
bOptions.y = bJoin.y + 24 + 4;
|
bOptions->y = bJoin->y + 24;
|
||||||
|
bQuit->y = bOptions->y + 24;
|
||||||
|
} else {
|
||||||
|
int yBase = height / 2;
|
||||||
|
bHost->y = yBase;
|
||||||
|
bJoin->y = bHost->y + 24 + 4;
|
||||||
|
bOptions->y = bJoin->y + 24 + 4;
|
||||||
|
bQuit->y = bOptions->y + 24 + 4;
|
||||||
|
}
|
||||||
|
|
||||||
// Center buttons
|
// Center buttons
|
||||||
bHost.x = (width - bHost.width) / 2;
|
bHost->x = (width - bHost->width) / 2;
|
||||||
bJoin.x = (width - bJoin.width) / 2;
|
bJoin->x = (width - bJoin->width) / 2;
|
||||||
bOptions.x = (width - bOptions.width) / 2;
|
bOptions->x = (width - bOptions->width) / 2;
|
||||||
|
bQuit->x = (width - bQuit->width) / 2;
|
||||||
|
|
||||||
// position quit icon at top-right (use image-defined size)
|
//// position quit icon at top-right (use image-defined size)
|
||||||
bQuit.x = width - bQuit.width;
|
//bQuit.x = width - bQuit.width;
|
||||||
bQuit.y = 0;
|
//bQuit.y = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void StartMenuScreen::tick() {
|
void StartMenuScreen::tick() {
|
||||||
@@ -114,7 +137,7 @@ void StartMenuScreen::tick() {
|
|||||||
|
|
||||||
void StartMenuScreen::buttonClicked(Button* button) {
|
void StartMenuScreen::buttonClicked(Button* button) {
|
||||||
|
|
||||||
if (button->id == bHost.id)
|
if (button->id == bHost->id)
|
||||||
{
|
{
|
||||||
#if defined(DEMO_MODE) || defined(APPLE_DEMO_PROMOTION)
|
#if defined(DEMO_MODE) || defined(APPLE_DEMO_PROMOTION)
|
||||||
minecraft->setScreen( new SimpleChooseLevelScreen("_DemoLevel") );
|
minecraft->setScreen( new SimpleChooseLevelScreen("_DemoLevel") );
|
||||||
@@ -122,16 +145,16 @@ void StartMenuScreen::buttonClicked(Button* button) {
|
|||||||
minecraft->screenChooser.setScreen(SCREEN_SELECTWORLD);
|
minecraft->screenChooser.setScreen(SCREEN_SELECTWORLD);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if (button->id == bJoin.id)
|
if (button->id == bJoin->id)
|
||||||
{
|
{
|
||||||
minecraft->locateMultiplayer();
|
minecraft->locateMultiplayer();
|
||||||
minecraft->screenChooser.setScreen(SCREEN_JOINGAME);
|
minecraft->screenChooser.setScreen(SCREEN_JOINGAME);
|
||||||
}
|
}
|
||||||
if (button->id == bOptions.id)
|
if (button->id == bOptions->id)
|
||||||
{
|
{
|
||||||
minecraft->setScreen(new OptionsScreen());
|
minecraft->setScreen(new OptionsScreen());
|
||||||
}
|
}
|
||||||
if (button == &bQuit)
|
if (button->id == bQuit->id)
|
||||||
{
|
{
|
||||||
minecraft->quit();
|
minecraft->quit();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,10 +23,10 @@ public:
|
|||||||
bool isInGameScreen();
|
bool isInGameScreen();
|
||||||
private:
|
private:
|
||||||
|
|
||||||
Button bHost;
|
Button* bHost;
|
||||||
Button bJoin;
|
Button* bJoin;
|
||||||
Button bOptions;
|
Button* bOptions;
|
||||||
ImageButton bQuit; // X button in top-right corner
|
Button* bQuit;
|
||||||
|
|
||||||
std::string copyright;
|
std::string copyright;
|
||||||
int copyrightPosX;
|
int copyrightPosX;
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ void UsernameScreen::setupPositions()
|
|||||||
// Make the done button match the touch-style option tabs
|
// Make the done button match the touch-style option tabs
|
||||||
_btnDone.width = 66;
|
_btnDone.width = 66;
|
||||||
_btnDone.height = 26;
|
_btnDone.height = 26;
|
||||||
_btnDone.x = (width - _btnDone.width) / 2;
|
_btnDone.x = cx - (_btnDone.width / 2);
|
||||||
_btnDone.y = height / 2 + 52;
|
_btnDone.y = cy + 52;
|
||||||
|
|
||||||
tUsername.width = 120;
|
tUsername.width = 120;
|
||||||
tUsername.height = 20;
|
tUsername.height = 20;
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
|
|
||||||
#include "../Screen.h"
|
#include "../Screen.h"
|
||||||
#include "../components/Button.h"
|
#include "../components/Button.h"
|
||||||
#include "client/gui/components/TextBox.h"
|
// this is cursed lol
|
||||||
|
#include "../../../client/gui/components/TextBox.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class UsernameScreen : public Screen
|
class UsernameScreen : public Screen
|
||||||
|
|||||||
@@ -16,7 +16,12 @@
|
|||||||
#include "../../../../world/level/Level.h"
|
#include "../../../../world/level/Level.h"
|
||||||
#include "../../../../world/item/DyePowderItem.h"
|
#include "../../../../world/item/DyePowderItem.h"
|
||||||
#include "../../../../world/item/crafting/Recipe.h"
|
#include "../../../../world/item/crafting/Recipe.h"
|
||||||
|
#include "network/RakNetInstance.h"
|
||||||
|
#include "network/packet/WantCreatePacket.h"
|
||||||
#include "platform/input/Keyboard.h"
|
#include "platform/input/Keyboard.h"
|
||||||
|
#include <cstdint>
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
static NinePatchLayer* guiPaneFrame = NULL;
|
static NinePatchLayer* guiPaneFrame = NULL;
|
||||||
|
|
||||||
@@ -41,7 +46,7 @@ public:
|
|||||||
//fill(x+1, y+1, x+w-1, y+h-1, 0xff999999);
|
//fill(x+1, y+1, x+w-1, y+h-1, 0xff999999);
|
||||||
|
|
||||||
bool hovered = active && (minecraft->useTouchscreen()?
|
bool hovered = active && (minecraft->useTouchscreen()?
|
||||||
(_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : false);
|
(_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : isInside(xm, ym));
|
||||||
|
|
||||||
if (hovered || *selectedPtr == this)
|
if (hovered || *selectedPtr == this)
|
||||||
statePressed->draw(Tesselator::instance, (float)x, (float)y);
|
statePressed->draw(Tesselator::instance, (float)x, (float)y);
|
||||||
@@ -193,6 +198,26 @@ void PaneCraftingScreen::setupPositions() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PaneCraftingScreen::tick() {
|
void PaneCraftingScreen::tick() {
|
||||||
|
if (minecraft->isOnline()) {
|
||||||
|
// TODO: Make better algorithm
|
||||||
|
static std::map<uint8_t, uint16_t> oldMap = {};
|
||||||
|
std::map<uint8_t, uint16_t> newMap = {};
|
||||||
|
|
||||||
|
for (int i = Inventory::MAX_SELECTION_SIZE; i < minecraft->player->inventory->getContainerSize(); ++i) {
|
||||||
|
auto itm = minecraft->player->inventory->getItem(i);
|
||||||
|
|
||||||
|
if (itm != NULL) {
|
||||||
|
newMap[itm->id] += itm->count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (oldMap != newMap) {
|
||||||
|
oldMap = newMap;
|
||||||
|
newMap = {};
|
||||||
|
recheckRecipes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (pane) pane->tick();
|
if (pane) pane->tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -439,25 +464,29 @@ void PaneCraftingScreen::craftSelectedItem()
|
|||||||
ItemInstance resultItem = currentItem->item;
|
ItemInstance resultItem = currentItem->item;
|
||||||
|
|
||||||
if (minecraft->player) {
|
if (minecraft->player) {
|
||||||
|
if (minecraft->isOnline()) {
|
||||||
|
WantCreatePacket packet(minecraft->player->entityId, resultItem.count, resultItem.getAuxValue(), resultItem.id);
|
||||||
|
minecraft->raknetInstance->send(packet);
|
||||||
|
}
|
||||||
// Remove all items required for the recipe and ...
|
// Remove all items required for the recipe and ...
|
||||||
for (unsigned int i = 0; i < currentItem->neededItems.size(); ++i) {
|
for (unsigned int i = 0; i < currentItem->neededItems.size(); ++i) {
|
||||||
CItem::ReqItem& req = currentItem->neededItems[i];
|
CItem::ReqItem& req = currentItem->neededItems[i];
|
||||||
|
|
||||||
// If the recipe allows any aux-value as ingredients, first deplete
|
// If the recipe allows any aux-value as ingredients, first deplete
|
||||||
// aux == 0 from inventory. Since I'm not sure if this always is
|
// aux == 0 from inventory. Since I'm not sure if this always is
|
||||||
// correct, let's only do it for ingredient sandstone for now.
|
// correct, let's only do it for ingredient sandstone for now.
|
||||||
ItemInstance toRemove = req.item;
|
ItemInstance toRemove = req.item;
|
||||||
|
|
||||||
if (Tile::sandStone->id == req.item.id
|
if (Tile::sandStone->id == req.item.id
|
||||||
&& Recipe::ANY_AUX_VALUE == req.item.getAuxValue()) {
|
&& Recipe::ANY_AUX_VALUE == req.item.getAuxValue()) {
|
||||||
toRemove.setAuxValue(0);
|
toRemove.setAuxValue(0);
|
||||||
toRemove.count = minecraft->player->inventory->removeResource(toRemove, true);
|
toRemove.count = minecraft->player->inventory->removeResource(toRemove, true);
|
||||||
toRemove.setAuxValue(Recipe::ANY_AUX_VALUE);
|
toRemove.setAuxValue(Recipe::ANY_AUX_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (toRemove.count > 0) {
|
if (toRemove.count > 0) {
|
||||||
minecraft->player->inventory->removeResource(toRemove);
|
minecraft->player->inventory->removeResource(toRemove);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ... add the new one! (in this order, to fill empty slots better)
|
// ... add the new one! (in this order, to fill empty slots better)
|
||||||
// if it doesn't fit, throw it on the ground!
|
// if it doesn't fit, throw it on the ground!
|
||||||
@@ -547,7 +576,7 @@ void CraftButton::renderBg(Minecraft* minecraft, int xm, int ym) {
|
|||||||
//fill(x+1, y+1, x+w-1, y+h-1, 0xff999999);
|
//fill(x+1, y+1, x+w-1, y+h-1, 0xff999999);
|
||||||
|
|
||||||
bool hovered = active && (minecraft->useTouchscreen()?
|
bool hovered = active && (minecraft->useTouchscreen()?
|
||||||
(_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : false);
|
(_currentlyDown && xm >= x && ym >= y && xm < x + width && ym < y + height) : isInside(xm, ym));
|
||||||
|
|
||||||
if (hovered || selected)
|
if (hovered || selected)
|
||||||
bgSelected->draw(Tesselator::instance, (float)x, (float)y);
|
bgSelected->draw(Tesselator::instance, (float)x, (float)y);
|
||||||
|
|||||||
@@ -91,7 +91,8 @@ void IngameBlockSelectionScreen::init()
|
|||||||
//for (int i = 0; i < inventory->getContainerSize(); ++i)
|
//for (int i = 0; i < inventory->getContainerSize(); ++i)
|
||||||
//LOGI("> %d - %s\n", i, inventory->getItem(i)? inventory->getItem(i)->getDescriptionId().c_str() : "<-->\n");
|
//LOGI("> %d - %s\n", i, inventory->getItem(i)? inventory->getItem(i)->getDescriptionId().c_str() : "<-->\n");
|
||||||
|
|
||||||
InventorySize = inventory->getContainerSize();
|
// Grid indices are 0..N-1 for main inventory only; slots 0..MAX_SELECTION_SIZE-1 are hotbar links.
|
||||||
|
InventorySize = inventory->getContainerSize() - Inventory::MAX_SELECTION_SIZE;
|
||||||
InventoryRows = 1 + (InventorySize-1) / InventoryColumns;
|
InventoryRows = 1 + (InventorySize-1) / InventoryColumns;
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -265,7 +266,8 @@ void IngameBlockSelectionScreen::buttonClicked(Button* button) {
|
|||||||
|
|
||||||
bool IngameBlockSelectionScreen::isAllowed( int slot )
|
bool IngameBlockSelectionScreen::isAllowed( int slot )
|
||||||
{
|
{
|
||||||
if (slot < 0 || slot >= minecraft->player->inventory->getContainerSize())
|
const int gridCount = minecraft->player->inventory->getContainerSize() - Inventory::MAX_SELECTION_SIZE;
|
||||||
|
if (slot < 0 || slot >= gridCount)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#ifdef DEMO_MODE
|
#ifdef DEMO_MODE
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ HumanoidModel::HumanoidModel( float g /*= 0*/, float yOffset /*= 0*/, int texW /
|
|||||||
texWidth = texW;
|
texWidth = texW;
|
||||||
texHeight = texH;
|
texHeight = texH;
|
||||||
|
|
||||||
|
// texWidth = 64;
|
||||||
|
// texHeight = 32;
|
||||||
|
|
||||||
head.setModel(this);
|
head.setModel(this);
|
||||||
hair.setModel(this);
|
hair.setModel(this);
|
||||||
body.setModel(this);
|
body.setModel(this);
|
||||||
@@ -40,10 +43,9 @@ HumanoidModel::HumanoidModel( float g /*= 0*/, float yOffset /*= 0*/, int texW /
|
|||||||
head.addBox(-4, -8, -4, 8, 8, 8, g); // Head
|
head.addBox(-4, -8, -4, 8, 8, 8, g); // Head
|
||||||
head.setPos(0, 0 + yOffset, 0);
|
head.setPos(0, 0 + yOffset, 0);
|
||||||
|
|
||||||
if (modernSkin) {
|
hair.addBox(-4, -8, -4, 8, 8, 8, g + 0.5f); // Outer head layer (hat)
|
||||||
hair.addBox(-4, -8, -4, 8, 8, 8, g + 0.5f); // Outer head layer (hat)
|
hair.setPos(0, 0 + yOffset, 0);
|
||||||
hair.setPos(0, 0 + yOffset, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
body.addBox(-4, 0, -2, 8, 12, 4, g); // Body
|
body.addBox(-4, 0, -2, 8, 12, 4, g); // Body
|
||||||
body.setPos(0, 0 + yOffset, 0);
|
body.setPos(0, 0 + yOffset, 0);
|
||||||
@@ -99,17 +101,17 @@ void HumanoidModel::render(Entity* e, float time, float r, float bob, float yRot
|
|||||||
setupAnim(time, r, bob, yRot, xRot, scale);
|
setupAnim(time, r, bob, yRot, xRot, scale);
|
||||||
|
|
||||||
// Sync overlay with head rotation/position
|
// Sync overlay with head rotation/position
|
||||||
if (texWidth == 64 && texHeight == 64) {
|
|
||||||
hair.xRot = head.xRot;
|
hair.xRot = head.xRot;
|
||||||
hair.yRot = head.yRot;
|
hair.yRot = head.yRot;
|
||||||
hair.zRot = head.zRot;
|
hair.zRot = head.zRot;
|
||||||
hair.y = head.y;
|
hair.y = head.y;
|
||||||
}
|
|
||||||
|
|
||||||
head.render(scale);
|
head.render(scale);
|
||||||
if (texWidth == 64 && texHeight == 64) {
|
|
||||||
hair.render(scale);
|
hair.render(scale);
|
||||||
}
|
|
||||||
body.render(scale);
|
body.render(scale);
|
||||||
arm0.render(scale);
|
arm0.render(scale);
|
||||||
arm1.render(scale);
|
arm1.render(scale);
|
||||||
@@ -123,12 +125,12 @@ void HumanoidModel::render( HumanoidModel* model, float scale )
|
|||||||
head.yRot = model->head.yRot;
|
head.yRot = model->head.yRot;
|
||||||
head.y = model->head.y;
|
head.y = model->head.y;
|
||||||
head.xRot = model->head.xRot;
|
head.xRot = model->head.xRot;
|
||||||
if (texWidth == 64 && texHeight == 64) {
|
|
||||||
hair.yRot = head.yRot;
|
hair.yRot = head.yRot;
|
||||||
hair.xRot = head.xRot;
|
hair.xRot = head.xRot;
|
||||||
hair.zRot = head.zRot;
|
hair.zRot = head.zRot;
|
||||||
hair.y = head.y;
|
hair.y = head.y;
|
||||||
}
|
|
||||||
|
|
||||||
arm0.xRot = model->arm0.xRot;
|
arm0.xRot = model->arm0.xRot;
|
||||||
arm0.zRot = model->arm0.zRot;
|
arm0.zRot = model->arm0.zRot;
|
||||||
@@ -273,7 +275,7 @@ void HumanoidModel::onGraphicsReset()
|
|||||||
arm1.onGraphicsReset();
|
arm1.onGraphicsReset();
|
||||||
leg0.onGraphicsReset();
|
leg0.onGraphicsReset();
|
||||||
leg1.onGraphicsReset();
|
leg1.onGraphicsReset();
|
||||||
//hair.onGraphicsReset();
|
hair.onGraphicsReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
//void renderHair(float scale) {
|
//void renderHair(float scale) {
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ void ModelPart::compile( float scale )
|
|||||||
void ModelPart::draw()
|
void ModelPart::draw()
|
||||||
{
|
{
|
||||||
#ifdef OPENGL_ES
|
#ifdef OPENGL_ES
|
||||||
drawArrayVT_NoState(vboId, cubes.size() * 2 * 3 * 6, 24);
|
drawArrayVTN_NoState(vboId, cubes.size() * 2 * 3 * 6, 36);
|
||||||
#else
|
#else
|
||||||
glCallList(list);
|
glCallList(list);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -43,6 +43,18 @@ void PolygonQuad::mirror() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PolygonQuad::render(Tesselator& t, float scale, int vboId /* = -1 */) {
|
void PolygonQuad::render(Tesselator& t, float scale, int vboId /* = -1 */) {
|
||||||
|
Vec3 v0 = vertices[0].pos - vertices[1].pos;
|
||||||
|
Vec3 v1 = vertices[2].pos - vertices[1].pos;
|
||||||
|
Vec3 n = v1.cross(v0).normalized();
|
||||||
|
if (_flipNormal == true)
|
||||||
|
{
|
||||||
|
t.normal(-n.x , -n.y , -n.z );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
t.normal(n.x , n.y , n.z );
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
VertexPT& v = vertices[i];
|
VertexPT& v = vertices[i];
|
||||||
t.vertexUV(v.pos.x * scale, v.pos.y * scale, v.pos.z * scale, v.u, v.v);
|
t.vertexUV(v.pos.x * scale, v.pos.y * scale, v.pos.z * scale, v.u, v.v);
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#include <direct.h>
|
#include <direct.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
#else
|
#else
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
@@ -354,7 +355,11 @@ LocalPlayer::LocalPlayer(Minecraft* minecraft, Level* level, const std::string&
|
|||||||
armorTypeHash(0),
|
armorTypeHash(0),
|
||||||
sprinting(false),
|
sprinting(false),
|
||||||
sprintDoubleTapTimer(0),
|
sprintDoubleTapTimer(0),
|
||||||
prevForwardHeld(false)
|
prevForwardHeld(false),
|
||||||
|
xBob(0.0f),
|
||||||
|
yBob(0.0f),
|
||||||
|
xBobO(0.0f),
|
||||||
|
yBobO(0.0f)
|
||||||
{
|
{
|
||||||
this->dimension = dimension;
|
this->dimension = dimension;
|
||||||
_init();
|
_init();
|
||||||
@@ -387,6 +392,12 @@ void LocalPlayer::calculateFlight(float xa, float ya, float za) {
|
|||||||
ya = 0;
|
ya = 0;
|
||||||
za = za * flySpeed;
|
za = za * flySpeed;
|
||||||
|
|
||||||
|
if (sprinting) {
|
||||||
|
float sprintBoost = getWalkingSpeedModifier(); // 1.3x
|
||||||
|
xa *= sprintBoost;
|
||||||
|
za *= sprintBoost;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef ANDROID
|
#ifdef ANDROID
|
||||||
if (Keyboard::isKeyDown(103)) ya = .2f * flySpeed;
|
if (Keyboard::isKeyDown(103)) ya = .2f * flySpeed;
|
||||||
if (Keyboard::isKeyDown(102)) ya = -.2f * flySpeed;
|
if (Keyboard::isKeyDown(102)) ya = -.2f * flySpeed;
|
||||||
@@ -449,7 +460,7 @@ void LocalPlayer::tick() {
|
|||||||
{
|
{
|
||||||
sentInventoryItemId = newItemId;
|
sentInventoryItemId = newItemId;
|
||||||
sentInventoryItemData = newItemData;
|
sentInventoryItemData = newItemData;
|
||||||
PlayerEquipmentPacket packet(entityId, newItemId, newItemData);
|
PlayerEquipmentPacket packet(entityId, newItemId, newItemData, inventory->selected, inventory->getSlot(newItemId, newItemData));
|
||||||
minecraft->raknetInstance->send(packet);
|
minecraft->raknetInstance->send(packet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -505,7 +516,7 @@ void LocalPlayer::aiStep() {
|
|||||||
if (sprintDoubleTapTimer > 0) sprintDoubleTapTimer--;
|
if (sprintDoubleTapTimer > 0) sprintDoubleTapTimer--;
|
||||||
prevForwardHeld = forwardHeld;
|
prevForwardHeld = forwardHeld;
|
||||||
}
|
}
|
||||||
if (input->sneaking || abilities.flying)
|
if (input->sneaking)
|
||||||
sprinting = false;
|
sprinting = false;
|
||||||
|
|
||||||
if (input->sneaking) {
|
if (input->sneaking) {
|
||||||
@@ -543,6 +554,10 @@ void LocalPlayer::aiStep() {
|
|||||||
|
|
||||||
//if (onGround && abilities.flying)
|
//if (onGround && abilities.flying)
|
||||||
// abilities.flying = false;
|
// abilities.flying = false;
|
||||||
|
yBobO = yBob;
|
||||||
|
xBobO = xBob;
|
||||||
|
xBob += (xRot - xBob) * 0.5;
|
||||||
|
yBob += (yRot - yBob) * 0.5;
|
||||||
|
|
||||||
if (interpolateOnly())
|
if (interpolateOnly())
|
||||||
updateAi();
|
updateAi();
|
||||||
@@ -759,22 +774,19 @@ void LocalPlayer::startCrafting(int x, int y, int z, int tableSize) {
|
|||||||
|
|
||||||
void LocalPlayer::startStonecutting(int x, int y, int z) {
|
void LocalPlayer::startStonecutting(int x, int y, int z) {
|
||||||
#ifndef STANDALONE_SERVER
|
#ifndef STANDALONE_SERVER
|
||||||
if (!minecraft->isCreativeMode())
|
minecraft->setScreen( new StonecutterScreen() );
|
||||||
minecraft->setScreen( new StonecutterScreen() );
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocalPlayer::openFurnace( FurnaceTileEntity* e ) {
|
void LocalPlayer::openFurnace( FurnaceTileEntity* e ) {
|
||||||
#ifndef STANDALONE_SERVER
|
#ifndef STANDALONE_SERVER
|
||||||
if (!minecraft->isCreativeMode())
|
minecraft->setScreen( new FurnaceScreen(this, e) );
|
||||||
minecraft->setScreen( new FurnaceScreen(this, e) );
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocalPlayer::openContainer( ChestTileEntity* container ) {
|
void LocalPlayer::openContainer( ChestTileEntity* container ) {
|
||||||
#ifndef STANDALONE_SERVER
|
#ifndef STANDALONE_SERVER
|
||||||
if (!minecraft->isCreativeMode())
|
minecraft->setScreen( new ChestScreen(this, container) );
|
||||||
minecraft->setScreen( new ChestScreen(this, container) );
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,10 @@ public:
|
|||||||
virtual void reset();
|
virtual void reset();
|
||||||
|
|
||||||
void tick();
|
void tick();
|
||||||
|
|
||||||
|
float yBob, xBob; // shredder added from b1.8/4j for the hand swaying animation
|
||||||
|
float yBobO, xBobO; // shredder added from b1.8/4j for the hand swaying animation
|
||||||
|
|
||||||
void move(float xa, float ya, float za);
|
void move(float xa, float ya, float za);
|
||||||
|
|
||||||
void aiStep();
|
void aiStep();
|
||||||
|
|||||||
@@ -50,10 +50,8 @@ void KeyboardInput::tick( Player* player )
|
|||||||
ya *= 0.3f;
|
ya *= 0.3f;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(RPI) || defined(PLATFORM_DESKTOP)
|
wantUp = jumping;
|
||||||
wantUp = jumping;
|
wantDown = sneaking;
|
||||||
wantDown = sneaking;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (keys[KEY_CRAFT])
|
if (keys[KEY_CRAFT])
|
||||||
player->startCrafting((int)player->x, (int)player->y, (int)player->z, Recipe::SIZE_2X2);
|
player->startCrafting((int)player->x, (int)player->y, (int)player->z, Recipe::SIZE_2X2);
|
||||||
|
|||||||
@@ -164,7 +164,7 @@ void TouchscreenInput_TestFps::onConfigChanged(const Config& c) {
|
|||||||
|
|
||||||
float maxPixels = _minecraft->pixelCalc.millimetersToPixels(10);
|
float maxPixels = _minecraft->pixelCalc.millimetersToPixels(10);
|
||||||
// float btnSize = Mth::Min(18 * Gui::GuiScale, maxPixels);
|
// float btnSize = Mth::Min(18 * Gui::GuiScale, maxPixels);
|
||||||
float btnSize = pc.millimetersToPixels(50);
|
float btnSize = pc.millimetersToPixels(18 * Gui::GuiScale);
|
||||||
_model.addArea(AREA_PAUSE, aPause = new RectangleArea(w - 4 - btnSize, 4, w - 4, 4 + btnSize));
|
_model.addArea(AREA_PAUSE, aPause = new RectangleArea(w - 4 - btnSize, 4, w - 4, 4 + btnSize));
|
||||||
_model.addArea(AREA_CHAT, aChat = new RectangleArea(w - 8 - btnSize * 2, 4, w - 8 - btnSize, 4 + btnSize));
|
_model.addArea(AREA_CHAT, aChat = new RectangleArea(w - 8 - btnSize * 2, 4, w - 8 - btnSize, 4 + btnSize));
|
||||||
|
|
||||||
@@ -320,6 +320,7 @@ void TouchscreenInput_TestFps::tick( Player* player )
|
|||||||
if (Multitouch::isReleased(p)) {
|
if (Multitouch::isReleased(p)) {
|
||||||
_minecraft->soundEngine->playUI("random.click", 1, 1);
|
_minecraft->soundEngine->playUI("random.click", 1, 1);
|
||||||
_minecraft->screenChooser.setScreen(SCREEN_CONSOLE);
|
_minecraft->screenChooser.setScreen(SCREEN_CONSOLE);
|
||||||
|
_minecraft->platform()->showKeyboard();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,10 @@
|
|||||||
#include "../../world/level/Region.h"
|
#include "../../world/level/Region.h"
|
||||||
#include "../../world/level/chunk/LevelChunk.h"
|
#include "../../world/level/chunk/LevelChunk.h"
|
||||||
#include "../../util/Mth.h"
|
#include "../../util/Mth.h"
|
||||||
|
|
||||||
|
#include "../../world/level/biome/BiomeSource.h"
|
||||||
|
|
||||||
|
#include "../../world/level/Level.h"
|
||||||
//#include "../../platform/time.h"
|
//#include "../../platform/time.h"
|
||||||
|
|
||||||
/*static*/ int Chunk::updates = 0;
|
/*static*/ int Chunk::updates = 0;
|
||||||
|
|||||||