Evolutions :
- Ajout d'icônes dans la scène, chapitre et arc - Possibilité de bouger les cases dans la partie graphe et les textes associés si ces derniers ne sont pas visibles - Changement sur le thème du graphe : mode sombre et plus blanc - Barre d'action en haut, même pour la partie scène - Mode sticky corrigé : plus de trou entre le haut du navigateur web et de la barre d'action Passage version 0.6.5
This commit is contained in:
66
web/src/app/campaigns/campaign-icons.ts
Normal file
66
web/src/app/campaigns/campaign-icons.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import {
|
||||
Bookmark,
|
||||
Theater, Drama, Compass, Flag, Calendar, Map, Castle, Tent,
|
||||
Swords, Skull, Crown, Heart, Eye, Footprints, Dice5, Hourglass,
|
||||
Flame, Snowflake, Cloud, Sun, Moon, Star, Zap, Target,
|
||||
Music, MessageCircle, Lock, Key as KeyIcon, Coins, Gift,
|
||||
LucideIconData
|
||||
} from 'lucide-angular';
|
||||
|
||||
// Type local equivalent a IconOption de lore-icons. Duplique volontairement
|
||||
// pour eviter une dependance circulaire (lore-icons importe ce fichier).
|
||||
export interface CampaignIconOption {
|
||||
key: string;
|
||||
icon: LucideIconData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Banque d'icones dediee aux entites narratives d'une campagne (arc, chapitre, scene).
|
||||
*
|
||||
* Pourquoi separe de LORE_ICON_OPTIONS ? Les icones lore sont plutot orientees
|
||||
* "objets de monde" (chateau, foret, dragon...). Ici on est sur du sequencement
|
||||
* narratif et de la mise en scene : ambiances, actes, decisions. Cles uniques
|
||||
* (prefixees `c-` quand un nom existerait deja dans le lore) pour eviter les
|
||||
* collisions avec LORE_ICON_OPTIONS — le resolver consulte les deux registres.
|
||||
*/
|
||||
export const CAMPAIGN_ICON_OPTIONS: CampaignIconOption[] = [
|
||||
{ key: 'c-theater', icon: Theater },
|
||||
{ key: 'c-drama', icon: Drama },
|
||||
{ key: 'c-compass', icon: Compass },
|
||||
{ key: 'c-flag', icon: Flag },
|
||||
{ key: 'c-calendar', icon: Calendar },
|
||||
{ key: 'c-map', icon: Map },
|
||||
{ key: 'c-castle', icon: Castle },
|
||||
{ key: 'c-tent', icon: Tent },
|
||||
{ key: 'c-swords', icon: Swords },
|
||||
{ key: 'c-skull', icon: Skull },
|
||||
{ key: 'c-crown', icon: Crown },
|
||||
{ key: 'c-heart', icon: Heart },
|
||||
{ key: 'c-eye', icon: Eye },
|
||||
{ key: 'c-footprints', icon: Footprints },
|
||||
{ key: 'c-dice', icon: Dice5 },
|
||||
{ key: 'c-hourglass', icon: Hourglass },
|
||||
{ key: 'c-flame', icon: Flame },
|
||||
{ key: 'c-snowflake', icon: Snowflake },
|
||||
{ key: 'c-cloud', icon: Cloud },
|
||||
{ key: 'c-sun', icon: Sun },
|
||||
{ key: 'c-moon', icon: Moon },
|
||||
{ key: 'c-star', icon: Star },
|
||||
{ key: 'c-zap', icon: Zap },
|
||||
{ key: 'c-target', icon: Target },
|
||||
{ key: 'c-music', icon: Music },
|
||||
{ key: 'c-message', icon: MessageCircle },
|
||||
{ key: 'c-lock', icon: Lock },
|
||||
{ key: 'c-key', icon: KeyIcon },
|
||||
{ key: 'c-coins', icon: Coins },
|
||||
{ key: 'c-gift', icon: Gift },
|
||||
];
|
||||
|
||||
/** Icone par defaut quand une entite narrative n'en a pas. */
|
||||
export const DEFAULT_CAMPAIGN_ICON: LucideIconData = Bookmark;
|
||||
|
||||
/** Resolveur dedie. Prefere passer par `resolveIcon` dans lore-icons qui consulte les deux. */
|
||||
export function resolveCampaignIcon(key: string | null | undefined): LucideIconData {
|
||||
if (!key) return DEFAULT_CAMPAIGN_ICON;
|
||||
return CAMPAIGN_ICON_OPTIONS.find(o => o.key === key)?.icon ?? DEFAULT_CAMPAIGN_ICON;
|
||||
}
|
||||
Reference in New Issue
Block a user