示例#1
0
        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();
        }
示例#2
0
 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();
     }
 }
示例#3
0
 public override void OnLoad(GameCreationViewModel vm)
 {
     // This is a memory leak. Might be worth fixing later.
     Connections.Kgs.Events.Disconnection += (o, reason) =>
     {
         vm.CloseSelf();
     };
 }
示例#4
0
 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();
        }