
    	(jY                        d Z ddlmZ ddlmZmZ e G d d                      Ze G d d                      Z G d d	          Zd
S )u=  地点模型:World 的空间骨架。

先用"地点图"(命名地点 + 邻接)而非完整 tile 网格——足够支撑移动/感知/社交,
且能承载丰富要素(图书馆/市政府/咖啡馆…)。tile 级寻路留给可视化阶段。
地点/对象都可热加载(WorldMap.add),对应 PRD §7 可扩展性。
    )annotations)	dataclassfieldc                  @    e Zd ZU dZded<    ee          Zded<   dS )WorldObjectuN   地点里的物体,affordances 描述"能对它做什么"(供 agent 感知)。strnamedefault_factory	list[str]affordancesN)__name__
__module____qualname____doc____annotations__r   listr        ./root/genesis-world/src/genesis/world/place.pyr   r      s?         XXIII"U4888K888888r   r   c                  t    e Zd ZU ded<   dZded<    ee          Zded<    ee          Zded	<   ddZ	dS )Placer   r	    descriptionr
   zlist[WorldObject]objectsr   adjacentreturnc                $    d | j         D             S )Nc                    g | ]	}|j         
S r   r	   ).0os     r   
<listcomp>z&Place.object_names.<locals>.<listcomp>   s    ---1---r   )r   selfs    r   object_nameszPlace.object_names   s    ------r   Nr   r   )
r   r   r   r   r   r   r   r   r   r&   r   r   r   r   r      s         IIIK!&t!<!<!<G<<<<%555H5555. . . . . .r   r   c                  8    e Zd ZdddZdd
ZddZddZddZdS )WorldMapNplaceslist[Place] | Noner   Nonec                ,    d |pg D             | _         d S )Nc                    i | ]
}|j         |S r   r    )r!   ps     r   
<dictcomp>z%WorldMap.__init__.<locals>.<dictcomp>"   s    )L)L)L!&!)L)L)Lr   _places)r%   r*   s     r   __init__zWorldMap.__init__!   s    )L)Lfl)L)L)Lr   r	   r   boolc                    || j         v S Nr1   r%   r	   s     r   haszWorldMap.has$   s    t|##r   Place | Nonec                6    | j                             |          S r6   )r2   getr7   s     r   r;   zWorldMap.get'   s    |%%%r   placer   c                $    || j         |j        <   d S r6   )r2   r	   )r%   r<   s     r   addzWorldMap.add*   s    #(UZ   r   r   c                *    t          | j                  S r6   )r   r2   r$   s    r   nameszWorldMap.names-   s    DL!!!r   r6   )r*   r+   r   r,   )r	   r   r   r4   )r	   r   r   r9   )r<   r   r   r,   r'   )r   r   r   r3   r8   r;   r>   r@   r   r   r   r)   r)       s        M M M M M$ $ $ $& & & &) ) ) )" " " " " "r   r)   N)	r   
__future__r   dataclassesr   r   r   r   r)   r   r   r   <module>rC      s     # " " " " " ( ( ( ( ( ( ( ( 9 9 9 9 9 9 9 9 . . . . . . . ." " " " " " " " " "r   