def start_draft( self, users: t.Iterable[AbstractUser], pool_specification: PoolSpecification, infinites: Infinites, draft_format: str, reverse: bool, finished_callback: t.Callable[[Draft], None], ) -> t.Tuple[t.Tuple[AbstractUser, Drafter], ...]: drafters = tuple( ( user, Drafter( user, str(uuid.uuid4()), ), ) for user in users ) drafters_ring = Ring( drafter for _, drafter in drafters ) def _finished_callback(_draft: Draft): self.draft_complete(_draft) finished_callback(_draft) draft = Draft( key = str(uuid.uuid4()), drafters = drafters_ring, pool_specification = pool_specification, infinites = infinites, draft_format = draft_format, finished_callback = _finished_callback, reverse = reverse, ) draft.start() with self._lock: self._drafts.add(draft) for drafter in drafters_ring.all: self._drafters[drafter.key] = draft.get_draft_interface(drafter) return drafters
def start_draft(self): print "starting draft" print self.map_pool self.draft = Draft(self.id, self.player_list[0], self.player_list[1], self.map_pool, self.draft_type) self.touch()
def get_map_by_name(name, pool): return [x for x in pool if x.slug == name][0] if __name__ == '__main__': from draft.map import Map from draft.drafttype import DraftType # (self, room_id, player_one, player_two, map_pool, draft_type): map_pool = Map.generate_map_pool('config/map_pools.json', "scl_season_4") draft_types = DraftType.get_draft_type('config/draft_types.json') print draft_types draft = Draft("foo", "lthummus", "cameraman", map_pool, draft_types['REGULAR']) print draft.flip_coin("LtHummus") draft.start_player = "LtHummus" draft.first_spy = "LtHummus" print draft.state draft.start_draft() print draft.state print draft.user_readable_state() draft.mark_map(get_map_by_name('library58', map_pool)) draft.mark_map(get_map_by_name('highrise35', map_pool)) print draft.user_readable_state() draft.mark_map(get_map_by_name('moderne58', map_pool)) draft.mark_map(get_map_by_name('veranda58', map_pool))