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)); }