def clone(arg): known_types = ('state') try: assert arg.type in known_types, f'Can clone only types: {known_types}, received {arg}' if arg.type == 'state': return StateAsDict(arg).to_state() except: raise ValueError('Argument does not have type atrribute')
class DeterministicObservation(SplendorObservation): def __init__(self, state : State): super().__init__('deterministic') self.observation_dict = StateAsDict(state) def recreate_state(self): return self.observation_dict.to_state()
def clone_internal_state(self): return StateAsDict(self.internal_state).to_state()
def show_my_state(self): return (StateAsDict(self.internal_state))
def restore_state(self, state): copy_of_state = StateAsDict(state).to_state() self.internal_state = copy_of_state self.action_space.update(self.internal_state)
import time from splendor.envs.graphics.splendor_gui import SplendorGUI from splendor.envs.mechanics.state_as_dict import StateAsDict vis = SplendorGUI() state_as_dict = StateAsDict() state_as_dict.load_from_dict({ 'active_player_hand': { 'noble_possessed_ids': {106}, 'cards_possessed_ids': {0, 3, 38, 39, 40, 74, 77, 79, 18, 20, 22, 29}, 'cards_reserved_ids': set(), 'gems_possessed': [0, 0, 3, 1, 1, 3], 'name': 'Player A' }, 'other_player_hand': { 'noble_possessed_ids': set(), 'cards_possessed_ids': {1, 36, 21}, 'cards_reserved_ids': set(), 'gems_possessed': [0, 3, 1, 3, 3, 0], 'name': 'Player B' }, 'board': { 'nobles_on_board': {100, 101}, 'cards_on_board': {4, 5, 68, 37, 6, 11, 14, 17, 83, 51, 85, 62}, 'gems_on_board': [5, 1, 0, 0, 0, 1], 'deck_order': [{ 'Row.CHEAP': [ 43, 54, 2, 59, 61, 76, 75, 72, 78, 57, 56, 55, 24, 19, 60, 58, 23, 73, 7, 42, 41, 25 ]
def clone_state(state: State): return StateAsDict(state).to_state()
def __init__(self, state : State): super().__init__('deterministic') self.observation_dict = StateAsDict(state)