from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Introduction(Page): form_model = 'player' form_fields = [] def is_displayed(self): return self.player.round_number == 1 def before_next_page(self): self.player.trole = self.group.id_in_subsession % 2 class Decision1(Page): form_model = 'player' form_fields = ['Choice_B'] def is_displayed(self): return self.player.round_number == 1 and self.player.trole==1 class Decision11(Page): form_model = 'player' form_fields = ['Choice_B1'] def is_displayed(self): return self.player.round_number == 1 and self.player.trole==0 class ResultsWaitPage(WaitPage): body_text = "Waiting for the other participant to decide." after_all_players_arrive = 'set_payoffs' def is_displayed(self): return self.player.round_number == 1 class Results1(Page): def is_displayed(self): return self.player.round_number == 1 and self.player.trole==1 def vars_for_template(self): return dict(other_player_choice_B=self.player.other_player().Choice_B ) class Results11(Page): def is_displayed(self): return self.player.round_number == 1 and self.player.trole==0 def vars_for_template(self): return dict(other_player_choice_B1=self.player.other_player().Choice_B1) class Decision2(Page): form_model = 'player' form_fields = ['Choice_M'] def is_displayed(self): return self.player.round_number == 2 and self.player.trole==1 class Decision21(Page): form_model = 'player' form_fields = ['Choice_M1'] def is_displayed(self): return self.player.round_number == 2 and self.player.trole==0 class ResultsWaitPage2(WaitPage): body_text = "Waiting for the other participant to decide." after_all_players_arrive = 'set_payoffs' def is_displayed(self): return self.player.round_number == 2 class Results2(Page): def is_displayed(self): return self.player.round_number == 2 and self.player.trole==1 def vars_for_template(self): return dict(other_player_choice_M=self.player.other_player().Choice_M) class Results21(Page): def is_displayed(self): return self.player.round_number == 2 and self.player.trole==0 def vars_for_template(self): return dict(other_player_choice_M1=self.player.other_player().Choice_M1) class Decision3(Page): form_model = 'player' form_fields = ['Choice_E'] def is_displayed(self): return self.player.round_number == 3 and self.player.trole==1 class Decision31(Page): form_model = 'player' form_fields = ['Choice_E1'] def is_displayed(self): return self.player.round_number == 3 and self.player.trole==0 class ResultsWaitPage3(WaitPage): body_text = "Waiting for the other participant to decide." after_all_players_arrive = 'set_payoffs' def is_displayed(self): return self.player.round_number == 3 class Results3(Page): def is_displayed(self): return self.player.round_number == 3 def vars_for_template(self): return dict(other_player_choice_M=self.player.other_player().Choice_E) def before_next_page(self): self.player.gain_final=self.player.in_round(1).gain_1 + self.player.in_round(2).gain_2+ self.player.in_round(3).gain_3 class Results(Page): form_model = 'player' form_fields = [] def is_displayed(self): return self.player.round_number == 3 and self.player.trole==1 def vars_for_template(self): return dict(Gain_1=self.player.in_round(1).gain_1, Gain_2=self.player.in_round(2).gain_2, Gain_3=self.player.in_round(3).gain_3, Choice_1=self.player.in_round(1).Choice_B, Choice_2=self.player.in_round(2).Choice_M, Choice_3=self.player.in_round(3).Choice_E, other_player_choice_1=self.player.other_player().in_round(1).Choice_B, other_player_choice_2=self.player.other_player().in_round(2).Choice_M, other_player_choice_3=self.player.other_player().in_round(3).Choice_E ) class Results12(Page): form_model = 'player' form_fields = [] def is_displayed(self): return self.player.round_number == 3 and self.player.trole==0 def vars_for_template(self): return dict(Gain_1=self.player.in_round(1).gain_1, Gain_2=self.player.in_round(2).gain_2, Gain_3=self.player.in_round(3).gain_3, Choice_1=self.player.in_round(1).Choice_B1, Choice_2=self.player.in_round(2).Choice_M1, Choice_3=self.player.in_round(3).Choice_E1, other_player_choice_1=self.player.other_player().in_round(1).Choice_B1, other_player_choice_2=self.player.other_player().in_round(2).Choice_M1, other_player_choice_3=self.player.other_player().in_round(3).Choice_E1 ) page_sequence = [Introduction, Decision1, Decision11, ResultsWaitPage, Decision2, Decision21, ResultsWaitPage2, Decision3, Decision31, ResultsWaitPage3, Results, Results12]