Merge remote-tracking branch 'origin/master' into village

# Conflicts:
#	squirrelbattle/display/texturepack.py
#	squirrelbattle/interfaces.py
This commit is contained in:
Yohann D'ANELLO
2020-12-01 17:07:40 +01:00
52 changed files with 1763 additions and 206 deletions

View File

@ -1,11 +1,13 @@
#!/usr/bin/env python
from random import randint
# Copyright (C) 2020 by ÿnérant, eichhornchen, nicomarg, charlse
# SPDX-License-Identifier: GPL-3.0-or-later
from enum import Enum, auto
from math import sqrt
from random import choice, randint
from typing import List, Optional, Any
from squirrelbattle.display.texturepack import TexturePack
from .display.texturepack import TexturePack
from .translations import gettext as _
class Logs:
@ -127,7 +129,7 @@ class Map:
"""
Put randomly {count} hedgehogs on the map, where it is available.
"""
for _ in range(count):
for ignored in range(count):
y, x = 0, 0
while True:
y, x = randint(0, self.height - 1), randint(0, self.width - 1)
@ -319,16 +321,20 @@ class Entity:
"""
return isinstance(self, FriendlyEntity)
@property
def translated_name(self) -> str:
return _(self.name.replace("_", " "))
@staticmethod
def get_all_entity_classes():
"""
Returns all entities subclasses
"""
from squirrelbattle.entities.items import Heart, Bomb
from squirrelbattle.entities.monsters import Beaver, Hedgehog, \
from squirrelbattle.entities.monsters import Tiger, Hedgehog, \
Rabbit, TeddyBear
from squirrelbattle.entities.friendly import Merchant,Sunflower
return [Beaver, Bomb, Heart, Hedgehog, Rabbit, TeddyBear,Sunflower]
return [Tiger, Bomb, Heart, Hedgehog, Rabbit, TeddyBear,Sunflower]
@staticmethod
def get_all_entity_classes_in_a_dict() -> dict:
@ -336,12 +342,12 @@ class Entity:
Returns all entities subclasses in a dictionary
"""
from squirrelbattle.entities.player import Player
from squirrelbattle.entities.monsters import Beaver, Hedgehog, Rabbit, \
from squirrelbattle.entities.monsters import Tiger, Hedgehog, Rabbit, \
TeddyBear
from squirrelbattle.entities.items import Bomb, Heart
from squirrelbattle.entities.friendly import Merchant,Sunflower
return {
"Beaver": Beaver,
"Tiger": Tiger,
"Bomb": Bomb,
"Heart": Heart,
"Hedgehog": Hedgehog,
@ -399,8 +405,10 @@ class FightingEntity(Entity):
"""
Deals damage to the opponent, based on the stats
"""
return f"{self.name} hits {opponent.name}. "\
+ opponent.take_damage(self, self.strength)
return _("{name} hits {opponent}.")\
.format(name=_(self.translated_name.capitalize()),
opponent=_(opponent.translated_name)) + " " + \
opponent.take_damage(self, self.strength)
def take_damage(self, attacker: "Entity", amount: int) -> str:
"""
@ -409,8 +417,11 @@ class FightingEntity(Entity):
self.health -= amount
if self.health <= 0:
self.die()
return f"{self.name} takes {amount} damage."\
+ (f" {self.name} dies." if self.health <= 0 else "")
return _("{name} takes {amount} damage.")\
.format(name=self.translated_name.capitalize(), amount=str(amount))\
+ (" " + _("{name} dies.")
.format(name=self.translated_name.capitalize())
if self.health <= 0 else "")
def die(self) -> None:
"""
@ -451,5 +462,5 @@ class FriendlyEntity(Entity):
def talk_to(self, player : Any) -> str:
a = randint(0,len(self.dialogue_option)-1)
return "The sunflower said : "+self.dialogue_option[a]