Наследование: MonoBehaviour
Пример #1
0
    /// <summary>
    /// 增加游戏纪录
    /// </summary>
    /// <param name="level">游戏场景</param>
    /// <param name="score">分数</param>
    /// <param name="weight">权重</param>
    public void AddPlayRecord(GameRecords record)
    {
        if (record == null)
        {
            return;
        }
        LevelScore score = GetScoreByLevel(record.Level);

        if (score == null)
        {
            return;
        }

        score.PlayCount += 1;
        score.MaxHits    = record.MaxCombos;
        if (score.SetScore(record.Scores))
        {
            //重新计算总分
            this.ReportScore(score.LeardBoardID, score.BestScore, (ok) =>
            {
                score.NeedReported = !ok;
            });
        }
        Save2File();
    }
Пример #2
0
 void Start()
 {
     line       = GetComponent <LineRenderer>();
     trans      = GetComponent <Transform>();
     rigBody    = GetComponent <Rigidbody2D>();
     levelScore = GetComponentInParent <LevelScore>();
 }
Пример #3
0
    public List <LevelScore> ListLevelScore(int pIdGame, int pIdMap, int pIdLevel)
    {
        List <LevelScore> list_level_score = new List <LevelScore> ();

        string        conn = "URI=file:" + Application.streamingAssetsPath + "/AdvScrabble.db";  //Path to database.
        IDbConnection dbconn;

        dbconn = (IDbConnection) new SqliteConnection(conn);
        dbconn.Open();         //Open connection to the database.
        IDbCommand dbcmd    = dbconn.CreateCommand();
        string     sqlQuery = String.Format("SELECT * FROM score_level where id_game = \"{0}\" and id_map = \"{1}\" and id_level = \"{2}\"", pIdGame, pIdMap, pIdLevel);

        dbcmd.CommandText = sqlQuery;
        IDataReader reader = dbcmd.ExecuteReader();

        while (reader.Read())
        {
            LevelScore l = new LevelScore();
            l.Id_level_score = reader.GetInt32(3);
            l.Star           = this.GetStar(reader.GetInt32(4));
            l.Score_level    = reader.GetInt32(5);
            l.Loc_star       = (float)((double)reader["loc_star"]);
            l.Bar_value      = (float)((double)reader["bar_value"]);
            list_level_score.Add(l);
        }
        dbcmd.Dispose();
        dbcmd = null;
        dbconn.Close();
        dbconn = null;

        return(list_level_score);
    }
Пример #4
0
 /// <summary>
 /// Loads the current level scores from player prefs
 /// </summary>
 public void LoadScores()
 {
     scores = GameManager.Instance.GetSaveManager().currentSave.scores;
     for (int i = 0; i < scores.Length; i++)
     {
         if (scores[i] == null)
         {
             scores[i] = new LevelScore();
         }
     }
     if (GameManager.Instance.GetSaveManager().currentSave.pcgScores != null)
     {
         pcgScores = GameManager.Instance.GetSaveManager().currentSave.pcgScores.ToArray();
     }
     if (pcgScores != null)
     {
         for (int i = 0; i < pcgScores.Length; i++)
         {
             if (pcgScores[i] == null)
             {
                 pcgScores[i] = new LevelScore();
             }
         }
     }
     else
     {
         pcgScores = new LevelScore[0];
     }
 }
Пример #5
0
    void Start()
    {
        try
        {
            m_LevelScore = GameObject.FindGameObjectWithTag("LevelScore").GetComponent <LevelScore>();
        }
        catch (NullReferenceException ex)
        {
            Debug.LogWarning("Score Manager not found > " + ex.Message);
        }
        m_CameraControl       = GetComponent <CameraControl>();
        m_CharacterControl    = GameObject.Find("Katherine").GetComponent <PlayerController>();
        m_MessageText         = GetComponent <MessageText>();
        m_BlackScreenAnimator = m_BlackScreen.GetComponent <Animator>();
        m_DialogManager       = GameObject.Find("DialogManager").GetComponent <DialogManager>();

        m_CharacterControl.SetCanMove(false);
        m_CharacterControl.SetCanRun(false);

        m_CameraControl.SetCameraSize(1.5f, false, 0.0f);
        m_BlackScreenAnimator.Play("BlackScreenFadeOut");

        m_ActualEvent = 1;
        m_Found       = false;
        m_Solved      = false;
    }
Пример #6
0
    /// <summary>
    /// 登录
    /// </summary>
    /// <param name="onComplete">登录完成后回调</param>
    public void Login(System.Action <bool> onComplete)
    {
        SocialManager.Instance.Authenticate(ok =>
        {
            if (ok)
            {
                UserName = Social.localUser.userName;
                UserID   = Social.localUser.id;

                List <LevelScore> needReportScores = GetNeedReportScores();
                if (needReportScores != null && needReportScores.Count > 0)
                {
                    for (int i = 0; i < needReportScores.Count; i++)
                    {
                        LevelScore score = needReportScores[i];
                        this.ReportScore(score.LeardBoardID, score.BestScore, (b) =>
                        {
                            score.NeedReported = !b;
                        });
                    }
                }

                Save2File();
            }
            if (onComplete != null)
            {
                onComplete(ok);
            }
        });
    }
Пример #7
0
    private IEnumerator PrepareForNextLevel()
    {
        yield return(new WaitForSeconds(3)); // [dymara] Hack for disabling exit & death events until scene fade out animation finishes

        player.ResetPlayerFlags();
        levelScore = new LevelScore();
    }
Пример #8
0
 /// <summary>
 /// Takes a new score and compares it to the old score
 /// to determine if the new data should be saved
 /// </summary>
 /// <param name="score">LevelScore object that holds data for scoring</param>
 public void ScoreLevel(LevelScore score)
 {
     if (solutions.Length > score.index && score.index >= 0)
     {
         int _score = GetCalculatedScore(score);
         if (scores.Length <= score.index)
         {
             AddNewScores(score.index);
         }
         if (GetCalculatedScore(score.index) < _score)
         {
             scores[score.index] = score;
             SaveScores();
             Debug.Log("New level " + score.index + " score is " + _score);
         }
         else
         {
             Debug.Log("Old level " + score.index + " score is higher than " + _score + ", retaining");
         }
     }
     else
     {
         Debug.LogError("Solution Not Found, please setup on ScoreManager object");
     }
 }
Пример #9
0
 public void LoadSave(string s)
 {
     if (s != "")
     {
         ParallelSave save = GetSave(s);
         if (save != null)
         {
             currentSave = save;
             GameManager.Instance.GetScoreManager().LoadScores();
             GameManager.Instance.GetDataManager().GetLevels();
             if (currentSave.pcgLevels == null)
             {
                 currentSave.pcgLevels = new List <string>();
             }
             GameManager.Instance.GetDataManager().GetPCGLevels(currentSave.pcgLevels);
         }
         else
         {
             Debug.Log("Unable to load save: " + s + ". File does not exist.");
             LevelScore[]      scores    = new LevelScore[0];
             List <LevelScore> pcgScores = new List <LevelScore>();
             List <string>     pcgLevels = new List <string>();
             currentSave = NewSave(s, scores, pcgScores, pcgLevels);
             saves.Add(currentSave);
             GameManager.Instance.GetScoreManager().LoadScores();
             Debug.Log("Done loading scores");
             GameManager.Instance.GetDataManager().GetLevels();
             Debug.Log("Done loading levels");
             GameManager.Instance.GetDataManager().GetPCGLevels(currentSave.pcgLevels);
             Debug.Log("Done loading pcg levels");
         }
     }
 }
    public void Prepare(Mission mission, Dictionary <ScoreType, Result> actualResults)
    {
        Mission = mission;
        //you can only repeat specified missions (i have no time to do backend search for last random mission)
        ButtonRepeat.SetActive(mission.MissionType == MissionType.Specified);
        //GetComponent<ButtonsInCloud>().ButtonTopText = mission.MissionType == MissionType.Random?"Quick Mission":"Next mission";
        ActualResults = actualResults;
        TextLeaderboardNames.GetComponent <Text>().text  = "";
        TextLeaderboardScores.GetComponent <Text>().text = "";

        YourScore = new LevelScore();
        YourScore.AddInfo(Game.Me.UserName, (int)actualResults[ScoreType.Interventions].Value, WebConnector.GetDeviceId(), actualResults[ScoreType.Time].Value, -1);
        LevelScore yourPrevious = mission.YourBest;

        TextYourScore.GetComponent <Text>().text = YourScore.Interventions + " interv, " + (YourScore.Time.ToString("##.##")) + " seconds";

        int   interventionDelta = yourPrevious.Interventions - YourScore.Interventions;
        float timeDelta         = yourPrevious.Time - YourScore.Time;

        if (yourPrevious.Interventions == 0 || YourScore.Interventions < yourPrevious.Interventions || (YourScore.Interventions == yourPrevious.Interventions && YourScore.Time < yourPrevious.Time))
        {
            TextYourScore.GetComponent <Text>().text += "\n (YOUR RECORD";
            if (yourPrevious.Interventions == 0)
            {
                TextYourScore.GetComponent <Text>().text += ", first try";
            }
            else
            {
                if (interventionDelta > 0)
                {
                    TextYourScore.GetComponent <Text>().text += " by " + interventionDelta + " interv";
                }
                else
                {
                    TextYourScore.GetComponent <Text>().text += " by " + timeDelta.ToString("##.##") + " seconds";
                }
            }
            TextYourScore.GetComponent <Text>().text += ")";
        }
        else
        {
            TextYourScore.GetComponent <Text>().text += "\n WORSE THAN YOUR RECORD BY ";
            if (interventionDelta < 0)
            {
                TextYourScore.GetComponent <Text>().text += -interventionDelta + " interv";
            }
            else
            {
                TextYourScore.GetComponent <Text>().text += (-timeDelta).ToString("##.##") + " seconds";
            }
        }

        TextLeaderboardNames.GetComponent <Text>().text  = "Loading";
        TextLeaderboardScores.GetComponent <Text>().text = "scores";
        ImageYellowStraw.SetActive(false);
        UpdateText(Mission.BestScores);
    }
Пример #11
0
 public void EndCurrentLevel(bool cleared)
 {
     if (levelScore != null)
     {
         this.levelCleared = cleared;
         GetUIController().DisplayLevelSummary(cleared, player.remainingLives, levelScore.clearBonus, levelScore.blocksBonus, levelScore.monsterBonus, levelScore.pickupBonus, levelScore.timeBonus);
         levelScore = null;
     }
 }
Пример #12
0
 internal void GoToEndLevel()
 {
     lastScore = loadedLevel.GetComponent <LevelScore>();
     allScores.Add(lastScore);
     Destroy(loadedLevel);
     Destroy(loadedLevelPlayingUI);
     loadedLevelEndUI   = Instantiate(LevelEndUI);
     loadedLevelEndGrid = Instantiate(LevelEndGrid);
     loadedLevelEndUI.GetComponent <LevelEndUI>().Reset();
 }
Пример #13
0
 /// <summary>
 /// Loads the current level scores from player prefs
 /// </summary>
 public void LoadScores()
 {
     scores = GameManager.Instance.GetSaveManager().currentSave.scores;
     for (int i = 0; i < scores.Length; i++)
     {
         if (scores[i] == null)
         {
             scores[i] = new LevelScore();
         }
     }
 }
Пример #14
0
 private void Start()
 {
     try
     {
         m_LevelScore = GameObject.FindGameObjectWithTag("LevelScore").GetComponent <LevelScore>();
     }
     catch (NullReferenceException ex)
     {
         Debug.LogWarning("Score Manager not found (CallSubmitScore) > " + ex.Message);
     }
 }
Пример #15
0
 public void UpdateScore(LevelScore score, int index)
 {
     if (scores.Length <= index)
     {
         LevelScore[] oldScores = scores;
         scores = new LevelScore[index + 1];
         for (int i = 0; i < oldScores.Length; i++)
         {
             scores[i] = oldScores[i];
         }
     }
 }
Пример #16
0
    public LevelScore GetScoreByBoardId(string boardId)
    {
        LevelScore score = LevelScores.Find(p => { return(p.LeardBoardID == boardId); });

        if (score == null)
        {
            score = new LevelScore(GameGlobalValue.GetLevelIdByBoardId(boardId));
            score.LeardBoardID = boardId;
            LevelScores.Add(score);
        }
        return(score);
    }
Пример #17
0
 private void SendToScore()
 {
     try
     {
         m_LevelScore = GameObject.FindGameObjectWithTag("LevelScore").GetComponent <LevelScore>();
         m_LevelScore.SetUsername(m_Username);
     }
     catch (NullReferenceException ex)
     {
         Debug.LogWarning("Score Manager not found (LoadMenuData) > " + ex.Message);
     }
 }
Пример #18
0
    /// <summary>
    /// 获得游戏场景的纪录
    /// </summary>
    /// <param name="level"></param>
    /// <returns></returns>
    public LevelScore GetScoreByLevel(int level)
    {
        LevelScore score = LevelScores.Find(p => { return(p.LevelID == level); });

        if (score == null)
        {
            score = new LevelScore(level);
            score.LeardBoardID = GameGlobalValue.GetBoardIdByLevel(level);
            LevelScores.Add(score);
        }
        return(score);
    }
Пример #19
0
        public CompetitionScore GetScore(List <Program.LevelStatistic> solutions)
        {
            float saMovesScore = 0;
            float saTimeScore  = 0;
            float maMovesScore = 0;
            float maTimeScore  = 0;

            float timesFaster  = 0;
            int   levelsFaster = 0;

            foreach (var statistic in solutions)
            {
                //if (!Directory.EnumerateDirectories(statistic.LevelPath).Any(x => x == CompetitionFolder))
                //{
                //    continue;
                //}

                ReadOnlySpan <char> nameWithType = statistic.LevelName;
                ReadOnlySpan <char> name         = nameWithType.Slice(2);
                if (Scores.ContainsKey(name.ToString()))
                {
                    LevelScore score = Scores[name.ToString()];

                    ReadOnlySpan <char> levelType = nameWithType.Slice(0, 2);
                    bool isSingleAgent            = levelType.ToString() == "SA";
                    if (isSingleAgent)
                    {
                        saMovesScore += score.CalculateSAMoveScore(statistic.Moves);
                        saTimeScore  += score.CalculateSATimeScore(statistic.Time);
                        var fasterInfo = score.GetSATimesFaster(statistic.Time);
                        if (fasterInfo.Item1)
                        {
                            timesFaster += fasterInfo.Item2;
                            levelsFaster++;
                        }
                    }
                    else
                    {
                        maMovesScore += score.CalculateMAMoveScore(statistic.Moves);
                        maTimeScore  += score.CalculateMATimeScore(statistic.Time);
                        var fasterInfo = score.GetMATimesFaster(statistic.Time);
                        if (fasterInfo.Item1)
                        {
                            timesFaster += fasterInfo.Item2;
                            levelsFaster++;
                        }
                    }
                }
            }

            return(new CompetitionScore(saMovesScore, saTimeScore, maMovesScore, maTimeScore, timesFaster / levelsFaster));
        }
Пример #20
0
    void Start()
    {
        /*if(LS != null)
         *  GameObject.Destroy(LS);
         * else*/
        LS = this;

        //DontDestroyOnLoad(this);


        // Retrieves previous highScores
        DataManager.DM.LoadData();
    }
Пример #21
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="score"></param>
 /// <param name="success"></param>
 /// <returns></returns>
 public LevelScore GetSolutionInfo(LevelScore score, out bool success)
 {
     if (solutions.Length > score.index && score.index >= 0)
     {
         success = true;
         return(solutions[score.index]);
     }
     else
     {
         success = false;
         return(score);
     }
 }
Пример #22
0
    public static void loadLevelCurrentBest()
    {
        try {
            FileStream      file = File.Open(Application.persistentDataPath + "/levels_" + LevelManager.difficulty + LevelManager.level + ".dat", FileMode.Open);
            BinaryFormatter bf   = new BinaryFormatter();

            LevelScore levelScore = (LevelScore)bf.Deserialize(file);
            currentBest = levelScore.best;
            file.Close();
        } catch {
            currentBest = 0;
        }
    }
Пример #23
0
 private void Start()
 {
     try
     {
         m_LevelScore = GameObject.FindGameObjectWithTag("LevelScore").GetComponent <LevelScore>();
     }
     catch (NullReferenceException ex)
     {
         Debug.LogWarning("Score Manager not found > " + ex.Message);
     }
     m_PauseMenu.SetActive(true);
     m_ActualEvent = 0;
     m_Solved      = false;
 }
Пример #24
0
 private void Init()
 {
     levelNumber                  = configurator.initialLevelNumber;
     player.name                  = "Player";
     player.tag                   = Constants.HUMAN_PLAYER_TAG;
     player.remainingLives        = configurator.initialPlayerLives;
     player.score                 = 0;
     player.bombs                 = configurator.initialPlayerBombs;
     player.maximumBombsCount     = configurator.initialPlayerBombs;
     player.bombRange             = configurator.initialPlayerBombRange;
     player.speed                 = configurator.initialPlayerSpeed;
     player.remoteDetonationBonus = configurator.initialPlayerRemoteDetonationBonus;
     levelScore                   = new LevelScore();
 }
Пример #25
0
 private void Start()
 {
     try
     {
         m_LevelScore = GameObject.FindGameObjectWithTag("LevelScore").GetComponent <LevelScore>();
     }
     catch (NullReferenceException ex)
     {
         Debug.LogWarning("Score Manager not found > " + ex.Message);
     }
     m_ActualEvent   = 0;
     m_LanternsOrder = 0;
     m_LanterNum     = new int[4];
 }
Пример #26
0
    private void Start()
    {
        try
        {
            m_LevelScore = GameObject.FindGameObjectWithTag("LevelScore").GetComponent <LevelScore>();
        }
        catch (NullReferenceException ex)
        {
            Debug.LogWarning("Score Manager not found > " + ex.Message);
        }
        m_DialogManager = GameObject.Find("DialogManager").GetComponent <DialogManager>();

        m_Lose = gameObject.GetComponent <LoseScript>();
    }
Пример #27
0
        protected override void InsertSystemSubcomponents()
        {
            base.InsertSystemSubcomponents();

            // Insert lelelInfo and scoreInfo
            var li = (XLevelInfo)LevelInfo.Copy();
            var ls = (XLevelScore)LevelScore.Copy();

            li.Id = "levelInfo";
            ls.Id = "levelScore";

            this.RootComponent.Subcomponents.Insert(0, li);
            this.RootComponent.Subcomponents.Insert(0, ls);
            this.RootComponent.ResetComponentDictionary();
        }
Пример #28
0
    // Use this for initialization
    void Start()
    {
        actualPhase = LevelPhase.FIRST_SHOT;
        level       = 1;
        swiper      = GameObject.FindObjectOfType <Swiper>();

        levelScore = new LevelScore[10];

        for (int i = 0; i < levelScore.Length; i++)
        {
            levelScore[i] = new LevelScore();
        }

        scoreDisplay = GameObject.FindObjectOfType <ScoreDisplayer>();
    }
Пример #29
0
    private void OnSceneLoad(Scene p_scene, LoadSceneMode p_mode)
    {
        if (m_time > 0)
        {
            LevelScore score = new LevelScore();

            score.m_levelId = m_scores.Count + 1;
            score.m_time    = m_time;
            score.m_deaths  = m_deaths;

            m_scores.Add(score);
        }

        ResetLevelVariables();
    }
Пример #30
0
    public void SaveScore()
    {
        string json = "{\n" +
                      "\"LevelScores\":[\n";

        for (int i = 0; i < myLevelList.Count; i++)
        {
            LevelScore saveobject = new LevelScore
            {
                myLevelName     = myLevelList[i].myLevelName,
                myTwoStarScore  = myLevelList[i].myTwoStarScore,
                myOneStarScore  = myLevelList[i].myOneStarScore,
                myStartingMoney = myLevelList[i].myStartingMoney,
                myCoinValue     = myLevelList[i].myCoinValue
            };



            json += JsonUtility.ToJson(saveobject);
            if (i != myLevelList.Count - 1)
            {
                json += ",\n";
            }
        }

        json += "\n]\n}";

        string path = Application.streamingAssetsPath + "/levelscores.txt";

        if (File.Exists(path))
        {
            for (int i = 1; i < 5000; i++)
            {
                string backupPath = Application.streamingAssetsPath + "/backupLevelscore" + i + ".txt";
                if (File.Exists(backupPath))
                {
                    continue;
                }
                else
                {
                    //FileUtil.CopyFileOrDirectory(path, backupPath);
                    break;
                }
            }
        }

        File.WriteAllText(Application.streamingAssetsPath + "/levelscores.txt", json);
    }
Пример #31
0
        protected override void Update(UpdateContext updateContext, bool otherScreenHasFocus, bool coveredByOtherScreen)
        {
            if (_gameplayMode == GameplayMode.Editor)
            {
                // If the game is in Editor mode and the user presses Escape,
                // then return to the EditorScreen
                if (updateContext.InputState.IsNewKeyPress(Keys.Escape))
                {
                    LoadingScreen.Load(base.ScreenManager, false, new EditorScreen(_levelPath));
                    return;
                }
            }

            if (this.IsActive)
            {
                if(_gameplayMode == GameplayMode.Stage || _gameplayMode == GameplayMode.FullRun)
                {
                    if (updateContext.InputState.IsNewKeyPress(Keys.Escape))
                    {
                        base.ScreenManager.AddScreen(new PauseScreen(_levelPath));
                    }
                }

                _level.Update(updateContext);
                _levelController.Control(updateContext);
                _levelRenderer.Update(updateContext);

                if (!_level.Player.IsAlive)
                {
                    _timeSincePlayerDeath += updateContext.DeltaSeconds;

                    const float WaitUntilReset = 1f;
                    if (_timeSincePlayerDeath > WaitUntilReset)
                    {
                        if (_gameplayMode == GameplayMode.FullRun)
                        {
                            base.ScreenManager.AddScreen(new LevelSelectScreen(_levelPath));
                            return;
                        }

                        _timeSincePlayerDeath = 0f;
                        this.LoadLevel();
                        base.ScreenManager.AddScreen(new StartScreen());
                    }
                }

                // Shouldn't ever be null but whatever
                if (_level.World.Portal != null && _level.Player.IsAlive)
                {
                    if (_level.World.Portal.Area.Intersects(_level.Player.Area))
                    {
                        ScoreFile scoreFile = ScoreFile.Open();

                        LevelScore levelScore;
                        if (scoreFile.ContainsHash(_level.World.Map.Hash))
                        {
                            levelScore = scoreFile.GetLevelScore(_level.World.Map.Hash);
                        }
                        else
                        {
                            levelScore = new LevelScore(_level.World.Map.Hash, _level.World.Map.StageCount);
                        }

                        float stageTime = _level.GameClock.RemainingTime - _stageStartTime + 10; // 10 == base time
                        if (_gameplayMode != GameplayMode.Editor)
                        {
                            if (levelScore.StageBestTimes[_stage].HasValue)
                            {
                                if (stageTime > levelScore.StageBestTimes[_stage].Value)
                                {
                                    levelScore.StageBestTimes[_stage] = stageTime;
                                }
                            }
                            else
                            {
                                levelScore.StageBestTimes[_stage] = stageTime;
                            }
                        }

                        if (_gameplayMode == GameplayMode.FullRun)
                        {
                            if (_stage == _level.World.Map.StageCount - 1)
                            {
                                if (levelScore.MapBestTime.HasValue)
                                {
                                    if (_level.GameClock.RemainingTime > levelScore.MapBestTime.Value)
                                    {
                                        levelScore.MapBestTime = _level.GameClock.RemainingTime;
                                    }
                                }
                                else
                                {
                                    levelScore.MapBestTime = _level.GameClock.RemainingTime;
                                }

                                base.ScreenManager.AddScreen(new StageCompletedScreen(_levelPath, (_gameplayMode != GameplayMode.Stage)));
                            }
                            else
                            {
                                _level.GameClock.AddTime(10);
                                _stageStartTime = _level.GameClock.RemainingTime;

                                _stage++;
                                _level.World.CreatePortal(_level.World.GetStageStartIndex(_stage + 1));
                            }
                        }
                        else
                        {
                            base.ScreenManager.AddScreen(new StageCompletedScreen(_levelPath, (_gameplayMode != GameplayMode.Stage)));
                        }

                        scoreFile.Save();
                    }
                }
            }
        }
Пример #32
0
 /// <summary>
 /// 获得游戏场景的纪录
 /// </summary>
 /// <param name="level"></param>
 /// <returns></returns>
 public LevelScore GetScoreByLevel(int level)
 {
     LevelScore score = LevelScores.Find(p => { return p.LevelID == level; });
     if (score == null)
     {
         score = new LevelScore(level);
         score.LeardBoardID = GameGlobalValue.GetBoardIdByLevel(level);
         LevelScores.Add(score);
     }
     return score;
 }
Пример #33
0
 public LevelScore GetScoreByBoardId(string boardId)
 {
     LevelScore score = LevelScores.Find(p => { return p.LeardBoardID == boardId; });
     if (score == null)
     {
         score = new LevelScore(GameGlobalValue.GetLevelIdByBoardId(boardId));
         score.LeardBoardID = boardId;
         LevelScores.Add(score);
     }
     return score;
 }
Пример #34
0
        private void LoadLevelData()
        {
            if (_currentLevelIndex < _files.Length)
            {
                int hash;
                int stageCount;
                using (var stream = File.OpenRead(_files[_currentLevelIndex]))
                {
                    using (BinaryReader reader = new BinaryReader(stream))
                    {
                        hash = reader.ReadInt32();
                        stageCount = reader.ReadInt32();
                    }
                }

                if (_scoreFile.ContainsHash(hash))
                {
                    _currentLevelScore = _scoreFile.GetLevelScore(hash);
                }
                else
                {
                    _currentLevelScore = new LevelScore(hash, stageCount);
                    _scoreFile.AddLevelScore(_currentLevelScore);
                }

                this.CreateUi();
            }
        }
Пример #35
0
 //relativni (level/score) skore na absolutni (score)
 static LevelScore GetLevelScore(Levels level, double Correct) {
   LevelScore res = new LevelScore();
   //globalni score (vzhledem k C2). 100 v C2 ma globalScore 100. Nizsi urovne maji globalni score vzdy o c_delta krat nizsi.
   res.globalScore = (int)(Correct * 100);
   if (level == Levels.no) {
     res.absLevel = res.level = Levels.no;
     res.score = res.absScore = res.globalScore;
   } else {
     //vypocti absolutni level a absolutni score. Vstupem je globalScore, na zaklade nej spocte optimalni absScore a absLevel tak, aby byly porovnatelne EslTest a A1,...,C2 testy.
     res.absLevel = Levels.A1;
     foreach (Levels lev in LevelsBasic)
       if (Correct <= Weights(lev) * 0.9) { res.absLevel = lev; break; }
     res.absScore = (int)(Correct / weights[LevelNum(res.absLevel)] * 100);
     //level a score (do diplomu apod.) - pro A1...C2 testy Level zustava, pro EslTest se prepocte na absLevel x absScore
     res.level = LevelsBasic.Contains(level) ? level : res.absLevel;
     res.score = (int)(Correct / Weights(res.level) * 100);
   }
   return res;
 }