Skip to content

Releases: han-yaeger/yaeger

2023.2024

15 Dec 11:19
Compare
Choose a tag to compare

Changes in this release

Configuration

  • Updated Mockito to 4.8.0
  • Updated jUnit to 5.9.1
  • Updated JavaFX to 21
  • Updated required JDK to 21
  • Updated Guice to 7.0

Features

  • Added an optional overlay that show a coördinate-grid. This can be activated by using the command line argument --showGrid (#250)
  • Added a getter for the rotation of an Entity (#252)
  • A ScrollableDynamicScene can center on a coördinate (#253)

2022.2023

16 Dec 11:04
Compare
Choose a tag to compare

Changes in this release

Configuration

  • Updated Mockito to 4.8.0
  • Updated jUnit to 5.9.1
  • Updated JavaFX to 19

Refactor

Features

  • Added a new animation system, in which parts of a sprite-sheet can be
    encapsulated by a Java-object. This will make it far easier to fully animate
    an entity (#239).

Bugfixes

2022.2023-beta1

30 Jun 07:12
Compare
Choose a tag to compare

Changes in this release

Configuration

  • Updated Mockito to 4.5.1
  • Updated jUnit to 5.8.1
  • Updated JavaFX to 18.0.1
  • Updated Jacoco to 0.8.8
  • Updated Nexus Staging Maven Plugin to 1.6.13
  • Updated the JavaDoc Maven Plugin to 3.4.0

Refactor

  • Switched all usages of the Stream-API for-each for the traditional version.
    Measurements have shown that this might improve speed (#233).

Features

  • Allowed a Collided to support multi collisions (#209). A YaegerEntity
    that implements the interface Collided will now receive a list of all
    Entities (implementing Collider) that it collides with during the last Game
    World Update. Note that this feature breaks the API.
  • Enabled a Coordinate2D to calculate the angleto(Coordinate2D) method
    (#215).
  • Added a ScrollableDynamicScene(#57) and updated all the mouse listeners to
    use the coordinates from the full scrollable area.
  • A Coordinate2D now exposes all vector-related methods.
  • The debugger now also lists the frames per second. This value is calculated as
    the average number of frames (#224) during two seconds
    (divided by 2).
  • Added constants for diagonal directions to Directions.java.

Bugfixes

  • Resolved a bug on Windows in which the size of the stage was larger that the
    viewable area. (#208)
  • Restricted the Game World Update to a max of 60 fps. (#211). The Game World
    Update is triggered on each screen refresh, which defaults to 60fps. On
    systems with a higher refresh rate, this value is now limited to a max of
    60fps to ensure games run at about the same speed.
  • Removed the input lag (#236) that occurred due to the key pressed delay.
  • Resolved #234, which caused setting the autocycle of a SpriteEntity to reset
    the row to -1.
  • Resolved #235, which caused Boundingbox Visualizers to block Mouse Events on
    the underlying Entities.
  • Resolved #238, which caused some setActiveScene(int) calls to lead to a
    ConcurrentModificationException.

2021.2022.3

14 Mar 11:07
Compare
Choose a tag to compare

Changes in this release

Configuration

  • Updated Guice to 5.1.0

Refactor

Features

Bugfixes

  • Resolved #227, which prevented Yaeger to support JDK 17.

2021.2022.2

27 Jan 13:35
Compare
Choose a tag to compare

Changes in this release

Configuration

  • Updated Guice to 5.1.0

Refactor

Features

Bugfixes

  • Resolved #227, which prevented Yaeger to support JDK 17.

2021.2022.1

23 Sep 13:31
Compare
Choose a tag to compare

Changes in this release

Configuration

  • Updated Mockito to 3.11.2
  • Updated jUnit to 5.7.2

Refactor

  • Moved the implementations of all entities from their own package to the
    package com.github.hanyaeger.api.entities.impl.

Features

Bugfixes

  • Resolved a bug on Windows in which the size of the stage was larger that the
    viewable area. (#208)

2021.2022

05 Aug 14:42
Compare
Choose a tag to compare

Changes in this release

Configuration

  • Updated Mockito to 3.11.2
  • Updated jUnit to 5.7.2

Refactor

  • Moved the implementations of all entities from their own package to the
    package com.github.hanyaeger.api.entities.impl.

Features

Bugfixes

2020.2021-beta7

18 Jul 11:16
Compare
Choose a tag to compare
2020.2021-beta7 Pre-release
Pre-release

Changes in this release

Configuration

  • Updated Java to 16
  • Updated JavaFX to 16
  • Updated Mockito to 3.8.0
  • Updated Jacoco to 0.8.6
  • Updated jUnit to 5.7.1
  • Updated Guice to 5.0.1

Refactor

  • The Mouse and Key related event handlers have been moved from the entities.entity.userinput package to userinput,
    since they now also apply to an instance of YaegerScene.
  • Changed the event handler for the MouseButtonPressedListener and MouseButtonReleasedListener to use
    a Coordinate2D as a second parameter, instead of int x, int y.
  • Changed the package structure for better encapsulation of the internal api. This is a major refactorings and breaks
    all current implementations (#181).
  • Renamed the module from hanyaeger.api to hanyaeger (#181).

Features

  • Added a MouseMovedListener interface, which gets called whenever the mouse has been moved. As a parameter, the
    handler receives a Coordinate2D that contains the current coordinates of the mouse pointer.
  • Exposed a getCursor() method for all Entities.
  • Generalized the mouse event handlers to also be applicable to a YaegerScene. This way, both instances
    of YaegerEntityand YawegerScene can implement them and receive Mouse events.
  • Added a CustomFont class, which can be used for using a custom font, based on a font file (#184).
  • Added several listeners that together provide drag-and-drop (#186). All these listeners are applicable to both a
    YaegerScenc and a YaegerEntity, except the MouseDraggedListener, which makes little sense on a YaegerScene
    The following listeners have been added:
    • MouseDraggedListener
    • MouseDragEnterListener
    • MouseDragExitListener
    • MouseDropListener
    • MouseMovedWhileDraggingListener
  • Added methods to both YaegerEntity and YaegerScene to set the contrast, hue and saturation (#92).
  • Added the option to set the viewOrder of a YaegerEntity. This enables the option to decide the rendering order of
    all instances of YaegerEntity within a YaegerScene. By default, a new instance of YaegerEntity will receive
    a viewOrder of 37. If the instance was created through a TileMap it receives a viewOrder of 100, placing it
    behind other entities (#178).
  • Added the option to remove a Timer from a TimerContainer (either a YaegerEntity or YaegerScene). Previously
    a Timer could only be paused; now it is possible to completely remove it (#197).
  • Added a method isActive() which states whether the Timer is currently active (e.g. not paused). Since
    a EntitySpawner extends Timer, this method is also available for EntitySpawner.
  • Added the option to remove a EntitySpawner from an EntitySpawnerContainer. Previously an EntitySpawner could
    only be paused; now it is possible to completely remove it (#195).
  • Added the option to access the instances of YaegerEntity, created by a TileMap. If a reference to the
    TileMap is still available, it can be used to call getInstanceMap(), which returns a two dimensional array of
    all instances created by the TileMap (#202).

Bugfixes

  • When a new background audio is set, the previous background audio is first stopped (#192).
  • Through the exposure of the setViewOrder(double) method tile-maps no longer appear in front of regular entities
    (#190).
  • Both EntitySpawner and Timer can now be added outside, respectively, the setupEntitySpawners() and
    setupTimers() method.

2020.2021-beta6

05 Apr 13:07
Compare
Choose a tag to compare
2020.2021-beta6 Pre-release
Pre-release

Changes in this release

Configuration

Refactor

  • Removed getLeftX(), getRightX(), getTopY() and getBottomY() from the Bounded interface. These properties can
    be accessed through the getBoundingBox() method.
  • Removed the undoUpdate behaviour that undid the last update if the speed of a YaegerEntity was set to 0. It led to
    unpredictable behaviour for corner cases.
  • Removed the SideAwareCollided, which became absolute with the introduction of CompositeEntity.
  • Activating the Debugger should now be done through a commandline argument (--showDebug) instead of pressing the F1
    -button.

Features

  • Added extra methods for using the Direction enumeration directly instead of callen getValue() (#135).
  • Added the method getCurrentFrameIndex() to a SpriteEntity (#141).
  • Added a new interface Newtonian, which add gravitational pull and friction to Dynamic Entities (#89).
  • Added the run argument --showBB that makes Yaeger show the bounding box of each YaegerEntity that implements the
    interface Collided or Collided. This should ease debugging collisions (#20).
  • All children of YaegerEntity can now be used for a TileMap. Previously, this was only possible with children of
    SpriteEntity (#150).
  • It is now possible to add a third parameter while adding Entities to a TileMap. This parameter, of type
    EntityConfiguration will then be passed to the constructor of the Entity (#159).
  • SpriteEntities now accept sprites that contain a 2D map of images. For such sprites, it is now also possible the
    use setAutoCycle(long interval, int row), which enables auto cycling through a specific row (#62).
  • A new constructor has been added to SpriteEntities, which does not require a Size. For such entities the original
    dimensions are used (#158).
  • Added several methods to Dynamic Entities that can be used to alter their motion:
    • getSpeedInDirection(Direction) and getSpeedInDirection(double) (#171)
    • invertSpeedInDirection(Direction) and invertSpeedInDirection(double) (#173)
    • nullifySpeedInDirection(Direction) and nullifySpeedInDirection(double) (#163)
    • maximizeMotionForDirection(Direction, double) and maximizeMotionForDirection(double, double) (#161)

Bugfixes

  • It is now possible to first set the direction of an Entity and then its speed (#41).
  • Extra interface haven been removed from the Collided and Collider. To gain access to their properties (e.g. speed,
    direction), an explicit cast is now required (#148).
  • Calculating the angle between an Entity and a CompositeEntity now calculates the correct angle (#160).

2020.2021-beta5

14 Nov 12:59
Compare
Choose a tag to compare
2020.2021-beta5 Pre-release
Pre-release

Changes in this release

Configuration

  • Updated Guice to 1.0.19.13

Refactor

  • Made the update() method of a Dynamic Scene and Dynamic Entities final, so it cannot be overwritten by a user. If the update() is required, the UpdateExposer should be implemented.
  • Renamed the methods with the semi-fluent API from the MotionModifier to their more classic form.
  • Renamed the interfaces AABBCollided, AABBCollider and AABBSideAwareCollided to Collided, Collider and SsideAwareCollided. (#134).

Features

  • Added a CompositeEntity and a DynamicCompositeEntity, with which it becomes possible to apply composition to entities (#101). This also enables the option to create an Entity that uses hit boxes for collision detection.

Bugfixes

  • Resolved the problem that caused a performance hit when using TextEntities (#129).
  • Resolved the issue where a colliding, but non-moving Entity stayed in place, although setAnchorLocation() was called (#122)
  • Resolved an issue that prevented a CompositeEntity to be part of collision detection (#133).