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

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

example/lib/main.dart

import 'package:bonfire/bonfire.dart';
import 'package:example/lpc/lpc_game.dart';
import 'package:example/manual_map/game_manual_map.dart';
import 'package:example/random_map/random_map_game.dart';
import 'package:example/shared/enemy/goblin_controller.dart';
import 'package:example/shared/interface/bar_life_controller.dart';
import 'package:example/shared/npc/critter/critter_controller.dart';
import 'package:example/shared/player/knight_controller.dart';
import 'package:example/simple_example/simple_example_game.dart';
import 'package:example/tiled_map/game_tiled_map.dart';
import 'package:example/top_down_game/top_down_game.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  if (!kIsWeb) {
    await Flame.device.setLandscape();
    await Flame.device.fullScreen();
  }

  BonfireInjector().put((i) => KnightController());
  BonfireInjector().putFactory((i) => GoblinController());
  BonfireInjector().putFactory((i) => CritterController());
  BonfireInjector().put((i) => BarLifeController());

  runApp(
    MaterialApp(
      home: Menu(),
    ),
  );
}

class Menu extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.cyan[900],
      body: Center(
        child: ListView(
          shrinkWrap: true,
          children: <Widget>[
            Center(
              child: RichText(
                text: TextSpan(
                    text: 'Bonfire',
                    style: TextStyle(fontSize: 30, color: Colors.white),
                    children: [
                      TextSpan(
                        text: '  v2.5.0',
                        style: TextStyle(fontSize: 15, color: Colors.white),
                      )
                    ]),
              ),
            ),
            SizedBox(
              height: 30,
            ),
            _buildButton(context, 'Simple example', () {
              _navTo(context, SimpleExampleGame());
            }),
            SizedBox(
              height: 10,
            ),
            _buildButton(context, 'Manual Map', () {
              _navTo(context, GameManualMap());
            }),
            SizedBox(
              height: 10,
            ),
            _buildButton(context, 'Random Map', () {
              _navTo(
                context,
                RandomMapGame(
                  size: Vector2(150, 150),
                ),
              );
            }),
            SizedBox(
              height: 10,
            ),
            _buildButton(context, 'Tiled Map', () {
              _navTo(context, GameTiledMap());
            }),
            SizedBox(
              height: 10,
            ),
            _buildButton(context, 'Top down game', () {
              _navTo(context, TopDownGame());
            }),
            SizedBox(
              height: 10,
            ),
            _buildButton(context, 'Dynamic spriteSheet', () {
              _navTo(context, LPCGame());
            }),
          ],
        ),
      ),
      bottomNavigationBar: Container(
        height: 40,
        child: Center(
          child: Text(
            'Keyboard: directional and Space Bar to attack',
            style: TextStyle(fontSize: 18),
          ),
        ),
      ),
    );
  }

  Widget _buildButton(BuildContext context, String label, VoidCallback onTap) {
    return Center(
      child: SizedBox(
        width: 200,
        child: ElevatedButton(
          style: ButtonStyle(
            shape: MaterialStateProperty.all(
              RoundedRectangleBorder(
                borderRadius: BorderRadius.circular(20),
              ),
            ),
          ),
          child: Text(label),
          onPressed: onTap,
        ),
      ),
    );
  }

  void _navTo(BuildContext context, Widget page) {
    Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => page,
      ),
    );
  }
}
451
likes
0
pub points
87%
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

a_star_algorithm, flame, flutter, http, tiledjsonreader

More

Packages that depend on bonfire