예제 #1
0
    public void OnLanguageChanged(string inNewLanguage)
    {
        if (m_Widget == null)
        {
            return;
        }

        string font_name = m_FontName;

        if (m_FontName == "Default")
        {
            font_name = "NewFont";
        }

        GUIBase_FontEx newFont = null;

        if ("English.Old" == inNewLanguage)
        {
            newFont = MFFontManager.GetFont(m_FontName, SystemLanguage.English) as GUIBase_FontEx;
        }
        else
        {
            newFont = MFFontManager.GetFont(font_name) as GUIBase_FontEx;
        }

        if (newFont != m_Font)
        {
            m_Font = newFont;
            m_Widget.ChangeMaterial(m_Font.fontMaterial);
        }

        SetRegenerationNeeded();
    }
예제 #2
0
 public static void Release()
 {
     if (Instance != null)
     {
         Instance.StopAllCoroutines();
         Instance.CancelInvoke();
         Instance._Prepare("");
         Instance = null;
     }
 }
예제 #3
0
    // =========================================================================================================================
    // === MonoBehaviour functions =============================================================================================
    void Awake()
    {
        if (Application.isPlaying)
        {
            if (Instance)
            {
                Destroy(this.gameObject);
                return;
            }
        }

        Instance = this;

        // preload default/english fonts...
        //Instance._Prepare(GuiOptions.convertLanguageToFullName[(int)GuiOptions.language]);
    }
예제 #4
0
    public static GUIBase_FontBase GetFont(string inFontName, SystemLanguage inLanguage)
    {
#if UNITY_EDITOR
        if (Instance == null && Application.isEditor == true && Application.isPlaying == false)
        {
            // fix some strange bug in editor... Instance of FontManager is somettimes lost in editor.
            Instance = GetManager_InEditor();
            Instance._Prepare("English", true);
        }
#endif

        if (Instance == null)
        {
            return(null);
        }

        return(Instance._GetFont(inFontName, inLanguage));
    }
예제 #5
0
    public static void OnLanguageChanged(string inNewLanguage)
    {
        MFFontManager.Prepare(inNewLanguage);

        // reinitialize all labels...
        GUIBase_Label[] labels = Object.FindObjectsOfType(typeof(GUIBase_Label)) as GUIBase_Label[];
        foreach (GUIBase_Label label in labels)
        {
            label.OnLanguageChanged(inNewLanguage);
        }

        // reinitialize all text areas...
        GUIBase_TextArea[] textAreas = Object.FindObjectsOfType(typeof(GUIBase_TextArea)) as GUIBase_TextArea[];
        foreach (GUIBase_TextArea text in textAreas)
        {
            text.OnLanguageChanged(inNewLanguage);
        }
    }
예제 #6
0
    public void OnLanguageChanged(string inNewLanguage)
    {
        if (m_Widget == null)
        {
            return;
        }

        if ("English.Old" == inNewLanguage)
        {
            ChangeFont(MFFontManager.GetFont("Default"));
        }
        else
        {
            string font_name = m_FontName;
            if (m_FontName == "Default")
            {
                font_name = "NewFont";
            }

            ChangeFont(MFFontManager.GetFont(font_name));
        }
    }
예제 #7
0
    // ==================================================================================================
    // === Default MoneBehaviour interface ==============================================================

    #region MoneBehaviourInterface

    public void Start()
    {
        m_Widget = GetComponent <GUIBase_Widget>();
        m_Widget.RegisterUpdateDelegate(RegenerateSprites);
        m_Widget.RegisterCallback(this, (int)E_CallbackType.E_CT_INIT);
        m_Widget.m_TextScaleFix_HACK = true;

        if (m_TextID <= 0 && string.IsNullOrEmpty(m_Text))
        {
            m_Text = "This-is-temporary-test-for-testing-TextArea-auto-wrap. This is tooooooo long line. \n\n"
                     + "This is temporary test for testing TextArea auto wrap. This is tooooooo long line. "
                     + "This is temporary test for testing TextArea auto wrap. This is tooooooo long line.";

            //m_Text	=  "Test";
        }

        if (m_Font == null)
        {
            //m_Font = MFGuiManager.Instance.GetFontForLanguage(SystemLanguage.English);
            m_Font = MFFontManager.GetFont(m_FontName) as GUIBase_FontEx;
        }

        SetRegenerationNeeded();
    }
예제 #8
0
    //---------------------------------------------------------
    void RegenerateSprites()
    {
        if (m_RegenerateSprites == false || m_Widget.IsVisible() == false)
        {
            return;
        }

        if (m_Font == null)
        {
            m_Font = MFFontManager.GetFont(m_FontName) as GUIBase_FontEx;
            if (m_Font == null)
            {
                Debug.LogError(gameObject.GetFullName() + " Can't load font with name " + m_FontName);
                return;
            }
        }

        if (m_TextID > 0)
        {
            m_Text = TextDatabase.instance[m_TextID];
        }

        // destroy old text if any exist...
        int maxSprites = text != null && text.Length > 0 ? Mathf.CeilToInt(text.Length * 0.1f) * 10 : 0;

        m_Widget.PrepareSprites(maxSprites);

        if (text != null && text.Length > 0)
        {
            Vector3 scale = transform.lossyScale;
            scale = Vector3.one;

            // setup cursor ...
            Vector2 leftUpPos = new Vector2(m_Widget.GetOrigPos().x - m_Widget.GetWidth() * 0.5f * scale.x,
                                            m_Widget.GetOrigPos().y - m_Widget.GetHeight() * 0.5f * scale.y);
            Vector2 cursor = leftUpPos;

            float maxLineSize = m_Widget.GetWidth() * scale.x;

            scale.x = m_TextScale.x;
            scale.y = m_TextScale.y;

            List <TextLine> textLines = GetLines(text, m_Font, alignment, maxLineSize, scale, lineSpace, IsForTextField);
            if (textLines == null || textLines.Count <= 0)
            {
                return;
            }

            float fontHeight = m_Font.GetFontHeight();
            m_TextSize = new Vector2(m_Widget.GetWidth(), textLines.Count * fontHeight * scale.y + (textLines.Count - 1) * lineSpace * fontHeight * scale.y);

            float width;
            Rect  spriteRect, texRect;

            int spriteIdx = 0;
            foreach (TextLine line in textLines)
            {
                cursor = leftUpPos + line.m_Offset;

                for (int i = line.m_StartIndex; i < line.m_EndIndex; ++i)
                {
                    int character = text[i];

                    if (!IsForTextField && character == ' ')
                    {
                        cursor.x += line.m_SpaceWidth;
                        continue;
                    }
                    switch (character)
                    {
                    case '\n':
                        Debug.LogWarning("function GetLines doesn't work correctly");
                        break;

                    default:
                    {
                        if (m_Font.GetCharDescription(text[i], out width, out spriteRect, out texRect, false, false, false))
                        {
                            Vector2 inCharSize   = new Vector2(spriteRect.width * scale.x, spriteRect.height * scale.y);
                            Vector2 inCharCenter = cursor + new Vector2(spriteRect.center.x * scale.x, 0.0f);

                            m_Widget.SetTextureCoords(spriteIdx, (int)texRect.x, (int)texRect.y, (int)texRect.width, (int)texRect.height);
                            m_Widget.UpdateSpritePosAndSize(spriteIdx, inCharCenter.x, inCharCenter.y, inCharSize.x, inCharSize.y);
                            m_Widget.ShowSprite(spriteIdx, true);
                            cursor.x += width * scale.x;

                            spriteIdx++;
                        }
                        break;
                    }
                    }
                }
            }

            // hide all unused sprites
            while (spriteIdx < maxSprites)
            {
                m_Widget.SetTextureCoords(spriteIdx, 0.0f, 0.0f, 0.0f, 0.0f);
                m_Widget.UpdateSpritePosAndSize(spriteIdx, 0.0f, -Screen.height, 1.0f, 1.0f);
                m_Widget.ShowSprite(spriteIdx, false);
                spriteIdx++;
            }
        }

        // we have to force widget update.
        m_RegenerateSprites = false;
        m_Widget.SetModify();
    }
예제 #9
0
/*
 *  private IEnumerator LogLeakedObjects()
 *  {
 *      yield return new WaitForSeconds(3);
 *
 *              Names = null;
 *              LogLeaked();
 *
 *      yield return new WaitForEndOfFrame();
 *
 *              yield return StartCoroutine(LoadScene("level_01"));
 *                      yield return new WaitForSeconds(5);
 * //		yield return StartCoroutine(LoadScene("level_02"));
 * //			yield return new WaitForSeconds(5);
 * //		yield return StartCoroutine(LoadScene("level_03"));
 * //			yield return new WaitForSeconds(5);
 * //		yield return StartCoroutine(LoadScene("level_04"));
 * //			yield return new WaitForSeconds(5);
 * //		yield return StartCoroutine(LoadScene("level_05"));
 * //			yield return new WaitForSeconds(5);
 * //		yield return StartCoroutine(LoadScene("level_06"));
 * //			yield return new WaitForSeconds(5);
 * //		yield return StartCoroutine(LoadScene("level_07"));
 * //			yield return new WaitForSeconds(5);
 * //		yield return StartCoroutine(LoadScene("level_08"));
 * //			yield return new WaitForSeconds(5);
 * //		yield return StartCoroutine(LoadScene("level_09"));
 * //			yield return new WaitForSeconds(5);
 * //		yield return StartCoroutine(LoadScene("level_10"));
 * //			yield return new WaitForSeconds(5);
 *
 *              yield return StartCoroutine(LoadScene("Empty"));
 *
 *              yield return new WaitForEndOfFrame();
 *              yield return new WaitForEndOfFrame();
 *              yield return new WaitForEndOfFrame();
 *              yield return Resources.UnloadUnusedAssets();
 *
 *              LogLeaked();
 *  }
 */

    void ClearInstances()
    {
        InputManager.FlushInput();

        AgentActionFactory.Clear();
        Player.Clear();
        GuiFrontendIngame.Clear();

        if (GameCamera.Instance)
        {
            GameCamera.Instance.StopAllCoroutines();
            GameCamera.Instance.CancelInvoke();
            GameCamera.Instance = null;
        }
        if (CombatEffectsManager.Instance)
        {
            CombatEffectsManager.Instance.StopAllCoroutines();
            CombatEffectsManager.Instance.CancelInvoke();
            CombatEffectsManager.Instance = null;
        }
        if (ProjectileManager.Instance)
        {
            ProjectileManager.Instance.StopAllCoroutines();
            ProjectileManager.Instance.CancelInvoke();
            ProjectileManager.Instance = null;
        }
        if (Mission.Instance)
        {
            Mission.Instance.StopAllCoroutines();
            Mission.Instance.CancelInvoke();
            Mission.Instance = null;
        }
        if (BloodFXManager.Instance)
        {
            BloodFXManager.Instance.StopAllCoroutines();
            BloodFXManager.Instance.CancelInvoke();
            BloodFXManager.Instance = null;
        }
        if (CamExplosionFXMgr.Instance)
        {
            CamExplosionFXMgr.Instance.StopAllCoroutines();
            CamExplosionFXMgr.Instance.CancelInvoke();
            CamExplosionFXMgr.Instance = null;
        }
        if (WeaponManager.Instance)
        {
            WeaponManager.Instance.StopAllCoroutines();
            WeaponManager.Instance.CancelInvoke();
            WeaponManager.Instance = null;
        }

        if (GuiAchievements.Instance)
        {
            GuiAchievements.Instance.StopAllCoroutines();
            GuiAchievements.Instance.CancelInvoke();
            GuiAchievements.Instance = null;
        }
        //if (GuiCustomizeControls.Instance) { GuiCustomizeControls.Instance.StopAllCoroutines(); GuiCustomizeControls.Instance.CancelInvoke(); GuiCustomizeControls.Instance = null; }
        if (GuiEquipMenu.Instance)
        {
            GuiEquipMenu.Instance.StopAllCoroutines();
            GuiEquipMenu.Instance.CancelInvoke();
            GuiEquipMenu.Instance = null;
        }
        if (GuiSubtitlesRenderer.Instance)
        {
            GuiSubtitlesRenderer.Instance.StopAllCoroutines();
            GuiSubtitlesRenderer.Instance.CancelInvoke();
            GuiSubtitlesRenderer.Instance = null;
        }

        MFFontManager.Release();
        if (MFGuiManager.Instance)
        {
            MFGuiManager.Instance.StopAllCoroutines();
            MFGuiManager.Instance.CancelInvoke();
            MFGuiManager.Instance = null;
        }
    }