mirror of
https://github.com/flame-engine/flame.git
synced 2025-11-02 20:13:50 +08:00
PR nips
This commit is contained in:
@ -3,23 +3,23 @@ import 'dart:ui';
|
|||||||
|
|
||||||
import 'package:flame/components/component.dart';
|
import 'package:flame/components/component.dart';
|
||||||
import 'package:flame/components/resizable.dart';
|
import 'package:flame/components/resizable.dart';
|
||||||
|
import 'package:flame/game.dart';
|
||||||
import 'package:ordered_set/comparing.dart';
|
import 'package:ordered_set/comparing.dart';
|
||||||
import 'package:ordered_set/ordered_set.dart';
|
import 'package:ordered_set/ordered_set.dart';
|
||||||
|
|
||||||
|
/// A component that turns lets your component be composed others
|
||||||
typedef IterateOverComponents = void Function(Component component);
|
/// It resembles [BaseGame]. It has an [components] property and an [add] method
|
||||||
|
abstract class ComposedComponent implements Component {
|
||||||
abstract class ComposedComponent extends Component {
|
|
||||||
OrderedSet<Component> components = new OrderedSet(Comparing.on((c) => c.priority()));
|
OrderedSet<Component> components = new OrderedSet(Comparing.on((c) => c.priority()));
|
||||||
|
|
||||||
@override
|
@override
|
||||||
render(Canvas canvas) {
|
render(Canvas canvas) {
|
||||||
canvas.save();
|
canvas.save();
|
||||||
components.forEach((comp) => renderComponent(canvas, comp));
|
components.forEach((comp) => _renderComponent(canvas, comp));
|
||||||
canvas.restore();
|
canvas.restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
void renderComponent(Canvas canvas, Component c) {
|
void _renderComponent(Canvas canvas, Component c) {
|
||||||
c.render(canvas);
|
c.render(canvas);
|
||||||
canvas.restore();
|
canvas.restore();
|
||||||
canvas.save();
|
canvas.save();
|
||||||
@ -43,17 +43,4 @@ abstract class ComposedComponent extends Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void iterateOverComponents ( IterateOverComponents iterateOverComponentsCallback ){
|
|
||||||
components.forEach(iterateOverComponentsCallback);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void resize(Size size) {
|
|
||||||
if(this is Resizable){
|
|
||||||
Resizable thisResizable = this as Resizable;
|
|
||||||
thisResizable.size = size;
|
|
||||||
components.forEach((c) => c.resize(size));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user