
    soj                     X   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  G d de          Zej        ej        ej        ej        ej        ej        ej        ej        gZ G d d	          Z eej        d
ej        ddej                                        ej                                        ej                                                  Z eej        dej        ddej                                        ej                                         ej!                                                  Z eej        dej"        ddej#                                        ej                                         ej!                                                  Z eej        dej$        ddej%                                        ej&                                        ej'                                                  Z eej        dej(        ddej)                                        ej*                                        ej+                                                  Z eej        dej,        ddej                                        ej                                        ej                                                  Z eej        dej-        ddej                                        ej                                        ej                                                  Z eej        dej.        ddej/                                        ej0                                        ej1                                                  ZeeeeeeeegZ2de3defdZ4dedz  defdZ5d e3defd!Z6d"e
dedz  fd#Z7dS )$    )IntEnumN)LeaderboardUser)User)Emojic                   :    e Zd ZdZdZdZdZdZdZdZ	dZ
d	efd
ZdS )LeaderboardRankIndex                        returnc                 L    | t           j        t           j        t           j        fv S )z\
        Checks if the rank is special
        :return: True if the rank is special
        )r   ADMINLEGENDARY_PIRATEWARLORDselfs    '/app/src/model/enums/LeaderboardRank.py
is_specialzLeaderboardRankIndex.is_special   s(      & 1 (
 
 	
    N)__name__
__module____qualname__PIRATE_KINGEMPEROR
FIRST_MATE	SUPERNOVAROOKIEr   r   r   boolr    r   r   r   r   
   sX        KGJIFEG

D 

 

 

 

 

 

r   r   c                       e Zd ZdZdededededz  dedz  ded	ed
eddfdZedefd            Z	defdZ
dd defdZdS )LeaderboardRankz&
    Class for leaderboard ranks.
    indextitleemojileaderboard_startNleaderboard_endbounty_poster_limitmax_win_probabilitymin_win_probabilityr   c	                 v    || _         || _        || _        || _        || _        || _        || _        || _        dS )a  
        Constructor for leaderboard ranks
        :param index: Index of the leaderboard rank. Lower index means higher rank
        :param title: Title
        :param emoji: Emoji
        :param leaderboard_start: Start index
        :param leaderboard_end: End index
        :param bounty_poster_limit: Bounty poster limit
        :param max_win_probability: Max win probability in percentage
        :param min_win_probability: Min win probability in percentage
        N)r'   _title_phrase_namer)   r*   r+   r,   r-   r.   )	r   r'   r(   r)   r*   r+   r,   r-   r.   s	            r   __init__zLeaderboardRank.__init__2   sH    ,  
',
&7$3(; *= *=   r   c                 6    t          t          | j                  S )zu
        Title of the leaderboard rank, resolved in the currently active language
        :return: The title
        )getattrphrasesr0   r   s    r   r(   zLeaderboardRank.titleQ   s     w 7888r   c                 &    | j         dz   | j        z   S )zT
        Get emoji and rank message
        :return: Emoji and rank message
         )r)   r(   r   s    r   get_emoji_and_rank_messagez*LeaderboardRank.get_emoji_and_rank_messageZ   s     zC$*,,r   otherc                     t                               t          | j                            t                               t          |j                            k     S )z
        Checks if current rank  higher than the other rank
        :param other: The other rank
        :return: True if the rank is higher than the other rank
        )
RANK_ORDERr'   r   )r   r8   s     r   	is_higherzLeaderboardRank.is_higherb   sK      4TZ @ @AAJDTDT --E
 E
 
 	
r   )r   r   r   __doc__intstrfloatr1   propertyr(   r7   r#   r;   r$   r   r   r&   r&   -   s         >> > 	>
 :> t> !> #> #> 
> > > >> 9s 9 9 9 X9-C - - - -
0 
T 
 
 
 
 
 
r   r&   LEADERBOARD_RANK_PIRATE_KINGr	   LEADERBOARD_RANK_EMPERORr
   r   LEADERBOARD_RANK_FIRST_MATEr   	   LEADERBOARD_RANK_SUPERNOVA
      LEADERBOARD_RANK_ROOKIE   LEADERBOARD_RANK_ADMIN!LEADERBOARD_RANK_LEGENDARY_PIRATELEADERBOARD_RANK_WARLORDr'   r   c                 R    t           D ]}| |j        k    r|c S t          d          )zi
    Get the leaderboard rank for a given rank
    :param index: Index
    :return: Leaderboard rank
    zInvalid index)LEADERBOARD_RANKSr'   
ValueError)r'   ranks     r   get_rank_by_indexrR      s>     "  DJKKK  _
%
%%r   leaderboard_userc                 <    | t           S t          | j                  S )z
    Get the leaderboard rank for a given leaderboard user
    :param leaderboard_user: Leaderboard user
    :return: Leaderboard rank
    )r"   rR   
rank_index)rS   s    r   get_rank_by_leaderboard_userrV      s!     -8999r   leaderboard_positionc                     t           D ]5}|j        | cxk    r|j        k    sn | |j        k    r|j        dk    r|c S 6t          d          )z
    Get the leaderboard rank for a given leaderboard position
    :param leaderboard_position: Leaderboard position
    :return: Leaderboard rank
    rJ   zInvalid leaderboard position)rO   r*   r+   rP   )rW   rQ   s     r    get_rank_by_leaderboard_positionrY      sn     "  !%9QQQQT=QQQQQ D$:::t?SWY?Y?YKKK
3
4
44r   userc                     | j         rt          S |                                 rt          S |                                 rt
          S dS )z_
    Get the special rank for a given user
    :param user: User
    :return: Special rank
    N)is_adminr   is_legendary_pirater   
is_warlordr   )rZ   s    r   get_special_rankr_      sI     } !!   4r   )8enumr   resources.EnvironmentEnvironmentEnvresources.phrasesr4   src.model.LeaderboardUserr   src.model.Userr   src.model.enums.Emojir   r   r   r   r   r   r   r    r!   r"   r:   r&   LEADERBOARD_PIRATE_KINGBOUNTY_POSTER_LIMIT_PIRATE_KINGget_int%FIGHT_MAX_WIN_PROBABILITY_PIRATE_KING	get_float%FIGHT_MIN_WIN_PROBABILITY_PIRATE_KINGLEADERBOARD_EMPERORBOUNTY_POSTER_LIMIT_EMPEROR$FIGHT_MAX_WIN_PROBABILITY_FIRST_MATE$FIGHT_MIN_WIN_PROBABILITY_FIRST_MATELEADERBOARD_FIRST_MATEBOUNTY_POSTER_LIMIT_FIRST_MATELEADERBOARD_SUPERNOVABOUNTY_POSTER_LIMIT_SUPERNOVA#FIGHT_MAX_WIN_PROBABILITY_SUPERNOVA#FIGHT_MIN_WIN_PROBABILITY_SUPERNOVALEADERBOARD_ROOKIEBOUNTY_POSTER_LIMIT_ROOKIE FIGHT_MAX_WIN_PROBABILITY_ROOKIE FIGHT_MIN_WIN_PROBABILITY_ROOKIELEADERBOARD_ADMINLEADERBOARD_LEGENDARY_PIRATELEADERBOARD_WARLORDBOUNTY_POSTER_LIMIT_WARLORD!FIGHT_MAX_WIN_PROBABILITY_EMPEROR!FIGHT_MIN_WIN_PROBABILITY_EMPERORrO   r=   rR   rV   rY   r_   r$   r   r   <module>r      s         # # # # # # # # # # # # 5 5 5 5 5 5       ' ' ' ' ' '
 
 
 
 
7 
 
 
0 )$  #"	
=
 =
 =
 =
 =
 =
 =
 =
@ o$"	!'//11-7799-7799	 	 / 	#++--,6688,6688	 	 _#!	 &..00,6688,6688	 	
 O" 	%--//+5577+5577	 		 
	"**,,(2244(2244	
 	
 		'//11-7799-7799		 		 #?)'	&'//11-7799-7799	 	  / 	#++--)3355)3355	 	 
		 
&S 
&_ 
& 
& 
& 
&	:?T3I 	:o 	: 	: 	: 	:53 5? 5 5 5 54 Od$:      r   