public override async Task <IGame> AcceptChallenge(GameCreationViewModel vm) { await Connections.Kgs.Commands.ChallengeProposalAsync(Challenge, Challenge.IncomingChallenge); RefreshStatus(); return(null); }
public override async Task CreateChallenge(GameCreationViewModel vm) { string rulesString = "chinese"; switch (vm.SelectedRuleset) { case Core.Rules.RulesetType.AGA: rulesString = RulesDescription.RulesAga; break; case Core.Rules.RulesetType.Chinese: rulesString = RulesDescription.RulesChinese; break; case Core.Rules.RulesetType.Japanese: rulesString = RulesDescription.RulesJapanese; break; } var rules = new RulesDescription() { Handicap = vm.Handicap, Komi = float.Parse(vm.CompensationString, CultureInfo.InvariantCulture), Rules = rulesString, Size = vm.SelectedGameBoardSize.Width }; switch (vm.TimeControl.Style) { case Core.Time.TimeControlStyle.Absolute: rules.TimeSystem = RulesDescription.TimeSystemAbsolute; rules.MainTime = vm.TimeControl.MainTime.AsInteger() * 60; break; case Core.Time.TimeControlStyle.Canadian: rules.TimeSystem = RulesDescription.TimeSystemCanadian; rules.MainTime = vm.TimeControl.MainTime.AsInteger() * 60; rules.ByoYomiStones = vm.TimeControl.StonesPerPeriod.AsInteger(); rules.ByoYomiTime = vm.TimeControl.OvertimeMinutes.AsInteger() * 60; break; case Core.Time.TimeControlStyle.Japanese: rules.TimeSystem = RulesDescription.TimeSystemJapanese; rules.MainTime = vm.TimeControl.MainTime.AsInteger() * 60; rules.ByoYomiTime = vm.TimeControl.OvertimeSeconds.AsInteger(); rules.ByoYomiPeriods = vm.TimeControl.NumberOfJapanesePeriods.AsInteger(); break; case Core.Time.TimeControlStyle.None: rules.TimeSystem = RulesDescription.TimeSystemNone; break; } await Connections.Kgs.Commands.CreateChallenge(_room, vm.IsRankedGame, vm.IsPubliclyListedGame, rules, vm.SelectedColor); Mvx.Resolve <IAppNotificationService>() .TriggerNotification(new Notifications.BubbleNotification(LocalizedStrings.ChallengeIsBeingCreated, null, NotificationType.Info)); vm.CloseSelf(); }
public override void OnLoad(GameCreationViewModel vm) { vm.FormTitle = Localizer.Creation_NewLocalGame; vm.BlackPlayer = vm.PossiblePlayers.First(); vm.WhitePlayer = vm.PossiblePlayers.First(); }
public override void OnLoad(GameCreationViewModel vm) { // "Win a solo game against Fuego where Fuego is playing black and has a handicap of 3 stones or more." vm.FormTitle = Localizer.Creation_NewLocalGame; vm.BlackPlayer = vm.PossiblePlayers.Last(); vm.Handicap = 3; }
public override void OnLoad(GameCreationViewModel vm) { // This is a memory leak. Might be worth fixing later. Connections.Kgs.Events.Disconnection += (o, reason) => { vm.CloseSelf(); }; }
public override void OnLoad(GameCreationViewModel vm) { base.OnLoad(vm); vm.FormTitle = Localizer.Creation_OutgoingIgsRequest; vm.TimeControl.Style = Core.Time.TimeControlStyle.Canadian; vm.TimeControl.StonesPerPeriod = "25"; vm.TimeControl.OvertimeMinutes = "10"; vm.TimeControl.MainTime = "90"; }
public override void OnLoad(GameCreationViewModel vm) { _vm = vm; LoadProposalDataIntoForm(Challenge.Proposal); Connections.Kgs.Events.Unjoin += Events_Unjoin; Challenge.StatusChanged += Challenge_StatusChanged; RefreshStatus(); base.OnLoad(vm); }
public override void OnLoad(GameCreationViewModel vm) { vm.IgsLimitation = true; vm.SelectedRuleset = Core.Rules.RulesetType.Japanese; vm.TimeControlStyles.Remove(Core.Time.TimeControlStyle.Japanese); // This is a memory leak. Might be worth fixing later. Connections.Igs.Events.Disconnected += (o, e) => { vm.CloseSelf(); }; }
public bool Validate(GameCreationViewModel gameCreationViewModel, ref string errorMessage) { if (IsFluffy) { if (FluffyTreeDepth < 1) { errorMessage = _localizer.Validation_FluffyDepthTooSmall; return(false); } } if (IsFuego) { if (FuegoMaxGames < 10) { errorMessage = _localizer.Validation_FuegoGamesTooFew; return(false); } if (FuegoSingleton.Instance.CurrentGame != null) { errorMessage = LocalizedStrings.AGameWithFuegoAlreadyOpen; return(false); } } if (player.IsAi) { bool nonSquare = this.Capabitilies?.HandlesNonSquareBoards ?? true; if (!nonSquare && !gameCreationViewModel.SelectedGameBoardSize.IsSquare) { errorMessage = _localizer.Validation_SquareNeeded; return(false); } int minimumBoardSize = this.Capabitilies?.MinimumBoardSize ?? 0; int maximumBoardSize = this.Capabitilies?.MaximumBoardSize ?? int.MaxValue; if (minimumBoardSize > gameCreationViewModel.SelectedGameBoardSize.Width || minimumBoardSize > gameCreationViewModel.SelectedGameBoardSize.Height) { errorMessage = _localizer.Validation_SizeTooSmall; return(false); } if (maximumBoardSize < gameCreationViewModel.SelectedGameBoardSize.Width || maximumBoardSize < gameCreationViewModel.SelectedGameBoardSize.Height) { errorMessage = _localizer.Validation_SizeTooLarge; return(false); } } return(true); }
public override void OnLoad(GameCreationViewModel vm) { base.OnLoad(vm); _opponentDisplayName = _igsMatchRequest.OpponentName; foreach (var usr in Connections.Igs.Data.OnlineUsers) { if (usr.Name == _igsMatchRequest.OpponentName) { _opponentDisplayName = usr.Name + " (" + usr.Rank + ")"; } } vm.OpponentName = _opponentDisplayName; vm.FormTitle = Localizer.Creation_IncomingIgsChallenge; vm.RefusalCaption = Localizer.RefuseChallenge; vm.CustomSquareSize = _igsMatchRequest.BoardSize.ToString(); vm.SelectedColor = _igsMatchRequest.YourColor; vm.TimeControl.Style = Core.Time.TimeControlStyle.Canadian; vm.TimeControl.OvertimeMinutes = _igsMatchRequest.OvertimeMinutes.ToString(); vm.TimeControl.MainTime = _igsMatchRequest.MainTime.ToString(); vm.TimeControl.StonesPerPeriod = "25"; }
public override async Task CreateChallenge(GameCreationViewModel gameCreationViewModel) { var timeSettings = gameCreationViewModel.TimeControl; int mainTime; int overtime; switch (timeSettings.Style) { case Core.Time.TimeControlStyle.Absolute: mainTime = int.Parse(timeSettings.MainTime); overtime = 0; break; case Core.Time.TimeControlStyle.Canadian: mainTime = int.Parse(timeSettings.MainTime); overtime = int.Parse(timeSettings.OvertimeMinutes); break; case Core.Time.TimeControlStyle.None: mainTime = 0; overtime = 0; break; default: throw new Exception("This time control system is not supported."); } await Connections.Igs.Commands.RequestBasicMatchAsync( selectedChallengeableUser.Name, gameCreationViewModel.SelectedColor, gameCreationViewModel.SelectedGameBoardSize.Width, mainTime, overtime ); Mvx.Resolve <Notifications.IAppNotificationService>() .TriggerNotification( new Notifications.BubbleNotification(String.Format(LocalizedStrings.ChallengeToXSent, selectedChallengeableUser.Name), null, Notifications.NotificationType.Info)); gameCreationViewModel.CloseSelf(); }
/// <summary> /// Called when the <paramref name="vm"/> loads. Use this to set properties of the model's controls. /// </summary> public abstract void OnLoad(GameCreationViewModel vm);
public override async Task <IGame> AcceptChallenge(GameCreationViewModel gameCreationViewModel) { IgsGame game = await Connections.Igs.Commands.AcceptMatchRequestAsync(_igsMatchRequest); return(game); }
public override async Task RefuseChallenge(GameCreationViewModel gameCreationViewModel) { await Connections.Kgs.Commands.GenericUnjoinAsync(Challenge); }
public override void OnLoad(GameCreationViewModel vm) { vm.FormTitle = Localizer.Creation_KgsChallengeCreation; base.OnLoad(vm); }
/// <summary> /// If this bundle can create a challenge, this creates the challenge. /// </summary> /// <param name="gameCreationViewModel">The game creation view model.</param> public virtual Task CreateChallenge(GameCreationViewModel gameCreationViewModel) { throw new InvalidOperationException("This bundle does not support the creation of challenges."); }
public override async Task RefuseChallenge(GameCreationViewModel gameCreationViewModel) { await Connections.Igs.Commands.DeclineMatchRequestAsync(_igsMatchRequest); }
public virtual Task RefuseChallenge(GameCreationViewModel gameCreationViewModel) { throw new InvalidOperationException("This bundle does not support refusing challenges."); }
public override async Task <IGame> AcceptChallenge(GameCreationViewModel gameCreationViewModel) { await Connections.Kgs.Commands.AcceptChallenge(Challenge); return(null); }