Example #1
0
    /// <summary>
    /// 필요데이터
    /// 1. 데미지 UI 프리팹
    /// 2. 데미지 UI 표시할 위치
    /// 3. 데미지 정보(데미지가 몇인지)
    /// </summary>


    public void MakeDamageUI(Transform targetTransform, float damage)
    {
        //프리팹 복사체
        GameObject   obj    = Instantiate(damageUIPrefab, canvas.transform);
        UIDamageText script = obj.GetComponent <UIDamageText>();

        script.SetUI(targetTransform, damage);
    }
Example #2
0
 void DamagePool()
 {
     damageTextList = new List <UIDamageText>();
     for (int i = 0; i < 10; ++i)
     {
         GameObject   temp       = Instantiate(DamageTextPrefab);
         UIDamageText tempDamage = temp.GetComponent <UIDamageText>();
         temp.transform.SetParent(DamageCollecter);
         temp.SetActive(false);
         damageTextList.Add(tempDamage);
     }
 }
Example #3
0
    public void SetBuffText(string text)
    {
        UIDamageText buffText = null;

        if (PoolManager.Instance != null && PoolManager.Instance.GetEffectTextFromPool(out buffText))
        {
            buffText.Init(transform, text);
        }
        else
        {
            LoadAssetbundle.LoadPrefabCB loadBuffTextPrefabCB = new LoadAssetbundle.LoadPrefabCB(LoadBuffTextCompleteCB);
            PrefabManager.Instance.LoadPrefab("Effect/Text_Effect", System.Guid.NewGuid(), loadBuffTextPrefabCB, text);
        }
    }
Example #4
0
    private void SetDamageText(DamageParam param)
    {
        UIDamageText damageText = null;

        if (PoolManager.Instance != null && PoolManager.Instance.GetDamageTextFromPool(out damageText))
        {
            damageText.Init(effectDummy, param);
        }
        else
        {
            LoadAssetbundle.LoadPrefabCB loadDamageTextPrefabCB = new LoadAssetbundle.LoadPrefabCB(LoadDamageTextCompleteCB);
            PrefabManager.Instance.LoadPrefab("Effect/Text_Damage", System.Guid.NewGuid(), loadDamageTextPrefabCB, param);
        }
    }
Example #5
0
    private void SetDamageText(int damage, eDamageTextType type)
    {
        UIDamageText damageText = null;

        if (PoolManager.Instance != null && PoolManager.Instance.GetDamageTextFromPool(type, out damageText))
        {
            damageText.Init(damageDummy != null ? damageDummy : transform, damage);
        }
        else
        {
            LoadAssetbundle.LoadPrefabCB loadDamageTextPrefabCB = new LoadAssetbundle.LoadPrefabCB(LoadDamageTextCompleteCB);
            PrefabManager.Instance.LoadPrefab(GameManager.Instance.GetDamagePath(type), System.Guid.NewGuid(), loadDamageTextPrefabCB, damage);
        }
    }
Example #6
0
    private void LoadBuffTextCompleteCB(GameObject gameObj, System.Guid uid, params object[] param)
    {
        if (gameObj != null)
        {
            GameObject createObj = Instantiate(gameObj) as GameObject;

            createObj.transform.parent     = GameManager.Instance.rootPanelArray[(int)GameManager.eRootPanelType.Type_Effect].transform;
            createObj.transform.localScale = gameObj.transform.localScale;

            UIDamageText buffText = createObj.GetComponent <UIDamageText>();
            if (buffText != null)
            {
                buffText.Init(transform, (string)param[0]);
            }
        }
    }
Example #7
0
    private void LoadDamageTextCompleteCB(GameObject gameObj, System.Guid uid, params object[] param)
    {
        if (gameObj != null)
        {
            GameObject createObj = Instantiate(gameObj) as GameObject;

            createObj.transform.parent     = GameManager.Instance.rootArray[(int)GameManager.eRootType.Type_Damage].transform;
            createObj.transform.localScale = gameObj.transform.localScale;

            UIDamageText damageText = createObj.GetComponent <UIDamageText>();
            if (damageText != null)
            {
                damageText.Init(damageDummy != null ? damageDummy : transform, (int)param[0]);
            }
        }
    }
Example #8
0
    private void LoadDamageTextCompleteCB(GameObject gameObj, System.Guid uid, params object[] param)
    {
        if (gameObj != null)
        {
            GameObject createObj = Instantiate(gameObj) as GameObject;

            createObj.transform.parent     = GameManager.Instance.rootPanelArray[(int)GameManager.eRootPanelType.Type_Effect].transform;
            createObj.transform.localScale = gameObj.transform.localScale;

            UIDamageText damageText  = createObj.GetComponent <UIDamageText>();
            DamageParam  damageParam = (DamageParam)param[0];
            if (damageText != null)
            {
                damageText.Init(effectDummy, damageParam);
            }
        }
    }
Example #9
0
    private void LoadDamageTextCompleteCB(GameObject gameObj, System.Guid uid, params object[] param)
    {
        if (gameObj != null)
        {
            GameObject createObj = Instantiate(gameObj) as GameObject;

            createObj.transform.parent        = GameManager.Instance.rootPanelArray[(int)GameManager.eRootPanelType.Type_Effect].transform;
            createObj.transform.localScale    = gameObj.transform.localScale;
            createObj.transform.localPosition = Vector3.one * 9999.0f;

            UIDamageText damageText = createObj.GetComponent <UIDamageText>();
            if (damageText != null)
            {
                damageText.Init(null, "");
            }
        }
    }
Example #10
0
 public void ShowDamageText(Vector3 showPoint, float damage)
 {
     if (damageTextList.Count > 0)
     {
         UIDamageText tempText = damageTextList[0];
         tempText.SetDamageText(showPoint, damage.ToString());
         tempText.OpenTextUI();
         damageTextList.Remove(tempText);
     }
     else if (damageTextList.Count <= 0)
     {
         GameObject   tempObj  = Instantiate(DamageTextPrefab);
         UIDamageText tempText = tempObj.GetComponent <UIDamageText>();
         tempObj.transform.SetParent(DamageCollecter);
         tempText.SetDamageText(showPoint, damage.ToString());
         tempText.OpenTextUI();
     }
 }
Example #11
0
    private IEnumerator ShowDamageText()
    {
        if (0 == damage_texts.Count)
        {
            show_damage_text_coroutine = null;
            yield break;
        }

        UIDamageText damageText = damage_texts[0];

        damageText.transform.SetParent(player_health.transform);
        damageText.gameObject.SetActive(true);
        damage_texts.RemoveAt(0);

        if (0 < damage_texts.Count)
        {
            yield return(new WaitForSeconds(0.25f));
        }
        StartCoroutine(ShowDamageText());
    }
Example #12
0
    public IEnumerator BattleStart(Monster.Meta monsterMeta)
    {
        Util.EventSystem.Publish(EventID.Dungeon_Battle_Start);

        turn_count   = 0;
        battle_pause = true;

        player_attack_per_second = Mathf.Max(0.35f, GameManager.Instance.player.speed / monsterMeta.speed);
        player_attack_per_second = Mathf.Min(3.5f, player_attack_per_second);
        enemy_attack_per_second  = 1.0f;
        player_preemptive_score  = player_attack_per_second;
        enemy_preemptive_score   = enemy_attack_per_second;
        battle_result            = BattleResult.Invalid;

        monster.gameObject.SetActive(true);
        monster.Init(monsterMeta, dungeon.level);

        InitButtons();
        GameManager.Instance.player.on_attack  = null;
        GameManager.Instance.player.on_attack += (Unit.AttackResult result) =>
        {
            AudioManager.Instance.Play(AudioManager.BATTLE_ATTACK, false);
            SceneDungeon.log.Write(GameText.GetText("DUNGEON/BATTLE/HIT", "You", monster.meta.name) + "(-" + (int)result.damage + ")");
        };
        GameManager.Instance.player.on_defense  = null;
        GameManager.Instance.player.on_defense += (Unit.AttackResult result) =>
        {
            iTween.ShakePosition(Camera.main.gameObject, new Vector3(0.3f, 0.3f, 0.0f), 0.2f);
            Effect_PlayerDamage effectPlayerDamage = player_damage_effects[Random.Range(0, player_damage_effects.Length)];
            effectPlayerDamage.gameObject.SetActive(true);

            UIDamageText damageText = GameObject.Instantiate <UIDamageText>(damage_text_prefab);
            damageText.gameObject.SetActive(false);
            damageText.Init(result, Color.red);
            damageText.transform.SetParent(player_health.transform, false);
            damageText.transform.localPosition = new Vector3(player_health.rect.x + player_health.rect.width * player_health.gauge.fillAmount, player_health.rect.y + player_health.rect.height / 2, 0.0f);
            damage_texts.Add(damageText);
            player_health.current = GameManager.Instance.player.cur_health;
        };

        monster.data.on_attack  = null;
        monster.data.on_attack += (Unit.AttackResult result) =>
        {
            AudioManager.Instance.Play(AudioManager.BATTLE_ATTACK, false);
            monster.animator.SetTrigger("Attack");
            SceneDungeon.log.Write("<color=red>" + GameText.GetText("DUNGEON/BATTLE/HIT", monster.meta.name, "You") + "(-" + (int)result.damage + ")</color>");
        };

        monster.data.on_defense  = null;
        monster.data.on_defense += (Unit.AttackResult result) =>
        {
            StartCoroutine(monster.OnDamage(result));
            UIDamageText damageText = GameObject.Instantiate <UIDamageText>(damage_text_prefab);
            damageText.gameObject.SetActive(false);
            damageText.Init(result, Color.white);
            if ("" == result.type)
            {
                damageText.life_time = 0.8f;
                damageText.transform.SetParent(monster.ui_health.transform, false);
                damageText.transform.localPosition = new Vector3(monster.ui_health.rect.x + monster.ui_health.rect.width * monster.ui_health.gauge.fillAmount, monster.ui_health.rect.y + monster.ui_health.rect.height / 2, 0.0f);
            }
            else
            {
                damageText.life_time = 3.0f;
                damageText.transform.SetParent(monster.damage_effect_spot, false);
                damageText.transform.localPosition = new Vector3(0.0f, 400.0f * GameManager.Instance.canvas.scaleFactor, 0.0f);
            }
            damage_texts.Add(damageText);
            monster.ui_health.current = monster.data.cur_health;
        };

        yield return(StartCoroutine(monster.ColorTo(Color.black, Color.white, 1.0f)));

        battle_pause = false;
        touch_input.block_count--;

        while (BattleResult.Invalid == battle_result)
        {
            yield return(new WaitForSeconds(0.1f));
        }

        touch_input.block_count++;

        if (BattleResult.Win == battle_result)
        {
            yield return(monster.Die());
        }
        monster.meta = null;

        runaway_button.gameObject.SetActive(false);
        monster.gameObject.SetActive(false);

        //Util.EventSystem.Publish(EventID.MiniMap_Show);
        Util.EventSystem.Publish <BattleResult>(EventID.Dungeon_Battle_Finish, battle_result);
    }
Example #13
0
    void OnTakeDamage(double damage, string tag)
    {
        if (!isActive)
        {
            return;
        }

        if (!OptionManager.Instance.isOnDamageEffect)
        {
            return;
        }

        GameObject objDamageText = Battle.GetObjectInPool(Battle.damageTextPrefab.name);

        if (!objDamageText)
        {
            objDamageText      = Instantiate(Battle.damageTextPrefab, battleGroup.canvasUIBattleCharacter.transform, false);
            objDamageText.name = Battle.damageTextPrefab.name;
            Battle.AddObjectToPool(objDamageText);
        }

        objDamageText.transform.SetParent(battleGroup.canvasUIBattleCharacter.transform, false);


        UIDamageText damageText = objDamageText.GetComponent <UIDamageText>();


        if (tag == "Heal" || tag == "Resurrect")
        {
            damageText.value = (-damage).ToStringABC();//.ToString("0");
        }
        else if (tag == "Guard")
        {
            damageText.value = damage.ToStringABC() + "(보호)";
        }
        else if (tag == "ImmuneDamage")
        {
            damageText.value = "면역";
        }
        else if (tag == "Miss")
        {
            damageText.value = "Miss";
        }
        else
        {
            if (damage >= 0 && damage < 1f)
            {
                damageText.value = ".";
            }
            else
            {
                damageText.value = damage.ToStringABC();
            }
        }

        //tag에 따라 색상 다르게 표현
        if (tag == "Guard")
        {
            damageText.color = Color.grey;
        }
        else if (tag == "Heal" || tag == "Resurrect")
        {
            damageText.color = Color.green;
        }
        else if (tag == "Drain")
        {
            damageText.color = Color.green * 0.8f;
        }
        else
        {
            damageText.color = Color.white;
        }

        damageText.transform.position = uiPivot.transform.position;

        if (tag == "Guard" || tag == "Drain")
        {
            damageText.transform.localScale = Vector3.one * 0.7f;
        }
        else
        {
            damageText.transform.localScale = Vector3.one;
        }

        damageText.gameObject.SetActive(true);

        damageText.Show();
    }
Example #14
0
 public void PushDamageText(UIDamageText damageText)
 {
     damageText.gameObject.SetActive(false);
     damageTextList.Add(damageText);
 }