1 # ======================================================================
2 # DetailAppearanceTemplate.pm
3 # Copyright 2003, Sony Online Entertainment
5 # ======================================================================
7 package DetailAppearanceTemplate
;
10 use CustomizationVariableCollector
;
13 # ======================================================================
14 # DetailAppearanceTemplate potentially-public variables.
15 # ======================================================================
17 # our $relativePathName;
19 # ======================================================================
20 # Setup variables that can be imported by Exporter into user modules.
21 # ======================================================================
23 use vars
qw(@ISA @EXPORT_OK $VERSION);
28 # These symbols are okay to export if specifically requested.
29 @EXPORT_OK = qw(&install);
31 # ======================================================================
32 # DetailAppearanceTemplate private variables.
33 # ======================================================================
36 my $treeFileRelativeName;
38 # ======================================================================
39 # DetailAppearanceTemplate public functions.
40 # ======================================================================
44 # Register handler with CustomizationVariableCollector
45 CustomizationVariableCollector
::registerHandler
("DTLA", \
&processIff
);
48 # ======================================================================
49 # DetailAppearanceTemplate private functions
50 # ======================================================================
56 die "bad iff arg specified" if ref($iff) ne "Iff";
58 $treeFileRelativeName = shift;
59 die "bad tree file relative name" if !defined($treeFileRelativeName);
60 print "DetailAppearanceTemplate: processing file [$treeFileRelativeName]\n" if $debug;
62 # Ensure we're in the proper form.
63 return 0 unless $iff->getCurrentName() eq "DTLA";
65 $iff->enterForm("DTLA");
67 my $version = $iff->getCurrentName();
68 if ($version =~ m/^000[1-8]$/)
70 process_0001_0008
($iff);
74 print STDERR
"DetailAppearanceTemplate: unsupported version tag [$version].";
78 $iff->exitForm("DTLA");
80 print "DetailAppearanceTemplate: finished processing file [$treeFileRelativeName]\n" if $debug;
86 # ----------------------------------------------------------------------
90 print "process_0001_0008(): begin\n" if $debug;
93 die 'bad $iff arg' if ref($iff) ne 'Iff';
97 $iff->walkIff(\
&iffWalker_0001_0008
);
101 print "process_0001_0008(): end\n" if $debug;
104 # ----------------------------------------------------------------------
106 sub iffWalker_0001_0008
109 die 'bad iff arg' if ref($iff) ne 'Iff';
111 my $blockName = shift;
114 printf("iffWalker_0001_0008(): %s=[%s]\n", $isChunk ?
"chunk" : "form", $blockName) if $debug;
116 # Process blocks we understand.
119 if ($blockName eq 'CHLD')
121 # Handle specifying linked appearance template assets.
124 # NOTE: this is sneaky: appearances are missing the leading 'appearance/'.
125 # This burned me first time around.
126 my $appearanceTemplateName = 'appearance/' . $iff->read_string();
127 CustomizationVariableCollector
::logAssetLink
($treeFileRelativeName, $appearanceTemplateName);
135 # ======================================================================