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(); }
private void Events_Unjoin(object sender, KgsChannel e) { //TODO (future work) Hack: This is a memory leak. This event will never be collected. Oh well. if (e.ChannelId == Challenge.ChannelId) { _vm.CloseSelf(); } }
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) { 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 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(); }