示例#1
0
        //Gets a the player's locally stored rank for a map
        public RankModel.Rank GetLocalRank(IDifficultyBeatmap map, PlayerDataModel dataModel = null)
        {
            dataModel = dataModel ?? Resources.FindObjectsOfTypeAll <PlayerDataModel>().First();
            var playerLevelStatsData = dataModel.playerData.GetPlayerLevelStatsData(map.level.levelID, map.difficulty, map.parentDifficultyBeatmapSet.beatmapCharacteristic);

            return(playerLevelStatsData.validScore ? playerLevelStatsData.maxRank : RankModel.Rank.E);
        }
示例#2
0
        public async Task <IActionResult> PutPlayer([FromRoute] Guid id, [FromBody] UpdatePlayerRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            // Find our player.
            PlayerDataModel player = await _context.Players.FindAsync(id);

            if (player == null)
            {
                return(NotFound());
            }

            // Update properties.
            player.Name = request.Name;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                // If we hit a concurrency exception and the player no longer exists,
                // It must have been deleted while we were working.
                if (!_context.Players.Any(e => e.Id == id))
                {
                    return(NotFound());
                }
                throw;
            }

            return(NoContent());
        }
示例#3
0
 internal BeatSaberUtilities(MainSettingsModelSO mainSettingsModel, PlayerDataModel playerDataModel, Settings settings, IVRPlatformHelper vrPlatformHelper)
 {
     _mainSettingsModel = mainSettingsModel;
     _playerDataModel   = playerDataModel;
     _settings          = settings;
     _vrPlatformHelper  = vrPlatformHelper;
 }
        protected override void DidActivate(bool firstActivation, bool addedToHierarchy, bool screenSystemEnabling)
        {
            if (firstActivation)
            {
                SetTitle("Qualifier Room", ViewController.AnimationType.None);
                showBackButton = true;

                _playerDataModel             = Resources.FindObjectsOfTypeAll <PlayerDataModel>().First();
                _menuLightsManager           = Resources.FindObjectsOfTypeAll <MenuLightsManager>().First();
                _soloFreePlayFlowCoordinator = Resources.FindObjectsOfTypeAll <SoloFreePlayFlowCoordinator>().First();
                _campaignFlowCoordinator     = Resources.FindObjectsOfTypeAll <CampaignFlowCoordinator>().First();
                _resultsViewController       = Resources.FindObjectsOfTypeAll <ResultsViewController>().First();
                _scoreLights   = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_resultsClearedLightsPreset");
                _redLights     = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_resultsFailedLightsPreset");
                _defaultLights = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_defaultLightsPreset");

                _songSelection = BeatSaberUI.CreateViewController <SongSelection>();
                _songSelection.SongSelected += songSelection_SongSelected;

                _songDetail              = BeatSaberUI.CreateViewController <SongDetail>();
                _songDetail.PlayPressed += songDetail_didPressPlayButtonEvent;
                _songDetail.DisableCharacteristicControl = true;
                _songDetail.DisableDifficultyControl     = true;
                _songDetail.DisablePlayButton            = false;
            }
            if (addedToHierarchy)
            {
                _songSelection.SetSongs(Event.QualifierMaps.ToList());
                ProvideInitialViewControllers(_songSelection);
            }
        }
示例#5
0
    public static PlayerDataModel LoadPlayerData(string path)
    {
        PlayerDataModel dataToReturn = null;

        var file = new File();
        var err  = file.Open(path, File.ModeFlags.Read);

        GD.Print(err);

        if (err != Error.Ok)
        {
            GD.PrintErr($"Unable to open file at path: {path}. {err}");
            return(null);
        }

        var jsonString = file.GetLine();

        dataToReturn = JsonConvert.DeserializeObject <PlayerDataModel>(jsonString);

        GD.Print(dataToReturn);

        file.Close();

        return(dataToReturn);
    }
 internal GeneralSettingsHost(VRPlayerInputInternal playerInput, Settings settings, PlayerDataModel playerDataModel, ArmSpanMeasurer armSpanMeasurer)
 {
     _playerInput     = playerInput;
     _settings        = settings;
     _playerDataModel = playerDataModel;
     _armSpanMeasurer = armSpanMeasurer;
 }
示例#7
0
 public PlayerBehaviour(Transform player, PlayerDataModel model)
 {
     _playerTrans   = player;
     _model         = model;
     IsAttack       = false;
     _faceDirection = Vector3.zero;
 }
示例#8
0
        public void OpenSongsList(string songToSelectWhenLoaded = null)
        {
            if (songListViewController == null)
            {
                songListViewController = BeatSaberUI.CreateViewController <SongListViewController>();
            }
            if (_bottomViewController == null)
            {
                _bottomViewController = BeatSaberUI.CreateViewController <BottomViewController>();
            }
            if (_resultsViewController == null)
            {
                _resultsViewController = Resources.FindObjectsOfTypeAll <ResultsViewController>().First();
            }
            if (_playerDataModel == null)
            {
                _playerDataModel = Resources.FindObjectsOfTypeAll <PlayerDataModel>().First();
            }
            if (_menuLightsManager == null)
            {
                _menuLightsManager = Resources.FindObjectsOfTypeAll <MenuLightsManager>().First();
            }
            if (_soloFreePlayFlowCoordinator == null)
            {
                _soloFreePlayFlowCoordinator = Resources.FindObjectsOfTypeAll <SoloFreePlayFlowCoordinator>().First();
            }
            if (_campaignFlowCoordinator == null)
            {
                _campaignFlowCoordinator = Resources.FindObjectsOfTypeAll <CampaignFlowCoordinator>().First();
            }
            if (_alwaysOwnedContent == null)
            {
                _alwaysOwnedContent = Resources.FindObjectsOfTypeAll <AlwaysOwnedContentSO>().First();
            }
            if (_primaryLevelCollection == null)
            {
                _primaryLevelCollection = _alwaysOwnedContent.alwaysOwnedPacks.First(x => x.packID == OstHelper.packs[0].PackID).beatmapLevelCollection as BeatmapLevelCollectionSO;
            }
            if (_secondaryLevelCollection == null)
            {
                _secondaryLevelCollection = _alwaysOwnedContent.alwaysOwnedPacks.First(x => x.packID == OstHelper.packs[1].PackID).beatmapLevelCollection as BeatmapLevelCollectionSO;
            }
            if (_tertiaryLevelCollection == null)
            {
                _tertiaryLevelCollection = _alwaysOwnedContent.alwaysOwnedPacks.First(x => x.packID == OstHelper.packs[2].PackID).beatmapLevelCollection as BeatmapLevelCollectionSO;
            }
            if (_extrasLevelCollection == null)
            {
                _extrasLevelCollection = _alwaysOwnedContent.alwaysOwnedPacks.First(x => x.packID == OstHelper.packs[3].PackID).beatmapLevelCollection as BeatmapLevelCollectionSO;
            }
            if (!songListViewController.isInViewControllerHierarchy || !songListViewController.isActiveAndEnabled)
            {
                SetViewControllersToNavigationController(_mainModNavigationController, new ViewController[] { songListViewController });

                songListViewController.SelectWhenLoaded(songToSelectWhenLoaded);
                songListViewController.SongListRowSelected += SongListRowSelected;
                songListViewController.ReloadPressed       += () => ReloadServerData();
                ReloadServerData();
            }
        }
示例#9
0
        protected override void DidActivate(bool firstActivation, ActivationType type)
        {
            base.DidActivate(firstActivation, type);

            if (firstActivation)
            {
                if (Plugin.DownloaderExists)
                {
                    downloader = new BeatSaverDownloaderInterop();
                    if (downloader == null)
                    {
                        Plugin.log.Warn($"{nameof(BeatSaverDownloaderInterop)} could not be created.");
                    }
                    else
                    {
                        MoreSongsAvailable = downloader.CanCreate;
                        Plugin.log.Debug($"{nameof(MoreSongsAvailable)} is {MoreSongsAvailable}");
                    }
                }
                else
                {
                    Plugin.log.Warn($"BeatSaverDownloader not found, More Songs button won't be created.");
                    MoreSongsAvailable = false;
                }

                _songsTableView.tableView.didSelectCellWithIdxEvent += SongsTableView_DidSelectRow;
                _songsTableView.tableView.dataSource = this;

                _playerDataModel        = Resources.FindObjectsOfTypeAll <PlayerDataModel>().First();
                _additionalContentModel = Resources.FindObjectsOfTypeAll <AdditionalContentModel>().First();
            }

            SelectTopButtons(TopButtonsState.Select);
            requestMode = false;
        }
        /// <summary>
        /// Migrate old favorites into new system.
        /// </summary>
        public static void MigrateFavorites()
        {
            String migratedPlaylistPath = Path.Combine(Environment.CurrentDirectory, "Playlists", MigratedFavoritesPlaylistName);
            String oldFavoritesPath     = Path.Combine(Environment.CurrentDirectory, "Playlists", DefaultConvertedFavoritesPlaylistName);

            // Skip if already migrated or if the song browser favorites do not exist
            if (!File.Exists(oldFavoritesPath) || File.Exists(migratedPlaylistPath))
            {
                return;
            }

            Logger.Info("Migrating [{0}] into the In-Game favorites.", oldFavoritesPath);

            Playlist        oldFavorites = Playlist.LoadPlaylist(oldFavoritesPath);
            PlayerDataModel playerData   = Resources.FindObjectsOfTypeAll <PlayerDataModel>().FirstOrDefault();

            foreach (PlaylistSong song in oldFavorites.songs)
            {
                string levelID = CustomLevelLoader.kCustomLevelPrefixId + song.hash;
                Logger.Info("Migrating song into ingame favorites: {0}", levelID);
                playerData.playerData.favoritesLevelIds.Add(levelID);
            }

            Logger.Info("Moving [{0}->{1}] into the In-Game favorites.", oldFavoritesPath, migratedPlaylistPath);
            File.Move(oldFavoritesPath, migratedPlaylistPath);

            playerData.Save();
        }
示例#11
0
        internal override void Init(CountersData data, Vector3 position)
        {
            _scoreController = data.ScoreController;
            PlayerDataModel player = data.PlayerData;

            gameplayModsModel = data.ModifiersData;
            gameplayMods      = data.PlayerData.playerData.gameplayModifiers;
            IDifficultyBeatmap beatmap = data.GCSSD.difficultyBeatmap;

            stats = player.playerData.GetPlayerLevelStatsData(
                beatmap.level.levelID, beatmap.difficulty, beatmap.parentDifficultyBeatmapSet.beatmapCharacteristic);
            int maxRawScore = ScoreModel.MaxRawScoreForNumberOfNotes(beatmap.beatmapData.notesCount);

            _maxPossibleScore = Mathf.RoundToInt(maxRawScore * gameplayModsModel.GetTotalMultiplier(gameplayMods));
            beginningPB       = stats.highScore / (float)_maxPossibleScore;
            highScore         = stats.highScore;

            TextHelper.CreateText(out _PbTrackerText, position);
            _PbTrackerText.fontSize  = settings.TextSize;
            _PbTrackerText.color     = Color.white;
            _PbTrackerText.alignment = TextAlignmentOptions.Center;

            _scoreController.scoreDidChangeEvent += UpdateScore;

            SetPersonalBest(beginningPB);

            if (settings.UnderScore)
            {
                StartCoroutine(WaitForScoreCounter());
            }
        }
示例#12
0
        public void SetupViewController()
        {
            playButtonGlow = playButton.GetComponent <Glowable>();

            levelDetailsRect.gameObject.AddComponent <Mask>();

            Image maskImage = levelDetailsRect.gameObject.AddComponent <Image>();

            maskImage.material = Sprites.NoGlowMat;
            maskImage.sprite   = Resources.FindObjectsOfTypeAll <Sprite>().First(x => x.name == "RoundRectPanel");
            maskImage.type     = Image.Type.Sliced;
            maskImage.color    = new Color(0f, 0f, 0f, 0.25f);

            levelCoverImage.color = new Color(0.5f, 0.5f, 0.5f, 0.5f);

            progressBarBG.color  = new Color(1f, 1f, 1f, 0.2f);
            progressBarTop.color = new Color(1f, 1f, 1f, 1f);

            charactertisticControlBlocker.color = new Color(1f, 1f, 1f, 0f);
            difficultyControlBlocker.color      = new Color(1f, 1f, 1f, 0f);

            cancellationToken = new CancellationTokenSource();

            _defaultArtworkTexture = Resources.FindObjectsOfTypeAll <Texture2D>().First(x => x.name == "DefaultSongArtwork");

            _playerDataModel = Resources.FindObjectsOfTypeAll <PlayerDataModel>().First();
        }
示例#13
0
        public void SetupViewController()
        {
            playNowButtonGlow = playNowButton.GetComponent <Glowable>();

            levelDetailsRect.gameObject.AddComponent <Mask>();

            Image maskImage = levelDetailsRect.gameObject.AddComponent <Image>();

            maskImage.material = Sprites.NoGlowMat;
            maskImage.sprite   = Resources.FindObjectsOfTypeAll <Sprite>().First(x => x.name == "RoundRectPanel");
            maskImage.type     = Image.Type.Sliced;
            maskImage.color    = new Color(0f, 0f, 0f, 0.25f);

            levelCoverImage.color = new Color(0.5f, 0.5f, 0.5f, 0.5f);

            progressBarBG.color  = new Color(1f, 1f, 1f, 0.2f);
            progressBarTop.color = new Color(1f, 1f, 1f, 1f);

            //_beatmapLevelsModel = Resources.FindObjectsOfTypeAll<BeatmapLevelsModel>().First();

            _defaultArtworkTexture = Resources.FindObjectsOfTypeAll <Texture2D>().First(x => x.name == "DefaultSongArtwork");

            _playerDataModel = Resources.FindObjectsOfTypeAll <PlayerDataModel>().First();

            leaderboardTableView.GetComponent <TableView>().RemoveReusableCells("Cell");

            if (selectedLevel != null)
            {
                SetSong(selectedLevel, selectedBeatmapCharacteristic, selectedDifficulty);
            }
        }
示例#14
0
        /// <summary>
        /// Pushes a message to the producer queue
        /// </summary>
        /// <param name="_user"></param>
        public void EnqueueProducerQueue(PlayerDataModel data)
        {
            Message msg = new Message(Newtonsoft.Json.JsonConvert.SerializeObject(data));

            msg.Label     = data.UserID;
            msg.Formatter = new JsonMessageFormatter();
            MSMQHelper.SendMessage(producerQueue, msg);
        }
示例#15
0
 public XGameInstaller(MiscSettings miscSettings, ClockSettings clockSettings, TimerSettings timerSettings, PlayerDataModel playerDataModel, BreaktimeSettings breaktimeSettings)
 {
     _miscSettings      = miscSettings;
     _clockSettings     = clockSettings;
     _timerSettings     = timerSettings;
     _playerDataModel   = playerDataModel;
     _breaktimeSettings = breaktimeSettings;
 }
示例#16
0
 /// <summary>
 ///     Creates a new PlayerViewModel using the PlayerDataModel.
 /// </summary>
 /// <param name="playerData">The player data to construct a view model from.</param>
 /// <returns>Fully constructed player view model.</returns>
 public static PlayerViewModel CreatePlayerViewModel(PlayerDataModel playerData)
 {
     return(new PlayerViewModel
     {
         Id = playerData.Id,
         Name = playerData.Name
     });
 }
        /// <summary>
        /// Filter songs based on playerdata favorites.
        /// </summary>
        private List <IPreviewBeatmapLevel> FilterFavorites(List <IPreviewBeatmapLevel> levels)
        {
            Logger.Info("Filtering song list as favorites playlist...");

            PlayerDataModel playerData = Resources.FindObjectsOfTypeAll <PlayerDataModel>().FirstOrDefault();

            return(levels.Where(x => playerData.playerData.favoritesLevelIds.Contains(x.levelID)).ToList());
        }
 private void UpdateView()
 {
     TitlePanelPresenter.SetCoinsValue(PlayerDataModel.GetCoins());
     TitlePanelPresenter.SetGemsValue(PlayerDataModel.GetGems());
     TitlePanelPresenter.SetTicketsValue(PlayerDataModel.GetTickets());
     TitlePanelPresenter.SetXpValue(PlayerDataModel.GetXp());
     TitlePanelPresenter.SetLevelValue(PlayerDataModel.GetLevel());
 }
示例#19
0
        public async Task <string> GetCharacters(string id)
        {
            FilterDefinition <BsonDocument> filter = Builders <BsonDocument> .Filter.Eq("userId", id);

            PlayerDataModel pd = new PlayerDataModel(await _collection.Find(filter).FirstAsync());

            return(pd.Characters.ToJson());
        }
        public async Task <IActionResult> Update(PlayerDataModel model)
        {
            var travianUser = await _travianUserRepository.GetUserByName(model.UserName, User.Identity.Name);

            travianUser.PlayerData = model;
            await _travianUserRepository.ReplacePlayerData(travianUser);

            return(RedirectToAction("Index", new { userName = travianUser.UserName }));
        }
示例#21
0
 private AvatarTailor(ILoggerProvider loggerProvider, MainSettingsModelSO mainSettingsModel, PlayerDataModel playerDataModel, Settings settings, CalibrationData calibrationData, TrackedDeviceManager trackedDeviceManager)
 {
     _logger               = loggerProvider.CreateLogger <AvatarTailor>();
     _mainSettingsModel    = mainSettingsModel;
     _playerDataModel      = playerDataModel;
     _settings             = settings;
     _calibrationData      = calibrationData;
     _trackedDeviceManager = trackedDeviceManager;
 }
示例#22
0
        public override void InstallBindings()
        {
            MainConfigModel mainConfig = Plugin.MainConfig;

            hudConfig = Container.Resolve <HUDConfigModel>();
            dataModel = Container.Resolve <PlayerDataModel>();

            if (!mainConfig.Enabled)
            {
                return;
            }

            /// LOADING IMPORTANT SHIT LIKE CANVASES AND STUFF ///
            Container.Bind <CanvasUtility>().AsSingle();

            Container.Bind <NoteCountProcessor>().To <GenericNoteCountProcessor>().AsSingle();

            /// LOADING COUNTERS ///
            Plugin.Logger.Notice("Loading counters...");

            AddCounter <MissedConfigModel, MissedCounter>();
            AddCounter <NoteConfigModel, NotesCounter>();

            if (mainConfig.ProgressConfig.Mode != ProgressMode.BaseGame)
            {
                AddCounter <ProgressConfigModel, ProgressCounter>();
            }
            else
            {
                AddCounter <ProgressConfigModel, ProgressBaseGameCounter>();
            }

            AddCounter <ScoreConfigModel, ScoreCounter>();
            AddCounter <CutConfigModel, CutCounter>();
            AddCounter <FailConfigModel, FailCounter>();
            AddCounter <NotesLeftConfigModel, NotesLeftCounter>();
            AddCounter <SpeedConfigModel, SpeedCounter>();
            AddCounter <SpinometerConfigModel, Spinometer>();


            AddCounter <PBConfigModel, PBCounter>((settings) => {
                ScoreConfigModel scoreConfig = Container.Resolve <ScoreConfigModel>();
                HUDCanvas canvasSettings     = scoreConfig.CanvasID == -1 ? hudConfig.MainCanvasSettings : hudConfig.OtherCanvasSettings[scoreConfig.CanvasID];
                return(scoreConfig.Enabled && settings.UnderScore && (dataModel.playerData.playerSpecificSettings.noTextsAndHuds ? canvasSettings.IgnoreNoTextAndHUDOption : true));
            });

            foreach (Custom.CustomCounter customCounter in Plugin.LoadedCustomCounters.Values)
            {
                AddCustomCounter(customCounter, customCounter.CounterType);
            }

            /// LOADING BROADCASTERS WITH BROADCAST IN-GAME EVENTS TO COUNTERS AND STUFF ///
            Container.BindInterfacesAndSelfTo <CounterEventBroadcaster>().AsSingle().NonLazy();
            Container.BindInterfacesAndSelfTo <NoteEventBroadcaster>().AsSingle().NonLazy();
            Container.BindInterfacesAndSelfTo <ScoreEventBroadcaster>().AsSingle().NonLazy();
            Plugin.Logger.Notice("Counters loaded!");
        }
示例#23
0
        private void GameCoreLoaded()
        {
            PlayerDataModel dataModel = UnityEngine.Resources.FindObjectsOfTypeAll <PlayerDataModel>().FirstOrDefault();

            if (CountersController.settings.Enabled && !(dataModel?.playerData.playerSpecificSettings.noTextsAndHuds ?? false))
            {
                CountersController.LoadCounters();
            }
        }
示例#24
0
 private void AssertPlayerDataViewIsCorrect(IPlayer player, PlayerDataModel playerDataView)
 {
     playerDataView.Id.ShouldBe(player.Id);
     playerDataView.Name.ShouldBe(player.Name);
     playerDataView.PlayedDevelopmentCards.ShouldBeNull();
     playerDataView.HiddenDevelopmentCards.ShouldBe(0);
     playerDataView.ResourceCards.ShouldBe(player.Resources.Count);
     playerDataView.IsComputer.ShouldBe(player.IsComputer);
 }
示例#25
0
        void SendRequest(PlayerDataModel model)
        {
            Message m = new Message()
            {
                Formatter = new JsonMessageFormatter(),
                Body      = JsonConvert.SerializeObject(model)
            };

            MSMQHelper.SendMessage(databaseConsumerQueue, m);
        }
示例#26
0
 public CountersData()
 {
     BOM                     = Resources.FindObjectsOfTypeAll <BeatmapObjectManager>().First();
     ScoreController         = Resources.FindObjectsOfTypeAll <ScoreController>().First();
     PlayerController        = Resources.FindObjectsOfTypeAll <PlayerController>().First();
     AudioTimeSyncController = Resources.FindObjectsOfTypeAll <AudioTimeSyncController>().First();
     PlayerData              = Resources.FindObjectsOfTypeAll <PlayerDataModel>().First();
     ModifiersData           = Resources.FindObjectsOfTypeAll <GameplayModifiersModelSO>().First();
     GCSSD                   = BS_Utils.Plugin.LevelData.GameplayCoreSceneSetupData; //By the time all of these load, so should GCSSD.
     Is360Or90Level          = Resources.FindObjectsOfTypeAll <FlyingGameHUDRotation>().Any(x => x.isActiveAndEnabled);
 }
 private void Inject(ILoggerProvider loggerProvider, PlayerAvatarManager avatarManager, Settings settings, CalibrationData calibrationData, ShaderLoader shaderLoader, VRPlayerInput playerInput, PlayerDataModel playerDataModel, GameplaySetupViewController gameplaySetupViewController)
 {
     _logger                      = loggerProvider.CreateLogger <SettingsViewController>();
     _avatarManager               = avatarManager;
     _settings                    = settings;
     _calibrationData             = calibrationData;
     _shaderLoader                = shaderLoader;
     _playerInput                 = playerInput;
     _playerDataModel             = playerDataModel;
     _gameplaySetupViewController = gameplaySetupViewController;
 }
示例#28
0
 public static void TakeGems(int Value)
 {
     if (TryTakeCoins(Value))
     {
         PlayerDataModel.TakeGems(Value);
     }
     else
     {
         Debug.LogWarning("Не хватает гемов");
     }
 }
示例#29
0
 public static void TakeTickets(int Value)
 {
     if (TryTakeTickets(Value))
     {
         PlayerDataModel.TakeTickets(Value);
     }
     else
     {
         Debug.LogWarning("Не хватает билетов");
     }
 }
示例#30
0
    private MainModel()
    {
        CameraModel = new CameraModel();
        PlayerDataModel = new PlayerDataModel();
        AvailablePlayers = new List<PlayerModel>();

        ScreenState = ScreenState.PlayerSelection;
        ChoicesModel = new ChoicesModel();
        SubjectModel = new SubjectModel();

        ActiveLevelProgress = 0;
    }
示例#31
0
        public void Save(PropertyInfo propertyInfo, PlayerDataModel playerDataModel)
        {
            if (IsSavingBlocked)
            {
                return;
            }

            Debug.Log($"Saving of key({propertyInfo.Name}) with value({propertyInfo.GetValue(playerDataModel)}) started");

            PropertyInfoExtensions.SaveToPlayerPrefs(propertyInfo, playerDataModel);

            Debug.Log($"Saving of key({propertyInfo.Name}) with value({propertyInfo.GetValue(playerDataModel)}) finished");
        }