@@ -23,10 +23,14 @@ class Region(BaseApiModel, HealthMixin):
2323 )
2424 # From PlanetRegionInfo (static/config)
2525 keyCombo : str = Field (
26- alias = "keyCombo" , default = "NOKEY" , description = "Unique key of planetIndex_regionIndex"
26+ alias = "keyCombo" ,
27+ default = "NOKEY" ,
28+ description = "Unique key of planetIndex_regionIndex" ,
2729 )
2830 id : Optional [int ] = Field (
29- alias = "id" , default = None , description = "The identifier of this campaign, hash of key_combo."
31+ alias = "id" ,
32+ default = None ,
33+ description = "The identifier of this campaign, hash of key_combo." ,
3034 )
3135 # From PlanetRegionInfo (static/config)
3236 planetName : Optional [str ] = Field (
@@ -45,7 +49,9 @@ class Region(BaseApiModel, HealthMixin):
4549 description = "Hash for the internal region settings." ,
4650 )
4751
48- name : Optional [str ] = Field (alias = "name" , default = None , description = "The name of the region." )
52+ name : Optional [str ] = Field (
53+ alias = "name" , default = None , description = "The name of the region."
54+ )
4955
5056 description : Optional [str ] = Field (
5157 alias = "description" ,
@@ -139,6 +145,45 @@ def calculate_change(self, diff: "Region") -> float:
139145 return 0.0
140146 return diff .health / diff .time_delta .total_seconds ()
141147
148+ def simple_region_view (
149+ self , prev : Optional ["Region" ] = None , avg : Optional ["Region" ] = None
150+ ) -> Tuple [str , List [str ]]:
151+ """Return a string containing the formated state of the planet.
152+
153+ Args:
154+ prev (Optional['Planet'], optional):
155+ avg (Optional['Planet'], optional):Average stats for the past X planets
156+
157+ Returns:
158+ Tuple[str,str]: _description_
159+ """
160+ diff = self - self
161+ if prev is not None :
162+ diff = prev
163+
164+ name = f"P#{ self .planetIndex } :{ self .planetName } -{ self .name } "
165+ players = f"{ emj ('hdi' )} : `{ self .players } { cfi (diff .players )} `"
166+
167+ outlist = [
168+ self .description ,
169+ f"{ players } , Owner: { self .owner } , Is available { self .isAvailable } " ,
170+ ]
171+ outlist .append (f"availabilityFactor { self .availabilityFactor } " )
172+ outlist .append (f"Region Size: { self .regionSize } " )
173+
174+ outlist .append (
175+ f"HP: { self .get_health_percent (self .health )} %({ self .health } ) { cfi (self .get_health_percent (diff .health ))} `"
176+ )
177+ outlist .append (
178+ f"Regen:`{ round ((100 * (self .regenPerSecond / self .maxHealth ))* 60 * 60 ,2 )} `" # type: ignore
179+ ) # type: ignore
180+ if avg :
181+ remaining_time = self .estimate_remaining_lib_time (avg )
182+ if remaining_time :
183+ outlist .append (remaining_time )
184+
185+ return name , outlist
186+
142187 def calculate_timeval (self , change : float , is_positive : bool ) -> datetime .datetime :
143188 if self .health is None or self .maxHealth is None :
144189 return self .retrieved_at
@@ -149,9 +194,13 @@ def calculate_timeval(self, change: float, is_positive: bool) -> datetime.dateti
149194 seconds = abs (self .health / change )
150195 return self .retrieved_at + datetime .timedelta (seconds = seconds )
151196
152- def format_estimated_time_string (self , change : float , esttime : datetime .datetime ) -> str :
197+ def format_estimated_time_string (
198+ self , change : float , esttime : datetime .datetime
199+ ) -> str :
153200 change_str = f"{ round (change , 5 )} "
154- timeval_str = f"Est.Loss { fdt (esttime , 'R' )} " if change > 0 else f"{ fdt (esttime , 'R' )} "
201+ timeval_str = (
202+ f"Est.Loss { fdt (esttime , 'R' )} " if change > 0 else f"{ fdt (esttime , 'R' )} "
203+ )
155204 return f"`[{ change_str } dps]`, { timeval_str } "
156205
157206 def estimate_remaining_lib_time (self , diff : "Region" ) -> str :
@@ -173,7 +222,9 @@ def average(regions: List["Region"]) -> "Region":
173222
174223 avg_health = sum (r .health for r in regions if r .health is not None ) // count
175224 avg_players = sum (r .players for r in regions if r .players is not None ) // count
176- avg_time = sum (r .time_delta .total_seconds () for r in regions if r .time_delta ) // count
225+ avg_time = (
226+ sum (r .time_delta .total_seconds () for r in regions if r .time_delta ) // count
227+ )
177228
178229 return Region (
179230 planetIndex = regions [0 ].planetIndex ,
0 commit comments