43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
const CLASSNAME_CHAR_RE = /^[a-z0-9_*\-.]+$/
|
|
|
|
export function getBaseClassname(classname: string): string {
|
|
const star = classname.indexOf('*')
|
|
return star >= 0 ? classname.substring(0, star) : classname
|
|
}
|
|
|
|
export function getSafeClassnameStem(classname: string): string {
|
|
return classname.replace(/\*/g, '_')
|
|
}
|
|
|
|
export function getIconFileName(classname: string): string {
|
|
return `${getSafeClassnameStem(classname)}_icon.png`
|
|
}
|
|
|
|
export function getSwfFileName(classname: string): string {
|
|
return `${getBaseClassname(classname)}.swf`
|
|
}
|
|
|
|
export function getNitroFileName(classname: string): string {
|
|
return `${getBaseClassname(classname)}.nitro`
|
|
}
|
|
|
|
export function normalizeClassname(raw: string): string {
|
|
return raw.trim().toLowerCase()
|
|
}
|
|
|
|
export function isValidClassname(classname: string): boolean {
|
|
if (!classname) return false
|
|
return CLASSNAME_CHAR_RE.test(classname)
|
|
}
|
|
|
|
export const LOCAL_ICON_URL_PREFIX = '/swf/dcr/hof_furni/icons/'
|
|
|
|
export function getLocalIconUrl(classname: string): string {
|
|
return `${LOCAL_ICON_URL_PREFIX}${encodeURIComponent(getIconFileName(classname))}`
|
|
}
|
|
|
|
export function getHabboCdnIconUrl(classname: string, revision: number): string {
|
|
const base = getBaseClassname(classname)
|
|
return `https://images.habbo.com/dcr/hof_furni/${revision}/${encodeURIComponent(base)}_icon.png`
|
|
}
|