示例#1
0
        public async Task FindParticipantAsync_EquivalentToParticipant(Game game, ChallengeState state)
        {
            //Arrange
            var challengeFaker = TestData.FakerFactory.CreateChallengeFaker(48956632, game, state);

            var challenge = challengeFaker.FakeChallenge();

            using var factory = new InMemoryDbContextFactory <ChallengesDbContext>();

            await using (var context = factory.CreateContext())
            {
                var challengeRepository = new ChallengeRepository(context);

                challengeRepository.Create(challenge);

                await challengeRepository.CommitAsync();
            }

            await using (var context = factory.CreateContext())
            {
                var participantQuery = new ParticipantQuery(context);

                foreach (var participant in challenge.Participants)
                {
                    //Act
                    var participantAsync = await participantQuery.FindParticipantAsync(ParticipantId.FromGuid(participant.Id));

                    //Assert
                    participantAsync.Should().BeEquivalentTo(participant);
                }
            }
        }
示例#2
0
        public async Task FindChallengeAsync_ShouldBeChallenge(Game game, ChallengeState state)
        {
            //Arrange
            var challengeFaker = TestData.FakerFactory.CreateChallengeFaker(84568994, game, state);

            var challenge = challengeFaker.FakeChallenge();

            using var factory = new InMemoryDbContextFactory <ChallengesDbContext>();

            await using (var context = factory.CreateContext())
            {
                var challengeRepository = new ChallengeRepository(context);

                challengeRepository.Create(challenge);

                await challengeRepository.CommitAsync();
            }

            await using (var context = factory.CreateContext())
            {
                var challengeQuery = new ChallengeQuery(context);

                //Act
                var challengeAsync = await challengeQuery.FindChallengeAsync(challenge.Id);

                //Assert
                challengeAsync.Should().Be(challenge);
            }
        }
示例#3
0
        public async Task FindMatchAsync_ShouldBeEquivalentToMatch(Game game, ChallengeState state)
        {
            //Arrange
            var challengeFaker = TestData.FakerFactory.CreateChallengeFaker(83459632, game, state);

            var challenge = challengeFaker.FakeChallenge();

            using var factory = new InMemoryDbContextFactory <ChallengesDbContext>();

            await using (var context = factory.CreateContext())
            {
                var challengeRepository = new ChallengeRepository(context);

                challengeRepository.Create(challenge);

                await challengeRepository.CommitAsync();
            }

            await using (var context = factory.CreateContext())
            {
                var matchQuery = new MatchQuery(context);

                foreach (var match in challenge.Participants.SelectMany(participant => participant.Matches).ToList())
                {
                    //Act
                    var matchAsync = await matchQuery.FindMatchAsync(MatchId.FromGuid(match.Id));

                    //Arrange
                    matchAsync.Should().BeEquivalentTo(match);
                }
            }
        }
示例#4
0
 public void enterGame()
 {
     challengeObject.SetActive(true);
     startGameDistance = ChallengeManager.sharedManager.challengeStartPosition + ChallengeManager.sharedManager.distance;
     challengeObject.transform.position = new Vector3(0, 0, startGameDistance);
     challengeState = ChallengeState.inGame;
 }
        public MenuScreen()
        {
            isActive = false;
            isHidden = true;
            canLauchChallenge = false;

            menuSound = SoundEffectLibrary.Get("cursor").CreateInstance();

            m_sprite = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("menu_start_bg"), m_transform);
            m_sprite.Transform.Position = outPos;
            arrow = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("arrow"), new Transform(m_transform, true));

            moveTo = new MoveToStaticAction(Program.TheGame, m_transform, inPos, 1);
            moveTo.StartPosition = new Vector2(80, 200);
            moveTo.Interpolator = new PSmoothstepInterpolation();
            moveTo.Timer.Interval = 0.5f;

            moveOut = new MoveToStaticAction(Program.TheGame, m_transform, outPos, 1);
            moveOut.StartPosition = inPos;
            moveOut.Interpolator = new PSmoothstepInterpolation();
            moveOut.Timer.Interval = 0.5f;

            choice = MenuState.START;
            challengeChoice = ChallengeState.CHALL_1;
        }
示例#6
0
        public async Task FetchChallengesAsync_ShouldHaveCount(Game game, ChallengeState state)
        {
            //Arrange
            var challengeFaker = TestData.FakerFactory.CreateChallengeFaker(84936374, game);

            var fakeChallenges = challengeFaker.FakeChallenges(4);

            using var factory = new InMemoryDbContextFactory <ChallengesDbContext>();

            await using (var context = factory.CreateContext())
            {
                var challengeRepository = new ChallengeRepository(context);

                challengeRepository.Create(fakeChallenges);

                await challengeRepository.CommitAsync();
            }

            await using (var context = factory.CreateContext())
            {
                var challengeQuery = new ChallengeQuery(context);

                //Act
                var challenges = await challengeQuery.FetchChallengesAsync(game, state);

                //Assert
                challenges.Should().HaveCount(fakeChallenges.Count(challenge => challenge.Game == game && challenge.Timeline == state));
            }
        }
示例#7
0
        public MenuScreen()
        {
            isActive          = false;
            isHidden          = true;
            canLauchChallenge = false;

            menuSound = SoundEffectLibrary.Get("cursor").CreateInstance();

            m_sprite = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("menu_start_bg"), m_transform);
            m_sprite.Transform.Position = outPos;
            arrow = new Sprite(Program.TheGame, TextureLibrary.GetSpriteSheet("arrow"), new Transform(m_transform, true));

            moveTo = new MoveToStaticAction(Program.TheGame, m_transform, inPos, 1);
            moveTo.StartPosition  = new Vector2(80, 200);
            moveTo.Interpolator   = new PSmoothstepInterpolation();
            moveTo.Timer.Interval = 0.5f;

            moveOut = new MoveToStaticAction(Program.TheGame, m_transform, outPos, 1);
            moveOut.StartPosition  = inPos;
            moveOut.Interpolator   = new PSmoothstepInterpolation();
            moveOut.Timer.Interval = 0.5f;

            choice          = MenuState.START;
            challengeChoice = ChallengeState.CHALL_1;
        }
示例#8
0
 public void UpdateData(ChallengeState state, bool complete_one, bool complete_two, bool complete_three)
 {
     mState         = state;
     mCompleteOne   = complete_one;
     mCompleteTwo   = complete_two;
     mCompleteThree = complete_three;
     Refresh();
 }
示例#9
0
 //初始化关卡限制
 private void InitLevelLimit()
 {
     m_levelInfoList  = Resources.Load <UserData>("UserDatum/UserData").levelInfoList;
     m_challengeState = ChallengeState.prepare;
     m_curInfo        = m_levelInfoList.FindLevelInfo(Director.Instance.CurrentSceneName);
     m_timeLimit      = m_curInfo.PassTimeLimit;
     m_turnLimit      = m_curInfo.PassTurnLimit;
 }
示例#10
0
        /// <summary>Processes the given challenge token.</summary>
        /// <remarks>
        /// Processes the given challenge token. Some authentication schemes
        /// may involve multiple challenge-response exchanges. Such schemes must be able
        /// to maintain the state information when dealing with sequential challenges
        /// </remarks>
        /// <param name="header">the challenge header</param>
        /// <exception cref="Apache.Http.Auth.MalformedChallengeException">
        /// is thrown if the authentication challenge
        /// is malformed
        /// </exception>
        public virtual void ProcessChallenge(Header header)
        {
            Args.NotNull(header, "Header");
            string authheader = header.GetName();

            if (Sharpen.Runtime.EqualsIgnoreCase(authheader, AUTH.WwwAuth))
            {
                this.challengeState = ChallengeState.Target;
            }
            else
            {
                if (Sharpen.Runtime.EqualsIgnoreCase(authheader, AUTH.ProxyAuth))
                {
                    this.challengeState = ChallengeState.Proxy;
                }
                else
                {
                    throw new MalformedChallengeException("Unexpected header name: " + authheader);
                }
            }
            CharArrayBuffer buffer;
            int             pos;

            if (header is FormattedHeader)
            {
                buffer = ((FormattedHeader)header).GetBuffer();
                pos    = ((FormattedHeader)header).GetValuePos();
            }
            else
            {
                string s = header.GetValue();
                if (s == null)
                {
                    throw new MalformedChallengeException("Header value is null");
                }
                buffer = new CharArrayBuffer(s.Length);
                buffer.Append(s);
                pos = 0;
            }
            while (pos < buffer.Length() && HTTP.IsWhitespace(buffer.CharAt(pos)))
            {
                pos++;
            }
            int beginIndex = pos;

            while (pos < buffer.Length() && !HTTP.IsWhitespace(buffer.CharAt(pos)))
            {
                pos++;
            }
            int    endIndex = pos;
            string s_1      = buffer.Substring(beginIndex, endIndex);

            if (!Sharpen.Runtime.EqualsIgnoreCase(s_1, GetSchemeName()))
            {
                throw new MalformedChallengeException("Invalid scheme identifier: " + s_1);
            }
            ParseChallenge(buffer, pos, buffer.Length());
        }
示例#11
0
 public ShipManager(ChallengeState state, string playerName)
 {
     _state      = state;
     _playerName = playerName;
     if (!_state.Players.ContainsKey(_playerName))
     {
         throw new Exception("This has gone really wrong!");
     }
 }
示例#12
0
    public void StartChallenge()
    {
        Canvas.gameObject.SetActive(true);
        Results.gameObject.SetActive(false);

        ChallengeState = ChallengeState.Prepare;
        Initialize("Pro tour tournament");
        StartCoroutine(Challenge());
    }
示例#13
0
 public Challenge(CycGame cg, Game1 g, int m)
 {
     cycGame = cg;
     game = g;
     state = ChallengeState.NotYet;
     Measure = m;
     beats = new List<ChallengeBeat>();
     enemiesIgnored = 0;
     enemiesKilled = 0;
     enemyCount = 0;
 }
        public IOperationResult Cancel()
        {
            if (this.State != ChallengeState.Accepted)
            {
                this.State = ChallengeState.Cancelled;
                // TODO: Debe checar de manera thread-safe que no haya sido aceptado el reto aún
                messaging.Publish(Challenger.Room, Tuple.Create(this, ChallengeState.Cancelled));
                return new OperationResult(ResultValue.Success, "");
            }

            return new OperationResult(ResultValue.Fail, "El reto ha sido aceptado.");
        }
示例#15
0
        private static void ManageChallenge(Socket listener)
        {
            Console.WriteLine("Setting up a new Challenge...");
            var config = ChallengeConfiguration.GetChallengeConfiguration(_configPath);
            var state  = ChallengeState.GetStateFromConfiguration(config);
            var name   = state.GetPlayerNames();

            for (var i = 0; i < state.Players.Count; i++)
            {
                listener.Listen(100);
                var connection = listener.Accept();
                var task       = ManageConnection(connection, state, name[i]);
            }
            state.Flags.AddOrUpdate("Ready", true, (x, y) => true);
            Console.WriteLine("Begin the challenge!");
        }
示例#16
0
    //暂停开关
    public void PauseSwitch()
    {
        //当暂停时,进入暂停状态
        if (m_challengeState == ChallengeState.underway)
        {
            m_challengeState = ChallengeState.paused;
            return;
        }

        //当恢复时,进入开始状态
        if (m_challengeState == ChallengeState.paused)
        {
            m_challengeState = ChallengeState.start;
            return;
        }
    }
示例#17
0
        private static Task ManageConnection(Socket connection, ChallengeState state, string playerName)
        {
            return(Task.Run(() =>
            {
                Console.WriteLine($"{playerName} connected!");
                var manager = new ChallengeManager(state, playerName);
                while (true)
                {
                    if (state.Flags["Ready"])
                    {
                        var begin = Encoding.UTF8.GetBytes("Begin");
                        connection.Send(begin);
                        break;
                    }
                    Thread.Sleep(100);
                }
                while (true)
                {
                    try
                    {
                        byte[] data = new byte[1000000];
                        var dataSize = connection.Receive(data);

                        if (!connection.Connected)
                        {
                            break;
                        }
                        if (dataSize == 0)
                        {
                            continue;
                        }

                        byte[] command = new byte[dataSize];
                        Array.Copy(data, command, dataSize);
                        var response = manager.ProcessCommand(command);
                        connection.Send(response);
                    }
                    catch (Exception e)
                    {
                        connection.Close();
                        Console.WriteLine(e.Message);
                        Console.WriteLine("Connection died!");
                        break;
                    }
                }
            }));
        }
示例#18
0
    //初始化参数
    private void Awake()
    {
        if (Instance == null)
        {
            Instance = this;
        }
        else
        {
            Destroy(this);
        }

        m_timeCount      = 0;
        m_turnCount      = 0;
        m_countDown      = 5;
        m_challengeState = ChallengeState.start;

        InitLevelLimit();   //初始化关卡限制
    }
        public void PlayGame()
        {
            var state              = new ChallengeState();
            var stateManager       = new StateManager(_connection, state);
            var explorationManager = new ExplorationManager(state, _connection);

            _connection.PollForStart().Wait();

            stateManager.PollState();
            explorationManager.Explore().Wait();
            stateManager.Finish();

            foreach (var system in state.SolarSystems.Select(s => s.Value))
            {
                Console.WriteLine(system.Name);
            }

            _connection.Close();
        }
示例#20
0
 //修改闯关状态
 public void SetChallengeState(ChallengeState state)
 {
     m_challengeState = state;
     //switch(state)
     //{
     //    case 0:
     //        m_challengeState = ChallengeState.start;
     //        break;
     //    case 1:
     //        m_challengeState = ChallengeState.underway;
     //        break;
     //    case 2:
     //        m_challengeState = ChallengeState.paused;
     //        break;
     //    case 3:
     //        m_challengeState = ChallengeState.failed;
     //        break;
     //    case 4:
     //        m_challengeState = ChallengeState.succeed;
     //        break;
     //}
 }
示例#21
0
 public DateTime RegisteredAt(ChallengeState state, DateTime?startedAt)
 {
     return(state != ChallengeState.Inscription ? Faker.Date.Recent(1, startedAt) : Faker.Date.Soon(1, DateTime.UtcNow.Date));
 }
示例#22
0
 public int Process(float expectedGrade, float actualGrade, bool changeState)
 {
     int difficultyThisTurn = 0;
     if (state == ChallengeState.NotYet && game.CurrentMeasure >= Measure)
     {
         if (expectedGrade > actualGrade)
         {
             if (changeState)
             {
                 state = ChallengeState.Skipped;
             }
         }
         else
         {
             state = ChallengeState.Active;
         }
     }
     if (state == ChallengeState.Active)
     {
         bool anyUnsent = false;
         foreach (ChallengeBeat beat in beats)
         {
             if (beat.Unsent && (beat.Beat + (Measure * 4)) <= game.CurrentBeat)
             {
                 beat.Unsent = false;
                 foreach (EnemyMaker em in beat.Enemies)
                 {
                     CycEnemy enemy = (CycEnemy)em(this);
                     difficultyThisTurn += enemy.Difficulty;
                 }
             }
             else
             {
                 anyUnsent = true;
             }
         }
         if (!anyUnsent && changeState)
         {
             state = ChallengeState.Deployed;
         }
     }
     return difficultyThisTurn;
 }
示例#23
0
 public ChallengeState State(ChallengeState?state = null)
 {
     return(state ?? Faker.PickRandom(ChallengeState.GetEnumerations()));
 }
示例#24
0
 public Challenge(IEnumerable <IEvent> events)
 {
     State = new ChallengeState(events);
     state = State as ChallengeState;
 }
示例#25
0
        public async Task FindChallengeParticipantsAsync_ShouldBeEquivalentToParticipantList(Game game, ChallengeState state)
        {
            //Arrange
            var challengeFaker = TestData.FakerFactory.CreateChallengeFaker(68545632, game, state);

            var challenge = challengeFaker.FakeChallenge();

            using var factory = new InMemoryDbContextFactory <ChallengesDbContext>();

            await using (var context = factory.CreateContext())
            {
                var challengeRepository = new ChallengeRepository(context);

                challengeRepository.Create(challenge);

                await challengeRepository.CommitAsync();
            }

            await using (var context = factory.CreateContext())
            {
                var participantQuery = new ParticipantQuery(context);

                //Act
                var participants = await participantQuery.FetchChallengeParticipantsAsync(challenge.Id);

                //Assert
                participants.Should().BeEquivalentTo(challenge.Participants.ToList());
            }
        }
示例#26
0
 void enterStandby()
 {
     challengeObject.transform.position = new Vector3(0, 0, -5);
     challengeObject.SetActive(false);
     challengeState = ChallengeState.standby;
 }
 public ExplorationManager(ChallengeState state, ConnectionManager connection)
 {
     _state   = state;
     _manager = new ShipManager(connection);
 }
示例#28
0
        public void Register_WhenStateNotInscription_ShouldThrowInvalidOperationException(ChallengeState state)
        {
            // Arrange
            var challengeFaker = TestData.FakerFactory.CreateChallengeFaker(78536956, Game.LeagueOfLegends, state);

            var challenge = challengeFaker.FakeChallenge();

            // Act
            var action = new Action(
                () => challenge.Register(
                    new Participant(
                        new ParticipantId(),
                        new UserId(),
                        PlayerId.Parse(Guid.NewGuid().ToString()),
                        new UtcNowDateTimeProvider())));

            // Assert
            action.Should().Throw <InvalidOperationException>();
        }
示例#29
0
 public void setChallengeState(ChallengeState _state)
 {
     _currentState = _state;
 }
示例#30
0
        public override void Update()
        {
            if (isActive)
            {
                // Positionning arrow
                //
                if (choice == MenuState.START)
                {
                    arrow.Transform.Position = new Vector2(-25, -7);
                }

                if (choice == MenuState.CHALLENGES)
                {
                    arrow.Transform.Position = new Vector2(-45, 7);
                }

                // Actions with enter or space
                //
                if ((Game1.kbs.IsKeyDown(Keys.Enter) && Game1.old_kbs.IsKeyUp(Keys.Enter)) ||
                    (Game1.kbs.IsKeyDown(Keys.Space) && Game1.old_kbs.IsKeyUp(Keys.Space)))
                {
                    ExecuteStartAction();
                    menuSound.Play();
                }

                // Up and down input between start & challenges
                //
                if (choice != MenuState.CHALLENGE_CHOICE)
                {
                    if (Game1.kbs.IsKeyDown(Keys.Up) && Game1.old_kbs.IsKeyUp(Keys.Up))
                    {
                        choice = MenuState.START;
                        menuSound.Play();
                    }

                    if (Game1.kbs.IsKeyDown(Keys.Down) && Game1.old_kbs.IsKeyUp(Keys.Down))
                    {
                        choice = MenuState.CHALLENGES;
                        menuSound.Play();
                    }
                }

                // Left and right input between challenges
                //
                if (choice == MenuState.CHALLENGE_CHOICE)
                {
                    if (Game1.kbs.IsKeyDown(Keys.LeftAlt) && Game1.old_kbs.IsKeyUp(Keys.LeftAlt))
                    {
                        choice               = MenuState.START;
                        challengeChoice      = ChallengeState.CHALL_1;
                        m_sprite.SpriteSheet = TextureLibrary.GetSpriteSheet("menu_start_bg");
                        canLauchChallenge    = false;
                        menuSound.Play();
                    }

                    if (Game1.kbs.IsKeyDown(Keys.Right) && Game1.old_kbs.IsKeyUp(Keys.Right))
                    {
                        if (challengeChoice < ChallengeState.CHALL_5)
                        {
                            challengeChoice++;
                            arrow.Transform.PosX += deltaArrowBetweenChallenges;
                            menuSound.Play();
                        }
                    }

                    if (Game1.kbs.IsKeyDown(Keys.Left) && Game1.old_kbs.IsKeyUp(Keys.Left))
                    {
                        if (challengeChoice > ChallengeState.CHALL_1)
                        {
                            challengeChoice--;
                            arrow.Transform.PosX -= deltaArrowBetweenChallenges;
                            menuSound.Play();
                        }
                    }
                }
            }
            actionManager.Update();
        }
 public void Reject()
 {
     if (this.State == ChallengeState.Sent)
     {
         this.State = ChallengeState.Rejected;
         // TODO: Debe checar de manera thread-safe que no haya sido aceptado el reto aún
         messaging.Publish(Challenger.Room, Tuple.Create(this, ChallengeState.Rejected));
     }
 }
示例#32
0
 public DigestScheme(ChallengeState challengeState) : base(challengeState)
 {
 }
示例#33
0
    IEnumerator Challenge()
    {
        while (ChallengeState == ChallengeState.Prepare)
        {
            currentTime   = startTime + prepareTime - Time.realtimeSinceStartup;
            TimeText.text = (prepareTime - currentTime).ToString("n2");
            if (!started)
            {
                startTime      = Time.realtimeSinceStartup;
                StateText.text = ChallengeState.ToString();
                started        = true;
            }
            else if (Time.realtimeSinceStartup >= startTime + prepareTime)
            {
                ChallengeState = ChallengeState.Challenge;
                started        = false;
            }

            yield return(null);
        }
        while (ChallengeState == ChallengeState.Challenge)
        {
            currentTime   = challengeTime - (startTime + challengeTime - Time.realtimeSinceStartup);
            TimeText.text = currentTime.ToString("n2");
            if (!started)
            {
                startTime      = Time.realtimeSinceStartup;
                StateText.text = ChallengeState.ToString();
                started        = true;
            }
            else if (Time.realtimeSinceStartup >= startTime + challengeTime)
            {
                ChallengeState = ChallengeState.Reward;
                started        = false;
            }

            foreach (var unit in ReactionUnits)
            {
                var controller = unit.GetComponent <ReactionUnitController>();
                if (currentTime >= controller.StartTime && currentTime < (controller.StartTime + controller.Duration))
                {
                    unit.gameObject.SetActive(true);
                }
                else
                {
                    if (unit.gameObject.activeSelf)
                    {
                        unit.gameObject.SetActive(false);
                    }
                }
            }

            yield return(null);
        }
        while (ChallengeState == ChallengeState.Reward)
        {
            if (!started)
            {
                var prizeCards = new List <GameObject>();

                foreach (var reaction in Reactions)
                {
                    if (reaction != null)
                    {
                        var card = DeckController.GetRandomCard();
                        prizeCards.Add(card);
                        PlayerController.ReceiveCard(card);
                    }
                }

                if (prizeCards.Count > 0)
                {
                    GameController.OpenBoosterController.Initialize(prizeCards);
                    GameController.OpenBoosterController.InnerGameObject.SetActive(true);
                    CloseChallenge();
                }
                else
                {
                    GameController.StoryController.SetStoryText("Bad luck this time. Maybe, you will win in the next challenge!");
                    CloseChallenge();
                }

                started = true;
            }
            yield return(new WaitForSeconds(2));
        }

        yield return(null);
    }
示例#34
0
        public override void Update()
        {
            if (isActive)
            {
                // Positionning arrow
                //
                if (choice == MenuState.START)
                    arrow.Transform.Position = new Vector2(-25, -7);

                if (choice == MenuState.CHALLENGES)
                    arrow.Transform.Position = new Vector2(-45, 7);

                // Actions with enter or space
                //
                if ((Game1.kbs.IsKeyDown(Keys.Enter) && Game1.old_kbs.IsKeyUp(Keys.Enter))
                    || (Game1.kbs.IsKeyDown(Keys.Space) && Game1.old_kbs.IsKeyUp(Keys.Space)))
                {
                    ExecuteStartAction();
                    menuSound.Play();
                }

                // Up and down input between start & challenges
                //
                if (choice != MenuState.CHALLENGE_CHOICE)
                {
                    if (Game1.kbs.IsKeyDown(Keys.Up) && Game1.old_kbs.IsKeyUp(Keys.Up))
                    {
                        choice = MenuState.START;
                        menuSound.Play();
                    }

                    if (Game1.kbs.IsKeyDown(Keys.Down) && Game1.old_kbs.IsKeyUp(Keys.Down))
                    {
                        choice = MenuState.CHALLENGES;
                        menuSound.Play();
                    }
                }

                // Left and right input between challenges
                //
                if (choice == MenuState.CHALLENGE_CHOICE)
                {

                    if (Game1.kbs.IsKeyDown(Keys.LeftAlt) && Game1.old_kbs.IsKeyUp(Keys.LeftAlt))
                    {
                        choice = MenuState.START;
                        challengeChoice = ChallengeState.CHALL_1;
                        m_sprite.SpriteSheet = TextureLibrary.GetSpriteSheet("menu_start_bg");
                        canLauchChallenge = false;
                        menuSound.Play();
                    }

                    if (Game1.kbs.IsKeyDown(Keys.Right) && Game1.old_kbs.IsKeyUp(Keys.Right))
                    {
                        if (challengeChoice < ChallengeState.CHALL_5)
                        {
                            challengeChoice++;
                            arrow.Transform.PosX += deltaArrowBetweenChallenges;
                            menuSound.Play();
                        }
                    }

                    if (Game1.kbs.IsKeyDown(Keys.Left) && Game1.old_kbs.IsKeyUp(Keys.Left))
                    {
                        if (challengeChoice > ChallengeState.CHALL_1)
                        {
                            challengeChoice--;
                            arrow.Transform.PosX -= deltaArrowBetweenChallenges;
                            menuSound.Play();
                        }
                    }
                }

            }
            actionManager.Update();
        }
示例#35
0
 public RFC2617Scheme(ChallengeState challengeState) : base(challengeState)
 {
     // AuthSchemeBase, params
     this.@params            = new Dictionary <string, string>();
     this.credentialsCharset = Consts.Ascii;
 }
示例#36
0
        public IChallenge FakeChallenge(ChallengeModel model)
        {
            var challengeFaker = new ChallengeFaker();

            challengeFaker.CustomInstantiator(
                faker =>
            {
                faker.User().Reset();

                var name = new ChallengeName(model.Name);

                var game = Game.FromValue(model.Game);

                var entries = new Entries(model.Entries);

                var bestOf = new BestOf(model.BestOf);

                var duration = new ChallengeDuration(TimeSpan.FromTicks(model.Timeline.Duration));

                var state = ChallengeState.FromValue(model.State);

                var utcNowDate = DateTime.UtcNow.Date;

                var createdAt = faker.Date.Recent(1, utcNowDate);

                var startedAt = faker.Date.Between(createdAt, utcNowDate);

                var endedAt = startedAt + duration;

                var synchronizationBuffer = endedAt + TimeSpan.FromHours(2);

                var closedAt = faker.Date.Soon(1, synchronizationBuffer);

                var synchronizedAt = faker.Date.Between(synchronizationBuffer, closedAt);

                var timeline = new ChallengeTimeline(new DateTimeProvider(startedAt), duration);

                var scoring = new Scoring
                {
                    [new StatName("StatName1")] = new StatWeighting(0.00015F),
                    [new StatName("StatName2")] = new StatWeighting(1),
                    [new StatName("StatName3")] = new StatWeighting(0.77F),
                    [new StatName("StatName4")] = new StatWeighting(100),
                    [new StatName("StatName5")] = new StatWeighting(-3)
                };

                var challenge = new Challenge(
                    model.Id.ConvertTo <ChallengeId>(),
                    name,
                    game,
                    bestOf,
                    entries,
                    timeline,
                    scoring);

                var participantFaker = new ParticipantFaker(game, createdAt, startedAt);

                participantFaker.UseSeed(faker.Random.Int());

                var participants = participantFaker.Generate(this.ParticipantCount(state, challenge.Entries));

                participants.ForEach(participant => challenge.Register(participant));

                if (state != ChallengeState.Inscription)
                {
                    challenge.Start(new DateTimeProvider(startedAt));

                    participants.ForEach(
                        participant =>
                    {
                        var matchFaker = new MatchFaker(challenge.Scoring, synchronizedAt);

                        matchFaker.UseSeed(faker.Random.Int());

                        var matches = matchFaker.Generate(this.MatchCount(state, challenge.BestOf));

                        participant.Snapshot(matches, new DateTimeProvider(synchronizedAt));
                    });

                    challenge.Synchronize(new DateTimeProvider(synchronizedAt));

                    if (state == ChallengeState.Ended || state == ChallengeState.Closed)
                    {
                        challenge.Start(new DateTimeProvider(startedAt - duration));
                    }

                    if (state == ChallengeState.Closed)
                    {
                        challenge.Close(new DateTimeProvider(closedAt));
                    }
                }

                return(challenge);
            });

            return(challengeFaker.Generate());
        }