//-------------------------------------------------------------- // PROTECTED METHODS //-------------------------------------------------------------- // Init the model and the view for a one player game protected void initGame() { LinearLayout gameLayout = FindViewById<LinearLayout>(Resource.Id.layoutGame); // Test if the view is created so we can resize the buttons if(gameLayout.ViewTreeObserver.IsAlive) { gameLayout.ViewTreeObserver.AddOnGlobalLayoutListener(this); } // Creation of the model _player1 = new Player(User.Instance.UserName); // And the view _player1View = new PlayerView(_player1); GridView myGrid = FindViewById<GridView>(Resource.Id.PlayerGridView); myGrid.Init(_player1._grid); _player1View._gridView = myGrid; TextView player1name = FindViewById<TextView> (Resource.Id.player1name); TextView player1score = FindViewById<TextView> (Resource.Id.player1score); TextView player1level = FindViewById<TextView> (Resource.Id.player1level); TextView player1rows = FindViewById<TextView> (Resource.Id.player1rows); _player1View.SetViews(player1name, player1score, player1level, player1rows); associateButtonsEvent(); }
//-------------------------------------------------------------- // EVENT CATCHING METHODS //-------------------------------------------------------------- protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetResult(Result.Ok); if(!Network.Instance.Connected) { // If we are trying to start a multi activity and we are not connected to someone, we stop Finish(); } // Creation of the model _player2 = new Player(Intent.GetStringExtra(Utils.OpponentNameExtra)); // And the view _player2View = new PlayerView(_player2); // Set our view from the "main" layout resource SetContentView(Resource.Layout.GameMulti); initGame(); GridView gridOpponent = FindViewById<GridView>(Resource.Id.OpponentGridView); gridOpponent.Init(_player2._grid); _player2View._gridView = gridOpponent; TextView player2name = FindViewById<TextView> (Resource.Id.player2name); TextView player2score = FindViewById<TextView> (Resource.Id.player2score); TextView player2level = FindViewById<TextView> (Resource.Id.player2level); TextView player2rows = FindViewById<TextView> (Resource.Id.player2rows); _player2View.SetViews(player2name, player2score, player2level, player2rows); ProposedPieceView viewProposed = FindViewById<ProposedPieceView>(Resource.Id.player2piece); viewProposed.SetPlayer(_player1); // Hook on network event Network.Instance.EraseAllEvent(); Network.Instance.UsualGameMessage += UpdateOpponentView; Network.Instance.PiecePutMessage += OpponentPiecePut; Network.Instance.NextPieceMessage += _player1.interpretMessage; Network.Instance.PauseMessage += pauseGame; Network.Instance.ResumeMessage += resumeGame; Network.Instance.ScoreMessage += OnReceiveScoreMessage; Network.Instance.EndMessage += OnReceiveEndMessage; Network.Instance.ConnectionLostEvent += OnLostConnection; Network.Instance.NewGameMessage += OnReceiveNewGame; Network.Instance.WriteEvent += WriteMessageEventReceived; _gameState = GameState.Play; startGame(); }