1.0.0 • Published 4 years ago
@bakuenjin/rpg-content-management v1.0.0
RPG-Content-Management
Table of contents
About
RPG-Content-Management is an implementation for the handling of content for the RPG-Core module.
The management of the following content is provided by this module:
- Attributes
- Items, Weapons, Armors
- Enemies, Dungeons
- CraftingRecipies for Items, Weapons and Armors
- Characters
The content is added via JSON Objects and content references each other through their ID.
Because of that, keep in mind the following hierarchy:
Attributes
andItems
have no dependenciesWeapons
andArmors
depend on existingAttributes
Enemies
depend on existingAttributes
andItems
Dungeons
depend on existingEnemies
andItems
CraftingRecipies
can depend on existingAttributes
,Items
,Weapons
andArmors
Characters
depend on existingAttributes
,Items
,Weapons
andArmors
Installation
npm: npm install @bakuenjin/rpg-content-management
yarn: yarn add @bakuenjin/rpg-content-management
RPG-Content-Management comes with type definitions out of the box, so no additional types package needs to be installed.
Usage
import { Item, Weapon, Armor } from '@bakuenjin/rpg-core'
import {
AttributeManager,
ItemManager,
WeaponManager,
ArmorManager,
EnemyManager,
DungeonManager,
CraftingRecipeManager,
CharacterManager
} from '@bakuenjin/rpg-content-management'
import { attributes } from './attributes.json'
import { items } from './items.json'
import { weapons } from './weapons.json'
import { armors } from './armors.json'
import { enemies } from './enemies.json'
import { dungeons } from './dungeons.json'
import { itemRecipes, weaponRecipes, armorRecipes } from './recipes.json'
import { existingCharacter } from './characters.json'
// The references between managers will be established via params
const attributeManager = new AttributeManager(attributes)
const itemManager = new ItemManager(items)
const weaponManager = new WeaponManager(attributeManager, weapons)
const armorManager = new ArmorManager(attributeManager, armors)
const enemyManager = new EnemyManager(attributeManager, itemManager, enemies)
const dungeonManager = new DungeonManager(enemyManager, itemManager, dungeons)
const itemRecipeManager = new CraftingRecipeManager<Item>({
rawRecipes: itemRecipes,
resultManager: itemManager,
attributeManager,
itemManager,
weaponManager,
armorManager
})
const weaponRecipeManager = new CraftingRecipeManager<Weapon>({
rawRecipes: weaponRecipes,
resultManager: weaponManager,
attributeManager,
itemManager,
weaponManager,
armorManager
})
const armorRecipeManager = new CraftingRecipeManager<Armor>({
rawRecipes: armorRecipes,
resultManager: armorManager,
attributeManager,
itemManager,
weaponManager,
armorManager
})
const characterManager = new CharacterManager({
attributeManager,
itemManager,
weaponManager,
armorManager
})
// Characters are parsed, created or serialized individually
const character = characterManager.parse(existingCharacter)
const newCharacter = characterManager.create(42, 'Character Name')
const newCharacterAsJSON = characterManager.serialize(newCharacter)
1.0.0
4 years ago