mirror of
https://gitea.sffempire.ru/Kolyah35/minecraft-pe-0.6.1.git
synced 2026-04-05 23:13:33 +00:00
Compare commits
12 Commits
1158644de7
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ef32fcfe08 | ||
|
|
2237515793 | ||
|
|
e272991159 | ||
|
|
055f00be49 | ||
|
|
378dfe8e22 | ||
|
|
61f0124beb | ||
|
|
ff5c57f6ba | ||
|
|
eac71a93d1 | ||
|
|
fa249728e5 | ||
|
|
84e8744387 | ||
|
|
27f0287986 | ||
|
|
109bbcfdb1 |
29
.github/workflows/build.yml
vendored
29
.github/workflows/build.yml
vendored
@@ -72,30 +72,6 @@ jobs:
|
||||
${{github.workspace}}/build/OpenAL32.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:
|
||||
name: Build Linux
|
||||
runs-on: ubuntu-latest
|
||||
@@ -290,7 +266,8 @@ jobs:
|
||||
publish:
|
||||
name: Publish
|
||||
runs-on: ubuntu-latest
|
||||
needs: [ build-ios ]
|
||||
needs: [ build-windows, build-linux, build-android, build-web ]
|
||||
if: github.ref == 'refs/heads/main'
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
@@ -363,4 +340,4 @@ jobs:
|
||||
./minecraftpe-server-${{ steps.ref.outputs.hash }}.zip
|
||||
./minecraftpe-${{ steps.ref.outputs.hash }}-android-arm64-v8a.zip
|
||||
./minecraftpe-${{ steps.ref.outputs.hash }}-android-armeabi-v7a.zip
|
||||
./minecraftpe-${{ steps.ref.outputs.hash }}-web.zip
|
||||
./minecraftpe-${{ steps.ref.outputs.hash }}-web.zip
|
||||
@@ -199,6 +199,9 @@ file(GLOB SERVER_SOURCES
|
||||
|
||||
"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/feature/Feature.cpp"
|
||||
"src/world/level/levelgen/synth/*.cpp"
|
||||
@@ -258,6 +261,8 @@ file(GLOB CLIENT_SOURCES
|
||||
|
||||
"src/util/**.cpp"
|
||||
|
||||
"src/util/Color.cpp"
|
||||
|
||||
"src/world/*.cpp"
|
||||
"src/world/phys/*.cpp"
|
||||
"src/world/entity/*.cpp"
|
||||
|
||||
BIN
data/images/misc/foliagecolor.png
Normal file
BIN
data/images/misc/foliagecolor.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
BIN
data/images/misc/grasscolor.png
Normal file
BIN
data/images/misc/grasscolor.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
BIN
data/images/misc/shadow.png
Normal file
BIN
data/images/misc/shadow.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 868 B |
BIN
data/images/misc/vignette.png
Normal file
BIN
data/images/misc/vignette.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
@@ -153,6 +153,7 @@ options.group.tweaks=Tweaks
|
||||
options.allowSprint=Allow sprint
|
||||
options.barOnTop=HUD above inventory
|
||||
options.rpiCursor=Show Raspberry PI cursor
|
||||
options.foliageTint=Tint Grass and Leaves
|
||||
options.autoJump=Auto Jump
|
||||
options.thirdperson=Third Person
|
||||
options.servervisible=Server Visible
|
||||
|
||||
@@ -146,6 +146,7 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
||||
../../../src/util/StringUtils.cpp \
|
||||
../../../src/util/PerfTimer.cpp \
|
||||
../../../src/util/PerfRenderer.cpp \
|
||||
../../../src/util/Color.cpp \
|
||||
../../../src/world/Direction.cpp \
|
||||
../../../src/world/entity/AgableMob.cpp \
|
||||
../../../src/world/entity/Entity.cpp \
|
||||
@@ -209,6 +210,8 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
||||
../../../src/world/level/MobSpawner.cpp \
|
||||
../../../src/world/level/Region.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/BiomeSource.cpp \
|
||||
../../../src/world/level/chunk/LevelChunk.cpp \
|
||||
|
||||
@@ -122,6 +122,7 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
||||
../../../src/util/StringUtils.cpp \
|
||||
../../../src/util/PerfTimer.cpp \
|
||||
../../../src/util/PerfRenderer.cpp \
|
||||
../../../src/util/Color.cpp \
|
||||
../../../src/world/Direction.cpp \
|
||||
../../../src/world/entity/AgableMob.cpp \
|
||||
../../../src/world/entity/Entity.cpp \
|
||||
@@ -183,6 +184,8 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
||||
../../../src/world/level/MobSpawner.cpp \
|
||||
../../../src/world/level/Region.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/BiomeSource.cpp \
|
||||
../../../src/world/level/chunk/LevelChunk.cpp \
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
<?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,6 +41,7 @@
|
||||
042A91AE16B17517007ABBC6 /* GuiElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A316B17517007ABBC6 /* GuiElement.cpp */; };
|
||||
042A91AF16B17517007ABBC6 /* NinePatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 042A91A516B17517007ABBC6 /* NinePatch.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 */; };
|
||||
044129071682FF9600B70EE6 /* MouseHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 044129061682FF9600B70EE6 /* MouseHandler.cpp */; };
|
||||
9D293CE716071C08000305C8 /* CreateNewWorld_iphone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9D293CE616071C08000305C8 /* CreateNewWorld_iphone.xib */; };
|
||||
@@ -1146,33 +1147,6 @@
|
||||
D5F3B7DD14548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D5F3B7C814548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.xib */; };
|
||||
D5F3B7DE14548E7900D25470 /* IASKSpecifierValuesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D5F3B7C914548E7900D25470 /* IASKSpecifierValuesView.xib */; };
|
||||
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 */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
@@ -1234,8 +1208,10 @@
|
||||
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>"; };
|
||||
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>"; };
|
||||
042A91AC16B17517007ABBC6 /* TextBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TextBox.h; path = ../../src/client/gui/components/TextBox.h; sourceTree = SOURCE_ROOT; };
|
||||
042A91AC16B17517007ABBC6 /* TextBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextBox.h; 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>"; };
|
||||
9D293CEA160720D6000305C8 /* worldname_iphone5_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = worldname_iphone5_3.png; sourceTree = "<group>"; };
|
||||
@@ -2041,7 +2017,7 @@
|
||||
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>"; };
|
||||
D5B50D6B14CFF66F005F7284 /* time.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = time.cpp; sourceTree = "<group>"; };
|
||||
D5B50D6C14CFF66F005F7284 /* time.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = time.h; sourceTree = "<group>"; };
|
||||
D5B50D6C14CFF66F005F7284 /* time.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = time.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>"; };
|
||||
D5B50E5814CFF66F005F7284 /* terrain_5551.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = terrain_5551.h; sourceTree = "<group>"; };
|
||||
@@ -2432,31 +2408,6 @@
|
||||
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>"; };
|
||||
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>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -3275,6 +3226,8 @@
|
||||
042A91A616B17517007ABBC6 /* NinePatch.h */,
|
||||
042A91A716B17517007ABBC6 /* OptionsGroup.cpp */,
|
||||
042A91A816B17517007ABBC6 /* OptionsGroup.h */,
|
||||
042A91A916B17517007ABBC6 /* OptionsPane.cpp */,
|
||||
042A91AA16B17517007ABBC6 /* OptionsPane.h */,
|
||||
042A91AB16B17517007ABBC6 /* TextBox.cpp */,
|
||||
042A91AC16B17517007ABBC6 /* TextBox.h */,
|
||||
D5B50C2814CFF66F005F7284 /* Button.cpp */,
|
||||
@@ -4303,7 +4256,6 @@
|
||||
D5CF9C37144C225000E4244F = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F99D344D2F7372A100DC153E /* Launch Screen.storyboard */,
|
||||
D5E1BA9A1451C8A0007DCC4F /* Default@2x.png */,
|
||||
9D959AFF16036BEE00E23A6F /* Default-568h@2x.png */,
|
||||
D5F07744145EF79B00EC30FB /* Default-Landscape~ipad.png */,
|
||||
@@ -4315,30 +4267,6 @@
|
||||
D5CF9C45144C225000E4244F /* Frameworks */,
|
||||
D5CF9C43144C225000E4244F /* Products */,
|
||||
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>";
|
||||
};
|
||||
@@ -4599,16 +4527,10 @@
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0420;
|
||||
TargetAttributes = {
|
||||
D5CF9C41144C225000E4244F = {
|
||||
DevelopmentTeam = PZUVNW8F2U;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = D5CF9C3C144C225000E4244F /* Build configuration list for PBXProject "minecraftpe" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = en;
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
@@ -4677,7 +4599,6 @@
|
||||
D5B50A5614CFF492005F7284 /* pig.png in Resources */,
|
||||
D5B50A5814CFF492005F7284 /* sheep_fur.png in Resources */,
|
||||
D5B50A5A14CFF492005F7284 /* sheep.png in Resources */,
|
||||
F99D344F2F7372A100DC153E /* Launch Screen.storyboard in Resources */,
|
||||
D5B50A5C14CFF492005F7284 /* skeleton.png in Resources */,
|
||||
D5B50A5E14CFF492005F7284 /* spider.png in Resources */,
|
||||
D5B50A6014CFF492005F7284 /* zombie.png in Resources */,
|
||||
@@ -5014,7 +4935,6 @@
|
||||
D5ACF26F15C03DBF00E21C22 /* sand2.m4a in Resources */,
|
||||
D5ACF27115C03DBF00E21C22 /* sand3.m4a in Resources */,
|
||||
D5ACF27315C03DBF00E21C22 /* sand4.m4a in Resources */,
|
||||
F99D344E2F7372A100DC153E /* Launch Screen.storyboard in Resources */,
|
||||
D5ACF27515C03DBF00E21C22 /* snow1.m4a in Resources */,
|
||||
D5ACF27715C03DBF00E21C22 /* snow2.m4a in Resources */,
|
||||
D5ACF27915C03DBF00E21C22 /* snow3.m4a in Resources */,
|
||||
@@ -5091,22 +5011,18 @@
|
||||
D58BB544146A0B910002C9F5 /* IASKSettingsStore.m in Sources */,
|
||||
D58BB545146A0B910002C9F5 /* IASKSettingsStoreFile.m in Sources */,
|
||||
D58BB546146A0B910002C9F5 /* IASKSettingsStoreUserDefaults.m in Sources */,
|
||||
F99D34232F736AD400DC153E /* TextOption.cpp in Sources */,
|
||||
D58BB547146A0B910002C9F5 /* IASKSpecifier.m in Sources */,
|
||||
D58BB548146A0B910002C9F5 /* IASKPSSliderSpecifierViewCell.m in Sources */,
|
||||
D58BB549146A0B910002C9F5 /* IASKPSTextFieldSpecifierViewCell.m in Sources */,
|
||||
D58BB54A146A0B910002C9F5 /* IASKPSTitleValueSpecifierViewCell.m in Sources */,
|
||||
D58BB54B146A0B910002C9F5 /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */,
|
||||
F99D343B2F736C3B00DC153E /* UsernameScreen.cpp in Sources */,
|
||||
D58BB54C146A0B910002C9F5 /* IASKSlider.m in Sources */,
|
||||
D58BB54D146A0B910002C9F5 /* IASKSwitch.m in Sources */,
|
||||
F99D34302F736BAD00DC153E /* ConsoleScreen.cpp in Sources */,
|
||||
D58BB54E146A0B910002C9F5 /* IASKTextField.m in Sources */,
|
||||
D58BB550146A0B910002C9F5 /* PVRTexture.m in Sources */,
|
||||
D5D43CC9146AF4B4002ED842 /* RenameMPWorldViewController.mm in Sources */,
|
||||
D5B50F7014CFF670005F7284 /* AppPlatform_iOS.mm in Sources */,
|
||||
D5B50F7414CFF670005F7284 /* CreativeMode.cpp in Sources */,
|
||||
F99D34432F736F9400DC153E /* Option.cpp in Sources */,
|
||||
D5B50F7614CFF670005F7284 /* GameMode.cpp in Sources */,
|
||||
D5B50F7814CFF670005F7284 /* Button.cpp in Sources */,
|
||||
D5B50F7A14CFF670005F7284 /* ImageButton.cpp in Sources */,
|
||||
@@ -5151,7 +5067,6 @@
|
||||
D5B50FC814CFF670005F7284 /* KeyboardInput.cpp in Sources */,
|
||||
D5B50FCA14CFF670005F7284 /* TouchscreenInput.cpp in Sources */,
|
||||
D5B50FCC14CFF670005F7284 /* LocalPlayer.cpp in Sources */,
|
||||
F99D34482F736FE800DC153E /* KeyOption.cpp in Sources */,
|
||||
D5B50FCE14CFF670005F7284 /* Chunk.cpp in Sources */,
|
||||
D5B50FD014CFF670005F7284 /* Frustum.cpp in Sources */,
|
||||
D5B50FD214CFF670005F7284 /* ChickenRenderer.cpp in Sources */,
|
||||
@@ -5210,7 +5125,6 @@
|
||||
D5B5113014CFF670005F7284 /* TripodCamera.cpp in Sources */,
|
||||
D5B5113214CFF670005F7284 /* Mob.cpp in Sources */,
|
||||
D5B5113414CFF670005F7284 /* MobCategory.cpp in Sources */,
|
||||
F99D34282F736AFB00DC153E /* OptionsFile.cpp in Sources */,
|
||||
D5B5113814CFF670005F7284 /* PathFinderMob.cpp in Sources */,
|
||||
D5B5113A14CFF670005F7284 /* Inventory.cpp in Sources */,
|
||||
D5B5113C14CFF670005F7284 /* Player.cpp in Sources */,
|
||||
@@ -5222,7 +5136,6 @@
|
||||
D5B5114814CFF670005F7284 /* Item.cpp in Sources */,
|
||||
D5B5114A14CFF670005F7284 /* ItemInstance.cpp in Sources */,
|
||||
D5B5114C14CFF670005F7284 /* PickaxeItem.cpp in Sources */,
|
||||
F99D344B2F7370CF00DC153E /* Slider.cpp in Sources */,
|
||||
D5B5114E14CFF670005F7284 /* ShovelItem.cpp in Sources */,
|
||||
D5B5115014CFF670005F7284 /* Biome.cpp in Sources */,
|
||||
D5B5115214CFF670005F7284 /* BiomeSource.cpp in Sources */,
|
||||
@@ -5273,7 +5186,6 @@
|
||||
D5251DBA1538192700FC82C8 /* CloudServer.cpp in Sources */,
|
||||
D5251DBE1538192700FC82C8 /* CommandParserInterface.cpp in Sources */,
|
||||
D5251DC01538192700FC82C8 /* ConnectionGraph2.cpp in Sources */,
|
||||
F99D34402F736C8400DC153E /* GuiElementContainer.cpp in Sources */,
|
||||
D5251DC21538192700FC82C8 /* ConsoleServer.cpp in Sources */,
|
||||
D5251DC41538192700FC82C8 /* DataCompressor.cpp in Sources */,
|
||||
D5251DC61538192700FC82C8 /* DirectoryDeltaTransfer.cpp in Sources */,
|
||||
@@ -5298,8 +5210,6 @@
|
||||
D5251DEC1538192700FC82C8 /* HTTPConnection.cpp in Sources */,
|
||||
D5251DEE1538192700FC82C8 /* IncrementalReadInterface.cpp in Sources */,
|
||||
D5251DF01538192700FC82C8 /* Itoa.cpp in Sources */,
|
||||
F99D34202F736AA100DC153E /* HttpClient.cpp in Sources */,
|
||||
F99D34382F736C1000DC153E /* JoinByIPScreen.cpp in Sources */,
|
||||
D5251DF21538192700FC82C8 /* LinuxStrings.cpp in Sources */,
|
||||
D5251DF41538192700FC82C8 /* LocklessTypes.cpp in Sources */,
|
||||
D5251DF61538192700FC82C8 /* LogCommandParser.cpp in Sources */,
|
||||
@@ -5328,7 +5238,6 @@
|
||||
D5251E2A1538192700FC82C8 /* RakSleep.cpp in Sources */,
|
||||
D5251E2C1538192700FC82C8 /* RakString.cpp in Sources */,
|
||||
D5251E2E1538192700FC82C8 /* RakThread.cpp in Sources */,
|
||||
F99D34332F736BDA00DC153E /* CreditsScreen.cpp in Sources */,
|
||||
D5251E301538192700FC82C8 /* RakWString.cpp in Sources */,
|
||||
D5251E321538192700FC82C8 /* Rand.cpp in Sources */,
|
||||
D5251E341538192700FC82C8 /* rdlmalloc.cpp in Sources */,
|
||||
@@ -5371,7 +5280,6 @@
|
||||
D5951EEB159349100043A12A /* TileEntity.cpp in Sources */,
|
||||
D5951EEF159349680043A12A /* FurnaceScreen.cpp in Sources */,
|
||||
D5951EF215934A2D0043A12A /* Feature.cpp in Sources */,
|
||||
F99D342C2F736B6F00DC153E /* OptionsItem.cpp in Sources */,
|
||||
D5951EF815934AC50043A12A /* BaseContainerMenu.cpp in Sources */,
|
||||
D5951EFA15934AC50043A12A /* FurnaceMenu.cpp in Sources */,
|
||||
D5D381F315A1A1CF00B6C50E /* FillingContainer.cpp in Sources */,
|
||||
@@ -5431,10 +5339,8 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
F912B8CF2F6C3D5200BC60DF /* TextBox.h in Sources */,
|
||||
D5CF9C57144C225000E4244F /* main.mm in Sources */,
|
||||
D5CF9C5B144C225000E4244F /* minecraftpeAppDelegate.mm in Sources */,
|
||||
F99D343C2F736C3B00DC153E /* UsernameScreen.cpp in Sources */,
|
||||
D5CF9C65144C225000E4244F /* EAGLView.m in Sources */,
|
||||
D5CFA01D144C453900E4244F /* minecraftpeViewController.mm in Sources */,
|
||||
D5A55E4914500EDE00A7571B /* CreateNewWorldViewController.mm in Sources */,
|
||||
@@ -5448,7 +5354,6 @@
|
||||
D5F3B7D014548E7900D25470 /* IASKSettingsStoreUserDefaults.m in Sources */,
|
||||
D5F3B7D114548E7900D25470 /* IASKSpecifier.m in Sources */,
|
||||
D5F3B7D214548E7900D25470 /* IASKPSSliderSpecifierViewCell.m in Sources */,
|
||||
F99D34472F736FE800DC153E /* KeyOption.cpp in Sources */,
|
||||
D5F3B7D314548E7900D25470 /* IASKPSTextFieldSpecifierViewCell.m in Sources */,
|
||||
D5F3B7D414548E7900D25470 /* IASKPSTitleValueSpecifierViewCell.m in Sources */,
|
||||
D5F3B7D514548E7900D25470 /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */,
|
||||
@@ -5560,13 +5465,11 @@
|
||||
D5B5112D14CFF670005F7284 /* PrimedTnt.cpp in Sources */,
|
||||
D5B5112F14CFF670005F7284 /* TripodCamera.cpp in Sources */,
|
||||
D5B5113114CFF670005F7284 /* Mob.cpp in Sources */,
|
||||
F99D34442F736F9400DC153E /* Option.cpp in Sources */,
|
||||
D5B5113314CFF670005F7284 /* MobCategory.cpp in Sources */,
|
||||
D5B5113714CFF670005F7284 /* PathFinderMob.cpp in Sources */,
|
||||
D5B5113914CFF670005F7284 /* Inventory.cpp in Sources */,
|
||||
D5B5113B14CFF670005F7284 /* Player.cpp in Sources */,
|
||||
D5B5113D14CFF670005F7284 /* Arrow.cpp in Sources */,
|
||||
F99D343F2F736C8400DC153E /* GuiElementContainer.cpp in Sources */,
|
||||
D5B5113F14CFF670005F7284 /* Recipes.cpp in Sources */,
|
||||
D5B5114114CFF670005F7284 /* ToolRecipes.cpp in Sources */,
|
||||
D5B5114314CFF670005F7284 /* WeaponRecipes.cpp in Sources */,
|
||||
@@ -5604,12 +5507,10 @@
|
||||
D5B5118514CFF670005F7284 /* HitResult.cpp in Sources */,
|
||||
D5B5118B14D03342005F7284 /* SynchedEntityData.cpp in Sources */,
|
||||
D5B5118E14DEA27F005F7284 /* DeathScreen.cpp in Sources */,
|
||||
F99D34242F736AD400DC153E /* TextOption.cpp in Sources */,
|
||||
D5B5119114DEA2B7005F7284 /* LevelData.cpp in Sources */,
|
||||
D5B5119414DEA2EF005F7284 /* DyePowderItem.cpp in Sources */,
|
||||
D584926D14FD234400741128 /* SharedConstants.cpp in Sources */,
|
||||
D584927314FD236700741128 /* MoveControl.cpp in Sources */,
|
||||
F99D344C2F7370CF00DC153E /* Slider.cpp in Sources */,
|
||||
D584928614FD240D00741128 /* IConfigListener.cpp in Sources */,
|
||||
D584928914FD2FAF00741128 /* Path.cpp in Sources */,
|
||||
D5B86281153810BD00F3238A /* I18n.cpp in Sources */,
|
||||
@@ -5661,7 +5562,6 @@
|
||||
D5251E011538192700FC82C8 /* NatTypeDetectionServer.cpp in Sources */,
|
||||
D5251E031538192700FC82C8 /* NetworkIDManager.cpp in Sources */,
|
||||
D5251E051538192700FC82C8 /* NetworkIDObject.cpp in Sources */,
|
||||
F99D34372F736C1000DC153E /* JoinByIPScreen.cpp in Sources */,
|
||||
D5251E071538192700FC82C8 /* PacketConsoleLogger.cpp in Sources */,
|
||||
D5251E091538192700FC82C8 /* PacketFileLogger.cpp in Sources */,
|
||||
D5251E0B1538192700FC82C8 /* PacketizedTCP.cpp in Sources */,
|
||||
@@ -5691,13 +5591,11 @@
|
||||
D5251E411538192700FC82C8 /* SendToThread.cpp in Sources */,
|
||||
D5251E431538192700FC82C8 /* SHA1.cpp in Sources */,
|
||||
D5251E451538192700FC82C8 /* SignaledEvent.cpp in Sources */,
|
||||
F99D34342F736BDA00DC153E /* CreditsScreen.cpp in Sources */,
|
||||
D5251E471538192700FC82C8 /* SimpleMutex.cpp in Sources */,
|
||||
D5251E491538192700FC82C8 /* SocketLayer.cpp in Sources */,
|
||||
D5251E4B1538192700FC82C8 /* StringCompressor.cpp in Sources */,
|
||||
D5251E4D1538192700FC82C8 /* StringTable.cpp in Sources */,
|
||||
D5251E4F1538192700FC82C8 /* SuperFastHash.cpp in Sources */,
|
||||
F99D342B2F736B6F00DC153E /* OptionsItem.cpp in Sources */,
|
||||
D5251E511538192700FC82C8 /* TableSerializer.cpp in Sources */,
|
||||
D5251E531538192700FC82C8 /* TCPInterface.cpp in Sources */,
|
||||
D5251E551538192700FC82C8 /* TeamBalancer.cpp in Sources */,
|
||||
@@ -5720,7 +5618,6 @@
|
||||
D5951EDD159348C50043A12A /* ItemPane.cpp in Sources */,
|
||||
D5951EE3159349000043A12A /* FurnaceTile.cpp in Sources */,
|
||||
D5951EE8159349100043A12A /* FurnaceTileEntity.cpp in Sources */,
|
||||
F99D342F2F736BAD00DC153E /* ConsoleScreen.cpp in Sources */,
|
||||
D5951EEA159349100043A12A /* TileEntity.cpp in Sources */,
|
||||
D5951EEE159349680043A12A /* FurnaceScreen.cpp in Sources */,
|
||||
D5951EF115934A2D0043A12A /* Feature.cpp in Sources */,
|
||||
@@ -5757,7 +5654,6 @@
|
||||
D544941E15D13F45005FA9B0 /* PlayerRenderer.cpp in Sources */,
|
||||
D544942215D13F5E005FA9B0 /* RemotePlayer.cpp in Sources */,
|
||||
D5B17ED515E226F50056E751 /* Throwable.cpp in Sources */,
|
||||
F99D341F2F736AA100DC153E /* HttpClient.cpp in Sources */,
|
||||
D5B17ED915E2273F0056E751 /* SurvivalMode.cpp in Sources */,
|
||||
D5B17EDD15E227670056E751 /* TrapDoorTile.cpp in Sources */,
|
||||
D5B17EE115E260910056E751 /* MoveFolder.mm in Sources */,
|
||||
@@ -5793,7 +5689,6 @@
|
||||
0400453A16A4125C003EB6FA /* FallingTileRenderer.cpp in Sources */,
|
||||
0413970716A82E1E008A9F1A /* ArmorItem.cpp in Sources */,
|
||||
0413970D16A82E6B008A9F1A /* CraftingFilters.cpp in Sources */,
|
||||
F99D34272F736AFB00DC153E /* OptionsFile.cpp in Sources */,
|
||||
0413970E16A82E6B008A9F1A /* StonecutterScreen.cpp in Sources */,
|
||||
0413971116A82E7B008A9F1A /* ArmorScreen.cpp in Sources */,
|
||||
0413971516A82EB9008A9F1A /* ArmorRecipes.cpp in Sources */,
|
||||
@@ -5802,6 +5697,7 @@
|
||||
042A91AE16B17517007ABBC6 /* GuiElement.cpp in Sources */,
|
||||
042A91AF16B17517007ABBC6 /* NinePatch.cpp in Sources */,
|
||||
042A91B016B17517007ABBC6 /* OptionsGroup.cpp in Sources */,
|
||||
042A91B116B17517007ABBC6 /* OptionsPane.cpp in Sources */,
|
||||
042A91B216B17517007ABBC6 /* TextBox.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -5839,29 +5735,25 @@
|
||||
D50BE20815EE05B8008AA75E /* Ad-Hoc */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = YES;
|
||||
ARCHS = "$(ARCHS_STANDARD)";
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Mojang AB";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = PUBLISH;
|
||||
GCC_VERSION = "";
|
||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "C93D3524-5C6F-466E-B12B-833663B7EAE0";
|
||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SDKROOT = iphoneos6.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||
USE_HEADERMAP = NO;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = "Ad-Hoc";
|
||||
@@ -5873,26 +5765,15 @@
|
||||
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "";
|
||||
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
||||
GCC_VERSION = "";
|
||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(SRCROOT)/../../src",
|
||||
"$(SRCROOT)/../../src/client/gui/components",
|
||||
"$(SRCROOT)/../../src/world",
|
||||
"$(SRCROOT)/../../src/platform/input",
|
||||
"$(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.mojang.mcpe-arm64";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||
SDKROOT = iphoneos;
|
||||
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;
|
||||
SDKROOT = iphoneos6.0;
|
||||
VALID_ARCHS = "i386 armv6 armv7";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = "Ad-Hoc";
|
||||
@@ -5965,28 +5846,24 @@
|
||||
D5A20ADB146AAD9C00A52FEC /* AppStore */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = YES;
|
||||
ARCHS = "$(ARCHS_STANDARD)";
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Mojang AB";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_VERSION = "";
|
||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "64BA8967-1A9A-4980-972C-42E75AD5E023";
|
||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SDKROOT = iphoneos6.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||
USE_HEADERMAP = NO;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = AppStore;
|
||||
@@ -5999,19 +5876,11 @@
|
||||
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = PUBLISH;
|
||||
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
||||
GCC_VERSION = "";
|
||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(SRCROOT)/../../src",
|
||||
"$(SRCROOT)/../../src/client/gui/components",
|
||||
"$(SRCROOT)/../../src/world",
|
||||
"$(SRCROOT)/../../src/platform/input",
|
||||
"$(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||
OTHER_CFLAGS = (
|
||||
"-DNS_BLOCK_ASSERTIONS=1",
|
||||
"-DANDROID_PUBLISH",
|
||||
@@ -6019,10 +5888,8 @@
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "1B194957-98CF-49B7-A0E7-76692B4B722D";
|
||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||
SDKROOT = iphoneos;
|
||||
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;
|
||||
SDKROOT = iphoneos6.0;
|
||||
VALID_ARCHS = "i386 armv6 armv7";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = AppStore;
|
||||
@@ -6055,8 +5922,8 @@
|
||||
D5CF9C6C144C225000E4244F /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = YES;
|
||||
ARCHS = "$(ARCHS_STANDARD)";
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
@@ -6068,50 +5935,41 @@
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_VERSION = "";
|
||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SDKROOT = iphoneos6.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||
USE_HEADERMAP = NO;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
D5CF9C6D144C225000E4244F /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = YES;
|
||||
ARCHS = "$(ARCHS_STANDARD)";
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = PUBLISH;
|
||||
GCC_VERSION = "";
|
||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO;
|
||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SDKROOT = iphoneos6.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../src";
|
||||
USE_HEADERMAP = NO;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
@@ -6119,34 +5977,19 @@
|
||||
D5CF9C6F144C225000E4244F /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = PZUVNW8F2U;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
|
||||
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
||||
GCC_VERSION = "";
|
||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(SRCROOT)/../../src",
|
||||
"$(SRCROOT)/../../src/client/gui/components",
|
||||
"$(SRCROOT)/../../src/world",
|
||||
"$(SRCROOT)/../../src/platform/input",
|
||||
"$(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.mojang.mcpe-arm64";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||
SDKROOT = iphoneos;
|
||||
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;
|
||||
SDKROOT = iphoneos6.0;
|
||||
VALID_ARCHS = "i386 armv6 armv7";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Debug;
|
||||
@@ -6154,34 +5997,19 @@
|
||||
D5CF9C70144C225000E4244F /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = PZUVNW8F2U;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "minecraftpe/minecraftpe-Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "";
|
||||
"GCC_THUMB_SUPPORT[arch=armv7]" = NO;
|
||||
GCC_VERSION = "";
|
||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(SRCROOT)/../../src",
|
||||
"$(SRCROOT)/../../src/client/gui/components",
|
||||
"$(SRCROOT)/../../src/world",
|
||||
"$(SRCROOT)/../../src/platform/input",
|
||||
"$(SRCROOT)/../../project/lib_projects/InAppSettingsKit/Views",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
INFOPLIST_FILE = "minecraftpe/minecraftpe-Info.plist";
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.games";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.mojang.mcpe-arm64";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
RUN_CLANG_STATIC_ANALYZER = NO;
|
||||
SDKROOT = iphoneos;
|
||||
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;
|
||||
SDKROOT = iphoneos6.0;
|
||||
VALID_ARCHS = "i386 armv6 armv7";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Release;
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
</dict>
|
||||
</dict>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<string>com.mojang.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
@@ -58,8 +58,6 @@
|
||||
<array>
|
||||
<string>minecraft.ttf</string>
|
||||
</array>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>Launch Screen</string>
|
||||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
<key>UIRequiresPersistentWiFi</key>
|
||||
|
||||
@@ -52,10 +52,11 @@ public:
|
||||
|
||||
virtual StringVector getOptionStrings();
|
||||
|
||||
virtual bool isPowerVR();
|
||||
virtual bool isPowerVR() { return false; }
|
||||
virtual bool isSuperFast();
|
||||
virtual void showKeyboard();
|
||||
virtual void hideKeyboard();
|
||||
virtual void isPowerVR();
|
||||
private:
|
||||
|
||||
std::string _basePath;
|
||||
|
||||
@@ -275,10 +275,8 @@ void AppPlatform_iOS::hideKeyboard() {
|
||||
[_viewController hideKeyboard];
|
||||
super::hideKeyboard();
|
||||
}
|
||||
|
||||
// this was originally void but i changed it to bool because void cant return values
|
||||
bool AppPlatform_iOS::isPowerVR() {
|
||||
void AppPlatform_iOS::isPowerVR() {
|
||||
const char* s = (const char*)glGetString(GL_RENDERER);
|
||||
if (!s) return false;
|
||||
return strstr(s, "SGX") != NULL;
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
#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__*/
|
||||
@@ -90,6 +90,7 @@
|
||||
#include "../network/command/CommandServer.h"
|
||||
#include "gamemode/CreatorMode.h"
|
||||
|
||||
#include "../world/level/GrassColor.h"
|
||||
static void checkGlError(const char* tag) {
|
||||
#ifdef GLDEBUG
|
||||
while (1) {
|
||||
@@ -1105,9 +1106,7 @@ void Minecraft::releaseMouse()
|
||||
}
|
||||
|
||||
bool Minecraft::useTouchscreen() {
|
||||
#if TARGET_OS_IPHONE
|
||||
return true;
|
||||
#elif RPI
|
||||
#ifdef RPI
|
||||
return false;
|
||||
#endif
|
||||
return options.getBooleanValue(OPTIONS_USE_TOUCHSCREEN) && !_supportsNonTouchscreen;
|
||||
@@ -1127,12 +1126,31 @@ void Minecraft::init()
|
||||
textures = new Textures(&options, platform());
|
||||
textures->addDynamicTexture(new WaterTexture());
|
||||
textures->addDynamicTexture(new WaterSideTexture());
|
||||
textures->addDynamicTexture(new FireTexture());
|
||||
gui.texturesLoaded(textures);
|
||||
|
||||
levelRenderer = new LevelRenderer(this);
|
||||
gameRenderer = new GameRenderer(this);
|
||||
particleEngine = new ParticleEngine(level, textures);
|
||||
|
||||
// 4j's code for reference
|
||||
// FoliageColor::init(textures->loadTexturePixels(L"misc/foliagecolor.png"));
|
||||
|
||||
|
||||
// my code
|
||||
TextureId foliageId = (textures->loadTexture("misc/foliagecolor.png")); // loading the uh png for foliage color
|
||||
int* foliagePixels = textures->loadTexturePixels(foliageId, "misc/foliagecolor.png");
|
||||
// now i can finally initialize foliage color, probably not the best way to handle this but i cant be arsed rn
|
||||
FoliageColor::init(foliagePixels);
|
||||
|
||||
TextureId grassId = (textures->loadTexture("misc/foliagecolor.png")); // loading the uh png for foliage color
|
||||
int* grassPixels = textures->loadTexturePixels(grassId, "misc/foliagecolor.png");
|
||||
GrassColor::init(grassPixels);
|
||||
|
||||
bool tint = options.getBooleanValue(OPTIONS_FOLIAGE_TINT); // finally, toggleable foliage color
|
||||
FoliageColor::setUseTint(tint);
|
||||
GrassColor::setUseTint(tint);
|
||||
|
||||
// Platform specific initialization here
|
||||
font = new Font(&options, "font/default8.png", textures);
|
||||
|
||||
@@ -1194,7 +1212,7 @@ void Minecraft::setSize(int w, int h) {
|
||||
int screenHeight = (int)(height * Gui::InvGuiScale);
|
||||
|
||||
// if (platform()) {
|
||||
// float pixelsPerMillimeter = options.getProgressValue(&Option::PIXELS_PER_MILLIMETER);
|
||||
// float pixelsPerMillimeter = options.getProgressValue(&Options::Option::PIXELS_PER_MILLIMETER);
|
||||
// pixelCalc.setPixelsPerMillimeter(pixelsPerMillimeter);
|
||||
// pixelCalcUi.setPixelsPerMillimeter(pixelsPerMillimeter * Gui::InvGuiScale);
|
||||
// }
|
||||
@@ -1383,6 +1401,12 @@ void Minecraft::_levelGenerated()
|
||||
player->resetPos(false);
|
||||
}
|
||||
|
||||
if (level && level->dimension) {
|
||||
// For example, if you want FogType or any other option
|
||||
level->dimension->FogType = options.getBooleanValue(OPTIONS_FOG_TYPE);
|
||||
}
|
||||
|
||||
|
||||
this->cameraTargetPlayer = player;
|
||||
|
||||
std::string serverName = options.getStringValue(OPTIONS_USERNAME) + " - " + level->getLevelData()->levelName;
|
||||
|
||||
@@ -221,7 +221,6 @@ private:
|
||||
bool _isCreativeMode;
|
||||
//int _respawnPlayerTicks;
|
||||
Player* _pendingRemovePlayer; // @attn @todo @fix: remove this shait and fix the respawn behaviour
|
||||
// shit* lmao
|
||||
|
||||
PerfRenderer* _perfRenderer;
|
||||
CommandServer* _commandServer;
|
||||
|
||||
@@ -104,4 +104,4 @@ public:
|
||||
|
||||
private:
|
||||
std::string m_value;
|
||||
};
|
||||
};
|
||||
@@ -60,6 +60,12 @@ OptionBool useTouchscreen("useTouchscreen", true);
|
||||
|
||||
OptionBool serverVisible("servervisible", true);
|
||||
|
||||
OptionBool foliageTint("foliagetint", false);
|
||||
|
||||
OptionInt fogType("fogType", 0, 0, 2);
|
||||
|
||||
OptionBool javaHud("javaHud", false);
|
||||
|
||||
OptionInt keyForward("key.forward", Keyboard::KEY_W);
|
||||
OptionInt keyLeft("key.left", Keyboard::KEY_A);
|
||||
OptionInt keyBack("key.back", Keyboard::KEY_S);
|
||||
@@ -136,6 +142,8 @@ void Options::initTable() {
|
||||
|
||||
m_options[OPTIONS_USE_TOUCHSCREEN] = &useTouchscreen;
|
||||
|
||||
|
||||
|
||||
m_options[OPTIONS_SERVER_VISIBLE] = &serverVisible;
|
||||
|
||||
m_options[OPTIONS_KEY_FORWARD] = &keyForward;
|
||||
@@ -160,6 +168,12 @@ void Options::initTable() {
|
||||
m_options[OPTIONS_BAR_ON_TOP] = &barOnTop;
|
||||
m_options[OPTIONS_ALLOW_SPRINT] = &allowSprint;
|
||||
m_options[OPTIONS_RPI_CURSOR] = &rpiCursor;
|
||||
m_options[OPTIONS_FOLIAGE_TINT] = &foliageTint;
|
||||
|
||||
// more options yay
|
||||
m_options[OPTIONS_FOG_TYPE] = &fogType;
|
||||
|
||||
m_options[OPTIONS_JAVA_HUD] = &javaHud;
|
||||
|
||||
m_options[OPTIONS_AUTOJUMP] = &autoJump;
|
||||
m_options[OPTIONS_LAST_IP] = &lastIp;
|
||||
|
||||
@@ -84,6 +84,9 @@ enum OptionId {
|
||||
OPTIONS_LAST_IP,
|
||||
|
||||
OPTIONS_RPI_CURSOR,
|
||||
OPTIONS_FOLIAGE_TINT,
|
||||
OPTIONS_FOG_TYPE,
|
||||
OPTIONS_JAVA_HUD,
|
||||
// Should be last!
|
||||
OPTIONS_COUNT
|
||||
};
|
||||
@@ -94,10 +97,6 @@ typedef std::vector<std::string> StringVector;
|
||||
class Options
|
||||
{
|
||||
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;
|
||||
|
||||
Options(Minecraft* minecraft, const std::string& workingDirectory = "")
|
||||
|
||||
@@ -36,7 +36,7 @@ const float Gui::DropTicks = 40.0f;
|
||||
//#include <android/log.h>
|
||||
|
||||
Gui::Gui(Minecraft* minecraft)
|
||||
: minecraft(minecraft),
|
||||
: minecraft(minecraft),
|
||||
tickCount(0),
|
||||
progress(0),
|
||||
overlayMessageTime(0),
|
||||
@@ -77,7 +77,7 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) {
|
||||
Font* font = minecraft->font;
|
||||
|
||||
const bool isTouchInterface = minecraft->useTouchscreen();
|
||||
|
||||
|
||||
const int screenWidth = (int)(minecraft->width * InvGuiScale);
|
||||
const int screenHeight = (int)(minecraft->height * InvGuiScale);
|
||||
blitOffset = -90;
|
||||
@@ -86,9 +86,9 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) {
|
||||
glColor4f2(1, 1, 1, 1);
|
||||
|
||||
// H: 4
|
||||
// T: 7
|
||||
// L: 6
|
||||
// F: 3
|
||||
// T: 7
|
||||
// L: 6
|
||||
// F: 3
|
||||
int ySlot = screenHeight - 16 - 3;
|
||||
|
||||
if (!minecraft->options.getBooleanValue(OPTIONS_HIDEGUI)) {
|
||||
@@ -103,6 +103,12 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) {
|
||||
}
|
||||
}
|
||||
|
||||
// @todo - Shredder: I added this here but currently viginette is broken so i cant do much about it.
|
||||
// if (minecraft->options.getBooleanValue(OPTIONS_FANCY_GRAPHICS)){
|
||||
// this->renderVignette(this->minecraft->player->getBrightness(a), screenWidth, screenHeight);
|
||||
// }
|
||||
// shredder end
|
||||
|
||||
if(minecraft->player->getSleepTimer() > 0) {
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
glDisable(GL_ALPHA_TEST);
|
||||
@@ -113,38 +119,38 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) {
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
}
|
||||
if (!minecraft->options.getBooleanValue(OPTIONS_HIDEGUI)) {
|
||||
renderToolBar(a, ySlot, screenWidth);
|
||||
renderToolBar(a, ySlot, screenWidth);
|
||||
|
||||
glEnable(GL_BLEND);
|
||||
bool isChatting = (minecraft->screen && (dynamic_cast<ChatScreen*>(minecraft->screen) || dynamic_cast<ConsoleScreen*>(minecraft->screen)));
|
||||
unsigned int max = 10;
|
||||
if (isChatting) {
|
||||
int lineHeight = 9;
|
||||
max = (screenHeight - 48) / lineHeight;
|
||||
if (max < 1) max = 1;
|
||||
int maxScroll = (int)guiMessages.size() - (int)max;
|
||||
if (maxScroll < 0) maxScroll = 0;
|
||||
if (chatScrollOffset > maxScroll) chatScrollOffset = maxScroll;
|
||||
} else {
|
||||
chatScrollOffset = 0;
|
||||
}
|
||||
renderChatMessages(screenHeight, max, isChatting, font);
|
||||
glEnable(GL_BLEND);
|
||||
bool isChatting = (minecraft->screen && (dynamic_cast<ChatScreen*>(minecraft->screen) || dynamic_cast<ConsoleScreen*>(minecraft->screen)));
|
||||
unsigned int max = 10;
|
||||
if (isChatting) {
|
||||
int lineHeight = 9;
|
||||
max = (screenHeight - 48) / lineHeight;
|
||||
if (max < 1) max = 1;
|
||||
int maxScroll = (int)guiMessages.size() - (int)max;
|
||||
if (maxScroll < 0) maxScroll = 0;
|
||||
if (chatScrollOffset > maxScroll) chatScrollOffset = maxScroll;
|
||||
} else {
|
||||
chatScrollOffset = 0;
|
||||
}
|
||||
renderChatMessages(screenHeight, max, isChatting, font);
|
||||
#if !defined(RPI)
|
||||
renderOnSelectItemNameText(screenWidth, font, ySlot);
|
||||
renderOnSelectItemNameText(screenWidth, font, ySlot);
|
||||
#endif
|
||||
#if defined(RPI)
|
||||
renderDebugInfo();
|
||||
renderDebugInfo();
|
||||
#endif
|
||||
|
||||
if (Keyboard::isKeyDown(Keyboard::KEY_TAB)) {
|
||||
renderPlayerList(font, screenWidth, screenHeight);
|
||||
if (Keyboard::isKeyDown(Keyboard::KEY_TAB)) {
|
||||
renderPlayerList(font, screenWidth, screenHeight);
|
||||
}
|
||||
|
||||
if (minecraft->options.getBooleanValue(OPTIONS_RENDER_DEBUG))
|
||||
renderDebugInfo();
|
||||
}
|
||||
|
||||
if (minecraft->options.getBooleanValue(OPTIONS_RENDER_DEBUG))
|
||||
renderDebugInfo();
|
||||
}
|
||||
|
||||
glDisable(GL_BLEND);
|
||||
glDisable(GL_BLEND);
|
||||
glEnable2(GL_ALPHA_TEST);
|
||||
}
|
||||
|
||||
@@ -183,7 +189,7 @@ void Gui::getSlotPos(int slot, int& posX, int& posY) {
|
||||
int screenWidth = (int)(minecraft->width * InvGuiScale);
|
||||
int screenHeight = (int)(minecraft->height * InvGuiScale);
|
||||
posX = screenWidth / 2 - getNumSlots() * 10 + slot * 20,
|
||||
posY = screenHeight - 22;
|
||||
posY = screenHeight - 22;
|
||||
}
|
||||
|
||||
RectangleArea Gui::getRectangleArea(int extendSide) {
|
||||
@@ -196,7 +202,7 @@ RectangleArea Gui::getRectangleArea(int extendSide) {
|
||||
return RectangleArea(0, (float)minecraft->height-pHeight, pCenterX+pHalfWidth+2, (float)minecraft->height);
|
||||
if (extendSide > 0)
|
||||
return RectangleArea(pCenterX-pHalfWidth, (float)minecraft->height-pHeight, (float)minecraft->width, (float)minecraft->height);
|
||||
|
||||
|
||||
return RectangleArea(pCenterX-pHalfWidth, (float)minecraft->height-pHeight, pCenterX+pHalfWidth+2, (float)minecraft->height);
|
||||
}
|
||||
|
||||
@@ -242,7 +248,7 @@ void Gui::handleKeyPressed(int key)
|
||||
if (key == Keyboard::KEY_F1) {
|
||||
minecraft->options.toggle(OPTIONS_HIDEGUI);
|
||||
}
|
||||
|
||||
|
||||
if (key == 99)
|
||||
{
|
||||
if (minecraft->player->inventory->selected > 0)
|
||||
@@ -290,11 +296,11 @@ void Gui::tick() {
|
||||
if(itemNameOverlayTime < 2)
|
||||
itemNameOverlayTime += 1.0f / SharedConstants::TicksPerSecond;
|
||||
for (unsigned int i = 0; i < guiMessages.size(); i++) {
|
||||
guiMessages.at(i).ticks++;
|
||||
guiMessages.at(i).ticks++;
|
||||
}
|
||||
|
||||
if (!minecraft->isCreativeMode())
|
||||
tickItemDrop();
|
||||
if (!minecraft->isCreativeMode())
|
||||
tickItemDrop();
|
||||
}
|
||||
|
||||
void Gui::addMessage(const std::string& _string) {
|
||||
@@ -344,6 +350,8 @@ void Gui::displayClientMessage(const std::string& 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) {
|
||||
br = 1 - br;
|
||||
if (br < 0) br = 0;
|
||||
@@ -354,7 +362,10 @@ void Gui::renderVignette(float br, int w, int h) {
|
||||
glDepthMask(false);
|
||||
glBlendFunc2(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
|
||||
glColor4f2(tbr, tbr, tbr, 1);
|
||||
|
||||
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;
|
||||
t.begin();
|
||||
@@ -407,7 +418,7 @@ void Gui::inventoryUpdated() {
|
||||
}
|
||||
|
||||
void Gui::onGraphicsReset() {
|
||||
inventoryUpdated();
|
||||
inventoryUpdated();
|
||||
}
|
||||
|
||||
void Gui::texturesLoaded( Textures* textures ) {
|
||||
@@ -585,12 +596,12 @@ void Gui::renderProgressIndicator( const bool isTouchInterface, const int screen
|
||||
bool bowEquipped = currentItem != NULL ? currentItem->getItem() == Item::bow : false;
|
||||
bool itemInUse = currentItem != NULL ? currentItem->getItem() == minecraft->player->getUseItem()->getItem() : false;
|
||||
if ((!isTouchInterface || minecraft->options.getBooleanValue(OPTIONS_IS_JOY_TOUCH_AREA)
|
||||
|| (bowEquipped && itemInUse)) && !minecraft->options.getBooleanValue(OPTIONS_HIDEGUI)) {
|
||||
minecraft->textures->loadAndBindTexture("gui/icons.png");
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc2(GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_COLOR);
|
||||
blit(screenWidth/2 - 8, screenHeight/2 - 8, 0, 0, 16, 16);
|
||||
glDisable(GL_BLEND);
|
||||
|| (bowEquipped && itemInUse)) && !minecraft->options.getBooleanValue(OPTIONS_HIDEGUI)) {
|
||||
minecraft->textures->loadAndBindTexture("gui/icons.png");
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc2(GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_COLOR);
|
||||
blit(screenWidth/2 - 8, screenHeight/2 - 8, 0, 0, 16, 16);
|
||||
glDisable(GL_BLEND);
|
||||
} else if(!bowEquipped) {
|
||||
const float tprogress = minecraft->gameMode->destroyProgress;
|
||||
const float alpha = Mth::clamp(minecraft->inputHolder->alpha, 0.0f, 1.0f);
|
||||
@@ -665,10 +676,10 @@ void Gui::renderHearts() {
|
||||
int ip2 = i + i + 1;
|
||||
|
||||
if (armor > 0) {
|
||||
int xo = xx + 80 + i * 8 + 4;
|
||||
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 + 0 * 9, 9 * 1, 9, 9);
|
||||
int xo = xx + 80 + i * 8 + 4;
|
||||
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 + 0 * 9, 9 * 1, 9, 9);
|
||||
}
|
||||
|
||||
int bg = 0;
|
||||
@@ -691,7 +702,7 @@ void Gui::renderBubbles() {
|
||||
if (minecraft->player->isUnderLiquid(Material::water)) {
|
||||
int screenWidth = (int)(minecraft->width * InvGuiScale);
|
||||
int screenHeight = (int)(minecraft->height * InvGuiScale);
|
||||
|
||||
|
||||
int xx = (minecraft->options.getBooleanValue(OPTIONS_BAR_ON_TOP)) ? screenWidth / 2 - getNumSlots() * 10 - 1 : 2;
|
||||
int yo = (minecraft->options.getBooleanValue(OPTIONS_BAR_ON_TOP)) ? screenHeight - 42 : 12;
|
||||
int count = (int) std::ceil((minecraft->player->airSupply - 2) * 10.0f / Player::TOTAL_AIR_SUPPLY);
|
||||
@@ -910,64 +921,64 @@ void Gui::renderOnSelectItemNameText( const int screenWidth, Font* font, int ySl
|
||||
|
||||
// helper structure used by drawColoredString
|
||||
struct ColorSegment {
|
||||
std::string text;
|
||||
uint32_t color;
|
||||
std::string text;
|
||||
uint32_t color;
|
||||
};
|
||||
|
||||
// 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) {
|
||||
uint32_t curColor = 0xffffff;
|
||||
size_t pos = 0;
|
||||
while (pos < in.size()) {
|
||||
size_t open = in.find('[', pos);
|
||||
if (open == std::string::npos) {
|
||||
out.push_back({in.substr(pos), curColor});
|
||||
break;
|
||||
}
|
||||
if (open > pos) {
|
||||
out.push_back({in.substr(pos, open - pos), curColor});
|
||||
}
|
||||
size_t close = in.find(']', open);
|
||||
if (close == std::string::npos) {
|
||||
out.push_back({in.substr(open), curColor});
|
||||
break;
|
||||
}
|
||||
std::string tag = in.substr(open + 1, close - open - 1);
|
||||
if (!tag.empty() && tag[0] == '/') {
|
||||
curColor = 0xffffff;
|
||||
} else {
|
||||
std::string lower;
|
||||
lower.resize(tag.size());
|
||||
std::transform(tag.begin(), tag.end(), lower.begin(), ::tolower);
|
||||
if (lower.find("gold") != std::string::npos) curColor = 0xffd700;
|
||||
else if (lower.find("green") != std::string::npos) curColor = 0x00ff00;
|
||||
else if (lower.find("yellow") != std::string::npos) curColor = 0xffff00;
|
||||
else if (lower.find("red") != std::string::npos) curColor = 0xff0000;
|
||||
else if (lower.find("blue") != std::string::npos) curColor = 0x0000ff;
|
||||
}
|
||||
pos = close + 1;
|
||||
}
|
||||
uint32_t curColor = 0xffffff;
|
||||
size_t pos = 0;
|
||||
while (pos < in.size()) {
|
||||
size_t open = in.find('[', pos);
|
||||
if (open == std::string::npos) {
|
||||
out.push_back({in.substr(pos), curColor});
|
||||
break;
|
||||
}
|
||||
if (open > pos) {
|
||||
out.push_back({in.substr(pos, open - pos), curColor});
|
||||
}
|
||||
size_t close = in.find(']', open);
|
||||
if (close == std::string::npos) {
|
||||
out.push_back({in.substr(open), curColor});
|
||||
break;
|
||||
}
|
||||
std::string tag = in.substr(open + 1, close - open - 1);
|
||||
if (!tag.empty() && tag[0] == '/') {
|
||||
curColor = 0xffffff;
|
||||
} else {
|
||||
std::string lower;
|
||||
lower.resize(tag.size());
|
||||
std::transform(tag.begin(), tag.end(), lower.begin(), ::tolower);
|
||||
if (lower.find("gold") != std::string::npos) curColor = 0xffd700;
|
||||
else if (lower.find("green") != std::string::npos) curColor = 0x00ff00;
|
||||
else if (lower.find("yellow") != std::string::npos) curColor = 0xffff00;
|
||||
else if (lower.find("red") != std::string::npos) curColor = 0xff0000;
|
||||
else if (lower.find("blue") != std::string::npos) curColor = 0x0000ff;
|
||||
}
|
||||
pos = close + 1;
|
||||
}
|
||||
}
|
||||
|
||||
void Gui::drawColoredString(Font* font, const std::string& text, float x, float y, int alpha) {
|
||||
std::vector<ColorSegment> segs;
|
||||
parseColorTags(text, segs);
|
||||
float cx = x;
|
||||
for (auto &s : segs) {
|
||||
int color = s.color + (alpha << 24);
|
||||
font->drawShadow(s.text, cx, y, color);
|
||||
cx += font->width(s.text);
|
||||
}
|
||||
std::vector<ColorSegment> segs;
|
||||
parseColorTags(text, segs);
|
||||
float cx = x;
|
||||
for (auto &s : segs) {
|
||||
int color = s.color + (alpha << 24);
|
||||
font->drawShadow(s.text, cx, y, color);
|
||||
cx += font->width(s.text);
|
||||
}
|
||||
}
|
||||
|
||||
float Gui::getColoredWidth(Font* font, const std::string& text) {
|
||||
std::vector<ColorSegment> segs;
|
||||
parseColorTags(text, segs);
|
||||
float w = 0;
|
||||
for (auto &s : segs) {
|
||||
w += font->width(s.text);
|
||||
}
|
||||
return w;
|
||||
std::vector<ColorSegment> segs;
|
||||
parseColorTags(text, segs);
|
||||
float w = 0;
|
||||
for (auto &s : segs) {
|
||||
w += font->width(s.text);
|
||||
}
|
||||
return w;
|
||||
}
|
||||
|
||||
void Gui::renderChatMessages( const int screenHeight, unsigned int max, bool isChatting, Font* font ) {
|
||||
@@ -1011,13 +1022,13 @@ void Gui::renderChatMessages( const int screenHeight, unsigned int max, bool isC
|
||||
glEnable(GL_BLEND);
|
||||
|
||||
// special-case join/leave announcements
|
||||
int baseColor = 0xffffff;
|
||||
if (msg.find(" joined the game") != std::string::npos ||
|
||||
msg.find(" left the game") != std::string::npos) {
|
||||
baseColor = 0xffff00; // yellow
|
||||
}
|
||||
// replace previous logic; allow full colour tags now
|
||||
Gui::drawColoredString(font, msg, x, y, alpha);
|
||||
int baseColor = 0xffffff;
|
||||
if (msg.find(" joined the game") != std::string::npos ||
|
||||
msg.find(" left the game") != std::string::npos) {
|
||||
baseColor = 0xffff00; // yellow
|
||||
}
|
||||
// replace previous logic; allow full colour tags now
|
||||
Gui::drawColoredString(font, msg, x, y, alpha);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1105,22 +1116,41 @@ void Gui::renderToolBar( float a, int ySlot, const int screenWidth ) {
|
||||
|
||||
// Draw count
|
||||
//Tesselator& t = Tesselator::instance;
|
||||
glPushMatrix2();
|
||||
glScalef2(InvGuiScale + InvGuiScale, InvGuiScale + InvGuiScale, 1);
|
||||
|
||||
const float k = 0.5f * GuiScale;
|
||||
|
||||
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 + 1, true, true);
|
||||
x += 20;
|
||||
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()) {
|
||||
x = baseItemX;
|
||||
for (int i = 0; i < slots; i++) {
|
||||
ItemInstance* item = minecraft->player->inventory->getItem(i);
|
||||
if (item && item->count >= 0)
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
#include "OptionsPane.h"
|
||||
#include "OptionsGroup.h"
|
||||
#include "OptionsItem.h"
|
||||
#include "ImageButton.h"
|
||||
#include "Slider.h"
|
||||
#include "../../Minecraft.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, const Option* 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(label, element);
|
||||
((OptionsGroup*)children[group])->addChild(item);
|
||||
setupPositions();
|
||||
}
|
||||
|
||||
void OptionsPane::createProgressSlider( Minecraft* minecraft, unsigned int group, std::string label, const Option* option, float progressMin/*=1.0f*/, float progressMax/*=1.0f */ ) {
|
||||
if(group > children.size()) return;
|
||||
Slider* element = new Slider(minecraft, option, progressMin, progressMax);
|
||||
element->width = 100;
|
||||
element->height = 20;
|
||||
OptionsItem* item = new OptionsItem(label, element);
|
||||
((OptionsGroup*)children[group])->addChild(item);
|
||||
setupPositions();
|
||||
}
|
||||
|
||||
void OptionsPane::createStepSlider( Minecraft* minecraft, unsigned int group, std::string label, const Option* option, const std::vector<int>& stepVec ) {
|
||||
if(group > children.size()) return;
|
||||
Slider* element = new Slider(minecraft, option, stepVec);
|
||||
element->width = 100;
|
||||
element->height = 20;
|
||||
OptionsItem* item = new OptionsItem(label, element);
|
||||
((OptionsGroup*)children[group])->addChild(item);
|
||||
setupPositions();
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
#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, const Option* option );
|
||||
void createProgressSlider(Minecraft* minecraft, unsigned int group, std::string label, const Option* option, float progressMin=1.0f, float progressMax=1.0f );
|
||||
void createStepSlider(Minecraft* minecraft, unsigned int group, std::string label, const Option* option, const std::vector<int>& stepVec );
|
||||
void setupPositions();
|
||||
};
|
||||
|
||||
#endif /*ITEMPANE_H__*/
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "GuiElement.h"
|
||||
#include "../../../client/Options.h"
|
||||
#include <client/Option.h>
|
||||
|
||||
class Slider : public GuiElement {
|
||||
typedef GuiElement super;
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
#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;
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
#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__*/
|
||||
@@ -1,26 +0,0 @@
|
||||
#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__*/
|
||||
@@ -1,107 +0,0 @@
|
||||
#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 "../components/Button.h"
|
||||
#include "../../Minecraft.h"
|
||||
#include "ImageButton.h"
|
||||
#include "TextBox.h"
|
||||
#include "client/gui/components/ImageButton.h"
|
||||
#include "client/gui/components/TextBox.h"
|
||||
|
||||
class JoinByIPScreen: public Screen
|
||||
{
|
||||
@@ -25,4 +25,4 @@ private:
|
||||
Touch::THeader bHeader;
|
||||
Touch::TButton bJoin;
|
||||
ImageButton bBack;
|
||||
};
|
||||
};
|
||||
@@ -138,7 +138,7 @@ void OptionsScreen::render(int xm, int ym, float a) {
|
||||
|
||||
if (currentOptionsGroup != NULL)
|
||||
currentOptionsGroup->render(minecraft, xmm, ymm);
|
||||
|
||||
|
||||
super::render(xm, ym, a);
|
||||
}
|
||||
|
||||
@@ -216,19 +216,20 @@ void OptionsScreen::generateOptionScreens() {
|
||||
|
||||
// // Graphics Pane
|
||||
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_VSYNC, minecraft)
|
||||
.addOptionItem(OPTIONS_RENDER_DEBUG, minecraft)
|
||||
.addOptionItem(OPTIONS_ANAGLYPH_3D, minecraft)
|
||||
.addOptionItem(OPTIONS_VIEW_BOBBING, minecraft)
|
||||
.addOptionItem(OPTIONS_AMBIENT_OCCLUSION, minecraft);
|
||||
|
||||
|
||||
optionPanes[4]->addOptionItem(OPTIONS_ALLOW_SPRINT, minecraft)
|
||||
.addOptionItem(OPTIONS_BAR_ON_TOP, minecraft)
|
||||
.addOptionItem(OPTIONS_RPI_CURSOR, minecraft);
|
||||
.addOptionItem(OPTIONS_RPI_CURSOR, minecraft)
|
||||
.addOptionItem(OPTIONS_FOLIAGE_TINT, minecraft)
|
||||
.addOptionItem(OPTIONS_JAVA_HUD, minecraft)
|
||||
.addOptionItem(OPTIONS_FOG_TYPE, minecraft);
|
||||
|
||||
}
|
||||
|
||||
void OptionsScreen::mouseClicked(int x, int y, int buttonNum) {
|
||||
@@ -250,7 +251,7 @@ void OptionsScreen::keyPressed(int eventKey) {
|
||||
currentOptionsGroup->keyPressed(minecraft, eventKey);
|
||||
if (eventKey == Keyboard::KEY_ESCAPE)
|
||||
minecraft->options.save();
|
||||
|
||||
|
||||
super::keyPressed(eventKey);
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
#include "../../Minecraft.h"
|
||||
|
||||
#include "UsernameScreen.h"
|
||||
#include <client/gui/screens/UsernameScreen.h>
|
||||
|
||||
Screen* ScreenChooser::createScreen( ScreenId id )
|
||||
{
|
||||
|
||||
@@ -35,8 +35,8 @@ void UsernameScreen::setupPositions()
|
||||
// Make the done button match the touch-style option tabs
|
||||
_btnDone.width = 66;
|
||||
_btnDone.height = 26;
|
||||
_btnDone.x = cx - (_btnDone.width / 2);
|
||||
_btnDone.y = cy + 52;
|
||||
_btnDone.x = (width - _btnDone.width) / 2;
|
||||
_btnDone.y = height / 2 + 52;
|
||||
|
||||
tUsername.width = 120;
|
||||
tUsername.height = 20;
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
|
||||
#include "../Screen.h"
|
||||
#include "../components/Button.h"
|
||||
// this is cursed lol
|
||||
#include "../../../client/gui/components/TextBox.h"
|
||||
#include "client/gui/components/TextBox.h"
|
||||
#include <string>
|
||||
|
||||
class UsernameScreen : public Screen
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#include "../../../../world/level/Level.h"
|
||||
#include "../../../../world/item/DyePowderItem.h"
|
||||
#include "../../../../world/item/crafting/Recipe.h"
|
||||
#include "Keyboard.h"
|
||||
#include "platform/input/Keyboard.h"
|
||||
|
||||
static NinePatchLayer* guiPaneFrame = NULL;
|
||||
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
#include "../../world/level/Region.h"
|
||||
#include "../../world/level/chunk/LevelChunk.h"
|
||||
#include "../../util/Mth.h"
|
||||
|
||||
#include "../../world/level/biome/BiomeSource.h"
|
||||
|
||||
#include "../../world/level/Level.h"
|
||||
//#include "../../platform/time.h"
|
||||
|
||||
/*static*/ int Chunk::updates = 0;
|
||||
@@ -259,4 +263,4 @@ void Chunk::resetUpdates()
|
||||
{
|
||||
updates = 0;
|
||||
//swRebuild.reset();
|
||||
}
|
||||
}
|
||||
@@ -25,6 +25,8 @@
|
||||
|
||||
#include "../../client/player/LocalPlayer.h"
|
||||
|
||||
#include "../../world/level/GrassColor.h"
|
||||
|
||||
#ifdef GFX_SMALLER_CHUNKS
|
||||
/* static */ const int LevelRenderer::CHUNK_SIZE = 8;
|
||||
#else
|
||||
@@ -32,7 +34,7 @@
|
||||
#endif
|
||||
|
||||
LevelRenderer::LevelRenderer( Minecraft* mc)
|
||||
: mc(mc),
|
||||
: mc(mc),
|
||||
textures(mc->textures),
|
||||
level(NULL),
|
||||
cullStep(0),
|
||||
@@ -47,6 +49,7 @@ LevelRenderer::LevelRenderer( Minecraft* mc)
|
||||
xMaxChunk(0), yMaxChunk(0), zMaxChunk(0),
|
||||
|
||||
lastViewDistance(-1),
|
||||
lastFogType(-1),
|
||||
|
||||
noEntityRenderFrames(2),
|
||||
totalEntities(0),
|
||||
@@ -143,6 +146,10 @@ void LevelRenderer::setLevel( Level* level )
|
||||
level->addListener(this);
|
||||
allChanged();
|
||||
}
|
||||
if (mc->options.getBooleanValue(OPTIONS_AMBIENT_OCCLUSION)) {
|
||||
mc->useAmbientOcclusion = !mc->useAmbientOcclusion;
|
||||
allChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void LevelRenderer::allChanged()
|
||||
@@ -155,14 +162,21 @@ void LevelRenderer::allChanged()
|
||||
Tile::leaves_carried->setFancy(fancy);
|
||||
lastViewDistance = mc->options.getIntValue(OPTIONS_VIEW_DISTANCE);
|
||||
|
||||
lastFogType = mc->options.getIntValue(OPTIONS_FOG_TYPE);
|
||||
|
||||
bool tint = mc->options.getBooleanValue(OPTIONS_FOLIAGE_TINT);
|
||||
FoliageColor::setUseTint(tint);
|
||||
GrassColor::setUseTint(tint);
|
||||
|
||||
|
||||
int dist = (512 >> 3) << (3 - lastViewDistance);
|
||||
if (lastViewDistance <= 2 && mc->isPowerVR())
|
||||
dist = (int)((float)dist * 0.8f);
|
||||
LOGI("last: %d, power: %d\n", lastViewDistance, mc->isPowerVR());
|
||||
|
||||
#if defined(RPI)
|
||||
dist *= 0.6f;
|
||||
#endif
|
||||
#if defined(RPI)
|
||||
dist *= 0.6f;
|
||||
#endif
|
||||
|
||||
if (dist > 400) dist = 400;
|
||||
/*
|
||||
@@ -227,17 +241,17 @@ void LevelRenderer::allChanged()
|
||||
void LevelRenderer::deleteChunks()
|
||||
{
|
||||
for (int z = 0; z < zChunks; ++z)
|
||||
for (int y = 0; y < yChunks; ++y)
|
||||
for (int x = 0; x < xChunks; ++x) {
|
||||
int c = getLinearCoord(x, y, z);
|
||||
delete chunks[c];
|
||||
}
|
||||
for (int y = 0; y < yChunks; ++y)
|
||||
for (int x = 0; x < xChunks; ++x) {
|
||||
int c = getLinearCoord(x, y, z);
|
||||
delete chunks[c];
|
||||
}
|
||||
|
||||
delete[] chunks;
|
||||
chunks = NULL;
|
||||
delete[] chunks;
|
||||
chunks = NULL;
|
||||
|
||||
delete[] sortedChunks;
|
||||
sortedChunks = NULL;
|
||||
delete[] sortedChunks;
|
||||
sortedChunks = NULL;
|
||||
}
|
||||
|
||||
void LevelRenderer::resortChunks( int xc, int yc, int zc )
|
||||
@@ -301,6 +315,17 @@ int LevelRenderer::render( Mob* player, int layer, float alpha )
|
||||
allChanged();
|
||||
}
|
||||
|
||||
int currentFogType = mc->options.getIntValue(OPTIONS_FOG_TYPE);
|
||||
if (currentFogType != lastFogType) {
|
||||
lastFogType = currentFogType;
|
||||
|
||||
if (level && level->dimension) {
|
||||
level->dimension->FogType = currentFogType; // use new fog stuff
|
||||
}
|
||||
|
||||
allChanged();
|
||||
}
|
||||
|
||||
TIMER_PUSH("sortchunks");
|
||||
for (int i = 0; i < 10; i++) {
|
||||
chunkFixOffs = (chunkFixOffs + 1) % chunksLength;
|
||||
@@ -569,11 +594,11 @@ int LevelRenderer::renderChunks( int from, int to, int layer, float alpha )
|
||||
|
||||
for (unsigned int i = 0; i < _renderChunks.size(); ++i) {
|
||||
Chunk* chunk = _renderChunks[i];
|
||||
#ifdef USE_VBO
|
||||
renderList.addR(chunk->getRenderChunk(layer));
|
||||
#else
|
||||
renderList.add(chunk->getList(layer));
|
||||
#endif
|
||||
#ifdef USE_VBO
|
||||
renderList.addR(chunk->getRenderChunk(layer));
|
||||
#else
|
||||
renderList.add(chunk->getList(layer));
|
||||
#endif
|
||||
renderList.next();
|
||||
}
|
||||
|
||||
@@ -724,20 +749,20 @@ bool LevelRenderer::updateDirtyChunks( Mob* player, bool force )
|
||||
Chunk* chunk = dirtyChunks[cursor];
|
||||
if (chunk != NULL) {
|
||||
bool remove = false;
|
||||
for (int i = 0; i < count && !remove; i++)
|
||||
if (chunk == toAdd[i]) {
|
||||
remove = true;
|
||||
}
|
||||
|
||||
if (!remove) {
|
||||
//if (chunk == toAdd[0] || chunk == toAdd[1] || chunk == toAdd[2]) {
|
||||
// ; // this chunk was rendered and should be removed
|
||||
//} else {
|
||||
if (target != cursor) {
|
||||
dirtyChunks[target] = chunk;
|
||||
for (int i = 0; i < count && !remove; i++)
|
||||
if (chunk == toAdd[i]) {
|
||||
remove = true;
|
||||
}
|
||||
|
||||
if (!remove) {
|
||||
//if (chunk == toAdd[0] || chunk == toAdd[1] || chunk == toAdd[2]) {
|
||||
// ; // this chunk was rendered and should be removed
|
||||
//} else {
|
||||
if (target != cursor) {
|
||||
dirtyChunks[target] = chunk;
|
||||
}
|
||||
target++;
|
||||
}
|
||||
target++;
|
||||
}
|
||||
}
|
||||
cursor++;
|
||||
}
|
||||
@@ -911,23 +936,23 @@ bool entityRenderPredicate(const Entity* a, const Entity* b) {
|
||||
}
|
||||
|
||||
void LevelRenderer::renderEntities(Vec3 cam, Culler* culler, float a) {
|
||||
if (noEntityRenderFrames > 0) {
|
||||
noEntityRenderFrames--;
|
||||
return;
|
||||
}
|
||||
if (noEntityRenderFrames > 0) {
|
||||
noEntityRenderFrames--;
|
||||
return;
|
||||
}
|
||||
|
||||
TIMER_PUSH("prepare");
|
||||
TileEntityRenderDispatcher::getInstance()->prepare(level, textures, mc->font, mc->cameraTargetPlayer, a);
|
||||
EntityRenderDispatcher::getInstance()->prepare(level, mc->font, mc->cameraTargetPlayer, &mc->options, a);
|
||||
TileEntityRenderDispatcher::getInstance()->prepare(level, textures, mc->font, mc->cameraTargetPlayer, a);
|
||||
EntityRenderDispatcher::getInstance()->prepare(level, mc->font, mc->cameraTargetPlayer, &mc->options, a);
|
||||
|
||||
totalEntities = 0;
|
||||
renderedEntities = 0;
|
||||
culledEntities = 0;
|
||||
totalEntities = 0;
|
||||
renderedEntities = 0;
|
||||
culledEntities = 0;
|
||||
|
||||
Entity* player = mc->cameraTargetPlayer;
|
||||
EntityRenderDispatcher::xOff = TileEntityRenderDispatcher::xOff = (player->xOld + (player->x - player->xOld) * a);
|
||||
EntityRenderDispatcher::yOff = TileEntityRenderDispatcher::yOff = (player->yOld + (player->y - player->yOld) * a);
|
||||
EntityRenderDispatcher::zOff = TileEntityRenderDispatcher::zOff = (player->zOld + (player->z - player->zOld) * a);
|
||||
EntityRenderDispatcher::xOff = TileEntityRenderDispatcher::xOff = (player->xOld + (player->x - player->xOld) * a);
|
||||
EntityRenderDispatcher::yOff = TileEntityRenderDispatcher::yOff = (player->yOld + (player->y - player->yOld) * a);
|
||||
EntityRenderDispatcher::zOff = TileEntityRenderDispatcher::zOff = (player->zOld + (player->z - player->zOld) * a);
|
||||
|
||||
glEnableClientState2(GL_VERTEX_ARRAY);
|
||||
glEnableClientState2(GL_TEXTURE_COORD_ARRAY);
|
||||
@@ -966,10 +991,10 @@ void LevelRenderer::renderEntities(Vec3 cam, Culler* culler, float a) {
|
||||
delete[] toRender;
|
||||
}
|
||||
|
||||
TIMER_POP_PUSH("tileentities");
|
||||
for (unsigned int i = 0; i < level->tileEntities.size(); i++) {
|
||||
TileEntityRenderDispatcher::getInstance()->render(level->tileEntities[i], a);
|
||||
}
|
||||
TIMER_POP_PUSH("tileentities");
|
||||
for (unsigned int i = 0; i < level->tileEntities.size(); i++) {
|
||||
TileEntityRenderDispatcher::getInstance()->render(level->tileEntities[i], a);
|
||||
}
|
||||
|
||||
glDisableClientState2(GL_VERTEX_ARRAY);
|
||||
glDisableClientState2(GL_TEXTURE_COORD_ARRAY);
|
||||
@@ -980,7 +1005,7 @@ void LevelRenderer::renderEntities(Vec3 cam, Culler* culler, float a) {
|
||||
std::string LevelRenderer::gatherStats1() {
|
||||
std::stringstream ss;
|
||||
ss << "C: " << renderedChunks << "/" << totalChunks << ". F: " << offscreenChunks << ", O: " << occludedChunks << ", E: " << emptyChunks << "\n";
|
||||
return ss.str();
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
//
|
||||
@@ -992,34 +1017,34 @@ std::string LevelRenderer::gatherStats1() {
|
||||
// IntBuffer resultBuffer = MemoryTracker.createIntBuffer(64);
|
||||
|
||||
void LevelRenderer::renderSky(float alpha) {
|
||||
if (mc->level->dimension->foggy) return;
|
||||
if (mc->level->dimension->foggy) return;
|
||||
|
||||
glDisable2(GL_TEXTURE_2D);
|
||||
Vec3 sc = level->getSkyColor(mc->cameraTargetPlayer, alpha);
|
||||
float sr = (float) sc.x;
|
||||
float sg = (float) sc.y;
|
||||
float sb = (float) sc.z;// + 0.5f;
|
||||
glDisable2(GL_TEXTURE_2D);
|
||||
Vec3 sc = level->getSkyColor(mc->cameraTargetPlayer, alpha);
|
||||
float sr = (float) sc.x;
|
||||
float sg = (float) sc.y;
|
||||
float sb = (float) sc.z;// + 0.5f;
|
||||
|
||||
if (mc->options.getBooleanValue(OPTIONS_ANAGLYPH_3D)) {
|
||||
float srr = (sr * 30.0f + sg * 59.0f + sb * 11.0f) / 100.0f;
|
||||
float sgg = (sr * 30.0f + sg * 70.0f) / (100.0f);
|
||||
float sbb = (sr * 30.0f + sb * 70.0f) / (100.0f);
|
||||
if (mc->options.getBooleanValue(OPTIONS_ANAGLYPH_3D)) {
|
||||
float srr = (sr * 30.0f + sg * 59.0f + sb * 11.0f) / 100.0f;
|
||||
float sgg = (sr * 30.0f + sg * 70.0f) / (100.0f);
|
||||
float sbb = (sr * 30.0f + sb * 70.0f) / (100.0f);
|
||||
|
||||
sr = srr;
|
||||
sg = sgg;
|
||||
sb = sbb;
|
||||
}
|
||||
glColor4f2(sr, sg, Mth::Min(1.0f, sb), 1);
|
||||
sr = srr;
|
||||
sg = sgg;
|
||||
sb = sbb;
|
||||
}
|
||||
glColor4f2(sr, sg, Mth::Min(1.0f, sb), 1);
|
||||
|
||||
//Tesselator& t = Tesselator::instance;
|
||||
//Tesselator& t = Tesselator::instance;
|
||||
|
||||
glEnable2(GL_FOG);
|
||||
glColor4f2(sr, sg, sb, 1.0f);
|
||||
glEnable2(GL_FOG);
|
||||
glColor4f2(sr, sg, sb, 1.0f);
|
||||
|
||||
#ifdef OPENGL_ES
|
||||
drawArrayVT(skyBuffer, skyVertexCount);
|
||||
#endif
|
||||
glEnable2(GL_TEXTURE_2D);
|
||||
glEnable2(GL_TEXTURE_2D);
|
||||
}
|
||||
|
||||
void LevelRenderer::renderClouds( float alpha ) {
|
||||
@@ -1033,7 +1058,7 @@ void LevelRenderer::renderClouds( float alpha ) {
|
||||
|
||||
//glBindTexture(GL_TEXTURE_2D, texturesloadTexture("/environment/clouds.png"));
|
||||
textures->loadAndBindTexture("environment/clouds.png");
|
||||
|
||||
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
@@ -1076,17 +1101,17 @@ void LevelRenderer::playSound(const std::string& name, float x, float y, float z
|
||||
// @todo: deny sounds here if sound is off (rather than waiting 'til SoundEngine)
|
||||
float dd = 16;
|
||||
|
||||
if (volume > 1) dd *= volume;
|
||||
if (mc->cameraTargetPlayer->distanceToSqr(x, y, z) < dd * dd) {
|
||||
mc->soundEngine->play(name, x, y, z, volume, pitch);
|
||||
}
|
||||
if (volume > 1) dd *= volume;
|
||||
if (mc->cameraTargetPlayer->distanceToSqr(x, y, z) < dd * dd) {
|
||||
mc->soundEngine->play(name, x, y, z, volume, pitch);
|
||||
}
|
||||
}
|
||||
|
||||
void LevelRenderer::addParticle(const std::string& name, float x, float y, float z, float xa, float ya, float za, int data) {
|
||||
|
||||
float xd = mc->cameraTargetPlayer->x - x;
|
||||
float yd = mc->cameraTargetPlayer->y - y;
|
||||
float zd = mc->cameraTargetPlayer->z - z;
|
||||
float yd = mc->cameraTargetPlayer->y - y;
|
||||
float zd = mc->cameraTargetPlayer->z - z;
|
||||
float distanceSquared = xd * xd + yd * yd + zd * zd;
|
||||
|
||||
//Particle* p = NULL;
|
||||
@@ -1100,27 +1125,27 @@ void LevelRenderer::addParticle(const std::string& name, float x, float y, float
|
||||
// return;
|
||||
//}
|
||||
|
||||
const float particleDistance = 16;
|
||||
if (distanceSquared > particleDistance * particleDistance) return;
|
||||
const float particleDistance = 16;
|
||||
if (distanceSquared > particleDistance * particleDistance) return;
|
||||
|
||||
//static Stopwatch sw;
|
||||
//sw.start();
|
||||
|
||||
if (name == "bubble") mc->particleEngine->add(new BubbleParticle(level, x, y, z, xa, ya, za));
|
||||
if (name == "bubble") mc->particleEngine->add(new BubbleParticle(level, x, y, z, xa, ya, za));
|
||||
else if (name == "crit") mc->particleEngine->add(new CritParticle2(level, x, y, z, xa, ya, za));
|
||||
else if (name == "smoke") mc->particleEngine->add(new SmokeParticle(level, x, y, z, xa, ya, za));
|
||||
//else if (name == "note") mc->particleEngine->add(new NoteParticle(level, x, y, z, xa, ya, za));
|
||||
else if (name == "explode") mc->particleEngine->add(new ExplodeParticle(level, x, y, z, xa, ya, za));
|
||||
else if (name == "flame") mc->particleEngine->add(new FlameParticle(level, x, y, z, xa, ya, za));
|
||||
else if (name == "lava") mc->particleEngine->add(new LavaParticle(level, x, y, z));
|
||||
//else if (name == "splash") mc->particleEngine->add(new SplashParticle(level, x, y, z, xa, ya, za));
|
||||
//else if (name == "note") mc->particleEngine->add(new NoteParticle(level, x, y, z, xa, ya, za));
|
||||
else if (name == "explode") mc->particleEngine->add(new ExplodeParticle(level, x, y, z, xa, ya, za));
|
||||
else if (name == "flame") mc->particleEngine->add(new FlameParticle(level, x, y, z, xa, ya, za));
|
||||
else if (name == "lava") mc->particleEngine->add(new LavaParticle(level, x, y, z));
|
||||
//else if (name == "splash") mc->particleEngine->add(new SplashParticle(level, x, y, z, xa, ya, za));
|
||||
else if (name == "largesmoke") mc->particleEngine->add(new SmokeParticle(level, x, y, z, xa, ya, za, 2.5f));
|
||||
else if (name == "reddust") mc->particleEngine->add(new RedDustParticle(level, x, y, z, xa, ya, za));
|
||||
else if (name == "reddust") mc->particleEngine->add(new RedDustParticle(level, x, y, z, xa, ya, za));
|
||||
else if (name == "iconcrack") mc->particleEngine->add(new BreakingItemParticle(level, x, y, z, xa, ya, za, Item::items[data]));
|
||||
else if (name == "snowballpoof") mc->particleEngine->add(new BreakingItemParticle(level, x, y, z, Item::snowBall));
|
||||
//else if (name == "snowballpoof") mc->particleEngine->add(new BreakingItemParticle(level, x, y, z, Item::snowBall));
|
||||
//else if (name == "slime") mc->particleEngine->add(new BreakingItemParticle(level, x, y, z, Item::slimeBall));
|
||||
//else if (name == "heart") mc->particleEngine->add(new HeartParticle(level, x, y, z, xa, ya, za));
|
||||
//else if (name == "snowballpoof") mc->particleEngine->add(new BreakingItemParticle(level, x, y, z, Item::snowBall));
|
||||
//else if (name == "slime") mc->particleEngine->add(new BreakingItemParticle(level, x, y, z, Item::slimeBall));
|
||||
//else if (name == "heart") mc->particleEngine->add(new HeartParticle(level, x, y, z, xa, ya, za));
|
||||
|
||||
//sw.stop();
|
||||
//sw.printEvery(50, "add-particle-string");
|
||||
@@ -1128,53 +1153,53 @@ void LevelRenderer::addParticle(const std::string& name, float x, float y, float
|
||||
|
||||
/*
|
||||
void LevelRenderer::addParticle(ParticleType::Id name, float x, float y, float z, float xa, float ya, float za, int data) {
|
||||
float xd = mc->cameraTargetPlayer->x - x;
|
||||
float yd = mc->cameraTargetPlayer->y - y;
|
||||
float zd = mc->cameraTargetPlayer->z - z;
|
||||
float xd = mc->cameraTargetPlayer->x - x;
|
||||
float yd = mc->cameraTargetPlayer->y - y;
|
||||
float zd = mc->cameraTargetPlayer->z - z;
|
||||
|
||||
const float particleDistance = 16;
|
||||
if (xd * xd + yd * yd + zd * zd > particleDistance * particleDistance) return;
|
||||
const float particleDistance = 16;
|
||||
if (xd * xd + yd * yd + zd * zd > particleDistance * particleDistance) return;
|
||||
|
||||
//static Stopwatch sw;
|
||||
//sw.start();
|
||||
//static Stopwatch sw;
|
||||
//sw.start();
|
||||
|
||||
//Particle* p = NULL;
|
||||
//Particle* p = NULL;
|
||||
|
||||
if (name == ParticleType::bubble) mc->particleEngine->add( new BubbleParticle(level, x, y, z, xa, ya, za) );
|
||||
else if (name == ParticleType::crit) mc->particleEngine->add(new CritParticle2(level, x, y, z, xa, ya, za) );
|
||||
else if (name == ParticleType::smoke) mc->particleEngine->add(new SmokeParticle(level, x, y, z, xa, ya, za) );
|
||||
else if (name == ParticleType::explode) mc->particleEngine->add( new ExplodeParticle(level, x, y, z, xa, ya, za) );
|
||||
else if (name == ParticleType::flame) mc->particleEngine->add( new FlameParticle(level, x, y, z, xa, ya, za) );
|
||||
else if (name == ParticleType::lava) mc->particleEngine->add( new LavaParticle(level, x, y, z) );
|
||||
else if (name == ParticleType::largesmoke) mc->particleEngine->add( new SmokeParticle(level, x, y, z, xa, ya, za, 2.5f) );
|
||||
else if (name == ParticleType::reddust) mc->particleEngine->add( new RedDustParticle(level, x, y, z, xa, ya, za) );
|
||||
else if (name == ParticleType::iconcrack) mc->particleEngine->add( new BreakingItemParticle(level, x, y, z, xa, ya, za, Item::items[data]) );
|
||||
if (name == ParticleType::bubble) mc->particleEngine->add( new BubbleParticle(level, x, y, z, xa, ya, za) );
|
||||
else if (name == ParticleType::crit) mc->particleEngine->add(new CritParticle2(level, x, y, z, xa, ya, za) );
|
||||
else if (name == ParticleType::smoke) mc->particleEngine->add(new SmokeParticle(level, x, y, z, xa, ya, za) );
|
||||
else if (name == ParticleType::explode) mc->particleEngine->add( new ExplodeParticle(level, x, y, z, xa, ya, za) );
|
||||
else if (name == ParticleType::flame) mc->particleEngine->add( new FlameParticle(level, x, y, z, xa, ya, za) );
|
||||
else if (name == ParticleType::lava) mc->particleEngine->add( new LavaParticle(level, x, y, z) );
|
||||
else if (name == ParticleType::largesmoke) mc->particleEngine->add( new SmokeParticle(level, x, y, z, xa, ya, za, 2.5f) );
|
||||
else if (name == ParticleType::reddust) mc->particleEngine->add( new RedDustParticle(level, x, y, z, xa, ya, za) );
|
||||
else if (name == ParticleType::iconcrack) mc->particleEngine->add( new BreakingItemParticle(level, x, y, z, xa, ya, za, Item::items[data]) );
|
||||
|
||||
//switch (name) {
|
||||
// case ParticleType::bubble: p = new BubbleParticle(level, x, y, z, xa, ya, za); break;
|
||||
// case ParticleType::crit: p = new CritParticle2(level, x, y, z, xa, ya, za); break;
|
||||
// case ParticleType::smoke: p = new SmokeParticle(level, x, y, z, xa, ya, za); break;
|
||||
// //case ParticleType::note: p = new NoteParticle(level, x, y, z, xa, ya, za); break;
|
||||
// case ParticleType::explode: p = new ExplodeParticle(level, x, y, z, xa, ya, za); break;
|
||||
// case ParticleType::flame: p = new FlameParticle(level, x, y, z, xa, ya, za); break;
|
||||
// case ParticleType::lava: p = new LavaParticle(level, x, y, z); break;
|
||||
// //case ParticleType::splash: p = new SplashParticle(level, x, y, z, xa, ya, za); break;
|
||||
// case ParticleType::largesmoke: p = new SmokeParticle(level, x, y, z, xa, ya, za, 2.5f); break;
|
||||
// case ParticleType::reddust: p = new RedDustParticle(level, x, y, z, xa, ya, za); break;
|
||||
// case ParticleType::iconcrack: p = new BreakingItemParticle(level, x, y, z, xa, ya, za, Item::items[data]); break;
|
||||
// //case ParticleType::snowballpoof: p = new BreakingItemParticle(level, x, y, z, Item::snowBall); break;
|
||||
// //case ParticleType::slime: p = new BreakingItemParticle(level, x, y, z, Item::slimeBall); break;
|
||||
// //case ParticleType::heart: p = new HeartParticle(level, x, y, z, xa, ya, za); break;
|
||||
// default:
|
||||
// LOGW("Couldn't find particle of type: %d\n", name);
|
||||
// break;
|
||||
//}
|
||||
//if (p) {
|
||||
// mc->particleEngine->add(p);
|
||||
//}
|
||||
//switch (name) {
|
||||
// case ParticleType::bubble: p = new BubbleParticle(level, x, y, z, xa, ya, za); break;
|
||||
// case ParticleType::crit: p = new CritParticle2(level, x, y, z, xa, ya, za); break;
|
||||
// case ParticleType::smoke: p = new SmokeParticle(level, x, y, z, xa, ya, za); break;
|
||||
// //case ParticleType::note: p = new NoteParticle(level, x, y, z, xa, ya, za); break;
|
||||
// case ParticleType::explode: p = new ExplodeParticle(level, x, y, z, xa, ya, za); break;
|
||||
// case ParticleType::flame: p = new FlameParticle(level, x, y, z, xa, ya, za); break;
|
||||
// case ParticleType::lava: p = new LavaParticle(level, x, y, z); break;
|
||||
// //case ParticleType::splash: p = new SplashParticle(level, x, y, z, xa, ya, za); break;
|
||||
// case ParticleType::largesmoke: p = new SmokeParticle(level, x, y, z, xa, ya, za, 2.5f); break;
|
||||
// case ParticleType::reddust: p = new RedDustParticle(level, x, y, z, xa, ya, za); break;
|
||||
// case ParticleType::iconcrack: p = new BreakingItemParticle(level, x, y, z, xa, ya, za, Item::items[data]); break;
|
||||
// //case ParticleType::snowballpoof: p = new BreakingItemParticle(level, x, y, z, Item::snowBall); break;
|
||||
// //case ParticleType::slime: p = new BreakingItemParticle(level, x, y, z, Item::slimeBall); break;
|
||||
// //case ParticleType::heart: p = new HeartParticle(level, x, y, z, xa, ya, za); break;
|
||||
// default:
|
||||
// LOGW("Couldn't find particle of type: %d\n", name);
|
||||
// break;
|
||||
//}
|
||||
//if (p) {
|
||||
// mc->particleEngine->add(p);
|
||||
//}
|
||||
|
||||
//sw.stop();
|
||||
//sw.printEvery(50, "add-particle-enum");
|
||||
//sw.stop();
|
||||
//sw.printEvery(50, "add-particle-enum");
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -1192,7 +1217,7 @@ void LevelRenderer::renderHitSelect( Player* player, const HitResult& h, int mod
|
||||
glEnable2(GL_DEPTH_TEST);
|
||||
|
||||
textures->loadAndBindTexture("terrain.png");
|
||||
|
||||
|
||||
int tileId = level->getTile(h.x, h.y, h.z);
|
||||
Tile* tile = tileId > 0 ? Tile::tiles[tileId] : NULL;
|
||||
glDisable2(GL_ALPHA_TEST);
|
||||
@@ -1289,11 +1314,11 @@ void LevelRenderer::takePicture( TripodCamera* cam, Entity* entity )
|
||||
void LevelRenderer::levelEvent(Player* player, int type, int x, int y, int z, int data) {
|
||||
switch (type) {
|
||||
case LevelEvent::SOUND_OPEN_DOOR:
|
||||
if (Mth::random() < 0.5f) {
|
||||
level->playSound(x + 0.5f, y + 0.5f, z + 0.5f, "random.door_open", 1, level->random.nextFloat() * 0.1f + 0.9f);
|
||||
} else {
|
||||
level->playSound(x + 0.5f, y + 0.5f, z + 0.5f, "random.door_close", 1, level->random.nextFloat() * 0.1f + 0.9f);
|
||||
}
|
||||
break;
|
||||
if (Mth::random() < 0.5f) {
|
||||
level->playSound(x + 0.5f, y + 0.5f, z + 0.5f, "random.door_open", 1, level->random.nextFloat() * 0.1f + 0.9f);
|
||||
} else {
|
||||
level->playSound(x + 0.5f, y + 0.5f, z + 0.5f, "random.door_close", 1, level->random.nextFloat() * 0.1f + 0.9f);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,6 +113,9 @@ private:
|
||||
bool occlusionCheck;
|
||||
int lastViewDistance;
|
||||
|
||||
// shredder added again...
|
||||
int lastFogType;
|
||||
|
||||
int ticks;
|
||||
int starList, skyList, darkList;
|
||||
|
||||
|
||||
@@ -249,6 +249,37 @@ int Textures::crispBlend( int c0, int c1 )
|
||||
return (a << 24) | (r << 16) | (g << 8) | b;
|
||||
}
|
||||
|
||||
// shredder here, moved the code from minecraft.cpp bcus that isnt the right place
|
||||
// had to implement this because i couldn't find a similar function in the code to do this
|
||||
int* Textures::loadTexturePixels(TextureId texId, const std::string& resourceName){
|
||||
|
||||
const TextureData* texture = getTemporaryTextureData(texId); // storing raw pixels
|
||||
|
||||
int size = texture->w * texture->h; // gets the size of our funny lil guy
|
||||
int* pixels = new int[size]; // memory leaks be galore
|
||||
unsigned char* raw = texture->data; // storing raw data into our beloved variable
|
||||
for (int i = 0; i < (texture->w * texture->h); i++){
|
||||
// my head hurts i hate working with this
|
||||
|
||||
|
||||
// uh since each pixel stores r g b a, aka the color channels which are each one byte, we multiply them by 4 to move from one pixel to another
|
||||
|
||||
int r = raw[i * 4 + 0]; // gets us the first channel aka red
|
||||
int g = raw[i * 4 + 1]; // gets us the second channel green
|
||||
int b = raw[i * 4 + 2]; // gets us the third channel blue
|
||||
int a = raw[i * 4 + 3]; // gets us the alpha channel
|
||||
|
||||
// woohoo pixels uh should have been seperated into their colors now hopefully
|
||||
|
||||
// r g b a
|
||||
// ugh we now got to turn it into the AA RR GGBB format aak 0xAARRGGBB
|
||||
// b gets 0 - 7 (8 bits), g gets 7 - 15 (8 bits), r gets 16 - 23 (8 bits), alpha gets the last ones 24 - 31 (8 bits),
|
||||
pixels[i] = (a << 24) | (r << 16) | (g << 8) | (b); // shuld combine them into one 32 bit int unless i did something dumb
|
||||
}
|
||||
return pixels; // your meal has been prepared john colors
|
||||
}
|
||||
|
||||
|
||||
///*public*/ int loadHttpTexture(std::string url, std::string backup) {
|
||||
// HttpTexture texture = httpTextures.get(url);
|
||||
// if (texture != NULL) {
|
||||
|
||||
@@ -44,6 +44,8 @@ public:
|
||||
TextureId assignTexture(const std::string& resourceName, const TextureData& img);
|
||||
const TextureData* getTemporaryTextureData(TextureId id);
|
||||
|
||||
int* loadTexturePixels(TextureId texId, const std::string& resourceName);
|
||||
|
||||
void tick(bool uploadToGraphicsCard);
|
||||
|
||||
void clear();
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "../../world/level/tile/BedTile.h"
|
||||
#include "../../world/level/tile/StemTile.h"
|
||||
#include "../../world/level/tile/StairTile.h"
|
||||
#include "../../world/level/tile/FireTile.h"
|
||||
#include "../../world/Direction.h"
|
||||
#include "../../world/Facing.h"
|
||||
#include "tileentity/TileEntityRenderer.h"
|
||||
@@ -157,8 +158,8 @@ bool TileRenderer::tesselateInWorld( Tile* tt, int x, int y, int z )
|
||||
return tesselateRowInWorld(tt, x, y, z);
|
||||
} else if (shape == Tile::SHAPE_TORCH) {
|
||||
return tesselateTorchInWorld(tt, x, y, z);
|
||||
//} else if (shape == Tile::SHAPE_FIRE) {
|
||||
// return tesselateFireInWorld(tt, x, y, z);
|
||||
} else if (shape == Tile::SHAPE_FIRE) {
|
||||
return tesselateFireInWorld(tt, x, y, z);
|
||||
//} else if (shape == Tile::SHAPE_RED_DUST) {
|
||||
// return tesselateDustInWorld(tt, x, y, z);
|
||||
} else if (shape == Tile::SHAPE_LADDER) {
|
||||
@@ -222,6 +223,278 @@ bool TileRenderer::tesselateTorchInWorld( Tile* tt, int x, int y, int z )
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TileRenderer::tesselateFireInWorld( Tile* tt, int x, int y, int z )
|
||||
{
|
||||
// @todo: fire alpha transparency seems to be scuffed, also it seems i might have messed up the second layer while porting from lce/java , need to look into it - shredder
|
||||
|
||||
Tesselator& t = Tesselator::instance;
|
||||
|
||||
int tex = tt->getTexture(0);
|
||||
|
||||
if (fixedTexture >= 0) tex = fixedTexture;
|
||||
|
||||
float br = tt->getBrightness( level, x, y, z );
|
||||
t.color( br, br, br );
|
||||
|
||||
int xt = ((tex & 0xf) << 4);
|
||||
int yt = tex & 0xf0;
|
||||
|
||||
float u0 = (xt) / 256.0f;
|
||||
float u1 = (xt + 15.99f) / 256.0f;
|
||||
float v0 = (yt) / 256.0f;
|
||||
float v1 = (yt + 15.99f) / 256.0f;
|
||||
float h = 1.4f;
|
||||
|
||||
if ( level->isSolidBlockingTile( x, y - 1, z ) || Tile::fire->canBurn( level, x, y - 1, z ) )
|
||||
{
|
||||
float x0 = x + 0.5f + 0.2f;
|
||||
float x1 = x + 0.5f - 0.2f;
|
||||
float z0 = z + 0.5f + 0.2f;
|
||||
float z1 = z + 0.5f - 0.2f;
|
||||
|
||||
float x0_ = x + 0.5f - 0.3f;
|
||||
float x1_ = x + 0.5f + 0.3f;
|
||||
float z0_ = z + 0.5f - 0.3f;
|
||||
float z1_ = z + 0.5f + 0.3f;
|
||||
|
||||
t.vertexUV( ( float )( x0_ ), ( float )( y + h ), ( float )( z + 1 ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x0 ), ( float )( y + 0 ), ( float )( z + 1 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x0 ), ( float )( y + 0 ), ( float )( z + 0 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x0_ ), ( float )( y + h ), ( float )( z + 0 ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x1_ ), ( float )( y + h ), ( float )( z + 0 ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x1 ), ( float )( y + 0 ), ( float )( z + 0 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x1 ), ( float )( y + 0 ), ( float )( z + 1 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x1_ ), ( float )( y + h ), ( float )( z + 1 ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
|
||||
|
||||
u0 = (xt) / 256.0f;
|
||||
u1 = (xt + 15.99f) / 256.0f;
|
||||
v0 = (yt) / 256.0f;
|
||||
v1 = (yt + 15.99f) / 256.0f;
|
||||
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + h ), ( float )( z1_ ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + 0 ), ( float )( z1 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + 0 ), ( float )( z1 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + h ), ( float )( z1_ ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + h ), ( float )( z0_ ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + 0 ), ( float )( z0 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + 0 ), ( float )( z0 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + h ), ( float )( z0_ ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
x0 = x + 0.5f - 0.5f;
|
||||
x1 = x + 0.5f + 0.5f;
|
||||
z0 = z + 0.5f - 0.5f;
|
||||
z1 = z + 0.5f + 0.5f;
|
||||
|
||||
x0_ = x + 0.5f - 0.4f;
|
||||
x1_ = x + 0.5f + 0.4f;
|
||||
z0_ = z + 0.5f - 0.4f;
|
||||
z1_ = z + 0.5f + 0.4f;
|
||||
|
||||
t.vertexUV( ( float )( x0_ ), ( float )( y + h ), ( float )( z + 0 ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x0 ), ( float )( y + 0 ), ( float )( z + 0 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x0 ), ( float )( y + 0 ), ( float )( z + 1 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x0_ ), ( float )( y + h ), ( float )( z + 1 ), ( float )( u1 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x1_ ), ( float )( y + h ), ( float )( z + 1 ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x1 ), ( float )( y + 0 ), ( float )( z + 1 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x1 ), ( float )( y + 0 ), ( float )( z + 0 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x1_ ), ( float )( y + h ), ( float )( z + 0 ), ( float )( u1 ), ( float )( v0 ) );
|
||||
|
||||
|
||||
u0 = (xt) / 256.0f;
|
||||
u1 = (xt + 15.99f) / 256.0f;
|
||||
v0 = (yt) / 256.0f;
|
||||
v1 = (yt + 15.99f) / 256.0f;
|
||||
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + h ), ( float )( z1_ ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + 0 ), ( float )( z1 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + 0 ), ( float )( z1 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + h ), ( float )( z1_ ), ( float )( u1 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + h ), ( float )( z0_ ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 1 ), ( float )( y + 0 ), ( float )( z0 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + 0 ), ( float )( z0 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0 ), ( float )( y + h ), ( float )( z0_ ), ( float )( u1 ), ( float )( v0 ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
float r = 0.2f;
|
||||
float yo = 1 / 16.0f;
|
||||
if ( ( ( x + y + z ) & 1 ) == 1 )
|
||||
{
|
||||
u0 = (xt) / 256.0f;
|
||||
u1 = (xt + 15.99f) / 256.0f;
|
||||
v0 = (yt) / 256.0f;
|
||||
v1 = (yt + 15.99f) / 256.0f;
|
||||
}
|
||||
if ( ( ( x / 2 + y / 2 + z / 2 ) & 1 ) == 1 )
|
||||
{
|
||||
float tmp = u1;
|
||||
u1 = u0;
|
||||
u0 = tmp;
|
||||
}
|
||||
if ( Tile::fire->canBurn( level, x - 1, y, z ) )
|
||||
{
|
||||
t.vertexUV( ( float )( x + r ), ( float )( y + h + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + r ), ( float )( y + h + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x + r ), ( float )( y + h + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + r ), ( float )( y + h + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v0 ) );
|
||||
}
|
||||
if ( Tile::fire->canBurn( level, x + 1, y, z ) )
|
||||
{
|
||||
t.vertexUV( ( float )( x + 1 - r ), ( float )( y + h + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 1 - 0 ), ( float )( y + 0 + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1 - 0 ), ( float )( y + 0 + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1 - r ), ( float )( y + h + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x + 1.0f - r ), ( float )( y + h + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f - 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f - 0 ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f - r ), ( float )( y + h + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v0 ) );
|
||||
}
|
||||
if ( Tile::fire->canBurn( level, x, y, z - 1 ) )
|
||||
{
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + h + yo ), ( float )( z +
|
||||
r ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + h + yo ), ( float )( z +
|
||||
r ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + h + yo ), ( float )( z +
|
||||
r ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z +
|
||||
0.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + h + yo ), ( float )( z +
|
||||
r ), ( float )( u1 ), ( float )( v0 ) );
|
||||
}
|
||||
if ( Tile::fire->canBurn( level, x, y, z + 1 ) )
|
||||
{
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + h + yo ), ( float )( z + 1.0f -
|
||||
r ), ( float )( u0 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + 0.0f + yo ), ( float )( z + 1.0f -
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z + 1.0f -
|
||||
0.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + h + yo ), ( float )( z + 1.0f -
|
||||
r ), ( float )( u1 ), ( float )( v0 ) );
|
||||
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + h + yo ), ( float )( z + 1.0f -
|
||||
r ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y + 0.0f + yo ), ( float )( z + 1.0f -
|
||||
0.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + 0.0f + yo ), ( float )( z + 1.0f -
|
||||
0.0f ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y + h + yo ), ( float )( z + 1.0f -
|
||||
r ), ( float )( u0 ), ( float )( v0 ) );
|
||||
}
|
||||
if ( Tile::fire->canBurn( level, x, y + 1.0f, z ) )
|
||||
{
|
||||
double x0 = x + 0.5f + 0.5f;
|
||||
double x1 = x + 0.5f - 0.5f;
|
||||
double z0 = z + 0.5f + 0.5f;
|
||||
double z1 = z + 0.5f - 0.5f;
|
||||
|
||||
double x0_ = x + 0.5f - 0.5f;
|
||||
double x1_ = x + 0.5f + 0.5f;
|
||||
double z0_ = z + 0.5f - 0.5f;
|
||||
double z1_ = z + 0.5f + 0.5f;
|
||||
|
||||
u0 = (xt) / 256.0f;
|
||||
u1 = (xt + 15.99f) / 256.0f;
|
||||
v0 = (yt) / 256.0f;
|
||||
v1 = (yt + 15.99f) / 256.0f;
|
||||
|
||||
y += 1;
|
||||
h = -0.2f;
|
||||
|
||||
if ( ( ( x + y + z ) & 1 ) == 0 )
|
||||
{
|
||||
t.vertexUV( ( float )( x0_ ), ( float )( y + h ), ( float )( z +
|
||||
0 ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x0 ), ( float )( y + 0 ), ( float )( z +
|
||||
0 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x0 ), ( float )( y + 0 ), ( float )( z +
|
||||
1 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x0_ ), ( float )( y + h ), ( float )( z +
|
||||
1 ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
u0 = (xt) / 256.0f;
|
||||
u1 = (xt + 15.99f) / 256.0f;
|
||||
v0 = (yt) / 256.0f;
|
||||
v1 = (yt + 15.99f) / 256.0f;
|
||||
|
||||
t.vertexUV( ( float )( x1_ ), ( float )( y + h ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x1 ), ( float )( y + 0.0f ), ( float )( z +
|
||||
1.0f ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x1 ), ( float )( y + 0.0f ), ( float )( z +
|
||||
0 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x1_ ), ( float )( y + h ), ( float )( z +
|
||||
0 ), ( float )( u0 ), ( float )( v0 ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y +
|
||||
h ), ( float )( z1_ ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y +
|
||||
0.0f ), ( float )( z1 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y +
|
||||
0.0f ), ( float )( z1 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y +
|
||||
h ), ( float )( z1_ ), ( float )( u0 ), ( float )( v0 ) );
|
||||
|
||||
u0 = (xt) / 256.0f;
|
||||
u1 = (xt + 15.99f) / 256.0f;
|
||||
v0 = (yt) / 256.0f;
|
||||
v1 = (yt + 15.99f) / 256.0f;
|
||||
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y +
|
||||
h ), ( float )( z0_ ), ( float )( u1 ), ( float )( v0 ) );
|
||||
t.vertexUV( ( float )( x + 1.0f ), ( float )( y +
|
||||
0.0f ), ( float )( z0 ), ( float )( u1 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y +
|
||||
0.0f ), ( float )( z0 ), ( float )( u0 ), ( float )( v1 ) );
|
||||
t.vertexUV( ( float )( x + 0.0f ), ( float )( y +
|
||||
h ), ( float )( z0_ ), ( float )( u0 ), ( float )( v0 ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
bool TileRenderer::tesselateLadderInWorld( Tile* tt, int x, int y, int z )
|
||||
{
|
||||
Tesselator& t = Tesselator::instance;
|
||||
|
||||
@@ -34,6 +34,8 @@ public:
|
||||
bool tesselateFenceGateInWorld(FenceGateTile* tt, int x, int y, int z);
|
||||
bool tesselateBedInWorld(Tile *tt, int x, int y, int z);
|
||||
bool tesselateRowInWorld(Tile* tt, int x, int y, int z);
|
||||
bool tesselateFireInWorld(Tile* tt, int x, int y, int z);
|
||||
|
||||
|
||||
void tesselateTorch(Tile* tt, float x, float y, float z, float xxa, float zza);
|
||||
void tesselateCrossTexture(Tile* tt, int data, float x, float y, float z);
|
||||
|
||||
@@ -40,18 +40,18 @@ EntityRenderDispatcher::EntityRenderDispatcher()
|
||||
{
|
||||
//@note: The Models (model/armor) will be deleted by resp. MobRenderer
|
||||
assign( ER_ITEM_RENDERER, new ItemRenderer());
|
||||
assign( ER_HUMANOID_RENDERER, new HumanoidMobRenderer(new HumanoidModel(), 0));
|
||||
assign( ER_PIG_RENDERER, new PigRenderer(new PigModel(), NULL/*new PigModel(0.5f)*/, 0));
|
||||
assign( ER_COW_RENDERER, new MobRenderer(new CowModel(), 0));
|
||||
assign( ER_CHICKEN_RENDERER, new ChickenRenderer( new ChickenModel(), 0));
|
||||
assign( ER_SHEEP_RENDERER, new SheepRenderer(new SheepModel(), new SheepFurModel(), 0));
|
||||
assign( ER_HUMANOID_RENDERER, new HumanoidMobRenderer(new HumanoidModel(), 0.5));
|
||||
assign( ER_PIG_RENDERER, new PigRenderer(new PigModel(0.5), NULL/*new PigModel(0.5f)*/, 0.7));
|
||||
assign( ER_COW_RENDERER, new MobRenderer(new CowModel(), 0.7));
|
||||
assign( ER_CHICKEN_RENDERER, new ChickenRenderer( new ChickenModel(), 0.3));
|
||||
assign( ER_SHEEP_RENDERER, new SheepRenderer(new SheepModel(), new SheepFurModel(), 0.7));
|
||||
assign( ER_SKELETON_RENDERER, new HumanoidMobRenderer(new SkeletonModel(), 0.5f));
|
||||
assign( ER_ZOMBIE_RENDERER, new HumanoidMobRenderer(new ZombieModel(), 0.5f));
|
||||
assign( ER_CREEPER_RENDERER, new CreeperRenderer());
|
||||
assign( ER_SPIDER_RENDERER, new SpiderRenderer());
|
||||
assign( ER_TNT_RENDERER, new TntRenderer());
|
||||
assign( ER_ARROW_RENDERER, new ArrowRenderer());
|
||||
assign( ER_PLAYER_RENDERER, new PlayerRenderer(new HumanoidModel(0, 0, 64, 64), 0));
|
||||
assign( ER_PLAYER_RENDERER, new PlayerRenderer(new HumanoidModel(0, 0, 64, 64), 0.5));
|
||||
assign( ER_THROWNEGG_RENDERER, new ItemSpriteRenderer(Item::egg->getIcon(0)));
|
||||
assign( ER_SNOWBALL_RENDERER, new ItemSpriteRenderer(Item::snowBall->getIcon(0)));
|
||||
assign( ER_PAINTING_RENDERER, new PaintingRenderer());
|
||||
@@ -133,7 +133,7 @@ void EntityRenderDispatcher::render( Entity* entity, float x, float y, float z,
|
||||
EntityRenderer* renderer = getRenderer(entity);
|
||||
if (renderer != NULL) {
|
||||
renderer->render(entity, x, y, z, rot, a);
|
||||
//renderer->postRender(entity, x, y, z, rot, a);
|
||||
renderer->postRender(entity, x, y, z, rot, a);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,11 +5,17 @@
|
||||
#include "../gles.h"
|
||||
#include "../../../world/phys/AABB.h"
|
||||
#include "EntityRenderDispatcher.h"
|
||||
#include "../../../util/Mth.h"
|
||||
#include "../../../world/level/Level.h"
|
||||
#include "../../../world/level/tile/Tile.h"
|
||||
|
||||
#include "../../Minecraft.h"
|
||||
#include "../../Option.h"
|
||||
|
||||
EntityRenderDispatcher* EntityRenderer::entityRenderDispatcher = NULL;
|
||||
|
||||
EntityRenderer::EntityRenderer()
|
||||
: shadowRadius(0),
|
||||
: shadowRadius(0),
|
||||
shadowStrength(1.0f)
|
||||
{}
|
||||
|
||||
@@ -36,37 +42,37 @@ void EntityRenderer::render(const AABB& bb, float xo, float yo, float zo) {
|
||||
glColor4f2(1, 1, 1, 1);
|
||||
t.begin();
|
||||
t.offset(xo, yo, zo);
|
||||
//t.normal(0, 0, -1);
|
||||
t.normal(0, 0, -1);
|
||||
t.vertex(bb.x0, bb.y1, bb.z0);
|
||||
t.vertex(bb.x1, bb.y1, bb.z0);
|
||||
t.vertex(bb.x1, bb.y0, bb.z0);
|
||||
t.vertex(bb.x0, bb.y0, bb.z0);
|
||||
|
||||
//t.normal(0, 0, 1);
|
||||
t.normal(0, 0, 1);
|
||||
t.vertex(bb.x0, bb.y0, bb.z1);
|
||||
t.vertex(bb.x1, bb.y0, bb.z1);
|
||||
t.vertex(bb.x1, bb.y1, bb.z1);
|
||||
t.vertex(bb.x0, bb.y1, bb.z1);
|
||||
|
||||
//t.normal(0, -1, 0);
|
||||
t.normal(0, -1, 0);
|
||||
t.vertex(bb.x0, bb.y0, bb.z0);
|
||||
t.vertex(bb.x1, bb.y0, bb.z0);
|
||||
t.vertex(bb.x1, bb.y0, bb.z1);
|
||||
t.vertex(bb.x0, bb.y0, bb.z1);
|
||||
|
||||
//t.normal(0, 1, 0);
|
||||
t.normal(0, 1, 0);
|
||||
t.vertex(bb.x0, bb.y1, bb.z1);
|
||||
t.vertex(bb.x1, bb.y1, bb.z1);
|
||||
t.vertex(bb.x1, bb.y1, bb.z0);
|
||||
t.vertex(bb.x0, bb.y1, bb.z0);
|
||||
|
||||
//t.normal(-1, 0, 0);
|
||||
t.normal(-1, 0, 0);
|
||||
t.vertex(bb.x0, bb.y0, bb.z1);
|
||||
t.vertex(bb.x0, bb.y1, bb.z1);
|
||||
t.vertex(bb.x0, bb.y1, bb.z0);
|
||||
t.vertex(bb.x0, bb.y0, bb.z0);
|
||||
|
||||
//t.normal(1, 0, 0);
|
||||
t.normal(1, 0, 0);
|
||||
t.vertex(bb.x1, bb.y0, bb.z0);
|
||||
t.vertex(bb.x1, bb.y1, bb.z0);
|
||||
t.vertex(bb.x1, bb.y1, bb.z1);
|
||||
@@ -116,134 +122,139 @@ Font* EntityRenderer::getFont() {
|
||||
return entityRenderDispatcher->getFont();
|
||||
}
|
||||
|
||||
//void postRender(Entity entity, float x, float y, float z, float rot, float a) {
|
||||
// if (entityRenderDispatcher.options.fancyGraphics && shadowRadius > 0) {
|
||||
// float dist = entityRenderDispatcher.distanceToSqr(entity.x, entity.y, entity.z);
|
||||
// float pow = (float) ((1 - dist / (16.0f * 16.0f)) * shadowStrength);
|
||||
// if (pow > 0) {
|
||||
// renderShadow(entity, x, y, z, pow, a);
|
||||
// }
|
||||
// }
|
||||
// if (entity.isOnFire()) renderFlame(entity, x, y, z, a);
|
||||
//}
|
||||
void EntityRenderer::postRender(Entity* entity, float x, float y, float z, float rot, float a) {
|
||||
if (/*entityRenderDispatcher.options.fancyGraphics &&*/entityRenderDispatcher->minecraft->options.getBooleanValue(OPTIONS_FANCY_GRAPHICS) && shadowRadius > 0) {
|
||||
float dist = entityRenderDispatcher->distanceToSqr(entity->x, entity->y, entity->z);
|
||||
float pow = (float) ((1 - dist / (16.0f * 16.0f)) * shadowStrength);
|
||||
if (pow > 0) {
|
||||
renderShadow(entity, x, y, z, pow, a);
|
||||
}
|
||||
//}
|
||||
if (entity->isOnFire()) renderFlame(entity, x, y, z, a);
|
||||
}
|
||||
}
|
||||
void EntityRenderer::renderFlame(Entity* e, float x, float y, float z, float a) {
|
||||
|
||||
//void renderFlame(Entity e, float x, float y, float z, float a) {
|
||||
// glDisable2(GL_LIGHTING);
|
||||
// int tex = Tile.fire.tex;
|
||||
int tex = ((Tile*)Tile::fire)->tex;
|
||||
|
||||
// int xt = (tex & 0xf) << 4;
|
||||
// int yt = tex & 0xf0;
|
||||
int xt = (tex & 0xf) << 4;
|
||||
int yt = tex & 0xf0;
|
||||
|
||||
// float u0 = (xt) / 256.0f;
|
||||
// float u1 = (xt + 15.99f) / 256.0f;
|
||||
// float v0 = (yt) / 256.0f;
|
||||
// float v1 = (yt + 15.99f) / 256.0f;
|
||||
float u0 = (xt) / 256.0f;
|
||||
float u1 = (xt + 15.99f) / 256.0f;
|
||||
float v0 = (yt) / 256.0f;
|
||||
float v1 = (yt + 15.99f) / 256.0f;
|
||||
|
||||
// glPushMatrix2();
|
||||
// glTranslatef2((float) x, (float) y, (float) z);
|
||||
glPushMatrix2();
|
||||
glTranslatef2((float) x, (float) y, (float) z);
|
||||
|
||||
// float s = e.bbWidth * 1.4f;
|
||||
// glScalef2(s, s, s);
|
||||
// bindTexture("terrain.png");
|
||||
// Tesselator t = Tesselator.instance;
|
||||
float s = e->bbWidth * 1.4f;
|
||||
glScalef2(s, s, s);
|
||||
bindTexture("terrain.png");
|
||||
Tesselator& t = Tesselator::instance;
|
||||
|
||||
// float r = 1.0f;
|
||||
// float xo = 0.5f;
|
||||
// float yo = 0.0f;
|
||||
float r = 1.0f;
|
||||
float xo = 0.5f;
|
||||
float yo = 0.0f;
|
||||
|
||||
// float h = e.bbHeight / e.bbWidth;
|
||||
float h = e->bbHeight / e->bbWidth;
|
||||
|
||||
// glRotatef2(-entityRenderDispatcher.playerRotY, 0, 1, 0);
|
||||
// glTranslatef2(0, 0, -0.4f + ((int) h) * 0.02f);
|
||||
// glColor4f2(1, 1, 1, 1);
|
||||
// // glRotatef2(-playerRotX, 1, 0, 0);
|
||||
// t.begin();
|
||||
// while (h > 0) {
|
||||
// t.vertexUV(r - xo, 0 - yo, 0, u1, v1);
|
||||
// t.vertexUV(0 - xo, 0 - yo, 0, u0, v1);
|
||||
// t.vertexUV(0 - xo, 1.4f - yo, 0, u0, v0);
|
||||
// t.vertexUV(r - xo, 1.4f - yo, 0, u1, v0);
|
||||
// h -= 1;
|
||||
// yo -= 1;
|
||||
// r *= 0.9f;
|
||||
// glTranslatef2(0, 0, -0.04f);
|
||||
// }
|
||||
// t.end();
|
||||
// glPopMatrix2();
|
||||
// glEnable2(GL_LIGHTING);
|
||||
//}
|
||||
glRotatef2(-entityRenderDispatcher->playerRotY, 0, 1, 0);
|
||||
glTranslatef2(0, 0, -0.4f + ((int) h) * 0.02f);
|
||||
glColor4f2(1, 1, 1, 1);
|
||||
// glRotatef2(-playerRotX, 1, 0, 0);
|
||||
t.begin();
|
||||
while (h > 0) {
|
||||
t.vertexUV(r - xo, 0 - yo, 0, u1, v1);
|
||||
t.vertexUV(0 - xo, 0 - yo, 0, u0, v1);
|
||||
t.vertexUV(0 - xo, 1.4f - yo, 0, u0, v0);
|
||||
t.vertexUV(r - xo, 1.4f - yo, 0, u1, v0);
|
||||
h -= 1;
|
||||
yo -= 1;
|
||||
r *= 0.9f;
|
||||
glTranslatef2(0, 0, -0.04f);
|
||||
}
|
||||
t.draw();
|
||||
glPopMatrix2();
|
||||
// glEnable2(GL_LIGHTING);
|
||||
}
|
||||
|
||||
//void renderShadow(Entity e, float x, float y, float z, float pow, float a) {
|
||||
// glEnable2(GL_BLEND);
|
||||
// glBlendFunc2(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
void EntityRenderer::renderShadow(Entity* e, float x, float y, float z, float pow, float a) { //
|
||||
glEnable2(GL_BLEND);
|
||||
glBlendFunc2(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
// Textures textures = entityRenderDispatcher.textures;
|
||||
// textures.bind(textures.loadTexture("%clamp%/misc/shadow.png"));
|
||||
//Textures* textures = entityRenderDispatcher->textures;
|
||||
//textures->bind(textures->loadTexture("%clamp%/environment/shadow.png"));
|
||||
Textures* textures = entityRenderDispatcher->textures;
|
||||
textures->bind(textures->loadTexture("/misc/shadow.png"));
|
||||
|
||||
// Level level = getLevel();
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
|
||||
// glDepthMask(false);
|
||||
// float r = shadowRadius;
|
||||
Level* level = getLevel();
|
||||
|
||||
// float ex = e.xOld + (e.x - e.xOld) * a;
|
||||
// float ey = e.yOld + (e.y - e.yOld) * a + e.getShadowHeightOffs();
|
||||
// float ez = e.zOld + (e.z - e.zOld) * a;
|
||||
glDepthMask(false);
|
||||
float r = shadowRadius;
|
||||
|
||||
// int x0 = Mth.floor(ex - r);
|
||||
// int x1 = Mth.floor(ex + r);
|
||||
// int y0 = Mth.floor(ey - r);
|
||||
// int y1 = Mth.floor(ey);
|
||||
// int z0 = Mth.floor(ez - r);
|
||||
// int z1 = Mth.floor(ez + r);
|
||||
float ex = e->xOld + (e->x - e->xOld) * a;
|
||||
float ey = e->yOld + (e->y - e->yOld) * a + e->getShadowHeightOffs();
|
||||
float ez = e->zOld + (e->z - e->zOld) * a;
|
||||
|
||||
// float xo = x - ex;
|
||||
// float yo = y - ey;
|
||||
// float zo = z - ez;
|
||||
int x0 = Mth::floor(ex - r);
|
||||
int x1 = Mth::floor(ex + r);
|
||||
int y0 = Mth::floor(ey - r);
|
||||
int y1 = Mth::floor(ey);
|
||||
int z0 = Mth::floor(ez - r);
|
||||
int z1 = Mth::floor(ez + r);
|
||||
|
||||
// Tesselator tt = Tesselator.instance;
|
||||
// tt.begin();
|
||||
// for (int xt = x0; xt <= x1; xt++)
|
||||
// for (int yt = y0; yt <= y1; yt++)
|
||||
// for (int zt = z0; zt <= z1; zt++) {
|
||||
// int t = level.getTile(xt, yt - 1, zt);
|
||||
// if (t > 0 && level.getRawBrightness(xt, yt, zt) > 3) {
|
||||
// renderTileShadow(Tile.tiles[t], x, y + e.getShadowHeightOffs(), z, xt, yt, zt, pow, r, xo, yo + e.getShadowHeightOffs(), zo);
|
||||
// }
|
||||
// }
|
||||
// tt.end();
|
||||
float xo = x - ex;
|
||||
float yo = y - ey;
|
||||
float zo = z - ez;
|
||||
|
||||
// glColor4f2(1, 1, 1, 1);
|
||||
// glDisable2(GL_BLEND);
|
||||
// glDepthMask(true);
|
||||
//}
|
||||
Tesselator& tt = Tesselator::instance;
|
||||
tt.begin();
|
||||
for (int xt = x0; xt <= x1; xt++)
|
||||
for (int yt = y0; yt <= y1; yt++)
|
||||
for (int zt = z0; zt <= z1; zt++) {
|
||||
int t = level->getTile(xt, yt - 1, zt);
|
||||
if (t > 0 && level->getRawBrightness(xt, yt, zt) > 3) {
|
||||
renderTileShadow(Tile::tiles[t], x, y + e->getShadowHeightOffs(), z, xt, yt, zt, pow, r, xo, yo + e->getShadowHeightOffs(), zo);
|
||||
}
|
||||
}
|
||||
tt.draw();
|
||||
|
||||
//Level* getLevel() {
|
||||
// return entityRenderDispatcher.level;
|
||||
//}
|
||||
glColor4f2(1, 1, 1, 1);
|
||||
glDisable2(GL_BLEND);
|
||||
glDepthMask(true);
|
||||
}
|
||||
|
||||
//void renderTileShadow(Tile tt, float x, float y, float z, int xt, int yt, int zt, float pow, float r, float xo, float yo, float zo) {
|
||||
// Tesselator t = Tesselator.instance;
|
||||
// if (!tt.isCubeShaped()) return;
|
||||
Level* EntityRenderer::getLevel() {
|
||||
return entityRenderDispatcher->level;
|
||||
}
|
||||
|
||||
// float a = ((pow - (y - (yt + yo)) / 2) * 0.5f) * getLevel().getBrightness(xt, yt, zt);
|
||||
// if (a < 0) return;
|
||||
// if (a > 1) a = 1;
|
||||
// t.color(1, 1, 1, (float) a);
|
||||
// // glColor4f2(1, 1, 1, (float) a);
|
||||
void EntityRenderer::renderTileShadow(Tile* tt, float x, float y, float z, int xt, int yt, int zt, float pow, float r, float xo, float yo, float zo) {
|
||||
Tesselator& t = Tesselator::instance;
|
||||
if (!tt->isCubeShaped()) return;
|
||||
|
||||
// float x0 = xt + tt.xx0 + xo;
|
||||
// float x1 = xt + tt.xx1 + xo;
|
||||
// float y0 = yt + tt.yy0 + yo + 1.0 / 64.0f;
|
||||
// float z0 = zt + tt.zz0 + zo;
|
||||
// float z1 = zt + tt.zz1 + zo;
|
||||
float a = ((pow - (y - (yt + yo)) / 2) * 0.5f) * getLevel()->getBrightness(xt, yt, zt);
|
||||
if (a < 0) return;
|
||||
if (a > 1) a = 1;
|
||||
// t.color(1, 1, 1, (float) a);
|
||||
glColor4f2(1, 1, 1, (float) a);
|
||||
|
||||
// float u0 = (float) ((x - (x0)) / 2 / r + 0.5f);
|
||||
// float u1 = (float) ((x - (x1)) / 2 / r + 0.5f);
|
||||
// float v0 = (float) ((z - (z0)) / 2 / r + 0.5f);
|
||||
// float v1 = (float) ((z - (z1)) / 2 / r + 0.5f);
|
||||
float x0 = xt + tt->xx0 + xo;
|
||||
float x1 = xt + tt->xx1 + xo;
|
||||
float y0 = yt + tt->yy0 + yo + 1.0 / 64.0f;
|
||||
float z0 = zt + tt->zz0 + zo;
|
||||
float z1 = zt + tt->zz1 + zo;
|
||||
|
||||
// t.vertexUV(x0, y0, z0, u0, v0);
|
||||
// t.vertexUV(x0, y0, z1, u0, v1);
|
||||
// t.vertexUV(x1, y0, z1, u1, v1);
|
||||
// t.vertexUV(x1, y0, z0, u1, v0);
|
||||
//}
|
||||
float u0 = (float) ((x - (x0)) / 2 / r + 0.5f);
|
||||
float u1 = (float) ((x - (x1)) / 2 / r + 0.5f);
|
||||
float v0 = (float) ((z - (z0)) / 2 / r + 0.5f);
|
||||
float v1 = (float) ((z - (z1)) / 2 / r + 0.5f);
|
||||
|
||||
t.vertexUV(x0, y0, z0, u0, v0);
|
||||
t.vertexUV(x0, y0, z1, u0, v1);
|
||||
t.vertexUV(x1, y0, z1, u1, v1);
|
||||
t.vertexUV(x1, y0, z0, u1, v0);
|
||||
}
|
||||
|
||||
@@ -12,6 +12,8 @@ class EntityRenderDispatcher;
|
||||
class Entity;
|
||||
class AABB;
|
||||
class Font;
|
||||
class Tile;
|
||||
class Level;
|
||||
|
||||
class EntityRenderer
|
||||
{
|
||||
@@ -24,6 +26,11 @@ public:
|
||||
virtual void render(Entity* entity, float x, float y, float z, float rot, float a) = 0;
|
||||
static void render(const AABB& bb, float xo, float yo, float zo);
|
||||
static void renderFlat(const AABB& bb);
|
||||
void renderShadow(Entity* e, float x, float y, float z, float pow, float a);
|
||||
void renderTileShadow(Tile* tt, float x, float y, float z, int xt, int yt, int zt, float pow, float r, float xo, float yo, float zo);
|
||||
void renderFlame(Entity* e, float x, float y, float z, float a);
|
||||
void postRender(Entity* entity, float x, float y, float z, float rot, float a);
|
||||
Level* getLevel();
|
||||
|
||||
Font* getFont();
|
||||
|
||||
|
||||
@@ -226,7 +226,42 @@ void ItemRenderer::renderGuiItem(Font* font, Textures* textures, const ItemInsta
|
||||
t.draw();
|
||||
}
|
||||
|
||||
void ItemRenderer::renderGuiItemDecorations(const ItemInstance* item, float x, float y) {
|
||||
|
||||
void ItemRenderer::renderGuiItemDecorations(Font* font, Textures* textures, ItemInstance* item, int x, int y){ // this is normally unused in the header but i ported it from java beta - shredder
|
||||
if (item != NULL) {
|
||||
if (item->count > 1) {
|
||||
char buf[16];
|
||||
sprintf(buf, "%d", item->count);
|
||||
std::string countStr = buf;
|
||||
// glDisable(GL_LIGHTING);
|
||||
// glDisable(GL_DEPTH_TEST);
|
||||
font->drawShadow(countStr, x + 19 - 2 - font->width(countStr),
|
||||
y + 6 + 3, 0xFFFFFF);
|
||||
// glEnable(GL_LIGHTING);
|
||||
// glEnable(GL_DEPTH_TEST);
|
||||
}
|
||||
if (item->isDamaged()) {
|
||||
float p = std::floor(13.5f - (float) item->getDamageValue() * 13.0f / (float) item->getMaxDamage() + 0.5);
|
||||
int cc = (int) std::floor(255.5f - (float) item->getDamageValue() * 255.0f / (float) item->getMaxDamage() + 0.5);
|
||||
// glDisable(GL_LIGHTING);
|
||||
// glDisable(GL_DEPTH_TEST);
|
||||
// glDisable(GL_TEXTURE_2D);
|
||||
// auto var8 = ::net::minecraft::client::renderer::Tesselator::instance();
|
||||
Tesselator& t = Tesselator::instance;
|
||||
int ca = ((255 - cc)<< 16 | (cc << 8));
|
||||
int cb = (((255 - cc) / 4) << 16 | 16128);
|
||||
fillRect(t, x + 2, y + 13, 13, 2, 0);
|
||||
fillRect(t, x + 2, y + 13, 12, 1, cb);
|
||||
fillRect(t, x + 2, y + 13, p, 1, ca);
|
||||
// glEnable(GL_TEXTURE_2D);
|
||||
// glEnable(GL_LIGHTING);
|
||||
// glEnable(GL_DEPTH_TEST);
|
||||
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ItemRenderer::renderGuiItemDecorations(const ItemInstance* item, float x, float y) { // nothing changed here this is the normal pocket edition one.
|
||||
if (!item) return;
|
||||
if (item->count > 0 && item->isDamaged()) {
|
||||
float p = std::floor(13.5f - (float) item->getDamageValue() * 13.0f / (float) item->getMaxDamage());
|
||||
|
||||
@@ -22,7 +22,7 @@ public:
|
||||
static void renderGuiItem(Font* font, Textures* textures, const ItemInstance* item, float x, float y, bool fancy);
|
||||
static void renderGuiItem(Font* font, Textures* textures, const ItemInstance* item, float x, float y, float w, float h, bool fancy);
|
||||
static void renderGuiItemCorrect(Font* font, Textures* textures, const ItemInstance* item, int x, int y);
|
||||
//void renderGuiItemDecorations(Font* font, Textures* textures, ItemInstance* item, int x, int y);
|
||||
static void renderGuiItemDecorations(Font* font, Textures* textures, ItemInstance* item, int x, int y);
|
||||
static void renderGuiItemDecorations(const ItemInstance* item, float x, float y);
|
||||
|
||||
static void blit(float x, float y, float sx, float sy, float w, float h);
|
||||
|
||||
@@ -135,7 +135,7 @@ void MobRenderer::render(Entity* e, float x, float y, float z, float rot, float
|
||||
//glEnable2(GL_DEPTH_TEST);
|
||||
|
||||
glPopMatrix2();
|
||||
|
||||
postRender(mob, x, y, z, rot, a);
|
||||
renderName(mob, x, y, z);
|
||||
}
|
||||
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
#define USE_VBO
|
||||
#define GL_QUADS 0x0007
|
||||
#if defined(__APPLE__)
|
||||
#import <OpenGLES/ES1/gl.h>
|
||||
#import <OpenGLES/ES1/glext.h>
|
||||
#import <OpenGLES/ES1/gl.height>
|
||||
#import <OpenGLES/ES1/glext.height>
|
||||
#elif defined(ANDROID) || defined(__EMSCRIPTEN__)
|
||||
#import <OpenGLES/ES1/gl.h>
|
||||
#import <OpenGLES/ES1/glext.h>
|
||||
#include <GLES/gl.h>
|
||||
#include <GLES/glext.h>
|
||||
#else
|
||||
#include <glad/glad.h>
|
||||
|
||||
|
||||
@@ -206,3 +206,93 @@ void WaterSideTexture::tick() {
|
||||
pixels[i * 4 + 3] = a;
|
||||
}
|
||||
}
|
||||
|
||||
FireTexture::FireTexture()
|
||||
: super(((Tile*)Tile::fire)->tex),
|
||||
_tick(0),
|
||||
_frame(0)
|
||||
{
|
||||
current = new float[16*20];
|
||||
next = new float[16*20];
|
||||
heat = new float[16*20];
|
||||
heata = new float[16*20];
|
||||
|
||||
for (int i = 0; i < 256; ++i) {
|
||||
current[i] = 0;
|
||||
next[i] = 0;
|
||||
heat[i] = 0;
|
||||
heata[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
FireTexture::~FireTexture() {
|
||||
delete[] current;
|
||||
delete[] next;
|
||||
delete[] heat;
|
||||
delete[] heata;
|
||||
}
|
||||
|
||||
|
||||
// oh boy time to implement fire textures, i am so fucked - shredder
|
||||
|
||||
void FireTexture::tick() {
|
||||
// loop generates fire texture on the empty texture grid, hopefully shouldnt be too taxing on older hardware - shredder
|
||||
for (int x = 0; x < 16; x++) {
|
||||
for (int y = 0; y < 20; y++) {
|
||||
int count = 18;
|
||||
float pow = this->current[x + (y + 1) % 20 * 16] * (float)(count);
|
||||
for (int xx = x - 1; xx <= x + 1; xx++) {
|
||||
for (int yy = y; yy <= y + 1; yy++) {
|
||||
if (xx >= 0 && yy >= 0 && xx < 16 && yy < 20) {
|
||||
pow += this->current[xx + yy * 16];
|
||||
}
|
||||
count++;
|
||||
}
|
||||
}
|
||||
this->next[x + y * 16] = pow / (float(count) * 1.06f);
|
||||
if (y >= 19) {
|
||||
this->next[x + y * 16] = float(Mth::random() * Mth::random() * Mth::random() * 4.0 + Mth::random() * 0.1f + 0.2f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// hopefully this doesn't cause any mysterious issues - shredder
|
||||
float* tmp = next;
|
||||
next = current;
|
||||
current = tmp;
|
||||
|
||||
for (int i = 0; i < 256; i++) {
|
||||
float pow = this->current[i] * 1.8f;
|
||||
if (pow > 1.0f) {
|
||||
pow = 1.0f;
|
||||
}
|
||||
if (pow < 0.0f) {
|
||||
pow = 0.0f;
|
||||
}
|
||||
|
||||
|
||||
int r = (int) (pow * 155.0f + 100.0f);
|
||||
int g = (int)(pow * pow * 255.0f);
|
||||
int b = (int)(pow * pow * pow * pow * pow * pow * pow * pow * pow * pow * 255.0f);
|
||||
int a = 255;
|
||||
if (pow < 0.5f) {
|
||||
a = 0;
|
||||
}
|
||||
|
||||
// @TODO: cant be arsed rn to implement the anaglyph3d check would be nice to check if it does - shredder
|
||||
//if (this->anaglyph3d) {
|
||||
// float rr = (r * 30 + g * 59 + b * 11) / 100;
|
||||
// float gg = (r * 30 + g * 70) / 100;
|
||||
// float bb = (r * 30 + b * 70) / 100;
|
||||
// r = rr;
|
||||
// g = gg;
|
||||
// b = bb;
|
||||
//}
|
||||
|
||||
pixels[i * 4 + 0] = r;
|
||||
pixels[i * 4 + 1] = g;
|
||||
pixels[i * 4 + 2] = b;
|
||||
pixels[i * 4 + 3] = a;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -56,4 +56,21 @@ public:
|
||||
void tick();
|
||||
};
|
||||
|
||||
class FireTexture: public DynamicTexture
|
||||
{
|
||||
typedef DynamicTexture super;
|
||||
int _tick;
|
||||
int _frame;
|
||||
|
||||
float* current;
|
||||
float* next;
|
||||
float* heat;
|
||||
float* heata;
|
||||
|
||||
public:
|
||||
FireTexture();
|
||||
~FireTexture();
|
||||
|
||||
void tick();
|
||||
};
|
||||
#endif /*NET_MINECRAFT_CLIENT_RENDERER_PTEXTURE__DynamicTexture_H__*/
|
||||
|
||||
@@ -3,14 +3,8 @@
|
||||
|
||||
#include "SoundSystem.h"
|
||||
|
||||
// If audio breaks for other platforms, this is probably why. Here, I'm just calling where Apple's OpenAL headers live (they arent in just "AL"
|
||||
#if defined(__APPLE__)
|
||||
#include <OpenAL/al.h>
|
||||
#include <OpenAL/alc.h>
|
||||
#else
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
#endif
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
|
||||
#include <vector>
|
||||
#include <list>
|
||||
|
||||
98
src/util/Color.cpp
Normal file
98
src/util/Color.cpp
Normal file
@@ -0,0 +1,98 @@
|
||||
#include "Mth.h"
|
||||
|
||||
#include "Color.h"
|
||||
#include <cassert>
|
||||
|
||||
//Creates an opaque sRGB color with the specified red, green, and blue values in the range (0.0 - 1.0).
|
||||
//Alpha is defaulted to 1.0. The actual color used in rendering depends on finding the best match given the color space
|
||||
//available for a particular output device.
|
||||
//Parameters:
|
||||
//r - the red component
|
||||
//g - the green component
|
||||
//b - the blue component
|
||||
//Throws:
|
||||
//IllegalArgumentException - if r, g or b are outside of the range 0.0 to 1.0, inclusive
|
||||
Color::Color( float r, float g, float b)
|
||||
{
|
||||
assert( r >= 0.0f && r <= 1.0f );
|
||||
assert( g >= 0.0f && g <= 1.0f );
|
||||
assert( b >= 0.0f && b <= 1.0f );
|
||||
|
||||
//argb
|
||||
colour = ( (0xFF<<24) | ( (int)(r*255)<<16 ) | ( (int)(g*255)<<8 ) | ( (int)(b*255) ) );
|
||||
}
|
||||
|
||||
Color::Color( int r, int g, int b)
|
||||
{
|
||||
colour = ( (0xFF<<24) | ( (r&0xff)<<16 ) | ( (g&0xff)<<8 ) | ( (b&0xff) ) );
|
||||
}
|
||||
|
||||
|
||||
//Creates a Color object based on the specified values for the HSB color model.
|
||||
//The s and b components should be floating-point values between zero and one (numbers in the range 0.0-1.0).
|
||||
//The h component can be any floating-point number. The floor of this number is subtracted from it to create a fraction between 0 and 1.
|
||||
//This fractional number is then multiplied by 360 to produce the hue angle in the HSB color model.
|
||||
//
|
||||
//Parameters:
|
||||
//h - the hue component
|
||||
//s - the saturation of the color
|
||||
//b - the brightness of the color
|
||||
//Returns:
|
||||
//a Color object with the specified hue, saturation, and brightness.
|
||||
Color Color::getHSBColor(float hue, float saturation, float brightness)
|
||||
{
|
||||
int r = 0, g = 0, b = 0;
|
||||
if (saturation == 0)
|
||||
{
|
||||
r = g = b = (int) (brightness * 255.0f + 0.5f);
|
||||
}
|
||||
else
|
||||
{
|
||||
float h = (hue - (float)Mth::floor(hue)) * 6.0f;
|
||||
float f = h - (float)Mth::floor(h);
|
||||
float p = brightness * (1.0f - saturation);
|
||||
float q = brightness * (1.0f - saturation * f);
|
||||
float t = brightness * (1.0f - (saturation * (1.0f - f)));
|
||||
switch ((int) h)
|
||||
{
|
||||
case 0:
|
||||
r = (int) (brightness * 255.0f + 0.5f);
|
||||
g = (int) (t * 255.0f + 0.5f);
|
||||
b = (int) (p * 255.0f + 0.5f);
|
||||
break;
|
||||
case 1:
|
||||
r = (int) (q * 255.0f + 0.5f);
|
||||
g = (int) (brightness * 255.0f + 0.5f);
|
||||
b = (int) (p * 255.0f + 0.5f);
|
||||
break;
|
||||
case 2:
|
||||
r = (int) (p * 255.0f + 0.5f);
|
||||
g = (int) (brightness * 255.0f + 0.5f);
|
||||
b = (int) (t * 255.0f + 0.5f);
|
||||
break;
|
||||
case 3:
|
||||
r = (int) (p * 255.0f + 0.5f);
|
||||
g = (int) (q * 255.0f + 0.5f);
|
||||
b = (int) (brightness * 255.0f + 0.5f);
|
||||
break;
|
||||
case 4:
|
||||
r = (int) (t * 255.0f + 0.5f);
|
||||
g = (int) (p * 255.0f + 0.5f);
|
||||
b = (int) (brightness * 255.0f + 0.5f);
|
||||
break;
|
||||
case 5:
|
||||
r = (int) (brightness * 255.0f + 0.5f);
|
||||
g = (int) (p * 255.0f + 0.5f);
|
||||
b = (int) (q * 255.0f + 0.5f);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return Color( r, g, b );
|
||||
}
|
||||
|
||||
int Color::getRGB()
|
||||
{
|
||||
return colour;
|
||||
}
|
||||
15
src/util/Color.h
Normal file
15
src/util/Color.h
Normal file
@@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
class Color
|
||||
{
|
||||
private:
|
||||
int colour;
|
||||
|
||||
public:
|
||||
//Creates an opaque sRGB color with the specified red, green, and blue values in the range (0.0 - 1.0).
|
||||
Color( float r, float g, float b);
|
||||
Color( int r, int g, int b);
|
||||
|
||||
static Color getHSBColor(float h, float s, float b);
|
||||
int getRGB();
|
||||
};
|
||||
@@ -245,6 +245,7 @@ void Inventory::setupDefault() {
|
||||
addItem(new ItemInstance(Item::seeds_melon));
|
||||
addItem(new ItemInstance(Item::dye_powder, 1, DyePowderItem::WHITE));
|
||||
addItem(new ItemInstance(Item::hoe_iron));
|
||||
addItem(new ItemInstance(Item::flintAndSteel));
|
||||
#ifdef RPI
|
||||
Sel[0] = addItem(new ItemInstance(Item::sword_iron));
|
||||
#else
|
||||
|
||||
@@ -19,7 +19,7 @@ public:
|
||||
setMaxDamage(64);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
bool useOn(ItemInstance* instance, Player* player, Level* level, int x, int y, int z, int face, float clickX, float clickY, float clickZ) {
|
||||
if (face == 0) y--;
|
||||
if (face == 1) y++;
|
||||
@@ -30,14 +30,14 @@ public:
|
||||
|
||||
int targetType = level->getTile(x, y, z);
|
||||
if (targetType == 0) {
|
||||
level->playSound(x + 0.5, y + 0.5, z + 0.5, "fire.ignite", 1, sharedRandom.nextFloat() * 0.4f + 0.8f);
|
||||
level->setTile(x, y, z, Tile::fire->id);
|
||||
level->playSound(x + 0.5, y + 0.5, z + 0.5, "fire.ignite", 1, random.nextFloat() * 0.4f + 0.8f);
|
||||
level->setTile(x, y, z, ((Tile*)Tile::fire)->id);
|
||||
}
|
||||
|
||||
instance->hurt(1);
|
||||
return true;
|
||||
}
|
||||
*/
|
||||
|
||||
};
|
||||
|
||||
#endif /*NET_MINECRAFT_WORLD_ITEM__FlintAndSteelItem_H__*/
|
||||
|
||||
13
src/world/level/FoliageColor.cpp
Normal file
13
src/world/level/FoliageColor.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "FoliageColor.h"
|
||||
|
||||
// TODO: Probably move all the stuff from the header into here so it's a bit cleaner
|
||||
bool FoliageColor::useTint = true;
|
||||
|
||||
int FoliageColor::get(float temp, float rain) {
|
||||
rain *= temp;
|
||||
int x = (int) ((1 - temp) * 255);
|
||||
int y = (int) ((1 - rain) * 255);
|
||||
return pixels[y << 8 | x];
|
||||
}
|
||||
|
||||
int* FoliageColor::pixels = nullptr;
|
||||
@@ -6,31 +6,49 @@
|
||||
class FoliageColor
|
||||
{
|
||||
public:
|
||||
// static void init(int[] pixels) {
|
||||
// FoliageColor::pixels = pixels;
|
||||
// }
|
||||
//
|
||||
// static int get(float temp, float rain) {
|
||||
// rain *= temp;
|
||||
// int x = (int) ((1 - temp) * 255);
|
||||
// int y = (int) ((1 - rain) * 255);
|
||||
// return pixels[y << 8 | x];
|
||||
// }
|
||||
static bool useTint;
|
||||
|
||||
static int getEvergreenColor() {
|
||||
return 0x619961;
|
||||
}
|
||||
static void setUseTint(bool value) {
|
||||
useTint = value;
|
||||
}
|
||||
/*
|
||||
Shredder here, Ive converted the unused commented out code into their correct syntax, though if i did something incorrectly feel free to take reference from the
|
||||
commented out code
|
||||
*/
|
||||
|
||||
static int getBirchColor() {
|
||||
return 0x80a755;
|
||||
}
|
||||
// static void init(int[] pixels) {
|
||||
// FoliageColor::pixels = pixels;
|
||||
// }
|
||||
//
|
||||
// static int get(float temp, float rain) {
|
||||
// rain *= temp;
|
||||
// int x = (int) ((1 - temp) * 255);
|
||||
// int y = (int) ((1 - rain) * 255);
|
||||
// return pixels[y << 8 | x];
|
||||
// }
|
||||
|
||||
static int getDefaultColor() {
|
||||
return 0x48b518;
|
||||
}
|
||||
|
||||
static void init(int* p) {
|
||||
pixels = p;
|
||||
}
|
||||
|
||||
static int get(float temp, float rain);
|
||||
|
||||
static int getEvergreenColor() {
|
||||
return 0x619961;
|
||||
}
|
||||
|
||||
static int getBirchColor() {
|
||||
return 0x80a755;
|
||||
}
|
||||
|
||||
static int getDefaultColor() {
|
||||
return 0xFFFFFF;
|
||||
}
|
||||
|
||||
private:
|
||||
//static int pixels[256*256];
|
||||
// static int pixels[256*256];
|
||||
static int* pixels;
|
||||
};
|
||||
|
||||
#endif /*NET_MINECRAFT_WORLD_LEVEL__FoliageColor_H__*/
|
||||
|
||||
13
src/world/level/GrassColor.cpp
Normal file
13
src/world/level/GrassColor.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "GrassColor.h"
|
||||
|
||||
// TODO: Probably move all the stuff from the header into here so it's a bit cleaner
|
||||
bool GrassColor::useTint = true;
|
||||
|
||||
int GrassColor::get(float temp, float rain) {
|
||||
rain *= temp;
|
||||
int x = (int) ((1 - temp) * 255);
|
||||
int y = (int) ((1 - rain) * 255);
|
||||
return pixels[y << 8 | x];
|
||||
}
|
||||
|
||||
int* GrassColor::pixels = nullptr;
|
||||
42
src/world/level/GrassColor.h
Normal file
42
src/world/level/GrassColor.h
Normal file
@@ -0,0 +1,42 @@
|
||||
#ifndef NET_MINECRAFT_WORLD_LEVEL__GrassColor_H__
|
||||
#define NET_MINECRAFT_WORLD_LEVEL__GrassColor_H__
|
||||
|
||||
//package net.minecraft.world.level;
|
||||
|
||||
class GrassColor
|
||||
{
|
||||
public:
|
||||
static bool useTint;
|
||||
|
||||
static void setUseTint(bool value) {
|
||||
useTint = value;
|
||||
}
|
||||
/*
|
||||
Shredder here, Ive converted the unused commented out code into their correct syntax, though if i did something incorrectly feel free to take reference from the
|
||||
commented out code
|
||||
*/
|
||||
|
||||
// static void init(int[] pixels) {
|
||||
// GrassColor::pixels = pixels;
|
||||
// }
|
||||
//
|
||||
// static int get(float temp, float rain) {
|
||||
// rain *= temp;
|
||||
// int x = (int) ((1 - temp) * 255);
|
||||
// int y = (int) ((1 - rain) * 255);
|
||||
// return pixels[y << 8 | x];
|
||||
// }
|
||||
|
||||
|
||||
static void init(int* p) {
|
||||
pixels = p;
|
||||
}
|
||||
|
||||
static int get(float temp, float rain);
|
||||
|
||||
private:
|
||||
// static int pixels[256*256];
|
||||
static int* pixels;
|
||||
};
|
||||
|
||||
#endif /*NET_MINECRAFT_WORLD_LEVEL__GrassColor_H__*/
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,8 +3,9 @@
|
||||
|
||||
//package net.minecraft.world.level;
|
||||
|
||||
/*
|
||||
|
||||
class BiomeSource;
|
||||
/*
|
||||
class TileEntity;
|
||||
*/
|
||||
class Material;
|
||||
@@ -29,7 +30,7 @@ public:
|
||||
virtual bool isSolidRenderTile(int x, int i, int z) = 0;
|
||||
virtual bool isSolidBlockingTile(int x, int i, int z) = 0;
|
||||
|
||||
//virtual BiomeSource* getBiomeSource() = 0;
|
||||
virtual BiomeSource* getBiomeSource() = 0;
|
||||
virtual Biome* getBiome(int x, int z) = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "tile/Tile.h"
|
||||
#include "Level.h"
|
||||
|
||||
|
||||
Region::Region(Level* level, int x1, int y1, int z1, int x2, int y2, int z2) {
|
||||
this->level = level;
|
||||
|
||||
@@ -135,6 +136,6 @@ Biome* Region::getBiome( int x, int z ) {
|
||||
return level->getBiome(x, z);
|
||||
}
|
||||
|
||||
//BiomeSource getBiomeSource() {
|
||||
// return level.getBiomeSource();
|
||||
//}
|
||||
BiomeSource* Region::getBiomeSource() {
|
||||
return level->getBiomeSource();
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
#include "LevelSource.h"
|
||||
|
||||
|
||||
class Level;
|
||||
class Material;
|
||||
class LevelChunk;
|
||||
@@ -27,6 +28,7 @@ public:
|
||||
int getData(int x, int y, int z);
|
||||
const Material* getMaterial(int x, int y, int z);
|
||||
Biome* getBiome(int x, int z);
|
||||
BiomeSource* getBiomeSource() override;
|
||||
private:
|
||||
int xc1, zc1;
|
||||
LevelChunk*** chunks;
|
||||
|
||||
@@ -2,11 +2,14 @@
|
||||
|
||||
#include "../levelgen/feature/TreeFeature.h"
|
||||
#include "../levelgen/feature/TallgrassFeature.h"
|
||||
#include "../levelgen/feature/BasicTree.h"
|
||||
|
||||
#include "../../entity/EntityTypes.h"
|
||||
#include "../../entity/MobCategory.h"
|
||||
#include "../../level/tile/TallGrass.h"
|
||||
|
||||
#include "../../../util/Color.h"
|
||||
|
||||
Biome* Biome::rainForest = NULL;
|
||||
Biome* Biome::swampland = NULL;
|
||||
Biome* Biome::seasonalForest = NULL;
|
||||
@@ -140,7 +143,7 @@ void Biome::teardownBiomes() {
|
||||
Feature* Biome::getTreeFeature( Random* random )
|
||||
{
|
||||
if (random->nextInt(10) == 0) {
|
||||
//return /*new*/ BasicTree();
|
||||
return new BasicTree(false);
|
||||
}
|
||||
return new TreeFeature(false);
|
||||
}
|
||||
@@ -148,6 +151,9 @@ Feature* Biome::getGrassFeature( Random* random ) {
|
||||
return new TallgrassFeature(Tile::tallgrass->id, TallGrass::TALL_GRASS);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Biome* Biome::getBiome( float temperature, float downfall )
|
||||
{
|
||||
int a = (int) (temperature * 63);
|
||||
@@ -204,11 +210,11 @@ float Biome::adjustDepth( float depth )
|
||||
|
||||
int Biome::getSkyColor( float temp )
|
||||
{
|
||||
// temp /= 3.f;
|
||||
// if (temp < -1) temp = -1;
|
||||
// if (temp > 1) temp = 1;
|
||||
return 0x80808080;
|
||||
//return Color.getHSBColor(224 / 360.0f - temp * 0.05f, 0.50f + temp * 0.1f, 1.0f).getRGB();
|
||||
temp /= 3.f;
|
||||
if (temp < -1) temp = -1;
|
||||
if (temp > 1) temp = 1;
|
||||
// return 0x80808080;This is the vanilla way, add it as OPTION_SKY or leave it like this bcus this function literally never gets used anyways if level has vanilla sky color - shredder
|
||||
return Color::getHSBColor(224 / 360.0f - temp * 0.05f, 0.50f + temp * 0.1f, 1.0f).getRGB();
|
||||
}
|
||||
|
||||
Biome::MobList& Biome::getMobs(const MobCategory& category)
|
||||
|
||||
@@ -69,11 +69,11 @@ Biome* BiomeSource::getBiome( int x, int z )
|
||||
return getBiomeBlock(x, z, 1, 1)[0];
|
||||
}
|
||||
|
||||
//float BiomeSource::getTemperature( int x, int z )
|
||||
//{
|
||||
// temperatures = temperatureMap->getRegion(temperatures, x, z, 1, 1, tempScale, tempScale, 0.5f);
|
||||
// return temperatures[0];
|
||||
//}
|
||||
float BiomeSource::getTemperature( int x, int z )
|
||||
{
|
||||
temperatures = temperatureMap->getRegion(temperatures, x, z, 1, 1, tempScale, tempScale, 0.5f);
|
||||
return temperatures[0];
|
||||
}
|
||||
|
||||
Biome** BiomeSource::getBiomeBlock( int x, int z, int w, int h )
|
||||
{
|
||||
@@ -123,7 +123,7 @@ Biome** BiomeSource::getBiomeBlock( Biome** biomes__, int x, int z, int w, int h
|
||||
return biomes;
|
||||
}
|
||||
|
||||
float* BiomeSource::getTemperatureBlock( /*float* temperatures__, */int x, int z, int w, int h )
|
||||
float* BiomeSource::getTemperatureBlock( float* temperatures__, int x, int z, int w, int h )
|
||||
{
|
||||
//LOGI("gTempBlock: 1\n");
|
||||
//const int size = w * h;
|
||||
@@ -164,8 +164,8 @@ float* BiomeSource::getTemperatureBlock( /*float* temperatures__, */int x, int z
|
||||
return temperatures;
|
||||
}
|
||||
|
||||
//float* BiomeSource::getDownfallBlock( /*float* downfalls__,*/ int x, int z, int w, int h )
|
||||
//{
|
||||
float* BiomeSource::getDownfallBlock( float* downfalls__, int x, int z, int w, int h )
|
||||
{
|
||||
// //const int size = w * h;
|
||||
// //if (lenDownfalls < size) {
|
||||
// // delete[] downfalls;
|
||||
@@ -173,6 +173,6 @@ float* BiomeSource::getTemperatureBlock( /*float* temperatures__, */int x, int z
|
||||
// // lenDownfalls = size;
|
||||
// //}
|
||||
//
|
||||
// downfalls = downfallMap->getRegion(downfalls, x, z, w, w, downfallScale, downfallScale, 0.5f);
|
||||
// return downfalls;
|
||||
//}
|
||||
downfalls = downfallMap->getRegion(downfalls, x, z, w, w, downfallScale, downfallScale, 0.5f);
|
||||
return downfalls;
|
||||
}
|
||||
|
||||
@@ -31,13 +31,13 @@ public:
|
||||
virtual Biome* getBiome(const ChunkPos& chunk);
|
||||
virtual Biome* getBiome(int x, int z);
|
||||
|
||||
//virtual float getTemperature(int x, int z);
|
||||
virtual float getTemperature(int x, int z);
|
||||
|
||||
// Note: The arrays returned here are temporary in the meaning that their
|
||||
// contents might change in the future. If you need to SAVE the
|
||||
// values, do a shallow copy to an array of your own.
|
||||
virtual float* getTemperatureBlock(/*float* temperatures, */ int x, int z, int w, int h);
|
||||
//virtual float* getDownfallBlock(/*float* downfalls, */int x, int z, int w, int h);
|
||||
virtual float* getTemperatureBlock(float* temperatures, int x, int z, int w, int h);
|
||||
virtual float* getDownfallBlock(float* downfalls, int x, int z, int w, int h);
|
||||
virtual Biome** getBiomeBlock(int x, int z, int w, int h);
|
||||
|
||||
private:
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "Biome.h"
|
||||
#include "../levelgen/feature/TreeFeature.h"
|
||||
#include "../levelgen/feature/BirchFeature.h"
|
||||
#include "../levelgen/feature/BasicTree.h"
|
||||
|
||||
class ForestBiome: public Biome
|
||||
{
|
||||
@@ -15,7 +16,7 @@ public:
|
||||
return new BirchFeature();
|
||||
}
|
||||
if (random->nextInt(3) == 0) {
|
||||
//return new BasicTree();
|
||||
return new BasicTree(false);
|
||||
}
|
||||
return new TreeFeature(false);
|
||||
}
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
#include "Biome.h"
|
||||
#include "../../../util/Random.h"
|
||||
#include "../levelgen/feature/TreeFeature.h"
|
||||
#include "../levelgen/feature/BasicTree.h"
|
||||
|
||||
class RainforestBiome: public Biome
|
||||
{
|
||||
public:
|
||||
Feature* getTreeFeature(Random* random) {
|
||||
if (random->nextInt(3) == 0) {
|
||||
//return new BasicTree();
|
||||
return new BasicTree(false);
|
||||
}
|
||||
return new TreeFeature(false);
|
||||
}
|
||||
|
||||
@@ -262,14 +262,14 @@ void LevelChunk::recalcHeight(int x, int yStart, int z) {
|
||||
|
||||
/*public*/
|
||||
void LevelChunk::skyBrightnessChanged() {
|
||||
// int x0 = xt;
|
||||
// int y0 = this->minHeight - 16;
|
||||
// int z0 = zt;
|
||||
// int x1 = xt + 16;
|
||||
// int y1 = Level::DEPTH - 1;
|
||||
// int z1 = zt + 16;
|
||||
int x0 = xt;
|
||||
int y0 = this->minHeight - 16;
|
||||
int z0 = zt;
|
||||
int x1 = xt + 16;
|
||||
int y1 = Level::DEPTH - 1;
|
||||
int z1 = zt + 16;
|
||||
|
||||
//level->setTilesDirty(x0, y0, z0, x1, y1, z1);
|
||||
level->setTilesDirty(x0, y0, z0, x1, y1, z1);
|
||||
}
|
||||
|
||||
/*public*/
|
||||
|
||||
@@ -15,7 +15,8 @@ Dimension::Dimension()
|
||||
ultraWarm(false),
|
||||
hasCeiling(false),
|
||||
biomeSource(NULL),
|
||||
id(0)
|
||||
id(0),
|
||||
fogColor(0x80daff)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -93,6 +94,18 @@ float* Dimension::getSunriseColor( float td, float a )
|
||||
|
||||
Vec3 Dimension::getFogColor( float td, float a )
|
||||
{
|
||||
if (FogType == 1)
|
||||
{
|
||||
fogColor = 0xc0d8ff; // 1 returns java beta styled fog color.
|
||||
}
|
||||
else if (FogType == 2)
|
||||
{
|
||||
fogColor = 0x406fe5; // 2 returns some type of unused fog color IDK what this one was used for possibly early pe??
|
||||
}
|
||||
else // otherwise as default we return the mcpe fog color
|
||||
{
|
||||
fogColor = 0x80daff;
|
||||
}
|
||||
float br = Mth::cos(td * Mth::PI * 2) * 2 + 0.5f;
|
||||
if (br < 0.0f) br = 0.0f;
|
||||
if (br > 1.0f) br = 1.0f;
|
||||
@@ -104,7 +117,8 @@ Vec3 Dimension::getFogColor( float td, float a )
|
||||
g *= br * 0.94f + 0.06f;
|
||||
b *= br * 0.91f + 0.09f;
|
||||
return Vec3(r, g, b);
|
||||
//return Vec3(0.752941f, 0.847059f, 1);
|
||||
|
||||
//
|
||||
}
|
||||
|
||||
bool Dimension::mayRespawn()
|
||||
|
||||
@@ -49,8 +49,11 @@ public:
|
||||
bool hasCeiling;
|
||||
float brightnessRamp[16];//Level::MAX_BRIGHTNESS + 1];
|
||||
int id;
|
||||
|
||||
// shredder added
|
||||
int FogType; // lets us choose between what fog we want ig
|
||||
protected:
|
||||
static const long fogColor = 0x80daff;//0x406fe5;//0xc0d8ff;
|
||||
long fogColor; //= 0x80daff;//0x406fe5;//0xc0d8ff;
|
||||
float sunriseCol[4];
|
||||
};
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
class NormalDayCycleDimension: public Dimension {
|
||||
public:
|
||||
|
||||
float getTimeOfDay(long time, float a) {
|
||||
int dayStep = (int) (time % Level::TICKS_PER_DAY);
|
||||
float td = (dayStep + a) / Level::TICKS_PER_DAY - 0.25f;
|
||||
@@ -20,6 +21,18 @@ public:
|
||||
}
|
||||
|
||||
Vec3 getFogColor( float td, float a ) {
|
||||
if (FogType == 1)
|
||||
{
|
||||
fogColor = 0xc0d8ff; // 1 returns java beta styled fog color.
|
||||
}
|
||||
else if (FogType == 2)
|
||||
{
|
||||
fogColor = 0x406fe5; // 2 returns some type of unused fog color IDK what this one was used for possibly early pe??
|
||||
}
|
||||
else // otherwise as default we return the mcpe fog color
|
||||
{
|
||||
fogColor = 0x80daff;
|
||||
}
|
||||
float br = cos(td * Mth::PI * 2) * 2 + 0.5f;
|
||||
if (br < 0) br = 0;
|
||||
if (br > 1.f) br = 1.f;
|
||||
@@ -35,7 +48,7 @@ public:
|
||||
|
||||
return Vec3(r, g, b);
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif /*NET_MINECRAFT_WORLD_LEVEL_DIMENSION__NormalDayCycleDimension_H__*/
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#if 0
|
||||
|
||||
|
||||
#include "CanyonFeature.h"
|
||||
|
||||
@@ -138,7 +138,7 @@ void CanyonFeature::addTunnel( int xOffs, int zOffs, unsigned char* blocks, floa
|
||||
}
|
||||
}
|
||||
|
||||
void CanyonFeature::addFeature( Level level, int x, int z, int xOffs, int zOffs, char* blocks )
|
||||
void CanyonFeature::addFeature(Level* level, int x, int z, int xOffs, int zOffs,unsigned char* blocks)
|
||||
{
|
||||
if (random.nextInt(15) != 0) return;
|
||||
|
||||
@@ -151,6 +151,7 @@ void CanyonFeature::addFeature( Level level, int x, int z, int xOffs, int zOffs,
|
||||
float thickness = (random.nextFloat() * 2 + random.nextFloat()) + 1;
|
||||
|
||||
addTunnel(xOffs, zOffs, blocks, xCave, yCave, zCave, thickness, yRot, xRot, 0, 0, 5.0);
|
||||
|
||||
}
|
||||
|
||||
/* //private
|
||||
@@ -165,4 +166,4 @@ void CanyonFeature::addFeature( Level level, int x, int z, int xOffs, int zOffs,
|
||||
for (int z = zOffs - r; z <= zOffs + r; z++) {
|
||||
random.setSeed((x * xScale + z * zScale) ^ level.seed);*/
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__
|
||||
#define NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__
|
||||
|
||||
#if 0
|
||||
|
||||
|
||||
//package net.minecraft.world.level.levelgen;
|
||||
|
||||
@@ -12,8 +12,8 @@ class CanyonFeature: public LargeFeature {
|
||||
/*protected*/
|
||||
void addTunnel(int xOffs, int zOffs, unsigned char* blocks, float xCave, float yCave, float zCave, float thickness, float yRot, float xRot, int step, int dist, float yScale);
|
||||
/*protected*/
|
||||
void addFeature(Level level, int x, int z, int xOffs, int zOffs, char* blocks);
|
||||
void addFeature(Level* level, int x, int z, int xOffs, int zOffs,unsigned char* blocks);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif /*NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__*/
|
||||
|
||||
@@ -370,6 +370,18 @@ void RandomLevelSource::postProcess(ChunkSource* parent, int xt, int zt) {
|
||||
}
|
||||
//printf("placing tree at %d, %d, %d\n", x, y, z);
|
||||
}
|
||||
// for (int i = 0; i < forests; i++) {
|
||||
// int x = xo + random.nextInt(16) + 8;
|
||||
// int z = zo + random.nextInt(16) + 8;
|
||||
//int y = level->getHeightmap(x, z);
|
||||
// Feature* tree = biome->getBasicTreeFeature(&random);
|
||||
//if (tree) {
|
||||
// tree->init(1, 1, 1);
|
||||
// tree->place(level, &random, x, y, z);
|
||||
// delete tree;
|
||||
//}
|
||||
////printf("placing tree at %d, %d, %d\n", x, y, z);
|
||||
// }
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
int x = xo + random.nextInt(16) + 8;
|
||||
@@ -461,7 +473,7 @@ void RandomLevelSource::postProcess(ChunkSource* parent, int xt, int zt) {
|
||||
MobSpawner::postProcessSpawnMobs(level, biome, xo + 8, zo + 8, 16, 16, &random);
|
||||
|
||||
//LOGI("Reading temp: 1\n");
|
||||
float* temperatures = level->getBiomeSource()->getTemperatureBlock(/*NULL,*/ xo + 8, zo + 8, 16, 16);
|
||||
float* temperatures = level->getBiomeSource()->getTemperatureBlock(NULL, xo + 8, zo + 8, 16, 16);
|
||||
for (int x = xo + 8; x < xo + 8 + 16; x++)
|
||||
for (int z = zo + 8; z < zo + 8 + 16; z++) {
|
||||
int xp = x - (xo + 8);
|
||||
|
||||
446
src/world/level/levelgen/feature/BasicTree.h
Normal file
446
src/world/level/levelgen/feature/BasicTree.h
Normal file
@@ -0,0 +1,446 @@
|
||||
#ifndef NET_MINECRAFT_WORLD_LEVEL_LEVELGEN_FEATURE__BasicTree_H__
|
||||
#define NET_MINECRAFT_WORLD_LEVEL_LEVELGEN_FEATURE__BasicTree_H__
|
||||
|
||||
//package net.minecraft.world.level.levelgen.feature;
|
||||
|
||||
#include "Feature.h"
|
||||
|
||||
#include "../../../../util/Random.h"
|
||||
#include "../../Level.h"
|
||||
|
||||
#include "../../tile/TreeTile.h"
|
||||
|
||||
class Level;
|
||||
|
||||
class BasicTree : public Feature
|
||||
{
|
||||
typedef Feature super;
|
||||
private:
|
||||
|
||||
|
||||
|
||||
unsigned char axisConversionArray[6];
|
||||
Random *rnd;
|
||||
Level *thisLevel;
|
||||
int origin[3];
|
||||
int height;
|
||||
int trunkHeight;
|
||||
double trunkHeightScale;
|
||||
double branchDensity;
|
||||
double branchSlope;
|
||||
double widthScale;
|
||||
double foliageDensity;
|
||||
int trunkWidth;
|
||||
int heightVariance;
|
||||
int foliageHeight;
|
||||
int **foliageCoords;
|
||||
int foliageCoordsLength;
|
||||
void prepare(){
|
||||
trunkHeight = (int) (height * trunkHeightScale);
|
||||
if (trunkHeight >= height) trunkHeight = height - 1;
|
||||
int clustersPerY = (int) (1.382 + pow(foliageDensity * height / 13.0, 2));
|
||||
if (clustersPerY < 1) clustersPerY = 1;
|
||||
int **tempFoliageCoords = new int *[clustersPerY * height];
|
||||
for( int i = 0; i < clustersPerY * height; i++ )
|
||||
{
|
||||
tempFoliageCoords[i] = new int[4];
|
||||
}
|
||||
int y = origin[1] + height - foliageHeight;
|
||||
int clusterCount = 1;
|
||||
int trunkTop = origin[1] + trunkHeight;
|
||||
int relativeY = y - origin[1];
|
||||
|
||||
tempFoliageCoords[0][0] = origin[0];
|
||||
tempFoliageCoords[0][1] = y;
|
||||
tempFoliageCoords[0][2] = origin[2];
|
||||
tempFoliageCoords[0][3] = trunkTop;
|
||||
y--;
|
||||
|
||||
while (relativeY >= 0)
|
||||
{
|
||||
int num = 0;
|
||||
|
||||
float shapefac = treeShape(relativeY);
|
||||
if (shapefac < 0)
|
||||
{
|
||||
y--;
|
||||
relativeY--;
|
||||
continue;
|
||||
}
|
||||
|
||||
double originOffset = 0.5;
|
||||
while (num < clustersPerY)
|
||||
{
|
||||
double radius = widthScale * (shapefac * (rnd->nextFloat() + 0.328));
|
||||
double angle = rnd->nextFloat() * 2.0 * 3.14159;
|
||||
int x = Mth::floor(radius * sin(angle) + origin[0] + originOffset);
|
||||
int z = Mth::floor(radius * cos(angle) + origin[2] + originOffset);
|
||||
int checkStart[] = { x, y, z };
|
||||
int checkEnd[] = { x, y + foliageHeight, z };
|
||||
if (checkLine(checkStart, checkEnd) == -1) {
|
||||
int checkBranchBase[] = { origin[0], origin[1], origin[2] };
|
||||
double distance = sqrt(pow(abs(origin[0] - checkStart[0]), 2.0) + pow(abs(origin[2] - checkStart[2]), 2.0));
|
||||
double branchHeight = distance * branchSlope;
|
||||
if ((checkStart[1] - branchHeight) > trunkTop)
|
||||
{
|
||||
checkBranchBase[1] = trunkTop;
|
||||
}
|
||||
else
|
||||
{
|
||||
checkBranchBase[1] = (int) (checkStart[1] - branchHeight);
|
||||
}
|
||||
if (checkLine(checkBranchBase, checkStart) == -1)
|
||||
{
|
||||
tempFoliageCoords[clusterCount][0] = x;
|
||||
tempFoliageCoords[clusterCount][1] = y;
|
||||
tempFoliageCoords[clusterCount][2] = z;
|
||||
tempFoliageCoords[clusterCount][3] = checkBranchBase[1];
|
||||
clusterCount++;
|
||||
}
|
||||
}
|
||||
num++;
|
||||
}
|
||||
y--;
|
||||
relativeY--;
|
||||
}
|
||||
|
||||
foliageCoordsLength = clusterCount;
|
||||
foliageCoords = tempFoliageCoords;
|
||||
|
||||
for( int i = clusterCount; i < clustersPerY * height; i++ )
|
||||
{
|
||||
delete [] tempFoliageCoords[i];
|
||||
tempFoliageCoords[i] = NULL;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void crossection(int x, int y, int z, float radius, unsigned char direction, int material)
|
||||
{
|
||||
|
||||
int rad = (int) (radius + 0.618);
|
||||
unsigned char secidx1 = axisConversionArray[direction];
|
||||
unsigned char secidx2 = axisConversionArray[direction + 3];
|
||||
int center[] = { x, y, z };
|
||||
int position[] = { 0, 0, 0 };
|
||||
int offset1 = -rad;
|
||||
int offset2 = -rad;
|
||||
int thismat;
|
||||
position[direction] = center[direction];
|
||||
while (offset1 <= rad)
|
||||
{
|
||||
position[secidx1] = center[secidx1] + offset1;
|
||||
offset2 = -rad;
|
||||
while (offset2 <= rad)
|
||||
{
|
||||
double thisdistance = pow(abs(offset1) + 0.5, 2) + pow(abs(offset2) + 0.5, 2);
|
||||
if (thisdistance > radius * radius)
|
||||
{
|
||||
offset2++;
|
||||
continue;
|
||||
}
|
||||
position[secidx2] = center[secidx2] + offset2;
|
||||
|
||||
thismat = thisLevel->getTile(position[0], position[1], position[2]);
|
||||
|
||||
if (!((thismat == 0) || (thismat == Tile::leaves->id)))
|
||||
{
|
||||
offset2++;
|
||||
continue;
|
||||
}
|
||||
|
||||
placeBlock(thisLevel, position[0], position[1], position[2], material, 0);
|
||||
|
||||
offset2++;
|
||||
}
|
||||
offset1++;
|
||||
}
|
||||
|
||||
}
|
||||
float treeShape(int y){
|
||||
if (y < (((float) height) * 0.3)) return (float) -1.618;
|
||||
float radius = ((float) height) / ((float) 2.0);
|
||||
float adjacent = (((float) height) / ((float) 2.0)) - y;
|
||||
float distance;
|
||||
if (adjacent == 0) distance = radius;
|
||||
else if (abs(adjacent) >= radius) distance = (float) 0.0;
|
||||
else distance = (float) sqrt(pow(abs(radius), 2) - pow(abs(adjacent), 2));
|
||||
distance *= (float) 0.5;
|
||||
return distance;
|
||||
}
|
||||
float foliageShape(int y){
|
||||
if ((y < 0) || (y >= foliageHeight)) return (float) -1;
|
||||
else if ((y == 0) || (y == (foliageHeight - 1))) return (float) 2;
|
||||
else return (float) 3;
|
||||
}
|
||||
void foliageCluster(int x, int y, int z){
|
||||
|
||||
int topy = y + foliageHeight;
|
||||
int cury = topy - 1;
|
||||
float radius;
|
||||
while (cury >= y)
|
||||
{
|
||||
radius = foliageShape(cury - y);
|
||||
crossection(x, cury, z, radius, (unsigned char) 1, Tile::leaves->id);
|
||||
cury--;
|
||||
}
|
||||
|
||||
}
|
||||
void limb(int *start, int *end, int material)
|
||||
{
|
||||
int delta[] = { 0, 0, 0 };
|
||||
unsigned char idx = 0;
|
||||
unsigned char primidx = 0;
|
||||
while (idx < 3)
|
||||
{
|
||||
delta[idx] = end[idx] - start[idx];
|
||||
if (abs(delta[idx]) > abs(delta[primidx]))
|
||||
{
|
||||
primidx = idx;
|
||||
}
|
||||
idx++;
|
||||
}
|
||||
if (delta[primidx] == 0) return;
|
||||
unsigned char secidx1 = axisConversionArray[primidx];
|
||||
unsigned char secidx2 = axisConversionArray[primidx + 3];
|
||||
char primsign;
|
||||
if (delta[primidx] > 0) primsign = 1;
|
||||
else primsign = -1;
|
||||
double secfac1 = ((double) delta[secidx1]) / ((double) delta[primidx]);
|
||||
double secfac2 = ((double) delta[secidx2]) / ((double) delta[primidx]);
|
||||
int coordinate[] = { 0, 0, 0 };
|
||||
int primoffset = 0;
|
||||
int endoffset = delta[primidx] + primsign;
|
||||
while (primoffset != endoffset)
|
||||
{
|
||||
coordinate[primidx] = Mth::floor(start[primidx] + primoffset + 0.5);
|
||||
coordinate[secidx1] = Mth::floor(start[secidx1] + (primoffset * secfac1) + 0.5);
|
||||
coordinate[secidx2] = Mth::floor(start[secidx2] + (primoffset * secfac2) + 0.5);
|
||||
|
||||
int dir = 0;
|
||||
int xdiff = abs(coordinate[0] - start[0]);
|
||||
int zdiff = abs(coordinate[2] - start[2]);
|
||||
int maxdiff = (std::max)(xdiff, zdiff);
|
||||
|
||||
if (maxdiff > 0)
|
||||
{
|
||||
if (xdiff == maxdiff)
|
||||
{
|
||||
dir = 0;
|
||||
}
|
||||
else if (zdiff == maxdiff)
|
||||
{
|
||||
dir = 0;
|
||||
}
|
||||
}
|
||||
placeBlock(thisLevel, coordinate[0], coordinate[1], coordinate[2], material, dir);
|
||||
primoffset += primsign;
|
||||
}
|
||||
}
|
||||
void makeFoliage(){
|
||||
int idx = 0;
|
||||
int finish = foliageCoordsLength;
|
||||
while (idx < finish)
|
||||
{
|
||||
int x = foliageCoords[idx][0];
|
||||
int y = foliageCoords[idx][1];
|
||||
int z = foliageCoords[idx][2];
|
||||
foliageCluster(x, y, z);
|
||||
idx++;
|
||||
}
|
||||
}
|
||||
bool trimBranches(int localY){
|
||||
if (localY < (height * 0.2)) return false;
|
||||
else return true;
|
||||
}
|
||||
void makeTrunk(){
|
||||
int x = origin[0];
|
||||
int startY = origin[1];
|
||||
int topY = origin[1] + trunkHeight;
|
||||
int z = origin[2];
|
||||
int startCoord[] = { x, startY, z };
|
||||
int endCoord[] = { x, topY, z };
|
||||
limb(startCoord, endCoord, Tile::treeTrunk->id);
|
||||
if (trunkWidth == 2)
|
||||
{
|
||||
startCoord[0] += 1;
|
||||
endCoord[0] += 1;
|
||||
limb(startCoord, endCoord, Tile::treeTrunk->id);
|
||||
startCoord[2] += 1;
|
||||
endCoord[2] += 1;
|
||||
limb(startCoord, endCoord, Tile::treeTrunk->id);
|
||||
startCoord[0] += -1;
|
||||
endCoord[0] += -1;
|
||||
limb(startCoord, endCoord, Tile::treeTrunk->id);
|
||||
}
|
||||
}
|
||||
void makeBranches(){
|
||||
int idx = 0;
|
||||
int finish = foliageCoordsLength;
|
||||
int baseCoord[] = { origin[0], origin[1], origin[2] };
|
||||
while (idx < finish)
|
||||
{
|
||||
int *coordValues = foliageCoords[idx];
|
||||
int endCoord[] = { coordValues[0], coordValues[1], coordValues[2] };
|
||||
baseCoord[1] = coordValues[3];
|
||||
int localY = baseCoord[1] - origin[1];
|
||||
if (trimBranches(localY))
|
||||
{
|
||||
limb(baseCoord, endCoord, Tile::treeTrunk->id);
|
||||
}
|
||||
idx++;
|
||||
}
|
||||
}
|
||||
int checkLine(int *start, int *end){
|
||||
|
||||
int delta[] = { 0, 0, 0 };
|
||||
unsigned char idx = 0;
|
||||
unsigned char primidx = 0;
|
||||
while (idx < 3)
|
||||
{
|
||||
delta[idx] = end[idx] - start[idx];
|
||||
if (abs(delta[idx]) > abs(delta[primidx]))
|
||||
{
|
||||
primidx = idx;
|
||||
}
|
||||
idx++;
|
||||
}
|
||||
if (delta[primidx] == 0) return -1;
|
||||
unsigned char secidx1 = axisConversionArray[primidx];
|
||||
unsigned char secidx2 = axisConversionArray[primidx + 3];
|
||||
char primsign;
|
||||
if (delta[primidx] > 0) primsign = 1;
|
||||
else primsign = -1;
|
||||
double secfac1 = ((double) delta[secidx1]) / ((double) delta[primidx]);
|
||||
double secfac2 = ((double) delta[secidx2]) / ((double) delta[primidx]);
|
||||
int coordinate[] = { 0, 0, 0 };
|
||||
int primoffset = 0;
|
||||
int endoffset = delta[primidx] + primsign;
|
||||
int thismat;
|
||||
while (primoffset != endoffset)
|
||||
{
|
||||
coordinate[primidx] = start[primidx] + primoffset;
|
||||
coordinate[secidx1] = Mth::floor(start[secidx1] + (primoffset * secfac1));
|
||||
coordinate[secidx2] = Mth::floor(start[secidx2] + (primoffset * secfac2));
|
||||
thismat = thisLevel->getTile(coordinate[0], coordinate[1], coordinate[2]);
|
||||
if (!((thismat == 0) || (thismat == Tile::leaves->id)))
|
||||
{
|
||||
|
||||
break;
|
||||
}
|
||||
primoffset += primsign;
|
||||
}
|
||||
|
||||
if (primoffset == endoffset)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
return abs(primoffset);
|
||||
}
|
||||
}
|
||||
bool checkLocation(){
|
||||
|
||||
int startPosition[] = { origin[0], origin[1], origin[2] };
|
||||
int endPosition[] = { origin[0], origin[1] + height - 1, origin[2] };
|
||||
|
||||
|
||||
int baseMaterial = thisLevel->getTile(origin[0], origin[1] - 1, origin[2]);
|
||||
if (!((baseMaterial == 2) || (baseMaterial == 3)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
int allowedHeight = checkLine(startPosition, endPosition);
|
||||
if (allowedHeight == -1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
else if (allowedHeight < 6)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
height = allowedHeight;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
BasicTree(bool doUpdate){
|
||||
axisConversionArray[0] = 2;
|
||||
axisConversionArray[1] = 0;
|
||||
axisConversionArray[2] = 0;
|
||||
axisConversionArray[3] = 1;
|
||||
axisConversionArray[4] = 2;
|
||||
axisConversionArray[5] = 1;
|
||||
rnd = new Random();
|
||||
origin[0] = 0;
|
||||
origin[1] = 0;
|
||||
origin[2] = 0;
|
||||
height = 0;
|
||||
trunkHeight = 0;
|
||||
trunkHeightScale = 0.618;
|
||||
branchDensity = 1.0;
|
||||
branchSlope = 0.381;
|
||||
widthScale = 1.0;
|
||||
foliageDensity = 1.0;
|
||||
trunkWidth = 1;
|
||||
heightVariance = 12;
|
||||
foliageHeight = 4;
|
||||
foliageCoords = NULL;
|
||||
foliageCoordsLength = 0;
|
||||
}
|
||||
virtual ~BasicTree(){
|
||||
delete rnd;
|
||||
|
||||
for( int i = 0; i < foliageCoordsLength; i++ )
|
||||
{
|
||||
delete [] foliageCoords[i];
|
||||
}
|
||||
delete [] foliageCoords;
|
||||
}
|
||||
|
||||
virtual void init(double heightInit, double widthInit, double foliageDensityInit){
|
||||
|
||||
heightVariance = (int) (heightInit * 12);
|
||||
if (heightInit > 0.5) foliageHeight = 5;
|
||||
widthScale = widthInit;
|
||||
foliageDensity = foliageDensityInit;
|
||||
}
|
||||
virtual bool place(Level *level, Random *random, int x, int y, int z){
|
||||
|
||||
thisLevel = level;
|
||||
int seed = random->nextLong();
|
||||
rnd->setSeed(seed);
|
||||
origin[0] = x;
|
||||
origin[1] = y;
|
||||
origin[2] = z;
|
||||
if (height == 0)
|
||||
{
|
||||
height = 5 + rnd->nextInt(heightVariance);
|
||||
}
|
||||
if (!(checkLocation()))
|
||||
{
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
prepare();
|
||||
|
||||
makeFoliage();
|
||||
|
||||
makeTrunk();
|
||||
|
||||
makeBranches();
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
#endif /*NET_MINECRAFT_WORLD_LEVEL_LEVELGEN_FEATURE__BasicTree_H__*/
|
||||
@@ -38,7 +38,7 @@ public:
|
||||
setFlammable(Tile::tnt->id, FLAME_MEDIUM, BURN_INSTANT);
|
||||
setFlammable(Tile::cloth->id, FLAME_EASY, BURN_EASY);
|
||||
|
||||
//setTicking(true); //@fire
|
||||
setTicking(true); //@fire
|
||||
}
|
||||
|
||||
AABB* getAABB(Level* level, int x, int y, int z) {
|
||||
@@ -70,9 +70,9 @@ public:
|
||||
}
|
||||
|
||||
void tick(Level* level, int x, int y, int z, Random* random) {
|
||||
return; //@fire
|
||||
|
||||
|
||||
bool infiniBurn = false;//level->getTile(x, y - 1, z) == Tile::hellRock->id;
|
||||
bool infiniBurn = level->getTile(x, y - 1, z) == Tile::netherrack->id;
|
||||
|
||||
int age = level->getData(x, y, z);
|
||||
if (age < 15) {
|
||||
@@ -148,7 +148,6 @@ public:
|
||||
}
|
||||
|
||||
void neighborChanged(Level* level, int x, int y, int z, int type) {
|
||||
return; //@fire
|
||||
if (!level->isSolidBlockingTile(x, y - 1, z) && !isValidFireLocation(level, x, y, z)) {
|
||||
level->setTile(x, y, z, 0);
|
||||
return;
|
||||
@@ -156,7 +155,6 @@ public:
|
||||
}
|
||||
|
||||
void onPlace(Level* level, int x, int y, int z) {
|
||||
return; //@fire
|
||||
if (!level->isSolidBlockingTile(x, y - 1, z) && !isValidFireLocation(level, x, y, z)) {
|
||||
level->setTile(x, y, z, 0);
|
||||
return;
|
||||
@@ -169,7 +167,6 @@ public:
|
||||
}
|
||||
|
||||
void ignite(Level* level, int x, int y, int z) {
|
||||
return; //@fire
|
||||
|
||||
bool lit = false;
|
||||
if (!lit) lit = tryIgnite(level, x, y + 1, z);
|
||||
@@ -184,11 +181,10 @@ public:
|
||||
}
|
||||
|
||||
void animateTick(Level* level, int x, int y, int z, Random* random) {
|
||||
return; //@fire
|
||||
|
||||
//if (random.nextInt(24) == 0) {
|
||||
// level->playSound(x + 0.5f, y + 0.5f, z + 0.5f, "fire.fire", 1 + random.nextFloat(), random.nextFloat() * 0.7f + 0.3f);
|
||||
//}
|
||||
if (random->nextInt(24) == 0) {
|
||||
level->playSound(x + 0.5f, y + 0.5f, z + 0.5f, "fire.fire", 1 + random->nextFloat(), random->nextFloat() * 0.7f + 0.3f);
|
||||
}
|
||||
|
||||
if (level->isSolidBlockingTile(x, y - 1, z) || Tile::fire->canBurn(level, x, y - 1, z)) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
@@ -248,7 +244,6 @@ private:
|
||||
}
|
||||
|
||||
void checkBurn(Level* level, int x, int y, int z, int chance, Random* random) {
|
||||
return; //@fire
|
||||
|
||||
int odds = burnOdds[level->getTile(x, y, z)];
|
||||
if (random->nextInt(chance) < odds) {
|
||||
@@ -265,7 +260,6 @@ private:
|
||||
}
|
||||
|
||||
bool isValidFireLocation(Level* level, int x, int y, int z) {
|
||||
return false; //@fire
|
||||
|
||||
if (canBurn(level, x + 1, y, z)) return true;
|
||||
if (canBurn(level, x - 1, y, z)) return true;
|
||||
@@ -278,7 +272,6 @@ private:
|
||||
}
|
||||
|
||||
int getFireOdds(Level* level, int x, int y, int z) {
|
||||
return 0; //@fire
|
||||
|
||||
int odds = 0;
|
||||
if (!level->isEmptyTile(x, y, z)) return 0;
|
||||
@@ -294,7 +287,6 @@ private:
|
||||
}
|
||||
|
||||
bool tryIgnite(Level* level, int x, int y, int z) {
|
||||
return false; //@fire
|
||||
|
||||
int t = level->getTile(x, y, z);
|
||||
if (t == Tile::fire->id) return true;
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
#include "GrassTile.h"
|
||||
#include "../material/Material.h"
|
||||
#include "../../entity/item/ItemEntity.h"
|
||||
#include "../GrassColor.h"
|
||||
#include "../Level.h"
|
||||
#include "../LevelSource.h"
|
||||
#include "../biome/BiomeSource.h"
|
||||
#include "../../../client/Minecraft.h"
|
||||
|
||||
GrassTile::GrassTile(int id)
|
||||
: super(id, Material::dirt)
|
||||
@@ -24,11 +29,18 @@ int GrassTile::getTexture( int face, int data ) {
|
||||
}
|
||||
|
||||
int GrassTile::getColor( LevelSource* level, int x, int y, int z ) {
|
||||
//level.getBiomeSource().getBiomeBlock(x, z, 1, 1);
|
||||
//float temp = level.getBiomeSource().temperatures[0];
|
||||
//float rain = level.getBiomeSource().downfalls[0];
|
||||
|
||||
return 0x339933;//GrassColor.get(temp, rain);
|
||||
if(!GrassColor::useTint){
|
||||
return 0x339933;
|
||||
}
|
||||
|
||||
level->getBiomeSource()->getBiomeBlock(x, z, 1, 1);
|
||||
float temp = level->getBiomeSource()->temperatures[0];
|
||||
float rain = level->getBiomeSource()->downfalls[0];
|
||||
|
||||
// return 0x339933;//GrassColor.get(temp, rain); // we need to hook this up with OPTION_FOLIAGE_TINT
|
||||
|
||||
return GrassColor::get(temp, rain);
|
||||
}
|
||||
|
||||
void GrassTile::tick( Level* level, int x, int y, int z, Random* random ) {
|
||||
|
||||
@@ -14,6 +14,7 @@ class GrassTile: public Tile
|
||||
{
|
||||
typedef Tile super;
|
||||
public:
|
||||
|
||||
static const int MIN_BRIGHTNESS = 4;
|
||||
|
||||
GrassTile(int id);
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
#include "../../item/Item.h"
|
||||
#include "../../item/ItemInstance.h"
|
||||
#include "../FoliageColor.h"
|
||||
#include "../LevelSource.h"
|
||||
#include "../biome/BiomeSource.h"
|
||||
|
||||
class Entity;
|
||||
|
||||
@@ -54,8 +56,16 @@ public:
|
||||
if (data == BIRCH_LEAF) {
|
||||
return FoliageColor::getBirchColor();
|
||||
}
|
||||
if (!FoliageColor::useTint){
|
||||
return FoliageColor::getDefaultColor();
|
||||
}
|
||||
|
||||
return FoliageColor::getDefaultColor();
|
||||
// return FoliageColor::getDefaultColor(); we need to hook this up with OPTION_FOLIAGE_TINT
|
||||
level->getBiomeSource()->getBiomeBlock(x, z, 1, 1);
|
||||
float temperature = level->getBiomeSource()->temperatures[0];
|
||||
float rainfall = level->getBiomeSource()->downfalls[0];
|
||||
return FoliageColor::get(temperature, rainfall);
|
||||
|
||||
}
|
||||
|
||||
void onRemove(Level* level, int x, int y, int z) {
|
||||
|
||||
@@ -6,24 +6,23 @@ NetherReactorPattern::NetherReactorPattern( ) {
|
||||
const int netherCoreId = Tile::netherReactor->id;
|
||||
const unsigned int types[3][3][3] =
|
||||
{
|
||||
// Changing all of these values to be unsigned is needed to get the nether reactor pattern to compile. In the past having them be normal ints was fine but the c++ convention has changed
|
||||
// Level 0
|
||||
// Level 0
|
||||
{
|
||||
{static_cast<unsigned int>(goldId), static_cast<unsigned int>(stoneId), static_cast<unsigned int>(goldId)},
|
||||
{static_cast<unsigned int>(stoneId), static_cast<unsigned int>(stoneId), static_cast<unsigned int>(stoneId)},
|
||||
{static_cast<unsigned int>(goldId), static_cast<unsigned int>(stoneId), static_cast<unsigned int>(goldId)}
|
||||
{goldId, stoneId, goldId},
|
||||
{stoneId, stoneId, stoneId},
|
||||
{goldId, stoneId, goldId}
|
||||
},
|
||||
// Level 1
|
||||
{
|
||||
{static_cast<unsigned int>(stoneId), 0, static_cast<unsigned int>(stoneId)},
|
||||
{0, static_cast<unsigned int>(netherCoreId), 0},
|
||||
{static_cast<unsigned int>(stoneId), 0, static_cast<unsigned int>(stoneId)}
|
||||
{stoneId, 0, stoneId},
|
||||
{0, netherCoreId, 0},
|
||||
{stoneId, 0, stoneId}
|
||||
},
|
||||
// Level 2
|
||||
{
|
||||
{0, static_cast<unsigned int>(stoneId), 0},
|
||||
{static_cast<unsigned int>(stoneId), static_cast<unsigned int>(stoneId), static_cast<unsigned int>(stoneId)},
|
||||
{0, static_cast<unsigned int>(stoneId), 0}
|
||||
{0, stoneId, 0},
|
||||
{stoneId, stoneId, stoneId},
|
||||
{0, stoneId, 0}
|
||||
}
|
||||
};
|
||||
for(int setLevel = 0; setLevel <= 2; ++setLevel) {
|
||||
|
||||
Reference in New Issue
Block a user