diff --git a/gisim/cards/characters/Dendro/Tighnari.py b/gisim/cards/characters/Dendro/Tighnari.py index 96cd0b9..ca96516 100644 --- a/gisim/cards/characters/Dendro/Tighnari.py +++ b/gisim/cards/characters/Dendro/Tighnari.py @@ -2,11 +2,11 @@ from typing import cast from classes.message import DealDamageMsg, RoundEndMsg -from gisim.classes.status import CharacterStatusEntity from env import INF_INT from gisim.cards.characters.base import CharacterCard, CharacterSkill, GenericSkill from gisim.classes.enums import ElementType, Nation, SkillType, WeaponType +from gisim.classes.status import CharacterStatusEntity from gisim.classes.summon import AttackSummon diff --git a/gisim/cards/characters/Electro/RaidenShogun.py b/gisim/cards/characters/Electro/RaidenShogun.py index b86b554..78c4d1d 100644 --- a/gisim/cards/characters/Electro/RaidenShogun.py +++ b/gisim/cards/characters/Electro/RaidenShogun.py @@ -2,8 +2,6 @@ from queue import PriorityQueue from typing import TYPE_CHECKING, Dict, cast -from gisim.classes.status import CharacterStatusEntity - from gisim.cards.characters.base import CharacterCard, CharacterSkill, GenericSkill from gisim.classes.enums import ( AttackType, @@ -22,6 +20,7 @@ RoundEndMsg, UseSkillMsg, ) +from gisim.classes.status import CharacterStatusEntity from gisim.classes.summon import AttackSummon from gisim.env import INF_INT diff --git a/gisim/cards/characters/Hydro/Xingqiu.py b/gisim/cards/characters/Hydro/Xingqiu.py index b623d8d..6b97aa9 100644 --- a/gisim/cards/characters/Hydro/Xingqiu.py +++ b/gisim/cards/characters/Hydro/Xingqiu.py @@ -19,6 +19,7 @@ from gisim.classes.status import CombatStatusEntity from gisim.classes.summon import AttackSummon, Summon from gisim.env import INF_INT +from gisim.get_game_info import get_game_info class GuhuaStyle(GenericSkill): diff --git a/gisim/cards/characters/Pyro/Hutao.py b/gisim/cards/characters/Pyro/Hutao.py index a669f43..6c8cca3 100644 --- a/gisim/cards/characters/Pyro/Hutao.py +++ b/gisim/cards/characters/Pyro/Hutao.py @@ -2,8 +2,6 @@ from queue import PriorityQueue from typing import TYPE_CHECKING, Dict, List, cast -from gisim.classes.status import CharacterStatusEntity - from gisim.cards.characters.base import CharacterCard, CharacterSkill, GenericSkill from gisim.classes.enums import ( AttackType, @@ -14,6 +12,7 @@ WeaponType, ) from gisim.classes.message import DealDamageMsg, HealHpMsg, RoundEndMsg, UseSkillMsg +from gisim.classes.status import CharacterStatusEntity from gisim.env import INF_INT if TYPE_CHECKING: diff --git a/gisim/game.py b/gisim/game.py index b3eb9db..0871077 100644 --- a/gisim/game.py +++ b/gisim/game.py @@ -15,7 +15,13 @@ class Game: - def __init__( + def __new__(cls): + """Singleton Mode for global game info access""" + if not hasattr(cls, "instance"): + cls.instance = super(Game, cls).__new__(cls) + return cls.instance + + def init_deck( self, player1_deck: dict, player2_deck: dict, seed: Optional[int] = None ): if seed is None: diff --git a/gisim/get_game_info.py b/gisim/get_game_info.py new file mode 100644 index 0000000..e2c4568 --- /dev/null +++ b/gisim/get_game_info.py @@ -0,0 +1,5 @@ +def get_game_info(): + from gisim.game import Game + + game = Game() + return game.encode_game_info() diff --git a/tests/test_element_reaction.py b/tests/test_element_reaction.py index aec4c80..a47f48d 100644 --- a/tests/test_element_reaction.py +++ b/tests/test_element_reaction.py @@ -4,9 +4,10 @@ from gisim.classes.reaction import ( can_attachable, element_reaction, + get_reaction_system, + get_reaction_system_by_type, sum_element_reaction, ) -from gisim.elemental_reaction import get_reaction_system, get_reaction_system_by_type # 获取反应体系 多元素反应 diff --git a/tests/test_framework.py b/tests/test_framework.py index c2c9640..12bc23d 100644 --- a/tests/test_framework.py +++ b/tests/test_framework.py @@ -18,7 +18,8 @@ "characters": ["Kamisato Ayaka", "Kamisato Ayaka", "Kamisato Ayaka"], "cards": [], } - game = Game(player1_deck, player2_deck, seed=10) + game = Game() + game.init_deck(player1_deck, player2_deck, seed=10) player1_agent = AttackOnlyAgent(PlayerID.PLAYER1) player2_agent = NoAttackAgent(PlayerID.PLAYER2) game_end = False diff --git a/tests/test_framework_with_reaction.py b/tests/test_framework_with_reaction.py index dd169f5..52b3ff1 100644 --- a/tests/test_framework_with_reaction.py +++ b/tests/test_framework_with_reaction.py @@ -19,7 +19,9 @@ "characters": ["KamisatoAyaka", "Xingqiu", "Sucrose"], "cards": [], } - game = Game(player1_deck, player2_deck, seed=10) + game = Game() + game.init_deck(player1_deck=player1_deck, player2_deck=player1_deck, seed=10) + player1_agent = AttackOnlyAgent(PlayerID.PLAYER1) player2_agent = AttackOnlyAgent(PlayerID.PLAYER2) # player2_agent = NoAttackAgent(PlayerID.PLAYER2)