Responses
Response
Bases: Model
Base model for game state updates broadcasted to the frontend.
Frontend Response Payload Example:
{
"type": "Response",
"money": {"1": 1500, "2": 1200},
"active_phase_player": 2,
"active_turn_player": 2,
"phase": "management"
}
Source code in magnate/models.py
class Response(models.Model):
"""
Base model for game state updates broadcasted to the frontend.
Frontend Response Payload Example:
```json
{
"type": "Response",
"money": {"1": 1500, "2": 1200},
"active_phase_player": 2,
"active_turn_player": 2,
"phase": "management"
}
```
"""
money = models.JSONField(default=dict, blank=True)
active_phase_player = models.ForeignKey('CustomUser', on_delete=models.SET_NULL, null=True, related_name='response_phase_to_play')
active_turn_player = models.ForeignKey('CustomUser', on_delete=models.SET_NULL, null=True, related_name='response_turns_to_play')
phase = models.CharField(choices=Game.GamePhase, max_length=20)
positions = models.JSONField(default=dict, blank=True)
ResponseMovement
Bases: Response
Base response for an event that moves a player across the board.
Frontend Response Payload Example:
{
"type": "ResponseMovement",
"money": {"1": 1500, "2": 1200},
"active_phase_player": 2,
"active_turn_player": 2,
"phase": "moving",
"path": [10, 11, 12, 13, 14, 15],
"fantasy_event": null
}
Source code in magnate/models.py
class ResponseMovement(Response):
"""
Base response for an event that moves a player across the board.
Frontend Response Payload Example:
```json
{
"type": "ResponseMovement",
"money": {"1": 1500, "2": 1200},
"active_phase_player": 2,
"active_turn_player": 2,
"phase": "moving",
"path": [10, 11, 12, 13, 14, 15],
"fantasy_event": null
}
```
"""
path = models.JSONField(default=list, blank=True)
fantasy_event = models.ForeignKey('FantasyEvent', on_delete=models.CASCADE, null=True, blank=True)
ResponseThrowDices
Bases: ResponseMovement
Response detailing the result of a dice roll and valid movement destinations.
Frontend Response Payload Example:
{
"type": "ResponseThrowDices",
"money": {"1": 1500, "2": 1200},
"active_phase_player": 2,
"active_turn_player": 2,
"phase": "moving",
"path": [10, 11, 12],
"fantasy_event": null,
"dice1": 4,
"dice2": 3,
"dice_bus": 1,
"destinations": [17],
"triple": false,
"streak": 0
}
Source code in magnate/models.py
class ResponseThrowDices(ResponseMovement):
"""
Response detailing the result of a dice roll and valid movement destinations.
Frontend Response Payload Example:
```json
{
"type": "ResponseThrowDices",
"money": {"1": 1500, "2": 1200},
"active_phase_player": 2,
"active_turn_player": 2,
"phase": "moving",
"path": [10, 11, 12],
"fantasy_event": null,
"dice1": 4,
"dice2": 3,
"dice_bus": 1,
"destinations": [17],
"triple": false,
"streak": 0
}
```
"""
dice1 = models.PositiveIntegerField(default=0)
dice2 = models.PositiveIntegerField(default=0)
dice_bus = models.PositiveIntegerField(default=0)
destinations = models.JSONField(default=list, blank=True)
triple = models.BooleanField(default=False)
streak = models.IntegerField(default=0)
ResponseChooseSquare
Bases: ResponseMovement
Response confirming a player's movement to a specifically chosen square.
Frontend Response Payload Example:
{
"type": "ResponseChooseSquare",
"money": {"1": 1500, "2": 1200},
"active_phase_player": 2,
"active_turn_player": 2,
"phase": "moving",
"path": [10, 25],
"fantasy_event": null
}
Source code in magnate/models.py
class ResponseChooseSquare(ResponseMovement):
"""
Response confirming a player's movement to a specifically chosen square.
Frontend Response Payload Example:
```json
{
"type": "ResponseChooseSquare",
"money": {"1": 1500, "2": 1200},
"active_phase_player": 2,
"active_turn_player": 2,
"phase": "moving",
"path": [10, 25],
"fantasy_event": null
}
```
"""
pass
ResponseChooseFantasy
Bases: Response
Response delivering the result of a drawn Chance/Community Chest card.
Frontend Response Payload Example:
{
"type": "ResponseChooseFantasy",
"money": {"1": 1600, "2": 1200},
"active_phase_player": 2,
"active_turn_player": 2,
"phase": "management",
"fantasy_event": 5
}
Source code in magnate/models.py
class ResponseChooseFantasy(Response):
"""
Response delivering the result of a drawn Chance/Community Chest card.
Frontend Response Payload Example:
```json
{
"type": "ResponseChooseFantasy",
"money": {"1": 1600, "2": 1200},
"active_phase_player": 2,
"active_turn_player": 2,
"phase": "management",
"fantasy_event": 5
}
```
"""
fantasy_event = models.ForeignKey('FantasyEvent', on_delete=models.CASCADE, null=True, blank=True)
ResponseAuction
Bases: Response
Response updating the state of an ongoing or completed auction. Note: The @property decorators will likely be serialized as regular fields.
Frontend Response Payload Example:
{
"type": "ResponseAuction",
"money": {"1": 1150, "2": 1200},
"active_phase_player": 1,
"active_turn_player": 2,
"phase": "management",
"auction": 12,
"winner": 1,
"final_amount": 350,
"is_tie": false
}
Source code in magnate/models.py
class ResponseAuction(Response):
"""
Response updating the state of an ongoing or completed auction.
Note: The @property decorators will likely be serialized as regular fields.
Frontend Response Payload Example:
```json
{
"type": "ResponseAuction",
"money": {"1": 1150, "2": 1200},
"active_phase_player": 1,
"active_turn_player": 2,
"phase": "management",
"auction": 12,
"winner": 1,
"final_amount": 350,
"is_tie": false
}
```
"""
auction = models.OneToOneField('Auction', on_delete=models.CASCADE, related_name='response')
@property
def winner(self):
return self.auction.winner
@property
def final_amount(self):
return self.auction.final_amount
@property
def is_tie(self):
return self.auction.is_tie