Skip to content
Guillermo Rodríguez edited this page Jan 10, 2024 · 38 revisions

Release Notes

  • The complete list of API changes for the most recent release is available.

TP v2.0.8

Thanks to various external contributors for these patches.

TPUI

  • Element now allows layout constraints to be replaced.
  • Fixed layout issues when contents of Button, for example, shrink.
  • Fixed issue with velocity calculations in XYFlicker.

TP v2.0.7

Skipped due to upstream PlayN release problems.

TP v2.0.6

Thanks to various external contributors for these patches.

TPUI

  • Elements are now properly invalidated when they are moved.
  • Added support for adjusting interline spacing via Style.LINE_SPACING.
  • ModalShadow now emits a signal when it is clicked.
  • Added support for repeating background sections (instead of scaling) to Scale9Background.
  • Element's internal layer is now set to the element's size.
  • BorderLayout now supports setting its gaps after construction.
  • Fixed issues with alignment to physical pixels when sibling elements are invalidated.

TP v2.0.5

TPUI

  • Element better handles alignment of UI elements to "natural" pixel grid on scaled displays. Previously we rounded to nearest logical pixel, but this may not align with a physical pixel on displays with non-integral scale factor (many Android displays). Now we no longer round coordinates, but instead at UI validation time use the new Scaled.roundToNearestPixel method to align UI elements to actual physical pixels.
  • Scroller also uses new scaled display aware rounding to avoid positioning clipped UI on non-integral physical pixel.

TP v2.0.4

TPUI

  • Box set now removes its element from its parent before adding.
  • Fixed TextWidget issue with ICON_CUDDLE if there is no text.

TP v2.0.3

  • Bogus release to fix problems with publishing 2.0.2 release. Yay.

TP v2.0.2

TPUI

  • Added ELLIPSIZE Style which truncates text with three dots.
  • Added MIN_FONT_SIZE Style for use with AUTO_SHRINK. This used to be hard coded.
  • Added BAR_ON_BACKGROUND style for use with Slider.
  • Added ModalShadow helper class for making UI below a modal dialog inactive.

TPGame

TP v2.0.1

TPGame

TPUI

TPDemo

  • Split the Java demo into a separate demo per Java backend.
  • Added demo of new layer debug rectangle rendering (press d key in demo).

TP v2.0

  • All implementations updated to work with new PlayN 2.0 APIs.

TP v1.9

TPUI

  • Added new Icons Aggregated along with Scaled and Offset wrappers.
  • Added Icons solid.
  • Added Root validated signal. Emitted when root is validated.

TPAnim

  • Added Animation Handle.complete to force-complete an animation early.
  • Added Flicker stop and freeze.
  • Interpolator API simplification and improvement.

TPGame

TPSound

  • Fixed NPE when rapid-fire toggling SoundBoard mute.

TPFlump

  • Added Movie labelPassed signal.
  • Added ConvertFlumpLibsMojo Maven plugin to tripleplay-tools.

TPPlatform

  • Eliminated dependency on Guava.

TPUtil

  • Logger format now takes a prefix message.

TP v1.8.5

TPUI

TPUtil

TP v1.8

TPUI

  • Revamped the way interaction is handled. This is only relevant if you extend TPUI widgets with custom interactions or create your own TPUI widgets. See Behavior for details.
  • Added ImageButton, a button that uses images for its up and down state.
  • Factored "parent"-ness into Container (out of Elements) plus Container.Mutable.
  • Added Box a container that contains zero or one widgets.
  • Added Insets adjust.
  • Added Composite for widgets that are composed of other widgets. Made Tabs and Scroller into Composites.
  • Added MenuHost deactivate.
  • Added Scroller BAR_TYPE style.
  • Added Style.TextEffect GRADIENT.

TPEntity:

TPAnim:

  • Added AnimBuilder destroy(Destroyable), emit(Signal,value).

TPFlump:

TPPlatform:

  • A bunch of work on and revamping of native text fields. Much of this effort went toward getting them working in the Java backend, which requires running the app via SWT.
  • Added support for setting the app icon in the running Java app.

TPUtil:

  • Added Tapper and DoubleTapper for simple interaction handling on a layer.
  • Added Interpolator applyClamp which ought to be the default but that would cause too much trouble.
  • Added Interpolator BOUNCE_OUT and EASE_OUT_ELASTIC.
  • Fixed issue with empty string in TypedStorage setFor, handle removals from said sets.
  • Added Bag, an unordered collection that may contain duplicates. Optimized for speed.
  • Added BitVec, a bit set like java.util.BitSet (Java's BitSet doesn't work in GWT).
  • Added TextStyle and StyledText to replace now deprecated TextConfig and to work with PlayN's new approach to multiline text rendering. Eventually this combo will also support "rich" text (changing styles in the middle of a wrapped paragraph of text).

TP v1.7.2

TPUI

TPGame

  • Fixed issue where screen could spend one frame at wrong position during transitions.

TPUtil

TP v1.7.1

TPUI:

TPAnim:

  • Added easeInBack and easeOutBack to interpolated Animation.

TPPlatform:

  • Added NativeTextField setEnabled.
  • Fixed various keyboard issues when changing orientation.

TPUtil:

TP v1.7

Everywhere:

  • Most update methods were changed to take an int delta to match the changes to PlayN, and most paint methods were changed to take an instance of Clock. This allows certain calculations to be performed once-per-frame instead of repeatedly by half a dozen subsystems. Your game should be updated to use a pattern like the following:

      class MyGame extends Game.Default {
        public MyGame () {
          super(UPDATE_PERIOD);
        }
        public void update (int delta) {
          _clock.update(delta);
          _screens.update(delta);
          _particles.update(delta);
          _sounds.update(delta);
          // ..etc..
        }
        public void paint (float alpha) {
          _clock.paint(alpha);
          _screens.paint(_clock);
          _particles.paint(_clock);
          // ..etc..
        }
        private Clock.Source _clock = new Clock.Source(UPDATE_PERIOD);
        private ScreenStack _screens = new ScreenStack();
        private Particles _particles = new Particles();
        private SoundBoard _sounds = new SoundBoard();
        private static final int UPDATE_RATE = 30; // FPS
        private static final int UPDATE_PERIOD = 1000 / UPDATE_RATE;
      }
    

TPUI:

  • Elements that supported icons now take an Icon class rather than Image. Use Icons image to easily turn an Image into an Icon.
  • Various new widgets. See API changes for full details.
  • Added Constraints maxWidth/maxHeight/maxSize constraint builders.
  • Boolean style constants can now be expressed as Style.FOO.on and Style.FOO.off in addition to Style.FOO.is(true) and Style.FOO.is(false).

TPAnim:

  • Fixed bug with calling cancel on an animation that was just about to start. Also Animation.Handle.cancel no longer returns a boolean value.
  • Animation durations were always specified in milliseconds, but various places in the code and documentation talked about seconds. The code and documentation has all been normalized to use and talk about milliseconds.

TPPlatform:

  • Beginnings of native text field support for Java.
  • Various enhancements to native text field support on iOS. See API changes.

TPUtil:

TP v1.6

TPUI:

  • Added Scroller makeVisible.
  • Added LongPressButton which supports both a normal press interaction and a long-press interaction.
  • Added AxisLayout.Policy CONSTRAIN off-axis sizing policy.
  • Added Field MAXIMUM_INPUT_LENGTH style.
  • Added TableLayout colspan for configuring a column span on an element.
  • Added ValueLabel.
  • Added Style ICON_CUDDLE and UNDERLINE (the latter for underlined text).
  • Added TableLayout.Column free to allow weighting of free columns.

TPAnim:

  • Added AnimGroup for creating a group of invoked-in-parallel of animations that are either added to an Animator later, or are added to a serial animation chain.
  • Moved animation creation methods from Animator to AnimBuilder. Animation then now returns an AnimBuilder which is a cleaner design.
  • Clarified behavior of Animator add and then, made then freak out if used incorrectly.
  • Fixed bugs with repeating animations.

TPSound:

TPParticle:

  • Added Transform randomScale and randomOffset.

TPFlump:

  • Various bug fixes and small API improvements. See API changes.

TPPlatform:

  • Added NativeTextField Validator and Transformer for (native) text validation and transformation.

TPShader:

  • TintingShader was removed as PlayN layers now support tinting directly.

TPUtil:

TP v1.5.1

  • Mainly this release is to track the PlayN 1.5.1 patch release.
  • Various dependency updates: React 1.3.1, Pythagoras (inherited from PlayN) 1.3.2.

TP v1.5

  • Added the gesture package for touch gesture recognition.
  • Added a framework for native extensions to TriplePlay (in the platform package), and NativeTextField (only implemented on iOS) for overlaying a native iOS textfield onto the PlayN view.
  • Added a number of new TPUI widget classes: Menu, Scroller, Tabs.
  • Added SoundBoard and associated sounds for easily managing sound effects and music.

TP v1.4

TPUI:

  • Added Style ACTION_SOUND for playing a sound when buttons are clicked, etc.
  • Added Style BACKGROUND support to all elements (previously it only worked for TextWidget derivatives and [Group]).
  • Added Shim constructor that takes Dimension.
  • Added Background alpha for making backgrounds translucent.
  • Added Slider setWidth.
  • Added SizableWidget.
  • Added TableLayout alignTop and alignBottom for configuring vertical alignment of cell contents.
  • Root wasRemoved is now properly called when a root is removed and/or destroyed.

TPAnim:

TPGame:

  • Added page turn transition (via ScreenStack pageFlip). Uses a custom shader (for real 3D-ness) and thus only works on GL-based backends.
  • Added flip transition (via ScreenStack flip). Uses a custom shader (for real 3D-ness) and thus only works on GL-based backends.
  • Added ScreenStack remove(Predicate) for removing all screens that match a predicate.
  • Added AbstractTransition onStart/onComplete.
  • Fixed issues when screen transitions are interrupted (by starting a new transition).

TPUtil:

TPParticle:

  • New particle system. See Demo for examples.

TPSound:

TPSyncDB:

  • SyncDB is a new system for syncing a set of persistent data across a set of clients (via a server). Think syncing local game state across multiple mobile clients and/or web clients. Supports offline play with accumulation of changes and merging of those changes into the shared database with conflict resolution. Not fully implemented.

TPFlump:

  • Beginnings of player for Flump animations.

TPDemo:

  • Extracted all of the demos into a standalone demo project.

TP v1.3

TPUI:

  • Removed focus support, modified Field to always use Keyboard.getText.
  • Added CheckBox.
  • Added Slider setIncrement and Slider setThumb, made Slider use configured background style.
  • Added Element getStyleClass.
  • Added Background roundRect.
  • Added TextConfig.
  • Added FlowLayout.
  • Added AxisLayout stretch.
  • Added Style SHADOW_X and SHADOW_Y.
  • Added Style TEXT_EFFECT.vectorOutline, OUTLINE_WIDTH, OUTLINE_CAP, and OUTLINE_JOIN.
  • Changed Style TEXT_EFFECT.outline to Style TEXT_EFFECT.pixelOutline
  • Added TableLayout.Column copy.
  • Added Interface roots.
  • Revamped TextWidget which resulted in changes to Button and Label.
  • Clicks are now ignored by non-enabled widgets.
  • Fixed issue where text was positioned on non-integral-pixels in HiDPI mode.

TPAnim:

  • Added Animation from and to that take a Point.
  • Added Animator setVisible, addAt.
  • Added Animator flipbook, flipbookAt and Frames, SimpleFrames, PackedFrames.
  • Added a tool to create packed frame images. See tripleplay.tools.FramePacker.
  • Improved flow when transitioning between animations (no longer does it force a frame to elapse when one animation ends and then next starts).

TPGame:

TPUtil:

TP v1.2

TPUI:

  • Added TogglableTextWidget and ToggleButton.
  • Added BorderLayout, like AWT's layout of same name.
  • Added AxisLayout stretchByDefault.
  • Added Field focus(), Field maybeFocus() for setting focus programmatically.
  • Modified Field to use Keyboard getText on platforms with no hardware keyboard.
  • Added Scale9Background and Background scale9.
  • Added Background bordered.
  • Added Element hierarchyChanged signal, which is emitted when an element is added to or removed from the UI hierarchy.
  • Added TableLayout (int) constructor for easier creation of table with many standard columns.
  • Changed Background insets configuration to Background inset(int), etc.
  • Changed NullBackground to BlankBackground for consistency.
  • Made labels not intercept clicks.
  • Made elements/group not respond to clicks when not visible.
  • Fixed bug where icon gap was shown when we had icon and no text.
  • Rewrote event handling to use PlayN's new built-in event dispatch to layers. This means Interface no longer takes a Pointer.Listener and TPUI plays more nicely with other click handling you are doing on layers in your game.

TPAnim:

  • Added Animator tween to allow tweening of custom properties.
  • Added Animator reparent for reparenting a layer during an animation.
  • Added Flicker for doing iOS-style flick scrolling.

TPUtil:

TP v1.1 and TP v1.0

I wasn't maintaining release notes back in those glorious days.