npc0 commited on
Commit
4beca76
·
verified ·
1 Parent(s): cd92569

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +85 -29
app.py CHANGED
@@ -1021,9 +1021,9 @@ def create_ui():
1021
  return session, f"❌ Error: {str(e)}"
1022
 
1023
  def refresh_game_state(session):
1024
- empty_return = ("*No game joined*", "", "", {}, "", "", {}, [], [], "*No spectators*", "")
1025
 
1026
- if not session.get('room_id'):
1027
  return empty_return
1028
 
1029
  state = db.get_room_state(session['room_id'])
@@ -1043,14 +1043,48 @@ def create_ui():
1043
  winner_name = next((p['name'] for p in players if p['player_id'] == room['winner_id']), "Unknown")
1044
  status_md += f"\n\n🏆 **GAME OVER!** Winner: **{winner_name}**"
1045
 
1046
- # Player data
1047
- p1_data = players[0] if len(players) > 0 else {}
1048
- p2_data = players[1] if len(players) > 1 else {}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1049
 
1050
- p1_name_val = p1_data.get('name', '')
1051
- p1_char = p1_data.get('character_id', '')
1052
- p2_name_val = p2_data.get('name', '')
1053
- p2_char = p2_data.get('character_id', '')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1054
 
1055
  # Tasks with better formatting
1056
  task_rows = []
@@ -1059,7 +1093,7 @@ def create_ui():
1059
  task = next((t for t in TASKS if t['id'] == task_id), None)
1060
  if task:
1061
  solo_req = ', '.join([f"{k}:{v}" for k, v in task['solo'].items()])
1062
- coop_req = ', '.join([f"{k}:{v}" for k, v in task['coop'].items()])
1063
 
1064
  if 'reward' in task and task['reward'] > 0:
1065
  reward_str = f"${task['reward']}"
@@ -1089,7 +1123,9 @@ def create_ui():
1089
  else:
1090
  turn_msg = "⏳ **Partner's turn...** Click Refresh to see updates."
1091
 
1092
- return (status_md, p1_name_val, p1_char, p1_data, p2_name_val, p2_char, p2_data,
 
 
1093
  task_rows, task_options, spec_md, turn_msg)
1094
 
1095
  def execute_rest_handler(session, rest_type):
@@ -1182,6 +1218,13 @@ def create_ui():
1182
  inputs=[your_name_input, character_select, session_state],
1183
  outputs=[session_state, join_result],
1184
  show_progress="full"
 
 
 
 
 
 
 
1185
  )
1186
 
1187
  join_click = join_btn.click(
@@ -1189,14 +1232,22 @@ def create_ui():
1189
  inputs=[room_id_input, your_name_input, character_select, session_state],
1190
  outputs=[session_state, join_result],
1191
  show_progress="full"
 
 
 
 
 
 
 
1192
  )
1193
 
1194
  refresh_btn.click(
1195
  fn=refresh_game_state,
1196
  inputs=[session_state],
1197
- outputs=[status_display, p1_name, p1_character, p1_display,
1198
- p2_name, p2_character, p2_display, tasks_display, task_select,
1199
- spectators_display, your_turn_msg]
 
1200
  )
1201
 
1202
  quick_nap_btn.click(
@@ -1206,9 +1257,10 @@ def create_ui():
1206
  ).then(
1207
  fn=refresh_game_state,
1208
  inputs=[session_state],
1209
- outputs=[status_display, p1_name, p1_character, p1_display,
1210
- p2_name, p2_character, p2_display, tasks_display, task_select,
1211
- spectators_display, your_turn_msg]
 
1212
  )
1213
 
1214
  full_sleep_btn.click(
@@ -1218,9 +1270,10 @@ def create_ui():
1218
  ).then(
1219
  fn=refresh_game_state,
1220
  inputs=[session_state],
1221
- outputs=[status_display, p1_name, p1_character, p1_display,
1222
- p2_name, p2_character, p2_display, tasks_display, task_select,
1223
- spectators_display, your_turn_msg]
 
1224
  )
1225
 
1226
  deep_rest_btn.click(
@@ -1230,9 +1283,10 @@ def create_ui():
1230
  ).then(
1231
  fn=refresh_game_state,
1232
  inputs=[session_state],
1233
- outputs=[status_display, p1_name, p1_character, p1_display,
1234
- p2_name, p2_character, p2_display, tasks_display, task_select,
1235
- spectators_display, your_turn_msg]
 
1236
  )
1237
 
1238
  solo_task_btn.click(
@@ -1242,9 +1296,10 @@ def create_ui():
1242
  ).then(
1243
  fn=refresh_game_state,
1244
  inputs=[session_state],
1245
- outputs=[status_display, p1_name, p1_character, p1_display,
1246
- p2_name, p2_character, p2_display, tasks_display, task_select,
1247
- spectators_display, your_turn_msg]
 
1248
  )
1249
 
1250
  end_turn_btn.click(
@@ -1254,9 +1309,10 @@ def create_ui():
1254
  ).then(
1255
  fn=refresh_game_state,
1256
  inputs=[session_state],
1257
- outputs=[status_display, p1_name, p1_character, p1_display,
1258
- p2_name, p2_character, p2_display, tasks_display, task_select,
1259
- spectators_display, your_turn_msg]
 
1260
  )
1261
 
1262
  refresh_rankings_btn.click(
 
1021
  return session, f"❌ Error: {str(e)}"
1022
 
1023
  def refresh_game_state(session):
1024
+ empty_return = ("*No game joined*", "", "", {}, 0, 0, 0, 0, 0, 0, "", "", {}, 0, 0, 0, 0, 0, 0, [], [], "*No spectators*", "")
1025
 
1026
+ if not session or not session.get('room_id'):
1027
  return empty_return
1028
 
1029
  state = db.get_room_state(session['room_id'])
 
1043
  winner_name = next((p['name'] for p in players if p['player_id'] == room['winner_id']), "Unknown")
1044
  status_md += f"\n\n🏆 **GAME OVER!** Winner: **{winner_name}**"
1045
 
1046
+ # Player data with defaults
1047
+ if len(players) > 0:
1048
+ p1_data = players[0]
1049
+ p1_name_val = p1_data.get('name', '')
1050
+ p1_char = p1_data.get('character_id', '')
1051
+ p1_time_val = p1_data.get('time', 0)
1052
+ p1_money_val = p1_data.get('money', 0)
1053
+ p1_hp_val = p1_data.get('hp', 0)
1054
+ p1_cp_val = p1_data.get('cp', 0)
1055
+ p1_stress_val = p1_data.get('stress', 0)
1056
+ p1_qol_val = p1_data.get('qol', 0)
1057
+ else:
1058
+ p1_data = {}
1059
+ p1_name_val = ""
1060
+ p1_char = ""
1061
+ p1_time_val = 0
1062
+ p1_money_val = 0
1063
+ p1_hp_val = 0
1064
+ p1_cp_val = 0
1065
+ p1_stress_val = 0
1066
+ p1_qol_val = 0
1067
 
1068
+ if len(players) > 1:
1069
+ p2_data = players[1]
1070
+ p2_name_val = p2_data.get('name', '')
1071
+ p2_char = p2_data.get('character_id', '')
1072
+ p2_time_val = p2_data.get('time', 0)
1073
+ p2_money_val = p2_data.get('money', 0)
1074
+ p2_hp_val = p2_data.get('hp', 0)
1075
+ p2_cp_val = p2_data.get('cp', 0)
1076
+ p2_stress_val = p2_data.get('stress', 0)
1077
+ p2_qol_val = p2_data.get('qol', 0)
1078
+ else:
1079
+ p2_data = {}
1080
+ p2_name_val = ""
1081
+ p2_char = ""
1082
+ p2_time_val = 0
1083
+ p2_money_val = 0
1084
+ p2_hp_val = 0
1085
+ p2_cp_val = 0
1086
+ p2_stress_val = 0
1087
+ p2_qol_val = 0
1088
 
1089
  # Tasks with better formatting
1090
  task_rows = []
 
1093
  task = next((t for t in TASKS if t['id'] == task_id), None)
1094
  if task:
1095
  solo_req = ', '.join([f"{k}:{v}" for k, v in task['solo'].items()])
1096
+ coop_req = ', '.join([f"{k}:{v}" for k, v in task['coop'].items()]) if 'coop' in task else "N/A"
1097
 
1098
  if 'reward' in task and task['reward'] > 0:
1099
  reward_str = f"${task['reward']}"
 
1123
  else:
1124
  turn_msg = "⏳ **Partner's turn...** Click Refresh to see updates."
1125
 
1126
+ return (status_md,
1127
+ p1_name_val, p1_char, p1_data, p1_time_val, p1_money_val, p1_hp_val, p1_cp_val, p1_stress_val, p1_qol_val,
1128
+ p2_name_val, p2_char, p2_data, p2_time_val, p2_money_val, p2_hp_val, p2_cp_val, p2_stress_val, p2_qol_val,
1129
  task_rows, task_options, spec_md, turn_msg)
1130
 
1131
  def execute_rest_handler(session, rest_type):
 
1218
  inputs=[your_name_input, character_select, session_state],
1219
  outputs=[session_state, join_result],
1220
  show_progress="full"
1221
+ ).then(
1222
+ fn=refresh_game_state,
1223
+ inputs=[session_state],
1224
+ outputs=[status_display,
1225
+ p1_name, p1_character, p1_display, p1_time, p1_money, p1_hp, p1_cp, p1_stress, p1_qol,
1226
+ p2_name, p2_character, p2_display, p2_time, p2_money, p2_hp, p2_cp, p2_stress, p2_qol,
1227
+ tasks_display, task_select, spectators_display, your_turn_msg]
1228
  )
1229
 
1230
  join_click = join_btn.click(
 
1232
  inputs=[room_id_input, your_name_input, character_select, session_state],
1233
  outputs=[session_state, join_result],
1234
  show_progress="full"
1235
+ ).then(
1236
+ fn=refresh_game_state,
1237
+ inputs=[session_state],
1238
+ outputs=[status_display,
1239
+ p1_name, p1_character, p1_display, p1_time, p1_money, p1_hp, p1_cp, p1_stress, p1_qol,
1240
+ p2_name, p2_character, p2_display, p2_time, p2_money, p2_hp, p2_cp, p2_stress, p2_qol,
1241
+ tasks_display, task_select, spectators_display, your_turn_msg]
1242
  )
1243
 
1244
  refresh_btn.click(
1245
  fn=refresh_game_state,
1246
  inputs=[session_state],
1247
+ outputs=[status_display,
1248
+ p1_name, p1_character, p1_display, p1_time, p1_money, p1_hp, p1_cp, p1_stress, p1_qol,
1249
+ p2_name, p2_character, p2_display, p2_time, p2_money, p2_hp, p2_cp, p2_stress, p2_qol,
1250
+ tasks_display, task_select, spectators_display, your_turn_msg]
1251
  )
1252
 
1253
  quick_nap_btn.click(
 
1257
  ).then(
1258
  fn=refresh_game_state,
1259
  inputs=[session_state],
1260
+ outputs=[status_display,
1261
+ p1_name, p1_character, p1_display, p1_time, p1_money, p1_hp, p1_cp, p1_stress, p1_qol,
1262
+ p2_name, p2_character, p2_display, p2_time, p2_money, p2_hp, p2_cp, p2_stress, p2_qol,
1263
+ tasks_display, task_select, spectators_display, your_turn_msg]
1264
  )
1265
 
1266
  full_sleep_btn.click(
 
1270
  ).then(
1271
  fn=refresh_game_state,
1272
  inputs=[session_state],
1273
+ outputs=[status_display,
1274
+ p1_name, p1_character, p1_display, p1_time, p1_money, p1_hp, p1_cp, p1_stress, p1_qol,
1275
+ p2_name, p2_character, p2_display, p2_time, p2_money, p2_hp, p2_cp, p2_stress, p2_qol,
1276
+ tasks_display, task_select, spectators_display, your_turn_msg]
1277
  )
1278
 
1279
  deep_rest_btn.click(
 
1283
  ).then(
1284
  fn=refresh_game_state,
1285
  inputs=[session_state],
1286
+ outputs=[status_display,
1287
+ p1_name, p1_character, p1_display, p1_time, p1_money, p1_hp, p1_cp, p1_stress, p1_qol,
1288
+ p2_name, p2_character, p2_display, p2_time, p2_money, p2_hp, p2_cp, p2_stress, p2_qol,
1289
+ tasks_display, task_select, spectators_display, your_turn_msg]
1290
  )
1291
 
1292
  solo_task_btn.click(
 
1296
  ).then(
1297
  fn=refresh_game_state,
1298
  inputs=[session_state],
1299
+ outputs=[status_display,
1300
+ p1_name, p1_character, p1_display, p1_time, p1_money, p1_hp, p1_cp, p1_stress, p1_qol,
1301
+ p2_name, p2_character, p2_display, p2_time, p2_money, p2_hp, p2_cp, p2_stress, p2_qol,
1302
+ tasks_display, task_select, spectators_display, your_turn_msg]
1303
  )
1304
 
1305
  end_turn_btn.click(
 
1309
  ).then(
1310
  fn=refresh_game_state,
1311
  inputs=[session_state],
1312
+ outputs=[status_display,
1313
+ p1_name, p1_character, p1_display, p1_time, p1_money, p1_hp, p1_cp, p1_stress, p1_qol,
1314
+ p2_name, p2_character, p2_display, p2_time, p2_money, p2_hp, p2_cp, p2_stress, p2_qol,
1315
+ tasks_display, task_select, spectators_display, your_turn_msg]
1316
  )
1317
 
1318
  refresh_rankings_btn.click(