コード例 #1
0
ファイル: Sample.cs プロジェクト: YukiSomeya/DeathCycleMapRPG
    /// <summary>
    /// データ情報更新
    /// </summary>
    /// <param name="result">結果</param>
    private void UpdateDataInfo(IO_RESULT result)
    {
        UserSettings   us  = this.usedSettings = this.procSettings;
        SaveAllyStatus sas = this.saveAllyStatus = this.procSaveAllyStatus;

        //us.format = this.control.saveJson.isOn ? FORMAT.JSON : FORMAT.BINARY;
        //us.encrypt = this.control.saveEncrypt.isOn;
        //us.backup = this.control.saveBackup.isOn;
        if (us.count > 0)
        {
            this.control.dataInfo.text = string.Format(INFO_FORMAT, us.version, us.encrypt, us.format, us.backup, System.DateTime.FromBinary(us.date).ToString(), us.count);
            this.control.filePath.text = Application.persistentDataPath + us.fileName;
        }
        else
        {
            this.control.dataInfo.text = string.Format(INFO_FORMAT, "--", "--", "--", "--", "-/-/---- --:--:--", "--");
            this.control.filePath.text = "----";
        }
        this.state = STATE.IDLE;

        switch (result)
        {
        case IO_RESULT.NONE:
            this.accessMessage = "NOTHING";
            break;

        case IO_RESULT.SAVE_SUCCESS:
        case IO_RESULT.LOAD_SUCCESS:
            this.accessMessage = "SUCCESS";
            break;

        case IO_RESULT.SAVE_FAILED:
        case IO_RESULT.LOAD_FAILED:
            this.accessMessage = "FAILED";
            break;

        default:
            this.accessMessage = "NOTHING";
            break;
        }
        this.control.access.text = this.accessMessage;
    }
コード例 #2
0
ファイル: Sample.cs プロジェクト: YukiSomeya/DeathCycleMapRPG
    /// <summary>
    /// 完了コールバック
    /// </summary>
    /// <param name="ret">結果</param>
    /// <param name="dataInfo">結果情報</param>
    private void IOHandler(IO_RESULT ret, ref DataInfo dataInfo)
    {
        this.result = ret;
        switch (ret)
        {
        case IO_RESULT.SAVE_SUCCESS:
            // 保存成功
            if (dataInfo.async)
            {
                this.state = STATE.ASYNC_WAIT;
                break;
            }
            this.UpdateDataInfo(ret);
            this.state = STATE.IDLE;
            break;

        case IO_RESULT.SAVE_FAILED:
            // 保存失敗
            if (dataInfo.async)
            {
                this.state = STATE.ASYNC_WAIT;
                break;
            }
            this.state = STATE.IDLE;
            break;

        case IO_RESULT.LOAD_SUCCESS:
            // 読込成功

            /*
             * this.procSettings = dataInfo.serializer as UserSettings;
             * this.procSettings.encrypt = dataInfo.encrypt;
             * this.procSettings.format = dataInfo.format;
             * this.procSettings.backup = dataInfo.backup;
             */
            this.procSaveAllyStatus         = dataInfo.serializer as SaveAllyStatus;
            this.procSaveAllyStatus.encrypt = dataInfo.encrypt;
            this.procSaveAllyStatus.format  = dataInfo.format;
            this.procSaveAllyStatus.backup  = dataInfo.backup;
            this.allyStatus.StatusLoad(this.procSaveAllyStatus);
            if (dataInfo.async)
            {
                this.state = STATE.ASYNC_WAIT;
                break;
            }
            this.UpdateDataInfo(ret);
            this.state = STATE.IDLE;
            break;

        case IO_RESULT.LOAD_FAILED:
            // 読込失敗
            if (dataInfo.async)
            {
                this.state = STATE.ASYNC_WAIT;
                break;
            }
            this.state = STATE.IDLE;
            break;

        case IO_RESULT.NONE:
            // データ不備
            this.state = STATE.IDLE;
            break;
        }
    }
コード例 #3
0
        /// <summary>
        /// ストレージアクセス終了処理
        /// </summary>
        /// <param name="ret">結果</param>
        /// <param name="dataInfo">保存情報</param>
        private void FinishAccessing(IO_RESULT ret, ref DataInfo dataInfo)
        {
            // 失敗時はバックアップを参照
            switch (ret)
            {
            case IO_RESULT.LOAD_FAILED:
                if (!dataInfo.filePath.Contains(BACKUP_KEY))
                {
                    string backupPath = dataInfo.filePath + BACKUP_KEY;
                    if (File.Exists(backupPath))
                    {
                        lock (this.sync) {
                            this.isAccessing = false;
                        }

                        dataInfo.filePath = backupPath;
                        if (dataInfo.async)
                        {
                            ThreadPool.QueueUserWorkItem(this.loadThreadHandler, dataInfo);
                        }
                        else
                        {
                            this.LoadThreadMain(dataInfo);
                        }

                        return;
                    }
                }
                break;

#if DEMO
            case IO_RESULT.LOAD_SUCCESS:
                dataInfo.backup = File.Exists(dataInfo.filePath + BACKUP_KEY);
                break;
#endif
            case IO_RESULT.SAVE_SUCCESS:
                // バックアップ生成
                if (dataInfo.serializer.backup)
                {
                    try {
                        File.Copy(dataInfo.filePath, dataInfo.filePath + BACKUP_KEY, true);
                    }
                    catch (System.Exception e) {
                        Debug.LogError("BACKUP FAILED : " + dataInfo.filePath + "\n" + e.Message);
                    }
                }
                else
                {
                    File.Delete(dataInfo.filePath + BACKUP_KEY);
                }
                break;
            }

            if (dataInfo.finishHandler != null)
            {
                dataInfo.finishHandler(ret, ref dataInfo);
            }

            lock (this.sync) {
                this.isAccessing = false;
            }

#if DEBUG
            string message = "ACCESS FILE => " + dataInfo.filePath + "\n..........";
            switch (ret)
            {
            case IO_RESULT.SAVE_FAILED:
            case IO_RESULT.LOAD_FAILED:
                message += "<color=yellow>";
                break;

            case IO_RESULT.SAVE_SUCCESS:
            case IO_RESULT.LOAD_SUCCESS:
                message += "<color=white>";
                break;
            }
            Debug.Log(message + ret + "</color>");
#endif
        }