From 94c416faa50ad8a67c6259046d9bbdf6188f383e Mon Sep 17 00:00:00 2001 From: Eriks K Date: Wed, 8 Jul 2020 18:27:48 +0300 Subject: [PATCH] Battle, BattleSide, BattleDivision repr and str definitions --- erepublik/__init__.py | 2 +- erepublik/classes.py | 47 ++++++++++++++++++++++++++++++------------- 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/erepublik/__init__.py b/erepublik/__init__.py index 63ffd59..ec4481c 100644 --- a/erepublik/__init__.py +++ b/erepublik/__init__.py @@ -5,7 +5,7 @@ __author__ = """Eriks Karls""" __email__ = 'eriks@72.lv' __version__ = '0.20.2.2' -__commit_id__ = "3927b9b" +__commit_id__ = "ba84076" from erepublik import classes, utils from erepublik.citizen import Citizen diff --git a/erepublik/classes.py b/erepublik/classes.py index c9e9881..f5d91e6 100644 --- a/erepublik/classes.py +++ b/erepublik/classes.py @@ -672,9 +672,13 @@ class BattleSide: def id(self) -> int: return self.country.id + def __repr__(self): + side_text = "Defender" if self.defender else "Invader " + return f"" + def __str__(self): side_text = "Defender" if self.defender else "Invader " - return f"" + return f"{side_text} {self.country.name} - {self.points:02d} points" def __format__(self, format_spec): return self.country.iso @@ -725,7 +729,15 @@ class BattleDivision: return _TERRAINS[self.terrain] def __str__(self): - return f"#{self.battle.id} {self.battle.invader} ({self.terrain_display})" + base_name = f"Div #{self.id} d{self.div}" + if self.terrain: + base_name += f" ({self.terrain_display})" + if self.div_end: + base_name += " Ended" + return base_name + + def __repr__(self): + return f"" class Battle: @@ -738,6 +750,8 @@ class Battle: invader: BattleSide defender: BattleSide div: Dict[int, BattleDivision] + region_id: int + region_name: str @property def has_air(self) -> bool: @@ -753,6 +767,10 @@ class Battle: return True return bool(self.zone_id % 4) + @property + def link(self): + return f"https://www.erepublik.com/en/military/battlefield/{self.id}" + def __init__(self, battle: Dict[str, Any]): """Object representing eRepublik battle. @@ -764,19 +782,20 @@ class Battle: self.zone_id = int(battle.get('zone_id')) self.is_rw = bool(battle.get('is_rw')) self.is_as = bool(battle.get('is_as')) - self.is_dict_lib = bool(battle.get('is_dict')) or bool(battle.get('is_lib')) + self.region_id = battle.get('region', {}).get('id') + self.region_name = battle.get('region', {}).get('name') self.start = datetime.datetime.fromtimestamp(int(battle.get('start', 0)), tz=utils.erep_tz) self.invader = BattleSide( - self, battle.get('inv', {}).get('id'), battle.get('inv', {}).get('points'), - [row.get('id') for row in battle.get('inv', {}).get('ally_list')], - [row.get('id') for row in battle.get('inv', {}).get('ally_list') if row['deployed']], False + self, COUNTRIES[battle.get('inv', {}).get('id')], battle.get('inv', {}).get('points'), + [COUNTRIES[row.get('id')] for row in battle.get('inv', {}).get('ally_list')], + [COUNTRIES[row.get('id')] for row in battle.get('inv', {}).get('ally_list') if row['deployed']], False ) self.defender = BattleSide( - self, battle.get('def', {}).get('id'), battle.get('def', {}).get('points'), - [row.get('id') for row in battle.get('def', {}).get('ally_list')], - [row.get('id') for row in battle.get('def', {}).get('ally_list') if row['deployed']], True + self, COUNTRIES[battle.get('def', {}).get('id')], battle.get('def', {}).get('points'), + [COUNTRIES[row.get('id')] for row in battle.get('def', {}).get('ally_list')], + [COUNTRIES[row.get('id')] for row in battle.get('def', {}).get('ally_list') if row['deployed']], True ) self.div = {} @@ -795,7 +814,7 @@ class Battle: self.div.update({div: battle_div}) - def __repr__(self): + def __str__(self): now = utils.now() is_started = self.start < utils.now() if is_started: @@ -803,10 +822,10 @@ class Battle: else: time_part = "-{}".format(self.start - now) - return f"Battle {self.id} | " \ - f"{self.invader} : {self.defender} | " \ - f"Round {self.zone_id:2} | " \ - f"Round time {time_part}" + return f"Battle {self.id} for {self.region_name[:16]} | {self.invader} : {self.defender} | Round time {time_part}" + + def __repr__(self): + return f"" class EnergyToFight: