Пример #1
0
    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // PUBLIC FUNCTION
    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // @Brief : Request screen
    // @Param : eScreenType => Screen type
    //        : pParam      => Initialization parameters
    public void RequestScreen(eSCREEN_TYPE eScreenType, KrUIArgumentParameter pParam)
    {
        KrDebug.Assert(s_pSCREEN_PATH_DIC.ContainsKey(eScreenType), "The path of the corresponding dialog is not set. eScreenType = " + eScreenType.ToString(), typeof(KrUIManager));
        KrScreen pScreen = Create <KrScreen>(s_pSCREEN_PATH_DIC[eScreenType], screenBase);

        pScreen.Initialize(pParam);

        // Cache screen data
        CacheScreen(eScreenType, pParam);
    }
Пример #2
0
    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // PRIVATE FUNCTION
    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // @Brief : Cache screen data
    // @Param : eScreenType => Screen type
    //        : pParam      => Initialization parameters
    private void CacheScreen(eSCREEN_TYPE eScreenType, KrUIArgumentParameter pParam)
    {
        // Do not cache if the same screen as the current screen
        if (m_pScreenCaches.Count > 0)
        {
            if (m_pScreenCaches[0].IsSameType(eScreenType))
            {
                return;
            }
        }

        KrScreenCache pCache = new KrScreenCache(eScreenType, pParam);

        m_pScreenCaches.Add(pCache);

        // When the number of screens that can be cached is exceeded, the cache is deleted from the old one
        if (m_pScreenCaches.Count > cacheScreenNum)
        {
            m_pScreenCaches.RemoveAt(cacheScreenNum);
        }
    }