bonfire 0.4.2 copy "bonfire: ^0.4.2" to clipboard
bonfire: ^0.4.2 copied to clipboard

outdated

(RPG maker) Create RPG-style or similar games more simply with Flame.

example/lib/main.dart

import 'dart:math';

import 'package:bonfire/bonfire.dart';
import 'package:example/enemy/goblin.dart';
import 'package:example/interface/knight_interface.dart';
import 'package:example/map/dungeon_map.dart';
import 'package:example/player/knight.dart';
import 'package:flame/animation.dart' as FlameAnimation;
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Flame.util.setLandscape();
  await Flame.util.fullScreen();
  runApp(
    MaterialApp(
      home: Game(),
    ),
  );
}

class Game extends StatelessWidget implements GameListener {
  final GameController _controller = GameController();

  @override
  Widget build(BuildContext context) {
    return BonfireWidget(
      joystick: Joystick(
        directional: JoystickDirectional(
          spriteBackgroundDirectional: Sprite('joystick_background.png'),
          spriteKnobDirectional: Sprite('joystick_knob.png'),
          size: 100,
          isFixed: false,
        ),
        actions: [
          JoystickAction(
            actionId: 0,
            sprite: Sprite('joystick_atack.png'),
            align: JoystickActionAlign.BOTTOM_RIGHT,
            size: 80,
            margin: EdgeInsets.only(bottom: 50, right: 50),
          ),
          JoystickAction(
            actionId: 1,
            sprite: Sprite('joystick_atack_range.png'),
            spriteBackgroundDirection: Sprite('joystick_background.png'),
            enableDirection: true,
            size: 50,
            margin: EdgeInsets.only(bottom: 50, right: 160),
          )
        ],
      ),
      player: Knight(
        Position(5 * DungeonMap.tileSize, 6 * DungeonMap.tileSize),
      ),
      interface: KnightInterface(),
      map: DungeonMap.map(),
      decorations: DungeonMap.decorations(),
      enemies: DungeonMap.enemies(),
      background: BackgroundColorGame(Colors.blueGrey[900]),
      gameController: _controller..setListener(this),
      lightingColorGame: Colors.black.withOpacity(0.4),
    );
  }

  @override
  void updateGame() {}

  @override
  void changeCountLiveEnemies(int count) {
    if (count < 2) {
      _addEnemyInWorld();
    }
  }

  void _addEnemyInWorld() {
    double x = DungeonMap.tileSize * (2 + Random().nextInt(27));
    double y = DungeonMap.tileSize * (5 + Random().nextInt(3));

    Position position = Position(
      x,
      y,
    );
    _controller.addComponent(
      AnimatedObjectOnce(
        animation: FlameAnimation.Animation.sequenced(
          "smoke_explosin.png",
          6,
          textureWidth: 16,
          textureHeight: 16,
        ),
        position: Rect.fromLTWH(
          position.x,
          position.y,
          DungeonMap.tileSize,
          DungeonMap.tileSize,
        ),
      ),
    );

    _controller.addEnemy(
      Goblin(
        position,
      ),
    );
  }
}
442
likes
0
pub points
89%
popularity

Publisher

verified publisherrafaelbarbosatec.com

(RPG maker) Create RPG-style or similar games more simply with Flame.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flame, flutter, ordered_set

More

Packages that depend on bonfire