refactor war participant ID + fix campaign participant
This commit is contained in:
parent
ac01568c2f
commit
49bf6d7ea8
4 changed files with 55 additions and 26 deletions
|
|
@ -152,9 +152,16 @@ class Controller:
|
||||||
self.view.show_war_details(name=war.name, year=war.year)
|
self.view.show_war_details(name=war.name, year=war.year)
|
||||||
objectives = war.get_all_objectives()
|
objectives = war.get_all_objectives()
|
||||||
self.view.display_war_objectives(objectives)
|
self.view.display_war_objectives(objectives)
|
||||||
participants = war.get_all_war_participants()
|
war_parts = war.get_all_war_participants()
|
||||||
participants_for_display = [
|
participants_for_display = [
|
||||||
(self.model.get_player_name(p.id), p.faction, p.id) for p in participants
|
(
|
||||||
|
self.model.get_player_name(
|
||||||
|
p.player_id,
|
||||||
|
),
|
||||||
|
p.faction,
|
||||||
|
p.id,
|
||||||
|
)
|
||||||
|
for p in war_parts
|
||||||
]
|
]
|
||||||
self.view.display_war_participants(participants_for_display)
|
self.view.display_war_participants(participants_for_display)
|
||||||
|
|
||||||
|
|
@ -180,10 +187,15 @@ class Controller:
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.view.display_campaign_sectors(sectors_for_display)
|
self.view.display_campaign_sectors(sectors_for_display)
|
||||||
participants = camp.get_all_campaign_participants()
|
camp_parts = camp.get_all_campaign_participants()
|
||||||
participants_for_display = [
|
participants_for_display = [
|
||||||
(self.model.get_player_name(p.war_participant_id), p.leader, p.theme, p.id)
|
(
|
||||||
for p in participants
|
self.model.get_participant_name(p.war_participant_id),
|
||||||
|
p.leader,
|
||||||
|
p.theme,
|
||||||
|
p.id,
|
||||||
|
)
|
||||||
|
for p in camp_parts
|
||||||
]
|
]
|
||||||
self.view.display_campaign_participants(participants_for_display)
|
self.view.display_campaign_participants(participants_for_display)
|
||||||
|
|
||||||
|
|
@ -346,13 +358,13 @@ class Controller:
|
||||||
self.model.update_objective(item_id, name=name, description=description)
|
self.model.update_objective(item_id, name=name, description=description)
|
||||||
self.refresh(RefreshScope.WAR_DETAILS)
|
self.refresh(RefreshScope.WAR_DETAILS)
|
||||||
elif item_type == ItemType.WAR_PARTICIPANT:
|
elif item_type == ItemType.WAR_PARTICIPANT:
|
||||||
part = self.model.get_war_participant(item_id)
|
camp_part = self.model.get_war_participant(item_id)
|
||||||
player = self.model.get_player(part.id)
|
player = self.model.get_player(camp_part.player_id)
|
||||||
dialog = WarParticipantDialog(
|
dialog = WarParticipantDialog(
|
||||||
self.view,
|
self.view,
|
||||||
players=[player],
|
players=[player],
|
||||||
default_player_id=part.id,
|
default_player_id=camp_part.id,
|
||||||
default_faction=part.faction,
|
default_faction=camp_part.faction,
|
||||||
editable_player=False,
|
editable_player=False,
|
||||||
)
|
)
|
||||||
if dialog.exec() == QDialog.DialogCode.Accepted:
|
if dialog.exec() == QDialog.DialogCode.Accepted:
|
||||||
|
|
@ -391,15 +403,16 @@ class Controller:
|
||||||
)
|
)
|
||||||
self.refresh(RefreshScope.CAMPAIGN_DETAILS)
|
self.refresh(RefreshScope.CAMPAIGN_DETAILS)
|
||||||
elif item_type == ItemType.CAMPAIGN_PARTICIPANT:
|
elif item_type == ItemType.CAMPAIGN_PARTICIPANT:
|
||||||
part = self.model.get_campaign_participant(item_id)
|
camp_part = self.model.get_campaign_participant(item_id)
|
||||||
player = self.model.get_player(part.war_participant_id)
|
war_part = self.model.get_war_participant(camp_part.war_participant_id)
|
||||||
|
player = self.model.get_player(war_part.player_id)
|
||||||
part_opt = [ParticipantOption(id=player.id, name=player.name)]
|
part_opt = [ParticipantOption(id=player.id, name=player.name)]
|
||||||
dialog = CampaignParticipantDialog(
|
dialog = CampaignParticipantDialog(
|
||||||
self.view,
|
self.view,
|
||||||
participants=part_opt,
|
participants=part_opt,
|
||||||
default_participant_id=part.id,
|
default_participant_id=camp_part.id,
|
||||||
default_leader=part.leader,
|
default_leader=camp_part.leader,
|
||||||
default_theme=part.theme,
|
default_theme=camp_part.theme,
|
||||||
editable_player=False,
|
editable_player=False,
|
||||||
)
|
)
|
||||||
if dialog.exec() == QDialog.DialogCode.Accepted:
|
if dialog.exec() == QDialog.DialogCode.Accepted:
|
||||||
|
|
@ -595,7 +608,7 @@ class Controller:
|
||||||
self.selected_campaign_id
|
self.selected_campaign_id
|
||||||
)
|
)
|
||||||
part_opts = [
|
part_opts = [
|
||||||
ParticipantOption(id=p.id, name=self.model.get_player_name(p.id))
|
ParticipantOption(id=p.id, name=self.model.get_player_name(p.player_id))
|
||||||
for p in participants
|
for p in participants
|
||||||
]
|
]
|
||||||
dialog = CampaignParticipantDialog(self.view, participants=part_opts)
|
dialog = CampaignParticipantDialog(self.view, participants=part_opts)
|
||||||
|
|
|
||||||
|
|
@ -51,9 +51,8 @@ class Campaign:
|
||||||
def get_all_campaign_participants_ids(self) -> set[str]:
|
def get_all_campaign_participants_ids(self) -> set[str]:
|
||||||
return set(self.participants.keys())
|
return set(self.participants.keys())
|
||||||
|
|
||||||
def has_participant(self, player_id: str) -> bool:
|
def has_participant(self, participant_id: str) -> bool:
|
||||||
##TODO change lookup id target
|
return participant_id in self.participants
|
||||||
return player_id in self.participants
|
|
||||||
|
|
||||||
def add_campaign_participant(
|
def add_campaign_participant(
|
||||||
self, war_participant_id: str, leader: str, theme: str
|
self, war_participant_id: str, leader: str, theme: str
|
||||||
|
|
@ -233,11 +232,13 @@ class Campaign:
|
||||||
|
|
||||||
|
|
||||||
class CampaignParticipant:
|
class CampaignParticipant:
|
||||||
def __init__(self, *, war_participant_id: str, leader: str, theme: str):
|
def __init__(
|
||||||
|
self, *, war_participant_id: str, leader: str | None, theme: str | None
|
||||||
|
):
|
||||||
self.id: str = str(uuid4())
|
self.id: str = str(uuid4())
|
||||||
self.war_participant_id: str = war_participant_id # ref to War.participants
|
self.war_participant_id: str = war_participant_id # ref to War.participants
|
||||||
self.leader: str = leader
|
self.leader: str | None = leader
|
||||||
self.theme: str = theme
|
self.theme: str | None = theme
|
||||||
|
|
||||||
def set_id(self, new_id: str):
|
def set_id(self, new_id: str):
|
||||||
self.id = new_id
|
self.id = new_id
|
||||||
|
|
@ -254,7 +255,12 @@ class CampaignParticipant:
|
||||||
|
|
||||||
class Sector:
|
class Sector:
|
||||||
def __init__(
|
def __init__(
|
||||||
self, name: str, round_id: str, major_id: str, minor_id: str, influence_id: str
|
self,
|
||||||
|
name: str,
|
||||||
|
round_id: str,
|
||||||
|
major_id: str | None,
|
||||||
|
minor_id: str | None,
|
||||||
|
influence_id: str | None,
|
||||||
):
|
):
|
||||||
self.id: str = str(uuid4())
|
self.id: str = str(uuid4())
|
||||||
self.name: str = name
|
self.name: str = name
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ class Model:
|
||||||
return war
|
return war
|
||||||
raise KeyError(f"Participant {participant_id} not found in any War")
|
raise KeyError(f"Participant {participant_id} not found in any War")
|
||||||
|
|
||||||
def get_war_by_campaign_participant(self, participant_id: str) -> Campaign:
|
def get_war_by_campaign_participant(self, participant_id: str) -> War:
|
||||||
for war in self.wars.values():
|
for war in self.wars.values():
|
||||||
camp = war.get_campaign_by_campaign_participant(participant_id)
|
camp = war.get_campaign_by_campaign_participant(participant_id)
|
||||||
if camp is not None:
|
if camp is not None:
|
||||||
|
|
@ -304,6 +304,11 @@ class Model:
|
||||||
camp = self.get_campaign(camp_id)
|
camp = self.get_campaign(camp_id)
|
||||||
return camp.add_campaign_participant(player_id, leader, theme)
|
return camp.add_campaign_participant(player_id, leader, theme)
|
||||||
|
|
||||||
|
def get_participant_name(self, participant_id: str) -> str:
|
||||||
|
war = self.get_war_by_war_participant(participant_id)
|
||||||
|
war_part = war.get_war_participant(participant_id)
|
||||||
|
return self.players[war_part.player_id].name
|
||||||
|
|
||||||
def get_campaign_participant(self, participant_id) -> CampaignParticipant:
|
def get_campaign_participant(self, participant_id) -> CampaignParticipant:
|
||||||
for war in self.wars.values():
|
for war in self.wars.values():
|
||||||
for camp in war.campaigns:
|
for camp in war.campaigns:
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ class War:
|
||||||
def add_war_participant(self, player_id: str, faction: str) -> WarParticipant:
|
def add_war_participant(self, player_id: str, faction: str) -> WarParticipant:
|
||||||
if player_id in self.participants:
|
if player_id in self.participants:
|
||||||
raise ValueError("Player already registered in this war")
|
raise ValueError("Player already registered in this war")
|
||||||
participant = WarParticipant(player_id, faction)
|
participant = WarParticipant(player_id=player_id, faction=faction)
|
||||||
self.participants[participant.id] = participant
|
self.participants[participant.id] = participant
|
||||||
return participant
|
return participant
|
||||||
|
|
||||||
|
|
@ -99,6 +99,7 @@ class War:
|
||||||
|
|
||||||
def update_war_participant(self, player_id: str, *, faction: str):
|
def update_war_participant(self, player_id: str, *, faction: str):
|
||||||
part = self.get_war_participant(player_id)
|
part = self.get_war_participant(player_id)
|
||||||
|
# Can't change referred Model.players
|
||||||
part.set_faction(faction)
|
part.set_faction(faction)
|
||||||
|
|
||||||
def remove_war_participant(self, player_id: str):
|
def remove_war_participant(self, player_id: str):
|
||||||
|
|
@ -319,12 +320,16 @@ class Objective:
|
||||||
|
|
||||||
|
|
||||||
class WarParticipant:
|
class WarParticipant:
|
||||||
def __init__(self, player_id: str, faction: str):
|
def __init__(self, *, player_id: str, faction: str):
|
||||||
self.id: str = player_id # ref to Model.players
|
self.id: str = str(uuid4())
|
||||||
|
self.player_id: str = player_id # ref to WarModel.players
|
||||||
self.faction: str = faction
|
self.faction: str = faction
|
||||||
|
|
||||||
def set_id(self, new_id: str):
|
def set_id(self, new_id: str):
|
||||||
self.id = new_id
|
self.id = new_id
|
||||||
|
|
||||||
|
def set_player(self, new_player: str):
|
||||||
|
self.player_id = new_player
|
||||||
|
|
||||||
def set_faction(self, new_faction: str):
|
def set_faction(self, new_faction: str):
|
||||||
self.faction = new_faction
|
self.faction = new_faction
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue