Exemplo n.º 1
0
void MapSerializer::serializeAttributes()
{
  addAttribute(_mapNode, "height", _map->getHeight());
  addAttribute(_mapNode,  "width", _map->getWidth());
  addAttributeEnum(_mapNode, "id", _map->getId());

  auto tiles = _map->serializeTiles();
  std::string encodedTiles = base64_encode(reinterpret_cast<const unsigned char*>(&tiles[0]), tiles.size());

  _mapNode->append_node( createNode(_document, "Tiles", encodedTiles) );

}
Exemplo n.º 2
0
void MapSerializer::serializeExitActions()
{
  xml_node<>* exitActionsNode = createNode(_document, "OnExit", "");
  _mapNode->append_node( exitActionsNode );

  for ( const auto& pair : _map->getExitActions() )
  {
    xml_node<>* directionNode = createNode(_document, "Direction", "");
    exitActionsNode->append_node(directionNode);
    addAttributeEnum( directionNode, "id", pair.first );

    _actionSerializer.setDestination(_document, directionNode);
    _actionSerializer.serialize(pair.second);
  }
}
Exemplo n.º 3
0
bool DestroyableSerializer::serialize(DescriptionPtr dsc)
{
  DestroyableDescriptionPtr dDsc = std::dynamic_pointer_cast<DestroyableDescription>(dsc);
  if ( dDsc && _document && _xml )
  {
    xml_node<>* _destrNode = _document->allocate_node(node_element, "Destroyable");
    _xml->append_node( _destrNode );

    for ( DropRule rule : dDsc->dropRules )
    {
      xml_node<>* ruleNode = _document->allocate_node(node_element, "DropRule");
      _destrNode->append_node( ruleNode );

      addAttributeEnum( ruleNode, "dropActorId", rule.dropActorId );
      addAttribute    ( ruleNode, "amountMin",   rule.amountMin   );
      addAttribute    ( ruleNode, "amountMax",   rule.amountMax   );
      addAttribute    ( ruleNode, "chance",      rule.chance      );
    }

  }

  return dDsc != nullptr;

}