@@ -37,6 +37,7 @@ struct ScenaBuild {
3737 chars : Many < CharDefId , NpcOrMonster < Npc , Monster > > ,
3838 triggers : Many < TriggerId , Trigger > ,
3939 look_points : Many < LookPointId , LookPoint > ,
40+ no_labels : bool ,
4041 labels : Many < LabelId , Label > ,
4142 animations : Many < AnimId , Animation > ,
4243 sepith : Many < SepithId , [ u8 ; 8 ] > ,
@@ -58,7 +59,7 @@ pub fn parse(lines: &[Line], ctx: &Context) -> Result<Scena> {
5859
5960 let chip = scena. chip . get ( |a| a. 0 as usize ) ;
6061 let ( npcs, monsters) = chars ( scena. chars ) ;
61- let labels = Some ( scena. labels . get ( |a| a. 0 as usize ) ) ;
62+ let labels = scena. labels . get ( |a| a. 0 as usize ) ;
6263 let triggers = scena. triggers . get ( |a| a. 0 as usize ) ;
6364 let look_points = scena. look_points . get ( |a| a. 0 as usize ) ;
6465 let animations = scena. animations . get ( |a| a. 0 as usize ) ;
@@ -69,6 +70,14 @@ pub fn parse(lines: &[Line], ctx: &Context) -> Result<Scena> {
6970 let placements = scena. placements . get ( |a| a. 0 as usize ) ;
7071 let battles = scena. battles . get ( |a| a. 0 as usize ) ;
7172
73+ let labels = if scena. no_labels {
74+ Some ( Vec :: new ( ) )
75+ } else if labels. is_empty ( ) {
76+ None
77+ } else {
78+ Some ( labels)
79+ } ;
80+
7281 let h = scena. header . get ( ) . ok_or ( Error ) ?;
7382
7483 Ok ( Scena {
@@ -261,6 +270,11 @@ fn parse_line(scena: &mut ScenaBuild, p: &mut Parse) -> Result<()> {
261270 } ) ;
262271 }
263272 "label" => {
273+ if test ! ( p, Token :: Ident ( "blank" ) ) {
274+ scena. labels . mark ( p. tokens [ 0 ] . 0 | p. prev_span ( ) , LabelId ( 0 ) ) ;
275+ scena. no_labels = true ;
276+ return Ok ( ( ) )
277+ }
264278 let S ( s, n) = Val :: parse ( p) ?;
265279 scena. labels . mark ( p. tokens [ 0 ] . 0 | s, n) ;
266280 parse_data ! ( p => {
0 commit comments