38
38
39
39
logger = getLogger (__name__ )
40
40
41
+ MAX_NAME_LENGTH = 50
42
+ DISALLOWED_PUNCTUATION = ['"' , ":" ]
43
+
41
44
42
45
def get_world_config ():
43
46
config = get_game_config ()
@@ -58,12 +61,12 @@ def name_parser(value: str, **kwargs):
58
61
format_prompt ("world_generate_error_name_json" , name = value )
59
62
)
60
63
61
- if '"' in value or ":" in value :
64
+ if any ( p in value for p in DISALLOWED_PUNCTUATION ) :
62
65
raise ValueError (
63
66
format_prompt ("world_generate_error_name_punctuation" , name = value )
64
67
)
65
68
66
- if len (value ) > 50 :
69
+ if len (value ) > MAX_NAME_LENGTH :
67
70
raise ValueError (
68
71
format_prompt ("world_generate_error_name_length" , name = value )
69
72
)
@@ -99,6 +102,8 @@ def generate_room(
99
102
agent : Agent ,
100
103
world : World ,
101
104
systems : List [GameSystem ],
105
+ current_room : int | None = None ,
106
+ total_rooms : int | None = None ,
102
107
) -> Room :
103
108
existing_rooms = [room .name for room in list_rooms (world )]
104
109
@@ -108,6 +113,8 @@ def generate_room(
108
113
context = {
109
114
"world_theme" : world .theme ,
110
115
"existing_rooms" : existing_rooms ,
116
+ "current_room" : current_room ,
117
+ "total_rooms" : total_rooms ,
111
118
},
112
119
result_parser = duplicate_name_parser (existing_rooms ),
113
120
toolbox = None ,
@@ -575,9 +582,11 @@ def generate_world(
575
582
set_system_data (system .name , data )
576
583
577
584
# generate the rooms
578
- for _ in range (room_count ):
585
+ for i in range (room_count ):
579
586
try :
580
- room = generate_room (agent , world , systems )
587
+ room = generate_room (
588
+ agent , world , systems , current_room = i , total_rooms = room_count
589
+ )
581
590
generate_system_attributes (agent , world , room , systems )
582
591
broadcast_generated (entity = room )
583
592
world .rooms .append (room )
0 commit comments