Skip to content

Tags: Techokami/SonicWorldsNext

Tags

4.3-git

Toggle 4.3-git's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
MonkeyBars and the things they inspired (#249)

Features the following:

* A new system for gimmick interaction. Now a player can connect to anything that extends ConnectableGimmick. A connectable gimmick necessarily provides some functions (which are included in the ConnectableGimmick abstract class) that are commonly needed for connectable gimmicks. These are: a fixup function callback for when a player is forced off of a gimmick by another means, player process and physics process additions that run immediately after the player's normal process/physics process functions respectively while connected to the gimmick, and an animation finished callback that you can used to make the gimmick react to a specific player finishing an animation (very useful for handling state changes at the end of an animation sequence. Additionally the player can now save its state internally for a class of gimmicks that it might interact with instead of having to create per player state within the gimmick itself.

* A new debug tool that provides key mappings for the following:
```
## k - hurts the first player
## j - hurts the second player
## l - sets a return position for use with ;
## ; - teleports one or both players to the return position set with l
## u - places the big brick underneath the player and has it slowly move upwards
## i - places the big brick above the player and has it slowly move downwards
## o - places the big brick to the left of the player and has it slowly move
##     right
## p - places the big brick to the right of the player and has it slowly move
##     left
## m - Gives the player some rings
## , - Cycles through available shields
```
To use it simply drop a single DWDebugTool entity from Tools/Debug into your scene. The intention of this feature set is to provide you with a means of rapidly testing common gimmick interactions... stuff like how your gimmick will handle if your player is moved into a wall/floor/ceiling or gets hit by an enemy for example.

* New LayerController, disposal, and AudioStream2DController tools are added that make it easy to control the player's layer and AudioStream2D objects using signals.

* The MonkeyBar object is effectively a hanger that uses the new gimmick system, but it also has a twist in that it allows the player to brachiate (IE move like a monkey from branch to branch using ones hands above their head) between bars. The brachiation can be disallowed and allowed under certain conditions. The monkey bar object itself also emits signals which can be used to control all sorts of things (but mainly chains for the purpose of this PR). Signals that it emits are primarily related to characters boarding and unboarding the gimmick and can be wired to include data about the player who got on/off or just tell how many players are mounted on the gimmick.

* The RetractibleChain object is created with the intention of being used with monkeybars to let them move up and down while drawing some kind of repeated object between them. Between the monkeybar and the chain you can trivially make the following gimmicks from the official games: Vine lifts and switches from Mystic Cave Zone, Crane Lifts from Wing Fortress Zone, the exact same crane lift from Launch Base zone, and many more! Really, you can connect this to anything and not just monkey bars. It is also meant to be controlled by signals which you can use to tell it to move to a certain height, and send it to various targets... or change those default. In addition, the chain itself is a signal emitter which send out signals for things like the chain lift moving, stopping, and reaching various

* The HorizontalSlider object is another object intended for use with monkeybars but is actually applicable to just about anything. As with the Chain you can control it with signals to send it from place to place. It automatically calculates when it needs to put on the brakes based on its braking speed, current speed, position, and direction... even if the braking speed is instantaneous! It will also immediately snap into place if it would have moved further than intended, but that probably shouldn't happen. Once again, it is a signal emitter too and provides information on when it reaches a destination, when it starts moving, when it reaches its maximum velocity, and when it applies brakes.

* Base Zone act 2 has been extended slightly to incorporate the new gimmicks and demonstrate some of their features.

4.2.2-release

Toggle 4.2.2-release's commit message
Switch Version to 4.2.2-Release

Marking version as 4.2.2-Release in preparation for our release versioning scheme