fixed player's deck create

This commit is contained in:
Alexander Karpov 2022-07-30 00:00:59 +03:00
parent 7e48242780
commit 002f5a6783
5 changed files with 17 additions and 16 deletions

View File

@ -168,6 +168,7 @@ class HeroInDeck(models.Model):
verbose_name = "Hero in deck" verbose_name = "Hero in deck"
verbose_name_plural = "Heroes in decks" verbose_name_plural = "Heroes in decks"
ordering = ["y", "x"] ordering = ["y", "x"]
unique_together = ["deck", "x", "y"]
class PlayerAuthSession(models.Model): class PlayerAuthSession(models.Model):

View File

@ -7,18 +7,15 @@ def create_first_deck(player: Player):
deck = Deck.objects.create(player=player) deck = Deck.objects.create(player=player)
positions = [] positions = []
for x in range(8): for x in range(1, 9):
for y in range(2): for y in range(1, 3):
positions.append((x, y)) positions.append((x, y))
positions.remove((3, 0)) positions.remove((4, 1))
positions.remove((4, 0)) positions.remove((5, 1))
random.shuffle(positions) random.shuffle(positions)
types = ( types = ["KING", "WIZARD"] + ["ARCHER" for _ in range(4)] + ["WARRIOR" for _ in range(6)]
["KING", "WIZARD"]
+ ["ARCHER" for _ in range(4)]
+ ["WARRIOR" for _ in range(6)]
)
for _ in range(4): for _ in range(4):
t = random.choice(HeroTypes.choices[:3])[0] t = random.choice(HeroTypes.choices[:3])[0]
if t == "WIZARD" and types.count("WIZARD") > 1: if t == "WIZARD" and types.count("WIZARD") > 1:
@ -33,11 +30,11 @@ def create_first_deck(player: Player):
# set random position on deck for heroes # set random position on deck for heroes
if t == "KING": if t == "KING":
pos_x = 4 pos_x = 5
pos_y = 0 pos_y = 1
elif t == "WIZARD": elif t == "WIZARD":
pos_x = 3 pos_x = 4
pos_y = 0 pos_y = 1
else: else:
pos_x = positions[counter][0] pos_x = positions[counter][0]
pos_y = positions[counter][1] pos_y = positions[counter][1]
@ -49,4 +46,4 @@ def create_first_deck(player: Player):
hero.speed = random.randint(0, 10) hero.speed = random.randint(0, 10)
hero.save() hero.save()
HeroInDeck.objects.create(deck=deck, hero=hero, x=pos_x + 1, y=pos_y + 1) HeroInDeck.objects.create(deck=deck, hero=hero, x=pos_x, y=pos_y)

View File

@ -76,3 +76,6 @@ class HeroInGame(models.Model):
self.health = self.hero.health self.health = self.hero.health
super().save(force_insert, force_update, using, update_fields) super().save(force_insert, force_update, using, update_fields)
class Meta:
unique_together = ["x", "y", "room"]

View File

@ -56,7 +56,7 @@ def _validate_hero_movement(
def _print_board(room: Room): def _print_board(room: Room):
for y in range(1, 8): for y in range(1, 9):
for x in range(1, 9): for x in range(1, 9):
try: try:
hero = HeroInGame.objects.get(x=x, y=y, room=room) hero = HeroInGame.objects.get(x=x, y=y, room=room)

View File

@ -55,7 +55,7 @@ def sync_create_room(
player=p, player=p,
room=room, room=room,
x=hero_in_deck.x, x=hero_in_deck.x,
y=8 - hero_in_deck.y, y=8 if hero_in_deck.y == 1 else 7,
) )
return room.slug return room.slug