예제 #1
0
 // 로드가 성공하든 실패하든 pDone를 반드시 호출해줘야 한다~!!
 // pDone이 호출되지 않으면 로더가 무한히 기다린다.
 // 데이터별 로드시간이 천차만별이기에 타임아웃을 넣을 수도 없다.
 // 어떻게 반드시 호출하게 강제 할수가 없나??...
 public async virtual void Load
 (
     SHLoadData pInfo,                          // 로드 할 데이터 정보
     Action <string, SHLoadStartInfo> pStart,   // 로드 시작시 호출해야 할 콜백
     Action <string, SHLoadEndInfo> pDone       // 로드 완료시 호출해야 할 콜백
 )
 {
     pStart(pInfo.m_strName, new SHLoadStartInfo());
     pDone(pInfo.m_strName, new SHLoadEndInfo(eErrorCode.Data_NotImplementation));
     await Task.Run(() => { });
 }
예제 #2
0
    public void SetLoadData(SHLoadData pData)
    {
        if (null == pData)
        {
            return;
        }

        pData.m_bIsDone = false;
        m_qLoadQueue.Enqueue(pData);

        if (false == m_dicTotalLoadData.ContainsKey(pData.m_eDataType))
        {
            m_dicTotalLoadData.Add(pData.m_eDataType, new Dictionary <string, SHLoadData>());
        }

        m_dicTotalLoadData[pData.m_eDataType][pData.m_strName.ToLower()] = pData;
    }
예제 #3
0
    private void AddLoadData(SHLoadData pData)
    {
        if (null == pData)
        {
            return;
        }

        if (false == m_dicAllLoadData.ContainsKey(pData.m_eDataType))
        {
            m_dicAllLoadData.Add(pData.m_eDataType, new Dictionary <string, SHLoadDataStateInfo>());
        }

        var pDataStateInfo = new SHLoadDataStateInfo(pData);

        m_qLoadDataWaitQueue.Enqueue(pDataStateInfo);
        m_dicAllLoadData[pData.m_eDataType][pData.m_strName.ToLower()] = pDataStateInfo;
    }
예제 #4
0
    void CallEventToPrograss(SHLoadData pData)
    {
        if (null == pData)
        {
            return;
        }

        var pEvent = new SHLoadEvent();

        pEvent.m_eType            = pData.m_eDataType;
        pEvent.m_strFileName      = pData.m_strName;
        pEvent.m_pCount           = m_pPrograss.GetCountInfo();
        pEvent.m_pTime            = m_pPrograss.GetLoadTime(pData.m_strName);
        pEvent.m_bIsSuccess       = pData.m_bIsSuccess;
        pEvent.m_bIsFail          = m_pPrograss.m_bIsFail;
        pEvent.m_fPercent         = GetLoadPrograss();
        pEvent.m_bIsAsyncPrograss = false;
        EventToProgress.Callback <SHLoadEvent>(this, pEvent);
    }
예제 #5
0
    public async override void Load
    (
        SHLoadData pInfo,
        Action <string, SHLoadStartInfo> pStart,
        Action <string, SHLoadEndInfo> pDone
    )
    {
        pStart(pInfo.m_strName, new SHLoadStartInfo());

        if (true == m_dicResources.ContainsKey(pInfo.m_strName.ToLower()))
        {
            pDone(pInfo.m_strName, new SHLoadEndInfo(eErrorCode.Succeed));
            return;
        }

        var pTable = await Single.Table.GetTable <SHTableClientResources>();

        var pResourceInfo = pTable.GetResouceInfo(pInfo.m_strName);

        if (null == pResourceInfo)
        {
            Debug.LogFormat("[LSH] 리소스 테이블에 {0}가 없습니다.(파일이 없거나 리소스 리스팅이 안되었음)", pInfo.m_strName);
            pDone(pInfo.m_strName, new SHLoadEndInfo(eErrorCode.Resources_NotExsitInTable));
            return;
        }

        LoadAsync <UObject>(pResourceInfo, (pObject) =>
        {
            if (null == pObject)
            {
                pDone(pInfo.m_strName, new SHLoadEndInfo(eErrorCode.Resources_LoadFailed));
            }
            else
            {
                pDone(pInfo.m_strName, new SHLoadEndInfo(eErrorCode.Succeed));
            }
        });
    }
예제 #6
0
    public void AddLoadInfo(Dictionary <string, SHLoadData> dicLoadList)
    {
        SHUtils.ForToDic(dicLoadList, (pKey, pValue) =>
        {
            // 무결성체크
            if (null == pValue)
            {
                return;
            }

            // 중복파일체크
            SHLoadData pLoadData = GetLoadDataInfo(pValue.m_strName);
            if (null != pLoadData)
            {
                Debug.LogError(string.Format("중복파일 발견!!!(FileName : {0})", pValue.m_strName));
                return;
            }

            // 초기화 및 등록
            SetLoadData(pValue);
            m_pLoadCount.Value1++;
        });
    }
예제 #7
0
 // 다양화 : 로더로 부터 호출될 패치함수( 번들패치를 받아야겠네 )
 public override void Patch(SHLoadData pInfo, Action <string, SHLoadStartInfo> pStart,
                            Action <string, SHLoadEndInfo> pDone)
 {
 }
예제 #8
0
 // 로드가 성공하든 실패하든 pDone를 반드시 호출해줘야 한다~!!
 // 어떻게 반드시 호출하게 강제 할수가 없네...
 public abstract void Patch
 (
     SHLoadData pInfo,                           // 패치할 데이터 정보
     Action <string, SHLoadStartInfo> pStart,    // 패치 시작시 호출해야 할 콜백
     Action <string, SHLoadEndInfo> pDone        // 패치 완료시 호출해야 할 콜백
 );
예제 #9
0
 // 로드가 성공하든 실패하든 pDone를 반드시 호출해줘야 한다~!!
 // 어떻게 반드시 호출하게 강제 할수가 없네...
 public abstract void Load
 (
     SHLoadData pInfo,                           // 로드할 데이터 정보
     Action <string, SHLoadStartInfo> pStart,    // 로드 시작시 호출해야 할 콜백
     Action <string, SHLoadEndInfo> pDone        // 로드 완료시 호출해야 할 콜백
 );
예제 #10
0
 public SHLoadDataStateInfo(SHLoadData pData) : this()
 {
     m_pLoadDataInfo = pData;
 }