|
1 | 1 | <!-- DON'T TOUCH THESE --> |
2 | 2 |
|
3 | 3 | [unreleased]: https://github.com/rubatopy/rubato/ |
| 4 | +[v1.0.0]: https://github.com/rubatopy/rubato/tree/v1.0.0 |
4 | 5 | [v0.4.0]: https://github.com/rubatopy/rubato/tree/v0.4.0 |
5 | 6 | [v0.3.5]: https://github.com/rubatopy/rubato/tree/v0.3.5 |
6 | 7 | [v0.3.4]: https://github.com/rubatopy/rubato/tree/v0.3.4 |
|
16 | 17 |
|
17 | 18 | # Changelog |
18 | 19 |
|
19 | | -## [Unreleased] - December 31, 2022 (Expected) |
| 20 | +## [v1.0.0] - December 31, 2022 (Expected) |
20 | 21 |
|
21 | 22 | ### Breaking Changes |
22 | 23 |
|
23 | 24 | - `Text` no longer can affect `Font`s directly. |
24 | 25 | - Entirely removed the `Group` class. This means code utilizing groups will need to be significantly refactored. |
25 | 26 | - Refactored `Scene`s as a consequence of the removal of groups. See documentation for more information. |
26 | | -- Added `ignore_cam` option to `GameObject`s. This decides whether the gameobject respects the scene's camera when it draws. Replaces the previous UI group behavior. |
| 27 | +- Added `ignore_cam` option to `GameObject`s. This decides whether the gameobject respects the scene's camera when it |
| 28 | + draws. Replaces the previous UI group behavior. |
27 | 29 | - Reordered some function arguments for many functions and constructors to prioritize more used arguments. |
28 | 30 |
|
29 | 31 | ### Added |
30 | 32 |
|
31 | 33 | - `Tilemap` and `SimpleTilemap` components |
32 | | -- `GameObject` now have children whose positions, rotations and z_index are relative to their parents. Use `gameobject.set_parent()` to set a parent. |
| 34 | +- `GameObject` now have children whose positions, rotations and z_index are relative to their parents. Use |
| 35 | + `gameobject.set_parent()` to set a parent. |
33 | 36 | - `hitbox.should_collide()` which can be overriden to determine whether a hitbox should collide with another. |
34 | 37 |
|
35 | 38 | ### Changed |
|
111 | 114 |
|
112 | 115 | ### Changed |
113 | 116 |
|
114 | | -- `RecurrentTask` task callback can now be made to take in a task argument. This allows you to stop the task when you want. |
| 117 | +- `RecurrentTask` task callback can now be made to take in a task argument. This allows you to stop the task when you |
| 118 | + want. |
115 | 119 | - `delay` argument in Frame, Delayed, and Recurrent tasks now only controls the delay. |
116 | | -- Frame, Delayed, and Recurrent tasks no longer modify `delay`, and instead determine the next time to run the task using `next_run`. |
| 120 | +- Frame, Delayed, and Recurrent tasks no longer modify `delay`, and instead determine the next time to run the task |
| 121 | + using `next_run`. |
117 | 122 | - All event listener callbacks now can take in an `EventResponse`. |
118 | 123 | - Made `Events` an enum for nicer documentation. Doesn't impact usage. |
119 | 124 | - Internal file structure. Shouldn't impact most users. |
120 | 125 | - Optimized and fixed some internal rendering algorithms. |
121 | 126 | - Colors are now internally represented as argb32 integers instead of rgba32 integers. |
122 | | -- `hitbox.get_aabb()` methods now return the aabb in the form of bottom-left, top-right coordinates instead of top-left, bottom-right. |
| 127 | +- `hitbox.get_aabb()` methods now return the aabb in the form of bottom-left, top-right coordinates instead of |
| 128 | + top-left, bottom-right. |
123 | 129 |
|
124 | 130 | ### Removed |
125 | 131 |
|
|
136 | 142 |
|
137 | 143 | ### Breaking Changes |
138 | 144 |
|
139 | | -- Changed the type of some scale parameters from a scalar value to a Vector/tuple for more customization and consistency. |
| 145 | +- Changed the type of some scale parameters from a scalar value to a Vector/tuple for more customization and |
| 146 | + consistency. |
140 | 147 | - `shadow_pad` parameter in `Draw.text()` is now a vector to allow for different padding in the x and y directions. |
141 | | -- Renamed `surface.merge()` and `raster.merge()` to `surface.blit()` and `raster.blit()`, respectively, to be more consistent with Unity's API. |
| 148 | +- Renamed `surface.merge()` and `raster.merge()` to `surface.blit()` and `raster.blit()`, respectively, to be more |
| 149 | + consistent with Unity's API. |
142 | 150 |
|
143 | 151 | ### Added |
144 | 152 |
|
|
166 | 174 | ### Breaking Changes |
167 | 175 |
|
168 | 176 | - Renamed `Draw.surf()` and `Draw.queue_surf()` to `Draw.surface()` and `Draw.queue_surface()`. |
169 | | -- Removed all `delete()` functions because they did nothing that was useful for memory management, |
170 | | - which was their purpose. |
| 177 | +- Removed all `delete()` functions because they did nothing that was useful for memory management, which was their |
| 178 | + purpose. |
171 | 179 | - Removed `Sprite`, because `Surface` does the same thing. |
172 | 180 | - `Display.update()` and `Draw.text()` now use center position like the rest of rubato. |
173 | 181 | - Removed `PressStart2P` font and replaced it with `Mozart`. |
|
206 | 214 |
|
207 | 215 | ### Breaking Changes |
208 | 216 |
|
209 | | -- `Polygon`s MUST take in a list of vectors in clockwise order instead of counter-clockwise as was before. Generator methods |
210 | | - automatically reflect this change but if you are passing in your own lists, make sure to reflect this change. |
| 217 | +- `Polygon`s MUST take in a list of vectors in clockwise order instead of counter-clockwise as was before. Generator |
| 218 | + methods automatically reflect this change but if you are passing in your own lists, make sure to reflect this |
| 219 | + change. |
211 | 220 | - `component.true_z()` is now a function instead of a property method. This is to match with our new property method |
212 | 221 | convention. |
213 | 222 |
|
214 | 223 | ### Added |
215 | 224 |
|
216 | | -- `gameobject.remove_ind()` method to remove an individual component from a game object with a given index. |
217 | | - Use this to remove components from a game object which holds multiple instances of the same type of component. |
| 225 | +- `gameobject.remove_ind()` method to remove an individual component from a game object with a given index. Use this |
| 226 | + to remove components from a game object which holds multiple instances of the same type of component. |
218 | 227 | - `component.true_pos()` and `component.true_rotation()` methods to get the position and rotation of a component in |
219 | 228 | world space. These functions correctly apply the gameobjects position and rotation to the component while respecting |
220 | 229 | offsets. |
|
231 | 240 |
|
232 | 241 | ### Changed |
233 | 242 |
|
234 | | -- Modified the internal workings of `gameobject`s components data structure to more flexibly handle inputs. |
235 | | - (Can now handle getting components by a parent type (such as Hitbox or Component or even object)). |
| 243 | +- Modified the internal workings of `gameobject`s components data structure to more flexibly handle inputs. (Can now |
| 244 | + handle getting components by a parent type (such as Hitbox or Component or even object)). |
236 | 245 | - Renamed `vector.distance_between()` to `vector.dist_to()`. |
237 | 246 | - Renamed `polygon.translated_verts()` to `polygon.offset_verts()`. |
238 | 247 | - Renamed `polygon.real_verts()` to `polygon.true_verts()` to maintain naming consistency. |
|
251 | 260 |
|
252 | 261 | ### Fixed |
253 | 262 |
|
254 | | -- Getting `Rectangle`, `Polygon`, or `Circle` components from a gameobject returning all `Hitbox` type objects. |
255 | | - You can still replicate this functionality by passing `Hitbox` into the component getter. |
| 263 | +- Getting `Rectangle`, `Polygon`, or `Circle` components from a gameobject returning all `Hitbox` type objects. You |
| 264 | + can still replicate this functionality by passing `Hitbox` into the component getter. |
256 | 265 | - Offsets (including rotational) not working properly. Physics has also been refactored to handle scaling properly. |
257 | 266 | - `Rectangle` side getters and setters, which were not utilizing offsets properly. They now work with the AABB of the |
258 | 267 | rectangle. |
|
272 | 281 |
|
273 | 282 | ### Breaking Changes |
274 | 283 |
|
275 | | -- As `Vector` is now a C class, it only holds floats and is therefore subject to floating point errors in unexpected cases. |
276 | | - Be careful in accuracy-dependent calculations to handle deviation properly. Note that Python ints are implicitly cast to floats |
277 | | - when used in Vector. |
| 284 | +- As `Vector` is now a C class, it only holds floats and is therefore subject to floating point errors in unexpected |
| 285 | + cases. Be careful in accuracy-dependent calculations to handle deviation properly. Note that Python ints are |
| 286 | + implicitly cast to floats when used in Vector. |
278 | 287 | - `Color.rgba32` is no longer a property is a method instead. |
279 | 288 | - `Vector.one` and other similar class properties changed to classmethods, i.e. `Vector.one()` |
280 | 289 |
|
281 | 290 | ### Added |
282 | 291 |
|
283 | 292 | - `Group.all_gameobjects()` to get, recursively, all the game objects belonging to a group and its children. |
284 | | -- Multiple `Event` types for controller events. Controllers are registered automatically by Rubato for event listening. |
| 293 | +- Multiple `Event` types for controller events. Controllers are registered automatically by Rubato for event |
| 294 | + listening. |
285 | 295 | - Assorted `Input` methods for querying the state of a controller. |
286 | 296 | - `Raster` renamed to `Surface`. |
287 | 297 | - `Raster` is now a component that holds a surface. It is analogous to `Image` for `Sprite`s. |
|
293 | 303 | - Made `QTree` a C class. This is an internally used class and should not affect normal library usage. |
294 | 304 | - Default drawing/debug colors from green to cyan. |
295 | 305 | - Made rendering of images faster |
296 | | -- `Polygon.generate_polygon` to `Vector.poly`. `generate_polygon` is deprecated and will be removed in a future update. |
| 306 | +- `Polygon.generate_polygon` to `Vector.poly`. `generate_polygon` is deprecated and will be removed in a future |
| 307 | + update. |
297 | 308 |
|
298 | 309 | ### Removed |
299 | 310 |
|
|
334 | 345 | - `Sprite` class to draw images that are not linked to Game Objects |
335 | 346 | - `wrap()` function can create and populate a GameObject with component(s) automatically. |
336 | 347 | - `world_mouse()` function to easily get the mouse position translated into world-coordinates |
337 | | -- Support for operations with Vectors using tuples and lists, meaning less objects need to be created. |
338 | | - (note that no length checking occurs, so make sure your tuples and lists are of length 2). |
| 348 | +- Support for operations with Vectors using tuples and lists, meaning less objects need to be created. (note that no |
| 349 | + length checking occurs, so make sure your tuples and lists are of length 2). |
339 | 350 | - `raise_operator_error()` function to raise an error about an operator in a Pythonic style. |
340 | 351 | - `Scene.switch()` instance method that allows users to switch to a scene without calling `Game.set_scene(scene_id)` |
341 | | -- `Game.draw` and `Game.update` functions, both of which are overrideable, to give user-defineable functionality not reliant on scenes. |
| 352 | +- `Game.draw` and `Game.update` functions, both of which are overrideable, to give user-defineable functionality not |
| 353 | + reliant on scenes. |
342 | 354 | - `Group.contains()` method for checking whether a group or gameobject has already been added to it. |
343 | 355 | - `Hitbox.contains_pt` method for checking whether a point is inside a hitbox (useful in buttons and the like) |
344 | 356 |
|
|
347 | 359 | - Made `Time.now()` a function instead of a property. |
348 | 360 | - Refactored collision detection code to not report contact points, since we don't need them anymore. |
349 | 361 | - Added `hidden` attribute to all components and removed `visible` attribute from `Animation`, `Image`, and `Raster` |
350 | | -- Moved `border_color` and `background_color` to individual `Scene` objects instead of a single attribute for the whole game. |
| 362 | +- Moved `border_color` and `background_color` to individual `Scene` objects instead of a single attribute for the |
| 363 | + whole game. |
351 | 364 | - Restructured the internal file heirarchy. Should not affect normal library useage at all. |
352 | 365 | - Default border color in draw functions from `Color.green` to `Color.clear` |
353 | | -- Use `Draw.{thing}` to draw immediately and `Draw.queue_{thing}` to draw with a specific z_index. |
354 | | - (replace {thing} with the draw function of your choice) |
| 366 | +- Use `Draw.{thing}` to draw immediately and `Draw.queue_{thing}` to draw with a specific z_index. (replace {thing} |
| 367 | + with the draw function of your choice) |
355 | 368 | - Switching scenes now only takes effect on the next frame. |
356 | 369 | - Reordered `Draw.clear` params to be more intuitive. |
357 | 370 | - Renderer is automatically cleared if no scene exists. |
|
375 | 388 |
|
376 | 389 | ### Breaking Changes |
377 | 390 |
|
378 | | -- Removed all of the defaults dictionaries. Instead we are switching to a pythonic way of doing things. The key names, types, and defaults are still the same so its just a matter of adding \*\* to the beginning of the dictionary. |
| 391 | +- Removed all of the defaults dictionaries. Instead we are switching to a pythonic way of doing things. The key names, |
| 392 | + types, and defaults are still the same so its just a matter of adding \*\* to the beginning of the dictionary. |
379 | 393 | - `Vector.angle` now returns the angle in degrees, starting from the top and going clockwise. |
380 | 394 | - `Vector.from_radial` now matches the angle format described above and takes in an angle in degrees |
381 | 395 | - `Vector.angle_between` now returns the angle in degrees. |
|
399 | 413 | - `Math.sign()` now returns 0 for 0. |
400 | 414 | - `time` module renamed to `rb_time` to not conflict with the Python time module. |
401 | 415 | - `Draw` now has a default color of green. |
402 | | -- `os.walk` Each function with os.walk has a recursive option now. To allow you to choose between recursive and shallow. |
| 416 | +- `os.walk` Each function with os.walk has a recursive option now. To allow you to choose between recursive and |
| 417 | + shallow. |
403 | 418 | - `window_pos` setting window_pos in init() now takes into account the border, so you set the topleft of the border. |
404 | 419 |
|
405 | 420 | ### Fixed |
|
440 | 455 | - `Component` can now take in a dictionary of parameters. |
441 | 456 | - Moved collision test code and impulse resolution to `Engine` class. |
442 | 457 | - Changed default physics fps to 30. |
443 | | -- `Polygon.generate_polygon()` can now takes an optional `options` parameter. When set, it returns a `Polygon` instead of a list of vertices. |
| 458 | +- `Polygon.generate_polygon()` can now takes an optional `options` parameter. When set, it returns a `Polygon` instead |
| 459 | + of a list of vertices. |
444 | 460 | - Move basic draw functions from `Display` to `Draw`. |
445 | 461 | - `Text.align` renamed to `Text.anchor` and is now properly documented. |
446 | 462 | - `input` module renamed to `rb_input` to not override the built-in function. |
|
0 commit comments