# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [0.3.0] - 2023-02-24
### Breaking
- Refactored `GameInterface` into a struct that is generic over any backend-implementation
- Refactored `DolphinInterface` into a struct that implements `InterfaceProvider<Backend=DolphinBackend>`
### Additions
- Added `InterfaceProvider` trait for types that are caple of providing a game interface.
- Added `MockInterface` for writing testing logic without using a real backend.
- Added `GameVar` and `GameVarMut` traits to represent accessible regions of game memory in a strongly-typed manner.
- Improved amount of information availabe from `InterfaceError`s
- Added new variants for when a hooking attempt fails. `InterfaceError::Unhooked` represents when a previously
hooked interface becomes unhooked.
- Added `InterfaceError::Io` to wrap unexpected I/O errors instead of reducing them down to `Other`
- Replaced `InterfaceError::Other` with `InterfaceError::DataUnavailable` and `InterfaceError::Io`
- Added `Hans` struct for interacting with Hans' state.
### Fixed
- `GameInterface::unlock_task` will now only set a task's counter to `1` if it was previously `0`. This will preserve a
value of `3` which can also correspond to an "silver" task (e.g. Infestation at the Krusty Krab)
### Removals
- Removed several methods on `GameInterface` that would simply get/set memory regions that are now represented as `GameVar`s
## [0.2.1] - 2022-09-22
### Fixed
- Fixed `DolphinInterface::unlock_powers` writing values of the wrong size.
## [0.2.0] - 2022-09-22
### Additions
- Added functions for manipulating game state.
- Added function for unlocking a task.
## [0.1.0] - 2022-06-20
- Initial Release
[unreleased]: https://github.com/BfBBModdingTools/bfbb/compare/v0.3.0...HEAD
[0.3.0]: https://github.com/BfBBModdingTools/bfbb/releases/tag/v0.3.0
[0.2.1]: https://github.com/BfBBModdingTools/bfbb/releases/tag/v0.2.1
[0.2.0]: https://github.com/BfBBModdingTools/bfbb/releases/tag/v0.2.0
[0.1.0]: https://github.com/BfBBModdingTools/bfbb/releases/tag/v0.1.0