pw-guild-icon-parser
Version:
Parser for Perfect World guild icon lists - converts PNG icons to DDS atlas format with DXT5 compression
71 lines (49 loc) • 2.08 kB
Markdown
# PW Guild Icon Parser
A TypeScript npm package for parsing and managing Perfect World guild icon lists. Converts PNG icons to DDS atlas format with DXT5 compression.
## Features
- Validates PNG icons (must be 16x16 pixels)
- Converts PNG to DDS DXT5 format with alpha channel support
- Builds icon atlas (62x62 grid of 16x16 icons = 992x992 pixels)
- Preserves existing icons when adding new ones
- Updates icon list text file automatically
## Installation
```bash
npm install pw-guild-icon-parser
```
## Usage
```typescript
import { addIcon } from 'pw-guild-icon-parser';
await addIcon({
fid: 2,
serverId: 100,
pngPath: './path/to/icon.png',
txtPath: './data/iconlist_guild.txt',
ddsPath: './data/iconlist_guild.dds'
});
// Creates: 100_2.dds in the TXT file
```
## Requirements
- PNG files must be exactly 16x16 pixels (valid PNG format)
- The icon list file (`iconlist_guild.txt`) must follow the format:
- Line 1: Icon width (16)
- Line 2: Icon height (16)
- Line 3: Number of icons in width (62) - the game calculates: DDS width = line3 * line1
- Line 4: Number of icons in height (62) - the game calculates: DDS height = line4 * line2
- Line 5+: Icon names (format: `serverid_fid.dds`)
**Note:** The default icon `0_0.dds` is automatically added as the first icon if it doesn't exist. The file maintains the grid dimensions (62) not pixel dimensions (992).
## API
### `addIcon(options: AddIconOptions)`
Adds a new icon to the guild icon list.
**Parameters:**
- `fid: number` - Faction ID
- `serverId: number` - Server ID
- `pngPath: string` - Path to 16x16 PNG file (valid PNG format)
- `txtPath: string` - Path to iconlist_guild.txt
- `ddsPath: string` - Path to iconlist_guild.dds (will be created/updated)
**Throws:** Error if PNG is invalid, grid is full, or file operations fail
## Compatibility
- Works with Next.js and other compiled environments
- Pure TypeScript/JavaScript implementation
- Uses Sharp for image processing (cross-platform)
## License
MIT