69 Commits

Author SHA1 Message Date
d53ac50859 Add flame_lint to examples (#1090) 2021-11-12 10:35:56 +01:00
0a7b87e202 Remove unnecessary super.render calls (#1084)
* Remove unnecessary super.render calls

* Update tutorial and docs
2021-11-11 11:50:01 +01:00
32bf19b91c Add random to the Color and Paint extensions (#1081)
* Add `randomColor` to the `Color` extension

* Add flame rive package to monorepo (#1048)

Add flame rive package to monorepo

* Add random to PaintExtension

* Update examples/pubspec.yaml

Co-authored-by: Erick <erickzanardoo@gmail.com>

Co-authored-by: Renan <6718144+renancaraujo@users.noreply.github.com>
Co-authored-by: Erick <erickzanardoo@gmail.com>
2021-11-10 13:09:12 +01:00
3abde23450 Move effects (#1077)
* Added MoveEffect

* formatting

* update comments

* Add example for move effects

* Added tests

* changelog

* flutter analyze

* avoid creating newPosition object

* added a trailing comma

Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>
2021-11-07 20:38:47 +00:00
ec7d476375 adding example from sprite animation with variable step time (#1080)
Co-authored-by: Luan Nico <luanpotter27@gmail.com>
2021-11-07 00:18:16 +00:00
4e834f008f Streamline PositionComponent constructors (#1072)
* Streamline PositionComponents constructors

* TextBoxComponent doesn't handle size argument

* Add idle button onMount for HudButtonComponent

* Fix follow object example

* Updated dartdoc for HudButtonComponent
2021-11-05 14:28:28 +01:00
b7a2d3fdf8 Simplified the usage of ShapeComponent (#1068)
* Simplified the usage of ShapeComponent

* Default constructor for _RandomCircle

* Use default constructor

* Forced Anchor.center on ShapeComponent

* Fix examples using SquareComponent

* Removed unnecesary import

* Renamed edgeLength to size
2021-11-03 14:30:58 +01:00
b8ea25eceb Fixing Flame pause and resume engine features (#1066)
* Fixing Flame pause and resume engine features

* Update packages/flame/lib/src/game/mixins/game.dart

* Apply suggestions from code review

Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>

* Update doc/game.md

* Update doc/game.md

Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>
2021-11-02 23:08:53 +00:00
45b21c7c5f Adding CustomPainterComponent (#1067)
* Adding CustomPainterComponent

* Apply suggestions from code review

Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>
Co-authored-by: Jochum van der Ploeg <jochum@vdploeg.net>

* PR suggestions

Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>
Co-authored-by: Jochum van der Ploeg <jochum@vdploeg.net>
2021-11-02 19:56:16 -03:00
6e7e098f1b New Rotate effect (#1061)
* Added FlameAnimationController class

* Added MainAnimationController class

* Update doc comments

* formatting

* rename MainAnimationController

* Added tests for StandardAnimationController

* Added more tests

* comment

* Added changelog note

* Export StandardAnimationController

* formatting

* Use a default for 'curve' parameter

* rename onsetDelay -> startDelay

* Added Transofm2DEffect

* Added EffectComponent

* Added .transform getter

* formatting

* Rename EffectComponent -> Effect

* Add documentation for the Effect class

* minor

* Added a test for Effect class

* Adding tests for removeOnFinish

* Adding tests for onStart and onFinish

* Also check the effect after reset

* Fix-up merge

* formatting

* added doc-comments

* changelog note

* Added test for transform2DEffect

* Adjusted comments

* Make PositionComponent._transform public

* change changelog

* Adding RotateEffect

* wip on rotate2 example

* Rename -> RotateEffect2

* export rotation effect

* Finish example for RotateEffect2

* formatting

* rename RotateEffect2 -> RotateEffect

* Changelog note

* Added test file

* flutter format

* Remove a print() call

* _lastProgress moved to Transform2DEffect class

* remove avoid_print for now

* Moved description

* Initialize paints during construction

* Added a random test

* flutter format

Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>
2021-11-02 21:08:55 +01:00
da1e060594 Possibility to manually remove TimerComponent (#1065)
* Possibility to manually remove `TimerComponent`

* Fix example for TimerComponent

* Add dartdocs
2021-11-02 20:01:47 +01:00
3a8abe139b Rename Hitbox mixin to HasHitboxes (#1060) 2021-11-02 12:44:21 +01:00
d9984c7bda RemoveEffect (#1063)
* Added FlameAnimationController class

* Added MainAnimationController class

* Update doc comments

* formatting

* rename MainAnimationController

* Added tests for StandardAnimationController

* Added more tests

* comment

* Added changelog note

* Export StandardAnimationController

* formatting

* Use a default for 'curve' parameter

* rename onsetDelay -> startDelay

* Added Transofm2DEffect

* Added EffectComponent

* Added .transform getter

* formatting

* Rename EffectComponent -> Effect

* Add documentation for the Effect class

* minor

* Added a test for Effect class

* Adding tests for removeOnFinish

* Adding tests for onStart and onFinish

* Also check the effect after reset

* Fix-up merge

* formatting

* added doc-comments

* changelog note

* Added test for transform2DEffect

* Adjusted comments

* Make PositionComponent._transform public

* change changelog

* Added SimpleEffectController

* Added DestroyEffect

* Changelog note

* Rename DestroyEffect -> RemoveEffect

* Added example for RemoveEffect

* flutter format

* Move description of the RemoveEffectExample game

* move the description again

* minor
2021-11-02 09:59:35 +01:00
a55fc29baa clarified TimerComponent example (#1057) 2021-10-30 17:42:42 +02:00
f020da7bd7 Improve 'move effect' example (#1030)
* Improve 'move effect' example

* Update examples/lib/commons/circle_component.dart

* Changelog entry

Co-authored-by: Erick <erickzanardoo@gmail.com>
2021-10-21 14:15:10 +02:00
a1a0862121 Add @mustCallSuper to component.render (#1011)
* Add @mustCallSuper to component.render

* fixing lint

* lint

* fixing
2021-10-10 23:37:30 +00:00
7d951a9820 Change priority is performed after each tick (#998) 2021-10-06 20:51:44 -04:00
9cc19a76b4 Add option to rotate SpriteWidget (#985) 2021-09-29 12:24:17 -04:00
8e72998b52 Make onLoad mandatory (#974)
* Fix performance issues with RC14

* Changelog

* Fix analysis

* Bring back the collidables list

* .

* .
2021-09-28 19:43:43 -03:00
55ab428a9e Collision detection between children (#943)
* Enable children of different components to collide

* Re-add import
2021-09-15 15:11:00 +02:00
a1b6ffa04a Game as a Component (#906)
* Game as a component

* Fix component stories

* Effects are now components

* Update effects docs

* Handle swap of parent

* Fix reAddChildren

* Wait for children to be added

* BaseComponent and PositionComponent to be non-abstract

* Simplify HasGameRef

* Revert so that onLoad can be null

* Fix example description

* Effects as components

* Remove gameRef from addChildren

* Fix hasGameRef

* Start migrating effects

* Updated comments of effect fields

* Fix comments

* Continue to fix sequence and combined effects

* Upgrade ordered_set

* Fix position_component_test

* BaseComponent -> Component

* Fix combined and sequence effects

* Await components to be added in tests

* Remove unnecessary game.update in tests

* Fix some tests related to composition

* BaseGame should be used in examples

* Fix CombinedEffect test

* Keyboard code to be based on Component

* Fix keyboard tests

* Fix analyze problems

* Fix sequence_effect

* Fix combined_effect_test

* Store peak state instead of end state

* Fix sequence_effect tests

* Update tutorial

* Fix tutorial 1

* Remove SimplePositionComponentEffect

* Remove unused test variable

* Update docs

* Removed onMount

* Remove onMount

* Add missing dartdoc

* Fix dart docs

* Add super.update where needed

* Move reAddChildren to component

* Reorganize method order in game widget

* preOffset -> initialDelay, postOffset -> peakDelay

* Introduce component.onParentChange

* Remove tests in wrong file

* Fix composed component test

* Add game lifecycle test

* Use BaseGame for mouse cursor test

* Oxygen should (?) not call super.update

* Use BaseGame in keyboard_test

* Fix onLoad to be properly cached

* Re-add unintentionally removed override

* Fix info for collision detection tests

* Add test for correct lifecycle on parent change

* Fix particles example

* Add component lifecycle diagram to the docs

* Add docs for the game lifecycle

* onRemove should be called when a game is removed from the widget

* Fix analyze errors

* prepare should be called from the component itself, not its parent

* Fix dartdoc

* onParentChange -> onMount

* onMount should have void as return type

* Simplify the loaderFuture in GameWidget

* Fix mock_canvas

* Fix rebase problem

* Remove asComponent

* Less complex _loaderFuture

* Add super.update to no_fcs parallax example

* Fix async tests

* Revert _loaderFuture

* Fix analyze issues

* await gameWithCollidables

* Keep epsilon small where it can be

* tappable methods should return bool

* Game lifecycle is now the same as for Component

* Remove mustCallSuper from component.update

* Make onLoadCache protected

* @internal on onLoadCache

* Cache/Memoize debugPaint and debugTextPaint

* Fix imports

* Fix comments

* Always call super.onLoad so that mixins can override it

* Add forgotten super.onLoad

* Bump coverage percentage

* HasCollidables should override update

* Fix Game comments

* Fix some dartdoc

* Apply suggestions from code review

Co-authored-by: Erick <erickzanardoo@gmail.com>

* Game + Loadable as mixins

* Update packages/flame/lib/src/game/game_widget/game_widget.dart

Co-authored-by: Luan Nico <luanpotter27@gmail.com>

* Update loadable docs

* Fix comments

* Move fps_counter

* Fix keyboard example

* Fix dartdoc

* Remove tutorials temporarily

* Fix game lowlevel graph

* Fix resize issue

Co-authored-by: Erick <erickzanardoo@gmail.com>
Co-authored-by: Luan Nico <luanpotter27@gmail.com>
2021-09-15 00:17:49 +02:00
820950dc39 CameraComponent (#933)
* Viewport and combinedProjector now belong to Camera

* cleanup

* format

* fix analysis issues

* Property viewport removed from BaseGame

* Move camera & viewport into a separate directory

* added CameraComponent

* format

* .camera as computed property

* changelog note

* format

* format

* comment

* CameraComponent is no longer a Component

* Rename CameraComponent -> CameraCo

* format

* Rename CameraC -> CameraWrapper

* minor

* rename BaseGame._cameraComponent -> ._cameraWrapper

* minor fixes in response to reviewer suggestions

* Fix rendering of a ParallaxComponent

Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>
2021-09-13 16:46:44 +02:00
5529869a76 Adding custom mouse cursors for flame (#935)
* Adding custom mouse cursors for flame

* linting and adding fvm to gitignore

* PR suggestions

* Apply suggestions from code review

Co-authored-by: Luan Nico <luanpotter27@gmail.com>

Co-authored-by: Luan Nico <luanpotter27@gmail.com>
2021-09-05 20:55:26 -03:00
c833319c49 Feat: Add keyboard with focus node implementation (#909)
* Add keyboard with focus node implementation

* a

* format and make it stabel compatible

* Add mixin to game

* fixes

* add tests

* format

* docs

* more docs

* Update doc/keyboard-input.md

Co-authored-by: Erick <erickzanardoo@gmail.com>

* rename test

* Apply suggestions from code review

Co-authored-by: Luan Nico <luanpotter27@gmail.com>

* fix test

* Update tutorials/2_sprite_animations_gestures/README.md

Co-authored-by: Luan Nico <luanpotter27@gmail.com>

* docs

* Apply suggestions from code review

Co-authored-by: Jochum van der Ploeg <jochum@vdploeg.net>

* yo

Co-authored-by: Erick <erickzanardoo@gmail.com>
Co-authored-by: Luan Nico <luanpotter27@gmail.com>
Co-authored-by: Jochum van der Ploeg <jochum@vdploeg.net>
2021-08-31 19:38:21 -03:00
9ec00d4ad7 Use Transform2D in PositionComponent (#904) 2021-08-21 19:32:32 -03:00
53fe9e8238 Remove FPSCounter from BaseGame (#913) 2021-08-10 22:00:52 +02:00
a93f838483 Fix PositionComponent.scale bug (#912)
* Add test for scale

* Fix zoom example

* Update min_coverage
2021-08-10 16:14:32 +02:00
54fbd260bc Scale for PositionComponent (#892)
* Draft of PositionComponent.scale

* Use matrix transformations

* Update tests to take matrix transform into consideration

* Add tests for collision detection with scale

* Rename ScaleEffect to SizeEffect

* Use transform matrix to prepare canvas

* Fix scaledSizeCache

* Add changelog entries and docs

* Dartdoc on public access methods

* Update packages/flame/CHANGELOG.md

Co-authored-by: Jochum van der Ploeg <jochum@vdploeg.net>

* Move cache classes to own directory

Co-authored-by: Jochum van der Ploeg <jochum@vdploeg.net>
2021-08-06 21:59:52 +02:00
e43d0c021e Adding SpriteGroupComponent (#893)
* Adding SpriteGroupComponent

* fixing lint issue

* Update sprite_group_component.dart
2021-08-02 09:54:13 -03:00
b2ea597734 Initial implementation of paint effects (#880)
* Initial implementation of paint effects

* Improving HasPaint

* Adding color effect

* Adding exaustive tests for the HasPaint mixin

* Adding tests for the effects

* some adjustments

* Fixing some imports

* Adding docs

* Adding types to the has paint mixin

* Fixing constructor name for the opacity effect

* Apply suggestions from code review

Co-authored-by: Luan Nico <luanpotter27@gmail.com>

* Luan's suggestion

* Luan's comments

* formatting issues

* dartcodemetrics don't help me :(

* Adding assert

Co-authored-by: Luan Nico <luanpotter27@gmail.com>
2021-07-31 15:58:52 -03:00
7e4bc1464e Fix parallax fullscreen bug when game is resized (#887)
* Fix parallax fullscreen bug when game is resized

* Test

Signed-off-by: Lukas Klingsbo <me@lukas.fyi>

* Fix imports

* Remove accidental line

* Re-add mustCallSuper on onGameResize
2021-07-29 14:23:37 +02:00
1034ca850b Fix coordinate systems transformations and add example (#885) 2021-07-28 01:35:32 -04:00
af014ac798 Fix the resolution of TextBoxComponent (#878)
* Fix the resolution of TextBoxComponent

* scale canvas

* Scale down

* Scale down on rendering

* Don't affect the debug rendering
2021-07-27 19:56:51 +02:00
e3f9f1a469 addShape -> addHitbox (#882) 2021-07-26 20:19:45 +02:00
64a40ff641 Refactor joystick (#876)
* Refactor joystick

* Fix directional tests

* Joystick example

* Any PositionComponent can be used as knob and background

* Add MarginButtonComponent

* Fix JoystickExample

* Update joystick docs

* Fix joystick direction tests

* Fix effect tests

* Fix analyze issue

* Update docs

* Update docs

* Move joystick to input export

* Update packages/flame/lib/src/geometry/shape.dart

Co-authored-by: Luan Nico <luanpotter27@gmail.com>

* Add test and description for screenAngle

* Update examples/lib/stories/controls/joystick_player.dart

Co-authored-by: Erick <erickzanardoo@gmail.com>

* Update doc/input.md

Co-authored-by: Erick <erickzanardoo@gmail.com>

* controls -> input in examples to align with export file

* controls -> input

* Add simple joystick example

* Fix imports

* velocity -> relativeDelta

Co-authored-by: Luan Nico <luanpotter27@gmail.com>
Co-authored-by: Erick <erickzanardoo@gmail.com>
2021-07-15 12:00:41 +02:00
750f63ed97 Rename Camera.cameraSpeed to Camera.speed (#879) 2021-07-15 11:42:48 +02:00
380781e126 Adding Builder classes for our widgets catalog (#853)
* Add

* Adding SpriteWidgetBuilder

* Adding SpriteButtonBuilder

* Add NineTileBoxBuilder

* a few adjustments on the docs

* Adding error and loading builders to the widgets

* Improving APIs for the widget review

Co-authored-by: Luan Nico <luanpotter27@gmail.com>
2021-07-13 17:36:13 -03:00
c825d58042 Use matrix transformations in FixedResolutionViewport (#869)
* Use matrix transformations in FixedResolutionViewport

* Update viewport tests

* Moved transformations to resize

* Use getters for scaledSize and resizeOffset

* Added a FixedResolutionViewport example
2021-07-08 11:47:28 +02:00
1e79a42161 Rename Tapable to Tappable (#868) 2021-07-07 10:48:58 +02:00
f818310e5b Extract shared children logic when handling components to ComponentSet (#859) 2021-07-04 02:44:15 -04:00
5a51a1a7fb Make the JoystickPlayer a PositionComponent (#860)
* Make the JoystickPlayer a PositionComponent

* Fix formatting
2021-06-29 09:28:18 +02:00
948f277e5d Fix gestures when isHud = true and camera is transformed (#843)
* Fix gestures when isHud = true and camera is transformed

* Use Info instead of Event everywhere
2021-06-09 23:47:59 +02:00
2c1bba8f86 Use Matrix4 tranformation for Camera.apply (#840)
* Added Matrix4 extension

* Added unit tests for Matrix4 extension class

* Update doc/util.md

Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>

* Updated code

* Updated docs

* Update

* Update Matrix4

* Added Translate method

* Update based on Luan and Spydon review

* Update after review

* Forgot few changes

* Update

* Use Matrix4 tranformation for `Camera.apply`

* Remove accidentally added zoom

* Add transform to MockCanvas

* Use same Matrix4 if nothing changed

Co-authored-by: Jochum van der Ploeg <jochum@vdploeg.net>
2021-06-09 16:55:13 +02:00
a7fd05f2b5 Make game.size take zoom into consideration (#836)
* Make game.size take zoom into consideration

* Fix formatting

* Fix formatting

* Apply suggestions from code review

Co-authored-by: Jochum van der Ploeg <jochum@vdploeg.net>

* Move _sizeBuffer

* Apply suggestions from code review

Co-authored-by: Jochum van der Ploeg <jochum@vdploeg.net>

* Update list from wolfenrains suggestion

* Fix formatting

* Update CHANGELOG.md

Co-authored-by: Jochum van der Ploeg <jochum@vdploeg.net>
2021-06-09 16:39:45 +02:00
55aea41788 Adding animation support to parallax (#835)
* Adding animation support to parallax

* Solving workaround

* Fixing image composition add assert

* adding docs, linting and a better example

* lint

* Apply suggestions from code review

Co-authored-by: Jochum van der Ploeg <jochum@vdploeg.net>

* Update examples/lib/stories/parallax/sandbox_layer.dart

* Update doc/components.md

* Update examples/lib/stories/parallax/sandbox_layer.dart

Co-authored-by: Luan Nico <luanpotter27@gmail.com>

* Update examples/lib/stories/parallax/animation.dart

* formating

* Update .min_coverage

Co-authored-by: Jochum van der Ploeg <jochum@vdploeg.net>
Co-authored-by: Luan Nico <luanpotter27@gmail.com>
2021-06-07 13:31:19 -03:00
021b453b54 Migrated the Particle API to Vector2 (#728)
* Migrated the `Particle` API to `Vector2`

* Update doc/particles.md

Co-authored-by: Erick <erickzanardoo@gmail.com>

* Follow-up on Erick's review

* Fix

* Apply suggestions from code review

Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>

* Update

* Update

* Update

* Update packages/flame/lib/src/extensions/vector2.dart

Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>

* Updated

* Update

* Using scale

Co-authored-by: Erick <erickzanardoo@gmail.com>
Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>
2021-05-27 21:40:50 +02:00
9c1808ca92 Add hoverables (#797) 2021-05-21 09:04:12 -04:00
8f7c773f82 Fix parallax size (#800)
* Non-fullscreen ParallaxComponent

* Updated examples with no size needed

* Formatting

* Add docs for fullscreen parallax

* Fix formatting

* Remove need of nullable size

* Add basic parallax sizing test

* Fix formatting

* Remove unused imports

* Info text for the parallax examples
2021-05-20 16:58:49 +02:00
ef7427941c Possibility to change priority and reorder the component list (#793)
* Possibility to change component priority

* Fix formatting

* Posibility to change priority

* Docs for priority change

* Priority example

* Add section explaining priority

* Update doc/game.md

Co-authored-by: Erick <erickzanardoo@gmail.com>

* Update examples/lib/stories/components/components.dart

Co-authored-by: Erick <erickzanardoo@gmail.com>

* No null priorities in the super call chain

* Possibility to wait for all children to be loaded

* Test for addChildren

* Introduce parent to Component

* Check whether parent is BaseComponent

Co-authored-by: Erick <erickzanardoo@gmail.com>
2021-05-19 19:07:54 +02:00
e4281d6471 onCollisionEnd callbacks for Collidable and HitboxShape (#792)
* Add onCollisionEnd for HitboxShape and Collidable

* Add tests for collision callbacks

* Detect multiple collsions with same collidable in test

* Remove unused import

* Break out duplicated code

* Fix formatting

* Use correct hash set

* Update examples/lib/stories/collision_detection/multiple_shapes.dart

Co-authored-by: Erick <erickzanardoo@gmail.com>

* Update examples/lib/stories/collision_detection/multiple_shapes.dart

Co-authored-by: Erick <erickzanardoo@gmail.com>

* Use hashValues instead of _combineHashCodes

* hashValues is order dependent so we need to sort the objects first

* Add section about onCollisionEnd

* Fix missed hashValues

* Use xor instead of hashValues

* Update examples/lib/stories/collision_detection/collision_detection.dart

Co-authored-by: Luan Nico <luanpotter27@gmail.com>

Co-authored-by: Erick <erickzanardoo@gmail.com>
Co-authored-by: Luan Nico <luanpotter27@gmail.com>
2021-05-18 16:21:49 +02:00