private void Select(RPSOption rpsOption)
 {
     _phase = RockPaperScissorsPhase.Waiting;
     Event.Publish(new SelectionMade {
         Id = _playerId, Selection = rpsOption
     });
 }
        private void BeginResolving()
        {
            _phase = RockPaperScissorsPhase.Resolving;

            var winner = WinnerId();

            _winnerLabel.Text = winner == -1 ? "Tie" : winner == _playerId ? "You won!" : "You lost!";
            _selections       = new List <SelectionMade>();
        }
 public override void Init()
 {
     Event.Subscribe <SelectionMade>(s => _queuedSelections.Enqueue(s), this);
     _mySelection = new UiImage {
         Image = "none", Transform = new Transform2(new Vector2(100, 100), new Size2(200, 400)), IsActive = () => _phase == RockPaperScissorsPhase.Resolving
     };
     _opponentSelection = new UiImage {
         Image = "none", Transform = new Transform2(new Vector2(500, 100), new Size2(200, 400)), IsActive = () => _phase == RockPaperScissorsPhase.Resolving
     };
     _winnerLabel = new Label {
         Text = "", IsVisible = () => _phase.Equals(RockPaperScissorsPhase.Resolving)
     };
     Add(new ExpandingImageButton("rock", "rock", "rock", new Transform2(new Vector2(100, 100), new Size2(200, 400)), new Size2(10, 10), () => Select(RPSOption.Rock), () => _phase.Equals(RockPaperScissorsPhase.Selecting)));
     Add(new ExpandingImageButton("paper", "paper", "paper", new Transform2(new Vector2(350, 100), new Size2(200, 400)), new Size2(10, 10), () => Select(RPSOption.Paper), () => _phase.Equals(RockPaperScissorsPhase.Selecting)));
     Add(new ExpandingImageButton("scissors", "scissors", "scissors", new Transform2(new Vector2(600, 100), new Size2(200, 400)), new Size2(10, 10), () => Select(RPSOption.Scissors), () => _phase.Equals(RockPaperScissorsPhase.Selecting)));
     Add(new Label {
         Text = "Waiting On Opponent", IsVisible = () => _phase.Equals(RockPaperScissorsPhase.Waiting)
     });
     Add(Buttons.Text("New Game", new Point(250, 10), () => _phase = RockPaperScissorsPhase.Selecting, () => _phase.Equals(RockPaperScissorsPhase.Resolving)));
     Add(_winnerLabel);
     Add(_mySelection);
     Add(_opponentSelection);
     Add(new ActionAutomaton(ProcessSelections));
 }