Flutter游戏数据插件dungeon_world_data的使用

Flutter 游戏数据插件 dungeon_world_data 的使用

此 Dart 包包含《Dungeon World》的游戏数据,如职业、动作、法术、装备等。

自定义职业包括:

  • 点燃者(Immolator)
  • 野蛮人(Barbarian)

如何使用

在导入后,可以通过 dungeonWorldData 访问整个数据结构。 更多详细信息请查看文档目录。

可用数据

代码 类型
dungeonWorldData.characterClasses Map<String, CharacterClass>
dungeonWorldData.items Map<String, Item>
dungeonWorldData.moves Map<String, Move>
dungeonWorldData.races Map<String, Race>
dungeonWorldData.spells Map<String, Spell>
dungeonWorldData.monsters Map<String, Monster>
dungeonWorldData.tags Map<String, Tag>

还有一个 Dice 类,用于简单的骰子滚动功能。

翻译

数据目前仅支持英语,但已实现本地化引擎。

  • 使用 dungeonWorldData.initLocale(locale) 创建新的本地化引用。
  • 使用 dungeonWorldData.addForLocaledungeonWorldData.addAllForLocale 向本地化中添加项目。
  • 使用 dungeonWorldData.changeLocale(locale) 切换到不同的本地化。

在任何给定的本地化中,通过通用获取器 get(key)[] 操作符获取的项目只会包含当前本地化的数据。

可以使用 getItemFor(locale, key) 动态获取特定非当前本地化的数据。

致谢

感谢 ~vindexus 创建了 https://www.npmjs.com/package/dungeonworld-data。数据来自那里,此包只是将其封装为 Dart。

贡献

我在业余时间开发这个包,因此任何形式的支持(代码、问题或点赞)都非常有助于其发展。如果您愿意捐赠一些小额资金来帮助维持该项目,我将非常感激!

Buy Me a Coffee at ko-fi.com

欢迎在 GitHub 上提交问题或拉取请求。如果您发现错误或想要新功能,请毫不犹豫地打开合适的议题,我会尽快回复。

代码贡献者

  1. 做出你的修改
  2. 运行测试并适当添加新测试。确保没有破坏任何东西。
  3. 创建一个 PR 并解释你的更改做了什么。
  4. 盈利!

如果您想为该包翻译 DW 数据:

  1. lib/data 文件夹内创建一个具有语言代码的新文件夹。
  2. lib/data/en-US 文件夹的内容复制到您的新文件夹。
  3. 更新所有本地化信息,包括每个属性的值(不是键!),以及标志语言的元标签。

示例代码

import 'package:dungeon_world_data/dungeon_world_data.dart';

void main() {
  // 初始化数据
  DungeonWorldData dungeonWorldData = DungeonWorldData();

  // 获取某个职业
  CharacterClass barbarian = dungeonWorldData.characterClasses['Barbarian'];

  // 输出职业名称
  print('职业名称: ${barbarian.name}');

  // 获取某个动作
  Move move = dungeonWorldData.moves['Defy Danger'];

  // 输出动作描述
  print('动作描述: ${move.description}');
}

更多关于Flutter游戏数据插件dungeon_world_data的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter游戏数据插件dungeon_world_data的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


dungeon_world_data 是一个用于在 Flutter 应用中访问和管理《Dungeon World》游戏数据的插件。它提供了一些工具和数据结构,帮助你轻松地获取和操作《Dungeon World》的各种游戏元素,如角色、怪物、物品等。

以下是使用 dungeon_world_data 插件的基本步骤和示例:

1. 安装插件

首先,你需要在 pubspec.yaml 文件中添加 dungeon_world_data 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  dungeon_world_data: ^1.0.0  # 请确保使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入 dungeon_world_data

import 'package:dungeon_world_data/dungeon_world_data.dart';

3. 使用插件

获取角色数据

你可以使用 DungeonWorldData 类来访问游戏中的角色数据。例如,获取所有角色的列表:

void main() {
  final dwData = DungeonWorldData();
  
  // 获取所有角色
  final characters = dwData.characters;
  
  // 打印角色名称
  for (var character in characters) {
    print(character.name);
  }
}

获取怪物数据

类似地,你可以获取怪物的数据:

void main() {
  final dwData = DungeonWorldData();
  
  // 获取所有怪物
  final monsters = dwData.monsters;
  
  // 打印怪物名称和血量
  for (var monster in monsters) {
    print('${monster.name} - HP: ${monster.hp}');
  }
}

获取物品数据

你也可以获取物品的数据:

void main() {
  final dwData = DungeonWorldData();
  
  // 获取所有物品
  final items = dwData.items;
  
  // 打印物品名称和描述
  for (var item in items) {
    print('${item.name}: ${item.description}');
  }
}

4. 自定义和扩展

dungeon_world_data 插件提供的数据结构是可扩展的。你可以根据需要自定义或扩展这些数据结构,以适应你的应用需求。

5. 处理错误和异常

在使用插件时,可能会遇到数据加载失败或其他异常情况。你可以使用 try-catch 块来处理这些异常:

void main() {
  try {
    final dwData = DungeonWorldData();
    
    // 获取所有角色
    final characters = dwData.characters;
    
    // 打印角色名称
    for (var character in characters) {
      print(character.name);
    }
  } catch (e) {
    print('An error occurred: $e');
  }
}

6. 其他功能

dungeon_world_data 插件可能还提供了其他功能,如搜索、过滤等。你可以查阅插件的文档或源代码,了解更多详细信息。

7. 示例应用

你可以创建一个简单的 Flutter 应用来展示如何使用 dungeon_world_data 插件:

import 'package:flutter/material.dart';
import 'package:dungeon_world_data/dungeon_world_data.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Dungeon World Data Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: DungeonWorldDataScreen(),
    );
  }
}

class DungeonWorldDataScreen extends StatelessWidget {
  final dwData = DungeonWorldData();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Dungeon World Data'),
      ),
      body: ListView.builder(
        itemCount: dwData.characters.length,
        itemBuilder: (context, index) {
          final character = dwData.characters[index];
          return ListTile(
            title: Text(character.name),
            subtitle: Text(character.description),
          );
        },
      ),
    );
  }
}
回到顶部