The forgotten Keyframes

- Added Keyframes to scenes created before the feature existed
This commit is contained in:
simibubi 2021-06-18 22:13:34 +02:00
parent 91bc678ab4
commit bc2b5169c8
9 changed files with 84 additions and 1 deletions

View file

@ -46,6 +46,7 @@ public class BearingScenes {
scene.overlay.showSelectionWithText(util.select.position(anchorPos), 60)
.colored(PonderPalette.GREEN)
.pointAt(util.vector.blockSurface(windmill, Direction.WEST))
.attachKeyFrame()
.placeNearTarget()
.text("Windmill Bearings attach to the block in front of them");
scene.idle(50);
@ -88,6 +89,7 @@ public class BearingScenes {
scene.overlay.showText(60)
.pointAt(util.vector.blockSurface(anchorPos, Direction.NORTH))
.attachKeyFrame()
.placeNearTarget()
.text("If enough Sail-like blocks are attached to the block, it can act as a Windmill");
scene.idle(70);
@ -109,6 +111,7 @@ public class BearingScenes {
scene.overlay.showText(60)
.pointAt(util.vector.topOf(windmill))
.placeNearTarget()
.attachKeyFrame()
.text("Activated with Right-Click, the Windmill Bearing will start providing Rotational Force");
scene.idle(70);
@ -125,6 +128,7 @@ public class BearingScenes {
scene.overlay.showCenteredScrollInput(windmill, Direction.WEST, 50);
scene.overlay.showText(60)
.pointAt(surface)
.attachKeyFrame()
.placeNearTarget()
.text("Use a Wrench to configure its rotation direction");
scene.idle(36);
@ -184,6 +188,7 @@ public class BearingScenes {
scene.overlay.showOutline(PonderPalette.BLUE, bearingPos, util.select.fromTo(3, 2, 1, 3, 3, 2), 80);
scene.overlay.showSelectionWithText(util.select.fromTo(3, 2, 4, 3, 3, 5), 80)
.colored(PonderPalette.BLUE)
.attachKeyFrame()
.text("Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.");
scene.idle(90);
@ -225,6 +230,7 @@ public class BearingScenes {
.colored(PonderPalette.GREEN)
.pointAt(util.vector.blockSurface(bearingPos, Direction.WEST))
.placeNearTarget()
.attachKeyFrame()
.text("Mechanical Bearings attach to the block in front of them");
scene.idle(50);
@ -245,6 +251,7 @@ public class BearingScenes {
scene.overlay.showText(80)
.pointAt(util.vector.topOf(bearingPos.up()))
.placeNearTarget()
.attachKeyFrame()
.text("Upon receiving Rotational Force, it will assemble it into a Rotating Contraption");
scene.idle(37 * 2);
scene.world.setKineticSpeed(all, 0);
@ -273,6 +280,7 @@ public class BearingScenes {
scene.overlay.showText(120)
.pointAt(util.vector.topOf(bearingPos.up()))
.placeNearTarget()
.attachKeyFrame()
.sharedText("movement_anchors");
scene.idle(37 * 4);
@ -331,6 +339,7 @@ public class BearingScenes {
.pointAt(util.vector.blockSurface(bearingPos, Direction.WEST))
.placeNearTarget()
.colored(PonderPalette.RED)
.attachKeyFrame()
.text("When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle");
scene.idle(110);
@ -343,6 +352,7 @@ public class BearingScenes {
scene.overlay.showText(60)
.pointAt(util.vector.blockSurface(bearingPos, Direction.WEST))
.placeNearTarget()
.attachKeyFrame()
.sharedText("behaviour_modify_wrench");
scene.idle(70);
@ -389,6 +399,7 @@ public class BearingScenes {
scene.overlay.showSelectionWithText(util.select.position(bearingPos), 60)
.text("Whenever Mechanical Bearings are themselves part of a moving Structure..")
.attachKeyFrame()
.placeNearTarget();
scene.idle(70);
@ -410,6 +421,7 @@ public class BearingScenes {
scene.overlay.showSelectionWithText(util.select.position(bearingPos.north()), 60)
.colored(PonderPalette.GREEN)
.text("Once again, the bearing will attach to the block in front of it")
.attachKeyFrame()
.placeNearTarget();
scene.idle(70);
@ -455,6 +467,7 @@ public class BearingScenes {
.colored(PonderPalette.GREEN)
.pointAt(util.vector.blockSurface(bearingPos, Direction.WEST))
.placeNearTarget()
.attachKeyFrame()
.text("Clockwork Bearings attach to blocks in front of them");
scene.idle(50);
@ -472,6 +485,7 @@ public class BearingScenes {
scene.overlay.showText(80)
.pointAt(util.vector.blockSurface(bearingPos.north(), Direction.NORTH))
.placeNearTarget()
.attachKeyFrame()
.text("Upon receiving Rotational Force, the structure will be rotated according to the hour of the day");
scene.idle(90);
@ -501,6 +515,7 @@ public class BearingScenes {
scene.overlay.showText(60)
.pointAt(util.vector.blockSurface(bearingPos, Direction.WEST))
.placeNearTarget()
.attachKeyFrame()
.text("Right-Click the bearing to start or stop animating the structure");
scene.idle(70);
@ -513,6 +528,7 @@ public class BearingScenes {
scene.idle(15);
scene.overlay.showSelectionWithText(util.select.fromTo(3, 3, 1, 3, 4, 2), 80)
.placeNearTarget()
.attachKeyFrame()
.sharedText("movement_anchors");
scene.idle(90);
@ -525,6 +541,7 @@ public class BearingScenes {
scene.overlay.showSelectionWithText(util.select.position(bearingPos.north(3)), 80)
.placeNearTarget()
.colored(PonderPalette.BLUE)
.attachKeyFrame()
.text("In front of the Hour Hand, a second structure can be added");
scene.idle(90);
scene.overlay.showControls(clickTheBearingSide.rightClick(), 20);

View file

@ -87,6 +87,7 @@ public class BeltScenes {
scene.overlay.showText(80)
.text("Right-Clicking two shafts with a belt item will connect them together")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.topOf(2, 1, 2));
scene.idle(90);
@ -100,6 +101,7 @@ public class BeltScenes {
scene.overlay.showText(80)
.colored(PonderPalette.RED)
.text("Accidental selections can be canceled with Right-Click while Sneaking")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.centerOf(backEnd.south(1)));
scene.idle(43);
@ -118,6 +120,7 @@ public class BeltScenes {
scene.overlay.showText(43)
.text("Additional Shafts can be added throughout the Belt")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.blockSurface(shaftLocation, Direction.NORTH));
scene.idle(50);
@ -146,6 +149,7 @@ public class BeltScenes {
scene.idle(10);
scene.overlay.showText(50)
.text("Added shafts can be removed using the wrench")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.blockSurface(shaftLocation, Direction.NORTH));
scene.idle(70);
@ -212,6 +216,7 @@ public class BeltScenes {
.colored(PonderPalette.GREEN)
.placeNearTarget()
.pointAt(to)
.attachKeyFrame()
.text("1. They can connect horizontally");
scene.idle(20);
@ -236,6 +241,7 @@ public class BeltScenes {
.colored(PonderPalette.GREEN)
.placeNearTarget()
.pointAt(to)
.attachKeyFrame()
.text("2. They can connect diagonally");
scene.idle(20);
@ -258,6 +264,7 @@ public class BeltScenes {
.colored(PonderPalette.GREEN)
.placeNearTarget()
.pointAt(to)
.attachKeyFrame()
.text("3. They can connect vertically");
scene.idle(20);
@ -282,6 +289,7 @@ public class BeltScenes {
.colored(PonderPalette.GREEN)
.placeNearTarget()
.pointAt(to)
.attachKeyFrame()
.text("4. And they can connect vertical shafts horizontally");
scene.idle(20);
@ -375,6 +383,7 @@ public class BeltScenes {
scene.overlay.showText(60)
.placeNearTarget()
.pointAt(topOf.subtract(0, 0.1, 0))
.attachKeyFrame()
.text("Right-Click with an empty hand to take items off a belt");
scene.idle(20);
scene.world.removeItemsFromBelt(util.grid.at(3, 2, 2));
@ -425,6 +434,7 @@ public class BeltScenes {
scene.overlay.showText(80)
.text("Brass or Andesite Casing can be used to decorate Mechanical Belts")
.attachKeyFrame()
.pointAt(util.vector.centerOf(beltPos2));
scene.idle(40);
@ -455,6 +465,7 @@ public class BeltScenes {
scene.world.modifyBlock(pos, s -> s.with(BeltBlock.CASING, true), true);
}
scene.idle(30);
scene.addKeyframe();
scene.overlay
.showControls(new InputWindowElement(util.vector.topOf(beltPos.south()), Pointing.DOWN).rightClick()

View file

@ -50,6 +50,7 @@ public class ChainDriveScenes {
scene.idle(20);
scene.overlay.showText(60)
.text("Chain Drives relay rotation to each other in a row")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.blockSurface(util.grid.at(3, 1, 4), Direction.WEST));
scene.idle(60);
@ -65,12 +66,14 @@ public class ChainDriveScenes {
scene.idle(20);
scene.overlay.showText(60)
.text("All shafts connected like this will rotate in the same direction")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.blockSurface(util.grid.at(2, 1, 1), Direction.WEST));
scene.idle(50);
scene.world.hideSection(shafts, Direction.WEST);
scene.idle(25);
scene.addKeyframe();
scene.overlay.showControls(new InputWindowElement(util.vector.topOf(rotatedECD), Pointing.DOWN).rightClick()
.withWrench(), 30);
scene.idle(7);
@ -117,6 +120,7 @@ public class ChainDriveScenes {
scene.overlay.showText(60)
.text("Unpowered Chain Gearshifts behave exactly like Chain Drives")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.blockSurface(eastDrive, Direction.NORTH));
scene.idle(60);
@ -153,6 +157,7 @@ public class ChainDriveScenes {
scene.overlay.showText(80)
.text("When Powered, the speed transmitted to other Chain Drives in the row is doubled")
.attachKeyFrame()
.placeNearTarget()
.colored(PonderPalette.FAST)
.pointAt(util.vector.blockSurface(eastDrive.west(2), Direction.WEST));
@ -197,6 +202,7 @@ public class ChainDriveScenes {
scene.overlay.showText(80)
.text("Whenever the Powered Gearshift is not at the source, its speed will be halved instead")
.attachKeyFrame()
.placeNearTarget()
.colored(PonderPalette.SLOW)
.pointAt(util.vector.blockSurface(eastDrive.west(2), Direction.WEST));
@ -215,6 +221,7 @@ public class ChainDriveScenes {
scene.overlay.showText(100)
.text("In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.blockSurface(eastDrive.west(2), Direction.WEST));
scene.idle(100);
@ -240,6 +247,7 @@ public class ChainDriveScenes {
scene.overlay.showText(100)
.text("Using analog signals, the ratio can be adjusted more precisely between 1 and 2")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.blockSurface(eastDrive.west(2), Direction.WEST));
scene.idle(40);

View file

@ -53,6 +53,7 @@ public class FanScenes {
scene.overlay.showText(80)
.text("Encased Fans use Rotational Force to create an Air Current")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.topOf(fanPos));
scene.idle(90);
@ -61,6 +62,7 @@ public class FanScenes {
Selection reverse = util.select.fromTo(3, 1, 5, 1, 1, 4);
scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.down()));
scene.effects.indicateRedstone(leverPos);
scene.addKeyframe();
scene.world.modifyKineticSpeed(reverse, f -> -f);
scene.effects.rotationDirectionIndicator(fanPos.south());
scene.special.rotateParrot(flappyBirb, 0, 215 * 2, 0, 30);
@ -127,6 +129,7 @@ public class FanScenes {
.colored(PonderPalette.WHITE)
.pointAt(itemVec)
.placeNearTarget()
.attachKeyFrame()
.text("Items caught in the area will be smelted");
scene.idle(60);
@ -157,6 +160,7 @@ public class FanScenes {
scene.overlay.showSelectionWithText(util.select.fromTo(blockPos, blockPos.west(2)), 60)
.colored(PonderPalette.BLACK)
.attachKeyFrame()
.text("Instead, a setup for Smoking using Fire should be used for them");
scene.idle(80);
@ -173,6 +177,7 @@ public class FanScenes {
scene.overlay.showSelectionWithText(util.select.fromTo(blockPos, blockPos.west(2)), 60)
.colored(PonderPalette.MEDIUM)
.attachKeyFrame()
.text("Air Flows passing through water create a Washing Setup");
scene.idle(70);
@ -204,6 +209,7 @@ public class FanScenes {
.colored(PonderPalette.RED)
.pointAt(util.vector.topOf(blockPos.east()))
.placeNearTarget()
.attachKeyFrame()
.text("The Speed of the Fan does NOT affect the processing speed, only its range");
scene.world.destroyBlock(util.grid.at(1, 1, 2));
scene.idle(110);
@ -237,6 +243,7 @@ public class FanScenes {
scene.effects.emitParticles(depotTop, Emitter.simple(ParticleTypes.SPIT, Vector3d.ZERO), .5f, 30);
scene.overlay.showText(90)
.pointAt(depotTop)
.attachKeyFrame()
.text("Fan Processing can also be applied to Items on Depots and Belts");
scene.idle(100);
@ -272,11 +279,12 @@ public class FanScenes {
scene.world.showSection(util.select.layersFrom(2), Direction.DOWN);
scene.idle(10);
BlockPos rightFan = util.grid.at(1, 2, 2);
scene.overlay.showText(80)
scene.overlay.showText(70)
.text("Fans facing down into a source of heat can provide Rotational Force")
.placeNearTarget()
.pointAt(util.vector.blockSurface(rightFan, Direction.WEST));
scene.idle(80);
scene.addKeyframe();
for (BlockPos pos : new BlockPos[] { rightFan, util.grid.at(3, 2, 2) }) {
scene.idle(10);

View file

@ -130,6 +130,7 @@ public class FunnelScenes {
scene.world.showSection(topFunnelSelection, Direction.DOWN);
scene.overlay.showText(80)
.text("Placed normally, it pulls items from the inventory.")
.attachKeyFrame()
.pointAt(topCenter)
.placeNearTarget();
scene.idle(45);
@ -150,6 +151,7 @@ public class FunnelScenes {
scene.overlay.showControls(controlsSneak, 35);
scene.overlay.showText(80)
.text("Placed while sneaking, it puts items into the inventory.")
.attachKeyFrame()
.pointAt(topCenter)
.placeNearTarget();
scene.idle(45);
@ -169,6 +171,7 @@ public class FunnelScenes {
scene.idle(10);
scene.overlay.showText(80)
.text("Using a wrench, the funnel can be flipped after placement.")
.attachKeyFrame()
.pointAt(topCenter)
.placeNearTarget();
@ -216,6 +219,7 @@ public class FunnelScenes {
scene.world.showSection(beltFunnelSetup, Direction.DOWN);
scene.overlay.showText(140)
.text("Funnels on belts will extract/insert depending on its movement direction.")
.attachKeyFrame()
.pointAt(topOfBeltFunnel);
scene.idle(15);
@ -263,6 +267,7 @@ public class FunnelScenes {
scene.idle(8);
scene.overlay.showText(360)
.text("Funnels should also interact nicely with a handful of other components.")
.attachKeyFrame()
.independent(0);
scene.idle(40);
@ -368,6 +373,7 @@ public class FunnelScenes {
scene.overlay.showText(60)
.text("Andesite Funnels can only ever extract single items.")
.attachKeyFrame()
.pointAt(util.vector.topOf(andesiteFunnel))
.placeNearTarget();
scene.idle(10);
@ -378,6 +384,7 @@ public class FunnelScenes {
scene.overlay.showText(60)
.text("Brass Funnels can extract up to a full stack.")
.attachKeyFrame()
.pointAt(util.vector.topOf(brassFunnel))
.placeNearTarget();
scene.idle(10);
@ -393,6 +400,7 @@ public class FunnelScenes {
scene.idle(10);
scene.overlay.showText(80)
.text("Scrolling on the filter slot allows for precise control over the extracted stack size.")
.attachKeyFrame()
.pointAt(filterSlot.getCenter())
.placeNearTarget();
scene.idle(90);
@ -436,6 +444,7 @@ public class FunnelScenes {
scene.idle(10);
scene.overlay.showText(80)
.text("Using items on the filter slot will restrict the funnel to only transfer matching stacks.")
.attachKeyFrame()
.pointAt(filterSlot.getCenter())
.placeNearTarget();
scene.world.setFilterData(util.select.position(brassFunnel), FunnelTileEntity.class, emerald);
@ -470,6 +479,7 @@ public class FunnelScenes {
scene.overlay.showSelectionWithText(funnelSelect, 40)
.colored(PonderPalette.RED)
.text("Funnels cannot ever transfer between closed inventories directly.")
.attachKeyFrame()
.placeNearTarget();
scene.idle(50);
@ -483,6 +493,7 @@ public class FunnelScenes {
scene.overlay.showText(40)
.colored(PonderPalette.GREEN)
.text("Chutes or Smart chutes might be more suitable for such purposes.")
.attachKeyFrame()
.pointAt(util.vector.centerOf(funnelPos))
.placeNearTarget();
scene.idle(50);

View file

@ -231,6 +231,7 @@ public class KineticsScenes {
scene.overlay.showText(60)
.text("Shifting from large to small cogs, the conveyed speed will be doubled")
.colored(PonderPalette.GREEN)
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.blockSurface(util.grid.at(1, 2, 3), Direction.NORTH));
scene.idle(10);
@ -269,6 +270,7 @@ public class KineticsScenes {
scene.overlay.showText(80)
.text("Shifting the opposite way, the conveyed speed will be halved")
.colored(PonderPalette.RED)
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.blockSurface(util.grid.at(1, 2, 3), Direction.NORTH));
scene.idle(10);
@ -339,6 +341,7 @@ public class KineticsScenes {
.colored(PonderPalette.GREEN)
.pointAt(util.vector.topOf(3, 2, 3))
.placeNearTarget()
.attachKeyFrame()
.text("A gearbox is the more compact equivalent of this setup");
scene.idle(90);
@ -411,6 +414,7 @@ public class KineticsScenes {
scene.overlay.showText(50)
.colored(PonderPalette.RED)
.text("When powered by Redstone, it breaks the connection")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.topOf(clutch));
@ -456,6 +460,7 @@ public class KineticsScenes {
.colored(PonderPalette.RED)
.placeNearTarget()
.text("When powered by Redstone, it reverses the transmission")
.attachKeyFrame()
.pointAt(util.vector.topOf(gearshift));
for (int i = 0; i < 3; i++) {
@ -503,6 +508,7 @@ public class KineticsScenes {
scene.overlay.showText(50)
.text("Scrolling on the back panel changes the RPM of the motors' rotational output")
.attachKeyFrame()
.placeNearTarget()
.pointAt(blockSurface);
scene.idle(10);
@ -574,6 +580,7 @@ public class KineticsScenes {
scene.rotateCameraY(-30);
scene.overlay.showText(70)
.text("The Wheels' blades should be oriented against the flow")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.topOf(wheel));
scene.idle(80);
@ -599,6 +606,7 @@ public class KineticsScenes {
scene.overlay.showText(70)
.colored(PonderPalette.RED)
.text("Facing the opposite way, they will not be as effective")
.attachKeyFrame()
.placeNearTarget()
.pointAt(util.vector.topOf(wheel));
scene.idle(80);
@ -674,6 +682,7 @@ public class KineticsScenes {
scene.idle(10);
scene.overlay.showText(50)
.text("Hold Right-Click to rotate it Counter-Clockwise")
.attachKeyFrame()
.placeNearTarget()
.pointAt(centerOf);
scene.idle(70);
@ -697,6 +706,7 @@ public class KineticsScenes {
scene.idle(10);
scene.overlay.showText(90)
.text("Sneak and Hold Right-Click to rotate it Clockwise")
.attachKeyFrame()
.placeNearTarget()
.pointAt(centerOf);
scene.idle(90);

View file

@ -49,6 +49,7 @@ public class MovementActorScenes {
.pointAt(util.vector.topOf(bearing.up(2)))
.colored(PonderPalette.RED)
.placeNearTarget()
.attachKeyFrame()
.text("Inventories on moving contraptions cannot be accessed by players.");
scene.idle(70);
@ -61,6 +62,7 @@ public class MovementActorScenes {
.pointAt(util.vector.topOf(psi))
.colored(PonderPalette.GREEN)
.placeNearTarget()
.attachKeyFrame()
.text("This component can interact with storage without the need to stop the contraption.");
scene.idle(90);
@ -69,6 +71,7 @@ public class MovementActorScenes {
scene.overlay.showSelectionWithText(util.select.position(psi.west()), 50)
.colored(PonderPalette.RED)
.placeNearTarget()
.attachKeyFrame()
.text("Place a second one with a gap of 1 or 2 blocks inbetween");
scene.idle(55);
@ -97,6 +100,7 @@ public class MovementActorScenes {
scene.overlay.showSelectionWithText(util.select.position(psi2), 70)
.placeNearTarget()
.colored(PonderPalette.GREEN)
.attachKeyFrame()
.text("While engaged, the stationary interface will represent ALL inventories on the contraption");
scene.idle(80);
@ -106,6 +110,7 @@ public class MovementActorScenes {
scene.overlay.showText(70)
.placeNearTarget()
.pointAt(util.vector.topOf(hopper))
.attachKeyFrame()
.text("Items can now be inserted...");
ItemStack itemStack = AllItems.COPPER_INGOT.asStack();

View file

@ -58,6 +58,7 @@ public class PistonScenes {
scene.overlay.showText(55)
.pointAt(util.vector.topOf(piston))
.placeNearTarget()
.attachKeyFrame()
.text("Mechanical Pistons can move blocks in front of them");
scene.idle(65);
@ -93,6 +94,7 @@ public class PistonScenes {
scene.overlay.showText(60)
.pointAt(util.vector.topOf(piston))
.placeNearTarget()
.attachKeyFrame()
.text("Sticky Mechanical Pistons can pull the attached blocks back");
scene.idle(20);
scene.world.setBlock(util.grid.at(2, 1, 1), Blocks.OAK_PLANKS.getDefaultState(), false);
@ -108,6 +110,7 @@ public class PistonScenes {
ElementLink<WorldSectionElement> chassis =
scene.world.showIndependentSection(util.select.fromTo(2, 2, 0, 2, 3, 2), Direction.DOWN);
scene.world.moveSection(chassis, util.vector.of(0, -1, 1), 0);
scene.addKeyframe();
scene.idle(5);
scene.world.showSectionAndMerge(util.select.position(1, 2, 0), Direction.EAST, chassis);
scene.idle(15);
@ -154,6 +157,7 @@ public class PistonScenes {
scene.overlay.showSelectionWithText(util.select.position(piston), 50)
.colored(PonderPalette.RED)
.placeNearTarget()
.attachKeyFrame()
.text("Without attached Poles, a Mechanical Piston cannot move");
scene.idle(60);
@ -172,6 +176,7 @@ public class PistonScenes {
100);
scene.overlay.showSelectionWithText(util.select.fromTo(piston.west(), piston.west(2)), 100)
.text("The Length of pole added at its back determines the Extension Range")
.attachKeyFrame()
.placeNearTarget()
.colored(PonderPalette.GREEN);
scene.idle(110);
@ -238,6 +243,7 @@ public class PistonScenes {
scene.idle(10);
scene.overlay.showSelectionWithText(rose, 70)
.text("Whenever Pistons stop moving, the moved structure reverts to blocks")
.attachKeyFrame()
.colored(PonderPalette.RED);
scene.idle(80);
@ -259,6 +265,7 @@ public class PistonScenes {
scene.overlay.showText(70)
.pointAt(util.vector.topOf(piston))
.placeNearTarget()
.attachKeyFrame()
.sharedText("behaviour_modify_wrench");
scene.idle(80);

View file

@ -44,6 +44,7 @@ public class PulleyScenes {
scene.idle(45);
scene.overlay.showText(60)
.pointAt(util.vector.blockSurface(pulleyPos, Direction.WEST))
.attachKeyFrame()
.text("Rope Pulleys can move blocks vertically when given Rotational Force")
.placeNearTarget();
scene.idle(70);
@ -81,6 +82,7 @@ public class PulleyScenes {
scene.overlay.showText(80)
.pointAt(util.vector.blockSurface(util.grid.at(1, 2, 2), Direction.NORTH))
.placeNearTarget()
.attachKeyFrame()
.sharedText("movement_anchors");
scene.idle(90);
@ -136,6 +138,7 @@ public class PulleyScenes {
scene.idle(10);
scene.overlay.showSelectionWithText(util.select.position(flowerPos), 70)
.text("Whenever Pulleys stop moving, the moved structure reverts to blocks")
.attachKeyFrame()
.placeNearTarget()
.colored(PonderPalette.RED);
scene.idle(80);
@ -157,6 +160,7 @@ public class PulleyScenes {
scene.overlay.showText(70)
.pointAt(util.vector.topOf(pulleyPos))
.placeNearTarget()
.attachKeyFrame()
.sharedText("behaviour_modify_wrench");
scene.idle(80);
@ -202,6 +206,7 @@ public class PulleyScenes {
scene.overlay.showText(50)
.pointAt(util.vector.blockSurface(pulleyPos, Direction.WEST))
.placeNearTarget()
.attachKeyFrame()
.text("Whenever Pulleys are themselves being moved by a Contraption...");
scene.idle(60);
@ -215,6 +220,7 @@ public class PulleyScenes {
scene.overlay.showSelectionWithText(util.select.fromTo(1, 1, 1, 1, 1, 2), 50)
.colored(PonderPalette.GREEN)
.placeNearTarget()
.attachKeyFrame()
.text("...its attached structure will be dragged with it");
scene.idle(60);
scene.overlay.showText(80)