public void Start(TuckMatchState state, Action onViewsLoaded) { _matchState = state; var assetList = new List <AssetRequest>() { new AssetRequest("GUI/GamePlay/BoardView", Singleton.instance.sceneRoot), new AssetRequest("GUI/GamePlay/PlayerHandView"), new AssetRequest("GUI/GamePlay/GameHudView") }; viewFactory.CreateAsyncFromList(assetList, (uiMap) => { foreach (var keyValue in uiMap) { switch (keyValue.Key) { case "GUI/GamePlay/BoardView": _boardView = keyValue.Value as BoardView; _boardView.board = _matchState.board; _boardView.AddListener(GameEventType.PEG_TAP, onPegTapped); _boardView.AddListener(GameEventType.PIECE_TAP, onPieceTapped); break; case "GUI/GamePlay/PlayerHandView": _playerHandView = keyValue.Value as PlayerHandView; _playerHandView.AddListener(GameEventType.TRADE_CARD, onTradeCardDrop); _playerHandView.AddListener(GameEventType.PLAY_CARD, onPlayCardDrop); _setupPlayerHand(activePlayer.index); break; case "GUI/GamePlay/GameHudView": _gameHudView = keyValue.Value as GameHudView; _gameHudView.AddListener(GameEventType.UNDO, onForwardEventAndRefreshHand); _gameHudView.AddListener(GameEventType.REDO, onForwardEventAndRefreshHand); _gameHudView.AddListener(GameEventType.FINISH_TURN, onForwardEventAndRefreshHand); break; } } if (onViewsLoaded != null) { onViewsLoaded(); } }); }