Porytiles
Loading...
Searching...
No Matches
porytiles::CreateSecondaryTileset Class Reference

Use case for creating a new secondary Tileset from scratch. More...

#include <create_secondary_tileset.hpp>

Public Member Functions

 CreateSecondaryTileset (gsl::not_null< const TilesetCreator * > creator, gsl::not_null< const TilesetCompiler * > compiler, gsl::not_null< const TilesetRepo * > tileset_repo, gsl::not_null< const TilesetMetadataProvider * > metadata_provider, gsl::not_null< const LayoutMetadataProvider * > layout_metadata_provider, gsl::not_null< const PorytilesTilesetManager * > tileset_manager, gsl::not_null< DomainConfig * > domain_config, gsl::not_null< const AppConfig * > app_config, gsl::not_null< const UserDiagnostics * > diag)
 Constructs a CreateSecondaryTileset use case with the given dependencies.
 
ChainableResult< void > create (const std::string &tileset_name) const
 Creates a new secondary Tileset with the given name.
 

Detailed Description

Use case for creating a new secondary Tileset from scratch.

This use case creates a brand new Porytiles-managed secondary tileset. Unlike import, which converts existing vanilla pokeemerald tilesets, this creates a tileset from nothing with empty assets and a paired primary.

The workflow:

  1. Check if tileset already exists (error if so)
  2. Resolve the partner primary tileset via configured pairing mode
  3. Create blank PorytilesTilesetComponent via TilesetCreator (secondary variant)
  4. Create blank PorymapTilesetComponent and wrap in Tileset
  5. Compile (generates minimal valid Porymap assets, paired with primary)
  6. Persist managed state with is_secondary=true (creates headers.h entry + manifest)
  7. Save via TilesetRepo
  8. Wire animation code if needed

Definition at line 37 of file create_secondary_tileset.hpp.

Constructor & Destructor Documentation

◆ CreateSecondaryTileset()

porytiles::CreateSecondaryTileset::CreateSecondaryTileset ( gsl::not_null< const TilesetCreator * >  creator,
gsl::not_null< const TilesetCompiler * >  compiler,
gsl::not_null< const TilesetRepo * >  tileset_repo,
gsl::not_null< const TilesetMetadataProvider * >  metadata_provider,
gsl::not_null< const LayoutMetadataProvider * >  layout_metadata_provider,
gsl::not_null< const PorytilesTilesetManager * >  tileset_manager,
gsl::not_null< DomainConfig * >  domain_config,
gsl::not_null< const AppConfig * >  app_config,
gsl::not_null< const UserDiagnostics * >  diag 
)
inline

Constructs a CreateSecondaryTileset use case with the given dependencies.

Parameters
creatorService for creating blank secondary PorytilesTilesetComponent
compilerService for compiling PorytilesTilesetComponent to PorymapTilesetComponent
tileset_repoRepository for persisting Tileset aggregates
metadata_providerProvider for checking if tilesets exist
layout_metadata_providerProvider for scanning project layouts (used in automatic primary pairing)
tileset_managerService for persisting managed state and headers.h entries
domain_configConfiguration for domain layer operations
app_configConfiguration for app layer operations
diagUser diagnostics for warnings and errors

Definition at line 52 of file create_secondary_tileset.hpp.

Member Function Documentation

◆ create()

ChainableResult< void > porytiles::CreateSecondaryTileset::create ( const std::string &  tileset_name) const

Creates a new secondary Tileset with the given name.

Creates a brand-new secondary tileset from scratch. The tileset will have:

  • A new entry in src/data/tilesets/headers.h with Porytiles-managed field values and is_secondary=TRUE
  • Minimal valid Porymap assets (metatiles.bin, metatile_attributes.bin, tiles.png, palettes)
  • A tileset-manifest.json marking it as Porytiles-managed (imported=false)
Parameters
tileset_nameThe name for the new tileset (e.g., "gTileset_MyNewSecondary")
Precondition
name must not correspond to an existing tileset in headers.h
Returns
Success or error result with details

Definition at line 15 of file create_secondary_tileset.cpp.


The documentation for this class was generated from the following files: