summaryrefslogtreecommitdiffstats
path: root/src/Entities
diff options
context:
space:
mode:
authorTiger Wang <ziwei.tiger@hotmail.co.uk>2014-01-24 20:39:39 +0100
committerTiger Wang <ziwei.tiger@hotmail.co.uk>2014-01-24 20:39:39 +0100
commitf39daabf7eb4f54bda0f6385aff75dd4f22f75ca (patch)
tree1ec3756a2e672335d86c400589ecd65d2a75d965 /src/Entities
parentBegin implementing ascending rails (diff)
downloadcuberite-f39daabf7eb4f54bda0f6385aff75dd4f22f75ca.tar
cuberite-f39daabf7eb4f54bda0f6385aff75dd4f22f75ca.tar.gz
cuberite-f39daabf7eb4f54bda0f6385aff75dd4f22f75ca.tar.bz2
cuberite-f39daabf7eb4f54bda0f6385aff75dd4f22f75ca.tar.lz
cuberite-f39daabf7eb4f54bda0f6385aff75dd4f22f75ca.tar.xz
cuberite-f39daabf7eb4f54bda0f6385aff75dd4f22f75ca.tar.zst
cuberite-f39daabf7eb4f54bda0f6385aff75dd4f22f75ca.zip
Diffstat (limited to 'src/Entities')
-rw-r--r--src/Entities/Minecart.cpp66
1 files changed, 63 insertions, 3 deletions
diff --git a/src/Entities/Minecart.cpp b/src/Entities/Minecart.cpp
index 6477fb1ca..78ec017cd 100644
--- a/src/Entities/Minecart.cpp
+++ b/src/Entities/Minecart.cpp
@@ -474,7 +474,7 @@ void cMinecart::HandlePoweredRailPhysics(NIBBLETYPE a_RailMeta)
}
break;
}
- case E_META_RAIL_ASCEND_XM:
+ case E_META_RAIL_ASCEND_XM: // ASCEND EAST
{
SetYaw(180);
SetSpeedZ(0);
@@ -483,16 +483,76 @@ void cMinecart::HandlePoweredRailPhysics(NIBBLETYPE a_RailMeta)
{
if (GetSpeedX() <= MAX_SPEED)
{
- AddSpeedX(1);
+ AddSpeedX(AccelDecelSpeed);
SetSpeedY(-GetSpeedX());
}
}
else
{
- AddSpeedX(-1);
+ AddSpeedX(AccelDecelNegSpeed);
SetSpeedY(-GetSpeedX());
}
break;
+ }
+ case E_META_RAIL_ASCEND_XP: // ASCEND WEST
+ {
+ SetYaw(180);
+ SetSpeedZ(0);
+
+ if (GetSpeedX() > 0)
+ {
+ AddSpeedX(AccelDecelSpeed);
+ SetSpeedY(GetSpeedX());
+ }
+ else
+ {
+ if (GetSpeedX() >= MAX_SPEED_NEGATIVE)
+ {
+ AddSpeedX(AccelDecelNegSpeed);
+ SetSpeedY(GetSpeedX());
+ }
+ }
+ break;
+ }
+ case E_META_RAIL_ASCEND_ZM: // ASCEND NORTH
+ {
+ SetYaw(270);
+ SetSpeedX(0);
+
+ if (GetSpeedZ() >= 0)
+ {
+ if (GetSpeedZ() <= MAX_SPEED)
+ {
+ AddSpeedZ(AccelDecelSpeed);
+ SetSpeedY(-GetSpeedZ());
+ }
+ }
+ else
+ {
+ AddSpeedZ(AccelDecelNegSpeed);
+ SetSpeedY(-GetSpeedZ());
+ }
+ break;
+ }
+ case E_META_RAIL_ASCEND_ZP: // ASCEND SOUTH
+ {
+ SetYaw(270);
+ SetSpeedX(0);
+
+ if (GetSpeedZ() > 0)
+ {
+ AddSpeedZ(AccelDecelSpeed);
+ SetSpeedY(GetSpeedZ());
+ }
+ else
+ {
+ if (GetSpeedZ() >= MAX_SPEED_NEGATIVE)
+ {
+ AddSpeedZ(AccelDecelNegSpeed);
+ SetSpeedY(GetSpeedZ());
+ }
+ }
+ break;
}
default: ASSERT(!"Unhandled powered rail metadata!"); break;
}