
    UHj/                    F   d Z ddlmZ ddlZddlZddlZddlmZ  ee      j                         j                  d   Zedz  Z ej                  d      Z ej                  d      Zdd	Zdd
ZdddZddZddZefddZddef	 	 	 	 	 	 	 ddZddZedk(  r e        yy)zNExport battle-like event/dialogue resource candidates for the browser runtime.    )annotationsN)Path   outz^btl_([a-z])([0-9]+)\.cns$z^map_([a-z])([0-9]+)\.cns$c                2    t        j                  | dd      S )NF),:)ensure_ascii
separators)jsondumps)datas    ;/home/exedev/hwanse/tools/export_battle_event_candidates.pyjs_jsonr      s    ::d:FF    c                p    | j                         s|S t        j                  | j                  d            S )Nutf-8encoding)existsr   loads	read_text)pathfallbacks     r   	load_jsonr      s*    ;;=::dnngn677r   c                    g }| D ]V  }t        |t              r|j                  d      n
t        |      }|r||vr|j	                  |       t        |      |k\  sU |S  |S )Ntext)
isinstancedictgetstrappendlen)lineslimitresultrowr   s        r   compact_text_linesr(      sc    F ",S$"7swwvSXD&MM$v;%M Mr   c                   | j                  d      }t        |t              r|S t        |t              rO|D ]J  }t        |t              r|r|c S t        |t              s*|j                  d      s<t        |d         c S  |r|d   S dS )N
sampleTextr   r    )r    r   r!   listr   )block
text_linessampler'   s       r   sample_textr0   &   s    YY|$F&#&$ 	(C#s#
#t$3v;''		(
 ':a=.B.r   c                   t        |      }g }| j                  d      xs g D ]1  }|j                  d      xs g }|D cg c]0  }t        j                  |      rt	        |      j
                  |v r|2 }}|sW|j                  d      xs g D cg c]  }t        j                  |      r| }}t        |D ch c];  }t        j                  |      r$t        j                  |      j                  d      = c}      }	t        |j                  d      xs g       }
t        ||
      }|D ]$  }t        j                  |      }|s|j                         \  }}t	        |      j
                  }|j                  i d|j                  d       d| d|j                  d      d	|j                  d	      d
|j                  d
      d|j                  d      d|j                  d      xs g d|j                  d      xs g d|d|d|dt        |      d|d|	d|d|d|
d|j                  dt        |
            ddd       ' 4 |j                  d        i }|D ]W  }|j!                  |d   g       j                  |d          |d   D ]&  }|j!                  |g       j                  |d          ( Y t        |j#                               D ci c]$  \  }}|t        t$        j'                  |            & }}}ddt        |      t        |D ch c]  }|d   	 c}      t        |D ch c]  }|d   	 c}      ||ddgdS c c}w c c}w c c}w c c}}w c c}w c c}w ) NblocksresourceNamestilesetsr   	textLinesidblockIdr	   classification
startVaHexendVaHexsourceCommandVasrenderCommandVasbattleResourcebattleBackgroundbattleFamilybattleVariantmapTilesetsmapFamiliesr*   textLineCountevent_dialogue_blocks	candidate)sourcestatusc                &    | d   | d   | d   | d   fS )Nr?   r@   r7   r>    )r'   s    r   <lambda>zbuild_summary.<locals>.<lambda>h   s'    S%8#o:NPST]P^`cdv`w$x r   )keyz7Battle-like event dialogue blocks with btl_* resources.zout/event_dialogue_blocks.jsonzaThese are resource/dialogue adjacency candidates, not confirmed event-driven battle entry points.zcThe browser runtime uses them to choose a more source-backed battle review background and log text.)scoperF   candidateCount
blockCountbackgroundCountbyFamily
candidatesnotes)setr    BATTLE_RESOURCE_RE	fullmatchr   stemMAP_TILESET_REsortedgroupr(   r0   groupsr"   intr#   sort
setdefaultitemsr   fromkeys)rD   battle_backgroundsbackgroundsrQ   r-   resource_namesnamebattle_resourcesmap_tilesetsmap_familiesr.   r/   battle_resourcematchfamilyvariant
background	by_familyr'   rK   values                        r   build_summaryrn   3   s   ()KJ&**84: 1?39r '
!++D1d4joo6T 
 

   		*-3
''- 
 

 $
''- $$T*003
 
 (		+(>(D"E
UJ// 	O&00AE#llnOFGo.33JUYYy12!J<@uyy3 %eii0@&A !%))L"9	
 		* 5 '		2D(E(K '		2D(E(K %o '
 #F $S\ "< "< $^ !&   !" $UYYJ%P#$ 6)'	+1d OOxOy&(I ?S0"5<<SYG-( 	?F  ,33CI>	?? FLIOOL]E^_zsEfT]]5122_I_J2j/Z@c3y>@A:NC$6 7NO oq
 o



T `
 ANs%    5MM :A M%
%)M*&M0M5c                    |j                  dd       |dz  j                  t        j                  | dd      dz   d	       |d
z  j                  dt	        |       z   dz   d	       y )NT)parentsexist_okzbattle_event_candidates.jsonF   )r
   indent
r   r   battle_event_candidates.jsz(window.HWANSE_BATTLE_EVENT_CANDIDATES = z;
)mkdir
write_textr   r   r   )summaryout_dirs     r   write_outputsrz   ~   s{    MM$M.--99

7q9D@ :  ++772
'
	
	 	 8 r   c                    | xs t        |dz  i       } |xs t        |dz  i       }t        | |      }t        ||       t        d|d    d|dz          |S )Nzevent_dialogue_blocks.jsonzbattle_backgrounds.jsonzwrote rM   z battle event candidates -> ru   )r   rn   rz   print)rD   r`   ry   rx   s       r   export_battle_event_candidatesr}      sw    
 2jYwIe?egi5j+ayC\9\^`/a13EFG'7#	F7+,--I'TpJpIq
rsNr   c                     t        j                         } | j                  dt        t               | j                         }t        |j                         y )Nz	--out-dir)typedefault)ry   )argparseArgumentParseradd_argumentr   OUT
parse_argsr}   ry   )parserargss     r   mainr      s?    $$&F
$<D"4<<8r   __main__)returnr!   )r   r   )   )r$   z
list[dict]r%   r[   r   	list[str])r-   r   r.   r   r   r!   )rD   r   r`   r   r   r   )rx   r   ry   r   r   None)rD   dict | Noner`   r   ry   r   r   r   )r   r   )__doc__
__future__r   r   r   repathlibr   __file__resolverp   ROOTr   compilerT   rW   r   r   r(   r0   rn   rz   r}   r   __name__rI   r   r   <module>r      s    T "   	  H~''*
UlRZZ => 9:G8
/HV 25  *.&*
&
#
 
 
	
9 zF r   