Exemple #1
0
    public void SaveRecord(SaveFileInstance curSaveFileInstance, List <List <int> > resultList, string symbol, float timeCost)
    {
        curSaveFileInstance.isUpload = false;

        curSaveFileInstance.timeCost = timeCost;

        string finishTime = DateTime.Now.ToString("yyyyMMddHHmmss");

        curSaveFileInstance.fileName = finishTime;

        float accuracy = CalculateAccuracy(resultList);

        curSaveFileInstance.accuracy = accuracy;

        List <QuestionInstance> qInstanceList = ConvertToInstanceList(resultList, symbol);

        curSaveFileInstance.qInstancList = qInstanceList;

        curSaveFileInstance.achievementName = "";

        curSaveFileInstance.opponentName = "";

        CurSaveFileInstance = curSaveFileInstance;
        string toSave = JsonUtility.ToJson(curSaveFileInstance);

        SaveRecord(toSave, finishTime);

        TotalGame++;
        TotalTime += timeCost;
    }
Exemple #2
0
    private void InitRank()
    {
        RankInstance     rInstance = RankController.Instance.CurRankInstance;
        SaveFileInstance sInstance = RecordController.Instance.CurSaveFileInstance;

        if (rInstance == null || sInstance == null)
        {
            return;
        }

        sharelTitle.gameObject.SetActive(true);
        sharelTitle.text = LanguageController.Instance.GetLanguage("Text_90009");
        sharelTitle.text = string.Format(sharelTitle.text, rInstance.name);
        rankSharePattern_Time.SetActive(sInstance.cInstance.patternID == PatternID.Time);
        rankSharePattern_Number.SetActive(sInstance.cInstance.patternID == PatternID.Number);
        rankShareRank.text     = string.Format(rankShareRank.text, rInstance.rank);
        rankShareAmount.text   = string.Format(rankShareAmount.text, sInstance.qInstancList.Count);
        rankShareTime.text     = string.Format(rankShareTime.text, sInstance.timeCost.ToString("f1"));
        rankShareSymbol.text   = string.Format(rankShareSymbol.text, FightController.Instance.GetSymbol(sInstance.cInstance.symbolID));
        rankShareDigit.text    = string.Format(rankShareDigit.text, (int)(sInstance.cInstance.digitID + 2));
        rankShareOperand.text  = string.Format(rankShareOperand.text, (int)(sInstance.cInstance.operandID + 2));
        rankShareAccuracy.text = string.Format(rankShareAccuracy.text, sInstance.accuracy.ToString("f1"));
        string meanTime = (sInstance.timeCost / sInstance.qInstancList.Count).ToString("f1");

        rankShareMeanTime.text = string.Format(rankShareMeanTime.text, meanTime);
    }
Exemple #3
0
    private void InitBluetooth()
    {
        SaveFileInstance instance = RecordController.Instance.CurSaveFileInstance;

        if (instance == null)
        {
            return;
        }
        sharelTitle.gameObject.SetActive(true);
        sharelTitle.text           = LanguageController.Instance.GetLanguage("Text_80015");
        sharelTitle.text           = string.Format(sharelTitle.text, GameManager.Instance.UserName, instance.opponentName);
        bluetoothShareAmount.text  = string.Format(bluetoothShareAmount.text, instance.qInstancList.Count);
        bluetoothShareTime.text    = string.Format(bluetoothShareTime.text, instance.timeCost.ToString("f1"));
        bluetoothShareSymbol.text  = string.Format(bluetoothShareSymbol.text, FightController.Instance.GetSymbol(instance.cInstance.symbolID));
        bluetoothShareDigit.text   = string.Format(bluetoothShareDigit.text, (int)(instance.cInstance.digitID + 2));
        bluetoothShareOperand.text = string.Format(bluetoothShareOperand.text, (int)(instance.cInstance.operandID + 2));

        int right, noAnswer, wrong;

        CalcResult(instance.qInstancList, true, out right, out noAnswer, out wrong);
        bluetoothShareOwnRight.text    = string.Format(bluetoothShareOwnRight.text, right);
        bluetoothShareOwnNoAnswer.text = string.Format(bluetoothShareOwnNoAnswer.text, noAnswer);
        bluetoothShareOwnWrong.text    = string.Format(bluetoothShareOwnWrong.text, wrong);

        CalcResult(instance.qInstancList, false, out right, out noAnswer, out wrong);
        bluetoothShareOtherRight.text    = string.Format(bluetoothShareOtherRight.text, right);
        bluetoothShareOtherNoAnswer.text = string.Format(bluetoothShareOtherNoAnswer.text, noAnswer);
        bluetoothShareOtherWrong.text    = string.Format(bluetoothShareOtherWrong.text, wrong);
    }
Exemple #4
0
    public SaveFileInstance ReadRecord(string fileName)
    {
        string           fullName         = string.Format(fileFullName, fileName);
        string           data             = CommonTool.GetDataFromDataPath(fullName);
        SaveFileInstance saveFileInstance = JsonUtility.FromJson <SaveFileInstance>(data);

        return(saveFileInstance);
    }
Exemple #5
0
    private void FightOver()
    {
        CancelInvoke();
        SaveFileInstance curSaveFileInstance = new SaveFileInstance();

        curSaveFileInstance.cInstance    = FightController.Instance.CurCategoryInstance;
        curSaveFileInstance.opponentName = BluetoothController.Instance.CurPeripheralInstance.name;
        RecordController.Instance.SaveRecord(curSaveFileInstance, resultList, symbol, timeCost);
        GuiController.Instance.SwitchWrapper(GuiFrameID.SettlementFrame);
    }
Exemple #6
0
 /// <summary>
 /// “TimeLast”字段,在限数模式下传耗时,在限时模式下传答题数
 /// </summary>
 /// <returns></returns>
 public string FillTimeLast(SaveFileInstance content)
 {
     if (content.cInstance.patternID == PatternID.Number)
     {
         return(content.timeCost.ToString("f1"));
     }
     else
     {
         return(content.qInstancList.Count.ToString());
     }
 }
    private void FightOver()
    {
        CancelInvoke();
        SaveFileInstance curSaveFileInstance = new SaveFileInstance();

        curSaveFileInstance.cInstance = FightController.Instance.CurCategoryInstance;
        RecordController.Instance.SaveRecord(curSaveFileInstance, resultList, symbol, timeCost);
        if (GuiController.Instance.CompetitionGUI == GuiFrameID.ChapterFrame &&
            AchievementController.Instance.CheckAchievement(curSaveFileInstance))
        {
            RecordController.Instance.RefreshRecord(curSaveFileInstance);
        }
        GuiController.Instance.SwitchWrapper(GuiFrameID.SettlementFrame);
    }
    public bool CheckAchievement(SaveFileInstance instance)
    {
        instance.achievementName = "";
        int   star     = 0;
        float meanTime = instance.timeCost / instance.qInstancList.Count;
        List <AchievementInstance> achievementList = GetAchievementUnFinish();

        for (int i = 0; i < achievementList.Count; i++)
        {
            if (achievementList[i].cInstance.Equals(instance.cInstance))
            {
                instance.achievementName = achievementList[i].achievementName;
                if (achievementList[i].accuracy <= instance.accuracy && achievementList[i].meanTime >= meanTime)
                {
                    star = 3;
                }
                else if (achievementList[i].accuracy - 5 <= instance.accuracy && achievementList[i].meanTime * 1.1 >= meanTime)
                {
                    star = 2;
                }
                else if (achievementList[i].accuracy - 10 <= instance.accuracy && achievementList[i].meanTime * 1.2 >= meanTime)
                {
                    star = 1;
                }
                break;
            }
        }

        switch (star)
        {
        case 3:
            PlayerPrefs.SetString(instance.achievementName, instance.fileName);
            PlayerPrefs.SetInt(instance.achievementName + "Star", 3);
            WriteFinishTime(instance.achievementName, instance.fileName, 3);
            LastestAchievement = instance.achievementName;
            break;

        case 2:
        case 1:
            PlayerPrefs.SetInt(instance.achievementName + "Star", star);
            WriteFinishTime(instance.achievementName, "", star);
            break;

        default:
            break;
        }

        return(star == 3);
    }
Exemple #9
0
    private void RefreshLatestSaveFile(SummarySaveFileItem item, SymbolID symbolID, Text summary)
    {
        List <SaveFileInstance> instanceList = saveFileDict[symbolID];
        GameObject saveFileDefaultItem       = CommonTool.GetGameObjectContainsName(item.gameObject, "SaveFileDefaultItem");

        saveFileDefaultItem.SetActive(instanceList.Count <= 0);
        if (instanceList.Count > 0)
        {
            SaveFileInstance latestInstance = instanceList[instanceList.Count - 1];
            item.SendMessage("InitPrefabItem", latestInstance);
        }
        string content = LanguageController.Instance.GetLanguage(summary.index);

        summary.text = string.Format(content, instanceList.Count, curSaveFileCount);
    }
Exemple #10
0
    private void OnGetRankDetailSucceed(string data)
    {
        SaveFileInstance instance = JsonUtility.FromJson <SaveFileInstance>(data);

        if (instance != null)
        {
            instance.isUpload = true;
            RankController.Instance.CurRankInstance       = content;
            RecordController.Instance.CurSaveFileInstance = instance;
            GuiController.Instance.SwitchWrapper(GuiFrameID.SaveFileFrame, true);
        }
        else
        {
            string message = LanguageController.Instance.GetLanguage("Text_20066");
            OnGetRankDetailFail(message);
        }
    }
Exemple #11
0
    public List <SaveFileInstance> ReadAllRecords()
    {
        List <SaveFileInstance> recordList = new List <SaveFileInstance>();

        string[] fileNames = Directory.GetFiles(saveDir, "*.sav");
        string   data;

        for (int i = 0; i < fileNames.Length; i++)
        {
            data = CommonTool.GetDataFromDataPath(fileNames[i]);
            if (string.IsNullOrEmpty(data))
            {
                continue;
            }
            SaveFileInstance saveFileInstance = JsonUtility.FromJson <SaveFileInstance>(data);
            recordList.Add(saveFileInstance);
        }
        return(recordList);
    }
Exemple #12
0
 private void InitSettlement()
 {
     curSaveFileInstance     = RecordController.Instance.CurSaveFileInstance;
     settlementTime.text     = string.Format(settlementTime.text, curSaveFileInstance.timeCost.ToString("f1"));
     settlementAmount.text   = string.Format(settlementAmount.text, curSaveFileInstance.qInstancList.Count);
     settlementAccuracy.text = string.Format(settlementAccuracy.text, curSaveFileInstance.accuracy.ToString("f1"));
     isBluetooth             = !string.IsNullOrEmpty(curSaveFileInstance.opponentName);
     commonResult.SetActive(!isBluetooth);
     bluetoothResult.SetActive(isBluetooth);
     if (isBluetooth)
     {
         saveFileOwnName.text   = GameManager.Instance.UserName;
         saveFileOtherName.text = curSaveFileInstance.opponentName;
     }
     allInstanceList = curSaveFileInstance.qInstancList;
     onlyWrongList   = allInstanceList.FindAll(FindWrong);
     onlyWrong       = false;
     RefreshSettlementGrid();
 }
Exemple #13
0
    protected override void InitPrefabItem(object data)
    {
        content = data as SaveFileInstance;
        if (content == null)
        {
            MyDebug.LogYellow("SaveFileInstance is null!!");
            return;
        }

        Init();
        hasAchievement    = !string.IsNullOrEmpty(content.achievementName);
        isBluetooth       = !string.IsNullOrEmpty(content.opponentName);
        saveFileName.text = content.fileName;
        saveFileAchiOrBLE.gameObject.SetActive(hasAchievement || isBluetooth);
        if (hasAchievement)
        {
            saveFileAchiOrBLE.sprite = SkinController.Instance.GetSprite("Image_20006");
        }
        if (isBluetooth)
        {
            saveFileAchiOrBLE.sprite = SkinController.Instance.GetSprite("Image_10006");
        }

        int digit   = (int)content.cInstance.digitID + 2;
        int operand = (int)content.cInstance.operandID + 2;

        if (content.cInstance.patternID == PatternID.Time)
        {
            saveFileType_Time.gameObject.SetActive(true);
            saveFileType_Number.gameObject.SetActive(false);
            int amount = FightController.Instance.GetTimeAmount(content.cInstance.amountID);
            saveFileType_Time.text = string.Format(saveFileType_Time.text, amount, digit, operand);
        }
        else
        {
            saveFileType_Time.gameObject.SetActive(false);
            saveFileType_Number.gameObject.SetActive(true);
            int amount = FightController.Instance.GetNumberAmount(content.cInstance.amountID);
            saveFileType_Number.text = string.Format(saveFileType_Number.text, amount, digit, operand);
        }
    }
Exemple #14
0
    private void InitSaveFile()
    {
        SaveFileInstance instance = RecordController.Instance.CurSaveFileInstance;

        if (instance == null)
        {
            return;
        }
        sharelTitle.text = LanguageController.Instance.GetLanguage("Text_20037");
        saveFileSharePattern_Time.SetActive(instance.cInstance.patternID == PatternID.Time);
        saveFileSharePattern_Number.SetActive(instance.cInstance.patternID == PatternID.Number);
        saveFileShareAmount.text   = string.Format(saveFileShareAmount.text, instance.qInstancList.Count);
        saveFileShareTime.text     = string.Format(saveFileShareTime.text, instance.timeCost.ToString("f1"));
        saveFileShareSymbol.text   = string.Format(saveFileShareSymbol.text, FightController.Instance.GetSymbol(instance.cInstance.symbolID));
        saveFileShareDigit.text    = string.Format(saveFileShareDigit.text, (int)(instance.cInstance.digitID + 2));
        saveFileShareOperand.text  = string.Format(saveFileShareOperand.text, (int)(instance.cInstance.operandID + 2));
        saveFileShareAccuracy.text = string.Format(saveFileShareAccuracy.text, instance.accuracy.ToString("f1"));
        string meanTime = (instance.timeCost / instance.qInstancList.Count).ToString("f1");

        saveFileShareMeanTime.text = string.Format(saveFileShareMeanTime.text, meanTime);
    }
Exemple #15
0
 void Start()
 {
     id = GuiFrameID.SaveFileFrame;
     Init();
     content = RecordController.Instance.CurSaveFileInstance;
     saveFileDetailTime.text     = string.Format(saveFileDetailTime.text, content.timeCost.ToString("f1"));
     saveFileDetailAmount.text   = string.Format(saveFileDetailAmount.text, content.qInstancList.Count);
     saveFileDetailAccuracy.text = string.Format(saveFileDetailAccuracy.text, content.accuracy.ToString("f1"));
     achievementBtn.SetActive(GuiController.Instance.LastGUI != GuiFrameID.ShareFrame &&
                              !string.IsNullOrEmpty(content.achievementName));
     uploadDataBtn.SetActive(!content.isUpload);
     isBluetooth = !string.IsNullOrEmpty(content.opponentName);
     commonResult.SetActive(!isBluetooth);
     bluetoothResult.SetActive(isBluetooth);
     if (isBluetooth)
     {
         saveFileOwnName.text   = GameManager.Instance.UserName;
         saveFileOtherName.text = content.opponentName;
     }
     onlyWrongList = content.qInstancList.FindAll(FindWrong);
     onlyWrong     = false;
     RefreshSettlementGrid();
     CommonTool.GuiVerticalMove(saveFileDetailBg, Screen.height, MoveID.LeftOrDown, canvasGroup, true);
 }
Exemple #16
0
    public void RefreshRecord(SaveFileInstance instance)
    {
        string toSave = JsonUtility.ToJson(instance);

        SaveRecord(toSave, instance.fileName);
    }