
    soj+                         d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZmZmZmZmZ d dlmZ 	 	 	 ddej        dede
dedede ddfdZ!dede
defdZ"dS )    N)DoesNotExist)ContextTypes)Game)User)
SavedMedia)SavedMediaType)GameType)Shambles)WhosWho)set_user_private_screen	save_gameget_player_board'get_guess_game_users_to_send_message_toshould_proceed_after_hint_sleepget_global_time_based_text)full_media_sendTcontextgameusershould_send_to_all_playersschedule_next_sendhint_wait_secondsreturnc           
      .  K   ||n|                                 }t          |||o|                                 |           d{V }t          ||          }|                                t
          j        u r|j        n|j        }t          t          j        |          }	t          j        }
|j        dk    rH|                                j        d|j                 }|
t          j                            |          z  }
|                                r|
t'          ||          z  }
|r6|                                r"|
t          j                            |          z  }
|rJ|                                s6|                                s"|
t          j                            |          z  }
|D ][}| j                            t5          | |	|j        |
d                     | j                            t9          ||                     \|sdS t;          j        |           d{V  	 t?          j         |j!                  }n# tD          $ r Y dS w xY wtG          | ||           d{V sdS tI          ||          sdS tK          | ||           d{V  dS )a  
    Send the image
    :param context: The context object
    :param game: The game object
    :param user: The user to send the image to
    :param should_send_to_all_players: If the image should be sent to all players
    :param schedule_next_send: If the next send should be scheduled
    :param hint_wait_seconds: How many seconds to wait before issuing next hint. If none, the game default is used
    :return: None
    N)
media_type	file_name   T)saved_mediachat_idcaptionignore_forbidden_exception)&get_seconds_for_every_hintr   	is_globalr   get_typer	   SHAMBLES
image_pathlatest_blurred_imager   r   PHOTOphrases"GUESS_CHARACTER_GAME_INPUT_CAPTIONrevealed_letters_countget_terminologynameGUESS_GAME_INPUT_CAPTION_HINTformatr   can_reduce_level.GUESS_GAME_INPUT_CAPTION_SECONDS_TO_NEXT_IMAGEhave_revealed_all_letters-GUESS_GAME_INPUT_CAPTION_SECONDS_TO_NEXT_HINTapplicationcreate_taskr   
tg_user_idr   asynciosleepr   	get_by_ididr   r   reduce_level_if_possiblerun_game)r   r   r   r   r   r   usersboardr   r   r    hintus                7/app/src/chat/common/screens/screen_game_shambles_ww.pyr<   r<      s$     ( /:@_@_@a@a  :	#	<DNN,<,<(<	       E !1t < <E !MMOOx/@@@eF`  )N4HT]^^^K8G#q((##%%*+IU-I+IJ78??EEE~~ :-dD999! !!## 	wMTT!  G
 	#c&&((c //11c
 	7HOOPabbb J J'''+/  	
 	
 	
 	''(?4(H(HIIII 
-)
*
********~dg&&    1$EEEEEEEE  $D$// 
7D$
'
''''''''''s   (I 
IIc                 \   t          | |          }|                                s|                                rdS |                                r|                                 n|xj        dz  c_        t          | |                                |                     |          d           dS )z
    Issue a hint if possible, saving the game
    :param game: The game
    :param user: The user
    :return: If a life was issued
    Fr   T)is_opponent_boardhint_was_issued)r   r0   r2   reduce_levelr+   r   get_as_json_stringis_opponent)r   r   r>   s      rA   r;   r;   y   s     !1t < <E!!## (G(G(I(I u *$$)$$  ""**400	    4    )TTN)#r7   peeweer   src.tg_compat.extr   resources.phrasesr)   src.model.Gamer   src.model.Userr   src.model.enums.SavedMediar   src.model.enums.SavedMediaTyper   src.model.game.GameTyper	    src.model.game.shambles.Shamblesr
   src.model.game.whoswho.WhosWhor   src.service.game_servicer   r   r   r   r   r   src.service.message_servicer   DEFAULT_TYPEboolintr<   r;    rH   rA   <module>rY      s          * * * * * * # # # # # #             1 1 1 1 1 1 9 9 9 9 9 9 , , , , , , 5 5 5 5 5 5 2 2 2 2 2 2                8 7 7 7 7 7 (,#!]( ](&](
]( ]( !%	](
 ]( ]( 
]( ]( ]( ](@4 t       rH   