Example #1
0
        private void UpdateTimeControlFromRules(RulesDescription rules)
        {
            var time = _vm.TimeControl;

            switch (rules.TimeSystem)
            {
            case RulesDescription.TimeSystemNone:
                time.Style = Core.Time.TimeControlStyle.None;
                break;

            case RulesDescription.TimeSystemJapanese:
                time.Style    = Core.Time.TimeControlStyle.Japanese;
                time.MainTime = (rules.MainTime / 60).ToString();
                time.NumberOfJapanesePeriods = rules.ByoYomiPeriods.ToString();
                time.OvertimeSeconds         = rules.ByoYomiTime.ToString();
                break;

            case RulesDescription.TimeSystemCanadian:
                time.Style           = Core.Time.TimeControlStyle.Canadian;
                time.MainTime        = (rules.MainTime / 60).ToString();
                time.StonesPerPeriod = rules.ByoYomiStones.ToString();
                time.OvertimeMinutes = (rules.ByoYomiTime / 60).ToString();
                break;

            case RulesDescription.TimeSystemAbsolute:
                time.Style    = Core.Time.TimeControlStyle.Absolute;
                time.MainTime = (rules.MainTime / 60).ToString();
                break;
            }
        }
Example #2
0
 public async Task CreateChallenge(KgsRoom room, bool ranked, bool global, RulesDescription rules, StoneColor yourColor)
 {
     await kgsConnection.MakeUnattendedRequestAsync("CHALLENGE_CREATE", new
     {
         ChannelId   = room.ChannelId,
         CallbackKey = 0,
         Global      = global,
         Text        = "Game",
         Proposal    = new
         {
             GameType = ranked ? GameType.Ranked : GameType.Free,
             Rules    = rules,
             Nigiri   = yourColor == StoneColor.None,
             Players  = new KgsPlayer []
             {
                 new KgsPlayer()
                 {
                     Name = kgsConnection.Username,
                     Role = yourColor == StoneColor.Black ? "black" : "white"
                 },
                 new  KgsPlayer()
                 {
                     Role = yourColor == StoneColor.Black ? "white" : "black"
                 }
             }
         }
     });
 }
Example #3
0
        public Game GetGame()
        {
            var players = ShuffleSvc.Shuffle(Attendees, Rule);

            players = players.Select(p =>
            {
                p.GameDescription = this.GameDescription;
                p.RoleDescription = RulesDescription.FirstOrDefault(rd => rd.Contains(p.Role.ToString()));
                return(p);
            }).ToList();
            players           = ShuffleService.Shuffle <Player>(players).ToList();
            Player.ParentList = players;
            players.ForEach(p => p.NameNumMapList = string.Join("<br>", players.Select(q =>
            {
                if (p.Role == Role.Judge)
                {
                    return($"{players.IndexOf(q)}--{q.Attendee.Name}--{q.Role}");
                }
                else
                {
                    return($"{players.IndexOf(q)}--{q.Attendee.Name}  {AddRoleIndecator(players.IndexOf(q))}");
                }
            }
                                                                                       )));
            players.ForEach(q => { q.Company = players.Where(p => p.Role == q.Role &&
                                                             q.Role == Role.Wolf &&
                                                             p.Attendee.Name != q.Attendee.Name).ToList(); });

            return(new Game(Round++, players));
        }
Example #4
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();
        }