
    sojN                     
   d dl mZ d dlmZ d dlmZ  G d d          Z ed dej        d d          Z edd	ej	        d ej
                                                  Z ed
dej	        dej                                                  Z eddej	        dej                                                  Z eddej	        dej                                                  Z eddej	        dej                                                  Z eddej	        dej                                                  Z eddej	        dej                                                  Z eddej	        dej                                                  Z edd ej	        d!ej                                                  Z ed"d#ej	        d$ej                                                  Z ed%d&ej	        d'ej                                                  Z  ed(d)ej	        d*ej!                                                  Z" ed+d,ej	        d-ej#                                                  Z$ ed.d/ej	        d0ej%                                                  Z& ed1d2ej	        d3ej'                                                  Z( ed4d5ej	        d6ej)                                                  Z* ed7d8ej	        d9ej+                                                  Z, ed:d;ej	        d<ej-                                                  Z. ed=d>ej	        d?ej/                                                  Z0 ed@dAej	        dBej1                                                  Z2 edCdDej3        dEej4                                                  Z5 edFdGej3        dHej6                                                  Z7 edIdJej3        dKej8                                                  Z9 edLdMej3        dNej:                                                  Z; edOdPej3        dQej<                                                  Z= edRdSej3        dTej>                                                  Z? edUdVej3        dWej@                                                  ZAeeeeeeeeeeee e"e$e&e(e*e,e.e0e2e5e7e9e;e=e?eAgZBdXeCdYefdZZDd[eCdYefd\ZEd[eCdYeFfd]ZGd[eCdYeFfd^ZHdYefd_ZIdYefd`ZJdYefdaZKdS )b    N)Region)CommonChatExceptionc            
       ^    e Zd ZdZdededededef
dZdefd	Z	defd
Z
defdZdefdZdS )Locationz
    Class for Locations
    levelnameregionrequired_bounty	image_urlc                 L    || _         || _        || _        || _        || _        dS )a9  
        Initialize the Location object
        :param level: The level of the location
        :param name: The name of the location
        :param region: The region of the location
        :param required_bounty: The required bounty to enter the location
        :param image_url: The url of the image
        N)r   r   r	   r
   r   )selfr   r   r	   r
   r   s          /app/src/model/enums/Location.py__init__zLocation.__init__   s,     
	."    returnc                 *    t          | j                  S )zk
        Check if the location is in Paradise
        :return: True if the location is in Paradise
        is_paradise_by_levelr   r   s    r   is_paradisezLocation.is_paradise   s    
 $DJ///r   c                 ,    t          | j                   S )zm
        Check if the location is in New World
        :return: True if the location is in New World
        r   r   s    r   is_new_worldzLocation.is_new_world#   s    
 (
3333r   c                 &    t                      | k    S )z
        Check if the location is the last location in Paradise
        :return: True if the location is the last location in Paradise
        )get_last_paradiser   s    r   is_last_paradisezLocation.is_last_paradise*   s    
 !""d**r   c                 &    t                      | k    S )z
        Check if the location is the first location in New World
        :return: True if the location is the first location in New World
        )get_first_new_worldr   s    r   is_first_new_worldzLocation.is_first_new_world1   s    
 #$$,,r   N)__name__
__module____qualname____doc__intstrr   r   boolr   r   r   r    r   r   r   r      s         ## ##-3#FI#VY# # # #"0T 0 0 0 04d 4 4 4 4+$ + + + +-D - - - - - -r   r   None    zFoosha Village   zShells Towni@B    zOrange Towni-    zIsland of Rare Animalsi[    zSyrup Villagei    Baratiei    zArlong Parki@o@   	Lougetowni	   zReverse Mountaini
   zWhiskey Peakiހ   zLittle Gardeni;G   zDrum Islandi,   zArabasta Kingdomi    Jayai    Skypieai '   zLong Ring Long Landi   zWater 7i+S   zEnies Lobbyi N   zThriller Barki    zSabaody Archipelagoi   zFish-Man Islandi    zPunk Hazardi    	Dressrosait   Zoui e   zWhole Cake Islandi /   zWano Countryi /hY   Eggheadl    ^e bountyr   c                     t          t                    D ]}| |j        k    r|c S t          d                    |                     )z$
    Get a Location by a bounty
    z No location found for bounty: {})reversed	LOCATIONSr
   r   format)rK   locations     r   get_by_bountyrQ      sV     Y''  X---OOO . @GGOO
P
PPr   r   c                 x    t           D ]}|j        | k    r|c S t          d                    |                     )z#
    Get a Location by a level
    zNo location found for level: {})rN   r   
ValueErrorrO   )r   rP   s     r   get_by_levelrT      sM       >U""OOO # 6==eDD
E
EEr   c                 F    t          |           j        t          j        k    S )z
    Check if a location is a paradise by a level
    :param level: The level of the location
    :return: True if the location is in Paradise
    )rT   r	   r   PARADISEr   s    r   r   r      s     %88r   c                 F    t          |           j        t          j        k    S )z
    Check if a location is a new world by a level
    :param level: The level of the location
    :return: True if the location is in the New World
    )rT   r	   r   	NEW_WORLDrW   s    r   is_new_world_by_levelrZ      s     %)999r   c                  f    t           D ]} | j        t          j        k    r| c S t	          d          )z*
    Get the first new world location
    No new world location found)rN   r	   r   rY   rS   rP   s    r   r   r      sB       ?f...OOO / 2
3
33r   c                      t          t                    D ]} | j        t          j        k    r| c S t          d          )z)
    Get the last new world location
    r\   )rM   rN   r	   r   rY   rS   r]   s    r   get_last_new_worldr_      sJ     Y''  ?f...OOO / 2
3
33r   c                      t          t                    D ]} | j        t          j        k    r| c S t          d          )z(
    Get the last paradise location
    zNo paradise location found)rM   rN   r	   r   rV   rS   r]   s    r   r   r      sI     Y''  ?fo--OOO . 1
2
22r   )Lresources.EnvironmentEnvironmentEnvsrc.model.enums.Regionr   src.model.error.CommonChatErrorr   r   NDrV   !LOCATION_FOOSHA_VILLAGE_IMAGE_URLgetFOOSHA_VILLAGELOCATION_SHELLS_TOWN_IMAGE_URLSHELLS_TOWNLOCATION_ORANGE_TOWN_IMAGE_URLORANGE_TOWN)LOCATION_ISLAND_OF_RARE_ANIMALS_IMAGE_URLISLAND_OF_RARE_ANIMALS LOCATION_SYRUP_VILLAGE_IMAGE_URLSYRUP_VILLAGELOCATION_BARATIE_IMAGE_URLBARATIELOCATION_ARLONG_PARK_IMAGE_URLARLONG_PARKLOCATION_LOUGETOWN_IMAGE_URL	LOUGETOWN#LOCATION_REVERSE_MOUNTAIN_IMAGE_URLREVERSE_MOUNTAINLOCATION_WHISKEY_PEAK_IMAGE_URLWHISKEY_PEAK LOCATION_LITTLE_GARDEN_IMAGE_URLLITTLE_GARDENLOCATION_DRUM_ISLAND_IMAGE_URLDRUM_ISLAND#LOCATION_ARABASTA_KINGDOM_IMAGE_URLARABASTA_KINGDOMLOCATION_JAYA_IMAGE_URLJAYALOCATION_SKYPIEA_IMAGE_URLSKYPIEA&LOCATION_LONG_RING_LONG_LAND_IMAGE_URLLONG_RING_LONG_LANDLOCATION_WATER_7_IMAGE_URLWATER_7LOCATION_ENIES_LOBBY_IMAGE_URLENIES_LOBBY LOCATION_THRILLER_BARK_IMAGE_URLTHRILLER_BARK&LOCATION_SABAODY_ARCHIPELAGO_IMAGE_URLSABAODY_ARCHIPELAGOrY   !LOCATION_FISHMAN_ISLAND_IMAGE_URLFISHMAN_ISLANDLOCATION_PUNK_HAZARD_IMAGE_URLPUNK_HAZARDLOCATION_DRESSROSA_IMAGE_URL	DRESSROSALOCATION_ZOU_IMAGE_URLZOU$LOCATION_WHOLE_CAKE_ISLAND_IMAGE_URLWHOLE_CAKE_ISLANDLOCATION_WANO_COUNTRY_IMAGE_URLWANO_COUNTRYLOCATION_EGGHEAD_IMAGE_URLEGGHEADrN   r#   rQ   rT   r%   r   rZ   r   r_   r   r&   r   r   <module>r      s   # # # # # # ) ) ) ) ) ) ? ? ? ? ? ?0- 0- 0- 0- 0- 0- 0- 0-f XaAr**!S-R-V-V-X-X  h}fow0R0V0V0X0X  h}fow0R0V0V0X0X  "
O15577   33W3[3[3]3]  (1i(C<Z<^<^<`<`
a
ah}fox1S1W1W1Y1Y  H{FOXs/O/S/S/U/U 	 86?Hc6]6a6a6c6c   x33V3Z3Z3\3\  (C4X4\4\4^4^  hv#2T2X2X2Z2Z  8
O+//11   xFFOY8S8W8W8Y8YZZ
(2y&/9c>\>`>`>b>b
c
ch
O.2244   (2y&/9c>\>`>`>b>b
c
chv	33U3Y3Y3[3[  )S5Y5]5]5_5_  h
O.2244   6+Y8]8a8a8c8c  hv'C4V4Z4Z4\4\  HV%y#2R2V2V2X2X 	 hr5&*Is7Q7U7U7W7WXXH
,0022   x(*c6Y6]6]6_6_  (	6#Z1O1S1S1U1U 
 9	@	Q# 	Q( 	Q 	Q 	Q 	QF F F F F F9 9 9 9 9 9: : : : : :4X 4 4 4 44H 4 4 4 438 3 3 3 3 3 3r   