Releases: han-yaeger/yaeger
Releases · han-yaeger/yaeger
2023.2024
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
2022.2023
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
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). AYaegerEntity
that implements the interfaceCollided
will now receive a list of all
Entities (implementingCollider
) that it collides with during the last Game
World Update. Note that this feature breaks the API. - Enabled a
Coordinate2D
to calculate theangleto(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
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
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
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
packagecom.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
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
packagecom.github.hanyaeger.api.entities.impl
.
Features
Bugfixes
2020.2021-beta7
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 touserinput
,
since they now also apply to an instance ofYaegerScene
. - Changed the event handler for the
MouseButtonPressedListener
andMouseButtonReleasedListener
to use
aCoordinate2D
as a second parameter, instead ofint 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
tohanyaeger
(#181).
Features
- Added a
MouseMovedListener
interface, which gets called whenever the mouse has been moved. As a parameter, the
handler receives aCoordinate2D
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
ofYaegerEntity
andYawegerScene
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 aYaegerEntity
, except theMouseDraggedListener
, which makes little sense on aYaegerScene
The following listeners have been added:MouseDraggedListener
MouseDragEnterListener
MouseDragExitListener
MouseDropListener
MouseMovedWhileDraggingListener
- Added methods to both
YaegerEntity
andYaegerScene
to set the contrast, hue and saturation (#92). - Added the option to set the
viewOrder
of aYaegerEntity
. This enables the option to decide the rendering order of
all instances ofYaegerEntity
within aYaegerScene
. By default, a new instance ofYaegerEntity
will receive
aviewOrder
of 37. If the instance was created through aTileMap
it receives aviewOrder
of 100, placing it
behind other entities (#178). - Added the option to remove a
Timer
from aTimerContainer
(either aYaegerEntity
orYaegerScene
). Previously
aTimer
could only be paused; now it is possible to completely remove it (#197). - Added a method
isActive()
which states whether theTimer
is currently active (e.g. not paused). Since
aEntitySpawner
extendsTimer
, this method is also available forEntitySpawner
. - Added the option to remove a
EntitySpawner
from anEntitySpawnerContainer
. Previously anEntitySpawner
could
only be paused; now it is possible to completely remove it (#195). - Added the option to access the instances of
YaegerEntity
, created by aTileMap
. If a reference to the
TileMap
is still available, it can be used to callgetInstanceMap()
, which returns a two dimensional array of
all instances created by theTileMap
(#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
andTimer
can now be added outside, respectively, thesetupEntitySpawners()
and
setupTimers()
method.
2020.2021-beta6
Changes in this release
Configuration
Refactor
- Removed
getLeftX()
,getRightX()
,getTopY()
andgetBottomY()
from theBounded
interface. These properties can
be accessed through thegetBoundingBox()
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 ofCompositeEntity
. - 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 callengetValue()
(#135). - Added the method
getCurrentFrameIndex()
to aSpriteEntity
(#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 eachYaegerEntity
that implements the
interfaceCollided
orCollided
. 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
usesetAutoCycle(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)
andgetSpeedInDirection(double)
(#171)invertSpeedInDirection(Direction)
andinvertSpeedInDirection(double)
(#173)nullifySpeedInDirection(Direction)
andnullifySpeedInDirection(double)
(#163)maximizeMotionForDirection(Direction, double)
andmaximizeMotionForDirection(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
andCollider
. 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
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
andAABBSideAwareCollided
toCollided
,Collider
andSsideAwareCollided
. (#134).
Features
- Added a
CompositeEntity
and aDynamicCompositeEntity
, 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.