예제 #1
0
    void initSkill()
    {
        //Stretch skill selected
        float ratio = GameSupportor.getRatioAspect(PlayDragonInfoController.Instance.tempSkill, PlayDragonInfoController.Instance.renderUlti) * 100;

        PlayDragonInfoController.Instance.renderUlti.transform.localScale = new Vector3(ratio, ratio, ratio);

        bool   hasUlti = false;
        string branch  = PlayerInfo.Instance.dragonInfo.id;
        int    length  = PlayDragonInfoController.Instance.Skills.Length;
        int    count   = ReadDatabase.Instance.DragonInfo.Player[branch].Skills.Count - 1;

        if (ReadDatabase.Instance.DragonInfo.Player[branch].Skills.Count > 0)
        {
            for (int i = 0; i < length; i++)
            {
                PlayDragonInfoController.Instance.Skills[i].gameObject.SetActive(true);
            }

            foreach (DragonPlayerSkillData skillData in ReadDatabase.Instance.DragonInfo.Player[branch].Skills)
            {
                PlayDragonInfoSkillController skill = PlayDragonInfoController.Instance.Skills[count].GetComponent <PlayDragonInfoSkillController>();
                SkillData data = ReadDatabase.Instance.SkillInfo[skillData.ID.ToUpper()];
                skill.ID           = skillData.ID;
                skill.CooldownTime = data.Cooldown;
                skill.Type         = data.Type;
                skill.Ability      = data.Ability;
                skill.ManaValue    = data.Mana;

                skill.initalize();

                string path = "Image/Dragon/Player/" + ConvertSupportor.convertUpperFirstChar(branch) + "/Skill/" + skillData.ID;
                skill.sprite.mainTexture = Resources.Load <Texture>(path);
                count--;

                if (skillData.Ulti)
                {
                    PlayDragonInfoController.Instance.renderUlti.gameObject.SetActive(true);
                    UIAnchor anchor = PlayDragonInfoController.Instance.renderUlti.GetComponent <UIAnchor>();
                    anchor.container = skill.gameObject;
                    anchor.enabled   = true;
                    hasUlti          = true;
                }
            }
        }

        if (hasUlti == false && PlayDragonInfoController.Instance.renderUlti.gameObject.activeSelf)
        {
            PlayDragonInfoController.Instance.renderUlti.gameObject.SetActive(false);
        }

        count = ReadDatabase.Instance.DragonInfo.Player[branch].Skills.Count;
        if (count < length)
        {
            for (int i = count; i < length; i++)
            {
                PlayDragonInfoController.Instance.Skills[i].gameObject.SetActive(false);
            }
        }
    }
    void initalize()
    {
        int i     = 0;
        int index = -1;

        foreach (System.Collections.Generic.KeyValuePair <string, DragonPlayerData> iterator in ReadDatabase.Instance.DragonInfo.Player)
        {
            SSelectDragonContainer container = dragons[i];
            container.IDBranch          = iterator.Key;
            container.Branch.spriteName = "icon-branch-" + iterator.Key.ToLower();
            container.Icon.mainTexture  = Resources.Load <Texture>("Image/Dragon/Icon/dragon-" + iterator.Key.ToLower());

            if (PlayerInfo.Instance.dragonInfo.id.Equals(iterator.Key))
            {
                index = i;
            }

            i++;
        }

        //Stretch skill selected
        float ratio = GameSupportor.getRatioAspect(tempSkill.gameObject, renderUlti) * 100;

        renderUlti.transform.localScale = new Vector3(ratio, ratio, ratio);

        selected.transform.position = dragons[index].transform.position;
        updateAttribute(PlayerInfo.Instance.dragonInfo.id);
        updateSkill(PlayerInfo.Instance.dragonInfo.id);
    }
    public void loadEnemy()
    {
        AutoDestroy.destroyChildren(selectedRegionPanel);
        infoTower.gameObject.SetActive(false);
        infoEnemy.gameObject.SetActive(true);

        guideType = UIGuideButton.ENEMY;

        target = null;

        //set grid
        UIGrid grid = selectedRegionPanel.GetComponent <UIGrid>();

        grid.maxPerLine    = PlayConfig.GridGuideEnemy.MaxPerLine;
        grid.cellWidth     = PlayConfig.GridGuideEnemy.CellWidth;
        grid.cellHeight    = PlayConfig.GridGuideEnemy.CellHeight;
        grid.enabled       = true;
        grid.repositionNow = true;

        EnemyController enemyController = Resources.Load <GameObject>("Prefab/Enemy/Enemy").GetComponent <EnemyController>();

        int length = enemies.Length;

        foreach (System.Collections.Generic.KeyValuePair <string, EnemyData> iterator in ReadDatabase.Instance.EnemyInfo)
        {
            GameSupportor.transferEnemyData(enemyController, iterator.Value);

            GameObject enemyGuide = Instantiate(PlayManager.Instance.modelPlay.EnemyGuide) as GameObject;
            enemyGuide.transform.parent = selectedRegionPanel.transform;
            enemyGuide.name             = enemyController.name;

            enemyGuide.GetComponent <UIStretch>().container = selectedRegionPanel;

            EnemyGuideController controller = enemyGuide.GetComponent <EnemyGuideController>();
            controller.ID      = enemyController.ID;
            controller.visible = PlayerInfo.Instance.listEnemy[enemyController.ID];

            //set icon
            if (controller.visible)
            {
                controller.Icon.mainTexture = Resources.Load <Texture>("Image/Enemy/00 Guide Icon/" + enemyController.ID.ToLower());
            }

            if (target == null && controller.visible)
            {
                target = enemyGuide;
            }
        }
        if (target != null)
        {
            target.GetComponent <EnemyGuideController>().setColor(true);
        }

        loadEnemyInfo();
    }
    void setEnemyArray()
    {
        int length = ReadDatabase.Instance.EnemyInfo.Count;

        enemies = new string[length];

        int t = 0;

        foreach (System.Collections.Generic.KeyValuePair <string, EnemyData> iterator in ReadDatabase.Instance.EnemyInfo)
        {
            enemies[t] = iterator.Key;
            t++;
        }

        int             min;
        GameObject      model           = Resources.Load <GameObject>("Prefab/Enemy/Enemy");
        EnemyController modelController = model.GetComponent <EnemyController>();

        EnemyController enemy1, enemy2;

        for (int i = 0; i < length - 1; i++)
        {
            min = i;

            for (int j = i + 1; j < length; j++)
            {
                GameSupportor.transferEnemyData(modelController, ReadDatabase.Instance.EnemyInfo[enemies[i]]);
                enemy1 = modelController;
                GameSupportor.transferEnemyData(modelController, ReadDatabase.Instance.EnemyInfo[enemies[j]]);
                enemy2 = modelController;
                if (enemy1.level > enemy2.level)
                {
                    min = j;

                    string swap = enemies[i];
                    enemies[i]   = enemies[min];
                    enemies[min] = swap;
                }
                else if (enemy1.level == enemy2.level)
                {
                    if (enemy1.attribute.HP.Max > enemy2.attribute.HP.Max)
                    {
                        min = j;

                        string swap = enemies[i];
                        enemies[i]   = enemies[min];
                        enemies[min] = swap;
                    }
                }
            }
        }
    }
예제 #5
0
    IEnumerator initEnemy(string id_enemy, int number_enemy, float time_enemy)
    {
        GameObject      model           = Resources.Load <GameObject>("Prefab/Enemy/Enemy");
        EnemyController enemyController = model.GetComponent <EnemyController>();

        GameSupportor.transferEnemyData(enemyController, ReadDatabase.Instance.EnemyInfo[id_enemy]);
        int routine    = Random.Range(0, WaveController.Instance.enemyRoutine.Length);
        int countEnemy = 0;

        for (int i = 0; i < number_enemy; i++)
        {
            GameObject enemy = Instantiate(model, WaveController.Instance.enemyStartPos[routine].transform.position, Quaternion.identity) as GameObject;

            enemy.transform.parent        = WaveController.Instance.enemyStartPos[routine].transform;
            enemy.transform.localScale    = Vector3.one;
            enemy.transform.localPosition = Vector3.zero;
            enemy.GetComponentInChildren <SpriteRenderer>().material.renderQueue = GameConfig.RenderQueueEnemy - WaveController.Instance.countEnemy;

            EnemyController ec = enemy.GetComponent <EnemyController>();
            ec.stateMove.PathGroup = WaveController.Instance.enemyRoutine[routine].transform;
            ec.waveID = 0;

            //Set depth cho thanh hp, xu ly thanh mau xuat hien sau phai? ve~ sau
            foreach (Transform health in enemy.transform)
            {
                if (health.name == PlayNameHashIDs.Health)
                {
                    foreach (Transform child in health)
                    {
                        if (child.name == PlayNameHashIDs.Foreground)
                        {
                            child.GetComponent <UISprite>().depth -= countEnemy;
                        }
                        else if (child.name == PlayNameHashIDs.Background)
                        {
                            child.GetComponent <UISprite>().depth -= (countEnemy + 1);
                        }
                    }
                    break;
                }
            }

            countEnemy++;
            if (countEnemy >= 100)
            {
                countEnemy = 0;
            }
            yield return(new WaitForSeconds(time_enemy));
        }
    }
예제 #6
0
    void initToGame()
    {
        GameObject      model           = Resources.Load <GameObject>("Prefab/Enemy/Enemy");
        EnemyController enemyController = model.GetComponent <EnemyController>();

        //except money
        GameSupportor.transferEnemyData(enemyController, ReadDatabase.Instance.EnemyInfo[this.enemyBluetoothController.ID]);
        if (PlayInfo.Instance.Money < enemyController.money)
        {
            return;
        }


        PlayInfo.Instance.Money -= enemyController.money;
        int routine = Random.Range(0, WaveController.Instance.enemyRoutine.Length);

        GameObject enemy = Instantiate(model, WaveController.Instance.enemyStartPos [routine].transform.position, Quaternion.identity) as GameObject;

        checkVisibleEnemy(enemyController);
        enemy.transform.parent        = WaveController.Instance.enemyStartPos [routine].transform;
        enemy.transform.localScale    = Vector3.one;
        enemy.transform.localPosition = Vector3.zero;
        //enemy.GetComponentInChildren<SpriteRenderer> ().material.renderQueue = GameConfig.RenderQueueEnemy - ;

        EnemyController ec = enemy.GetComponent <EnemyController> ();

        ec.stateMove.PathGroup = WaveController.Instance.enemyRoutine [routine].transform;

        //Debug.Log (WaveController.Instance.enemyRoutine [routine]);
        //Set depth cho thanh hp, xu ly thanh mau xuat hien sau phai? ve~ sau
        foreach (Transform health in enemy.transform)
        {
            if (health.name == PlayNameHashIDs.Health)
            {
                foreach (Transform child in health)
                {
                    if (child.name == PlayNameHashIDs.Foreground)
                    {
                        child.GetComponent <UISprite> ().depth -= 1;
                    }
                    else if (child.name == PlayNameHashIDs.Background)
                    {
                        child.GetComponent <UISprite> ().depth -= (1 + 1);
                    }
                }
                break;
            }
        }
    }
예제 #7
0
    public void initCollider(int frameLength, float timeFrame)
    {
        if (!hasCollider)
        {
            return;
        }

        Vector2 spritePivot = GameSupportor.getPivotSpriteRenderer(controller.gameObject);

        switch (colliderType)
        {
            #region BOX
        case ESkillCollider.BOX:
            BoxCollider boxCollider = controller.skillAnimation.gameObject.AddComponent <BoxCollider>();
            boxCollider.isTrigger = true;

            if (!colliderValue.ToString().Trim().Equals("full"))
            {
                string[] ss = colliderValue.ToString().Split('/');

                boxCollider.isTrigger = true;
                boxCollider.center    = new Vector2(0.5f - spritePivot.x + float.Parse(ss[0]), 0.5f - spritePivot.y + float.Parse(ss[1]));
                boxCollider.size      = new Vector2(float.Parse(ss[2]), float.Parse(ss[3]));
            }
            else
            {
                boxCollider.size = new Vector2(15.0f, 15.0f);
                //if (controller.StateAction == ESkillAction.ARMAGGEDDON)
                //{
                //    UIWidget widget = controller.skillAnimation.gameObject.AddComponent<UIWidget>();

                //    foreach(Transform child in PlayManager.Instance.tempInit.cameraRender.transform)
                //    {
                //        if(child.name.Equals("Background"))
                //        {
                //            UITexture texture = child.transform.GetChild(0).GetComponent<UITexture>();
                //            widget.SetDimensions(texture.width, texture.height);
                //            break;
                //        }
                //    }
                //    widget.autoResizeBoxCollider = true;
                //}
            }

            if (colliderMoveTo != null)
            {
                string[] ss       = colliderMoveTo.ToString().Split('/');
                Vector2  centerTo = new Vector2(float.Parse(ss[0].ToString()), float.Parse(ss[1].ToString()));
                Vector2  sizeTo   = new Vector2(float.Parse(ss[2].ToString()), float.Parse(ss[3].ToString()));
                controller.skillAnimation.StartCoroutine(runBoxCollider(boxCollider, centerTo, sizeTo, frameLength, timeFrame));
            }

            break;

            #endregion
            #region CAPSULE
        case ESkillCollider.CAPSULE:
            break;

            #endregion
            #region SPHERE
        case ESkillCollider.SPHERE:
            string[] values = colliderValue.ToString().Split('/');

            SphereCollider sphereCollider = controller.skillAnimation.gameObject.AddComponent <SphereCollider>();
            sphereCollider.isTrigger = true;
            sphereCollider.center    = Vector3.zero;
            sphereCollider.radius    = float.Parse(values[0]);
            sphereCollider.center    = new Vector2(0.5f - spritePivot.x, 0.5f - spritePivot.y);

            controller.skillAnimation.StartCoroutine(runSphereCollider(sphereCollider, float.Parse(values[1]), frameLength, timeFrame));
            break;
            #endregion
        }

        controller.skillAnimation.gameObject.AddComponent <SkillDamage>();
    }
예제 #8
0
 void getDragonHouseDatabase()
 {
     GameSupportor.transferHouseDragonData(DragonHouse.GetComponent <HouseController>(), 1);
 }
    public void loadEnemyInfo()
    {
        if (target != null)
        {
            //AutoDestroy.destroyChildren(InfoPanel, "Name");

            //active tower name
            if (!infoName.gameObject.activeSelf)
            {
                infoName.gameObject.SetActive(true);
            }

            EnemyGuideController targetController = target.GetComponent <EnemyGuideController>();

            int             length          = ReadDatabase.Instance.EnemyInfo.Count;
            GameObject      model           = Resources.Load <GameObject>("Prefab/Enemy/Enemy");
            EnemyController enemyController = model.GetComponent <EnemyController>();

            GameSupportor.transferEnemyData(enemyController, ReadDatabase.Instance.EnemyInfo[targetController.ID]);
            EnemyGuideInfoController info = infoEnemy.GetComponent <EnemyGuideInfoController>();
            info.Image.mainTexture = targetController.Icon.mainTexture;
            info.labelLevel.text   = enemyController.level.ToString();
            info.labelHP.text      = enemyController.attribute.HP.Max.ToString();
            info.labelDEF.text     = enemyController.attribute.DEF.ToString();
            info.labelCoin.text    = enemyController.money.ToString();
            info.labelRegion.text  = enemyController.region.ToString();
            info.labelSpeed.text   = PlayConfig.getSpeedString(enemyController.speed);
            //set visible boss icon
            if (enemyController.level >= 6)
            {
                info.boss.gameObject.SetActive(true);
            }
            else
            {
                info.boss.gameObject.SetActive(false);
            }

            //set level sprite

            info.spriteLevel.spriteName = "play-level-" + enemyController.level;

            //set name
            infoName.text = enemyController.attribute.Name;

            //set name color
            Color[] colors = PlayConfig.getColorEnemyName(enemyController.level);
            infoName.color       = colors[0];
            infoName.effectColor = colors[1];
        }
        else
        {
            EnemyGuideInfoController info = infoEnemy.GetComponent <EnemyGuideInfoController>();
            info.Image.mainTexture = Resources.Load <Texture>("Image/Enemy/00 Guide Icon/0x0");
            info.labelLevel.text   = "?";
            info.labelHP.text      = "???";
            info.labelDEF.text     = "???";
            info.labelCoin.text    = "???";
            info.labelRegion.text  = "???";
            info.labelSpeed.text   = "???";
            info.boss.gameObject.SetActive(false);
            info.spriteLevel.spriteName = "play-level-123";

            //set name
            infoName.text = GameConfig.GameName.ToUpper();

            //set name color
            infoName.color       = Color.white;
            infoName.effectColor = Color.black;
        }
    }
예제 #10
0
    IEnumerator initEnemy()
    {
        int wave_lenght = infoMap.Waves.Count;

        for (int k = 0; k < wave_lenght; k++)
        {
            WaveCurrent++;
            SWave wave = (SWave)infoMap.Waves[k];

            enemy_of_wave.Add(wave.WaveID, wave.TotalEnemy);

            // time show of wave
            if (wave.TimeWave > 0)
            {
                yield return(new WaitForSeconds(wave.TimeWave));
            }

            PlayInfo.Instance.Wave++;
            checkItemBuffAvailable();

            countEnemy = 0;

            if (k + 1 < infoMap.Waves.Count)
            {
                StartCoroutine(nextWaveCooldown(countTimeWave(wave), ((SWave)infoMap.Waves[k + 1]).hasBoss));
            }

            GameObject      model           = Resources.Load <GameObject>("Prefab/Enemy/Enemy");
            EnemyController enemyController = model.GetComponent <EnemyController>();

            // show enemy
            foreach (SEnemyWave infoEnemy in wave.Enemies)
            {
                //Set attribute
                EnemyData tempData = ReadDatabase.Instance.EnemyInfo.ContainsKey(infoEnemy.ID)? ReadDatabase.Instance.EnemyInfo[infoEnemy.ID] : null;

                if (tempData == null)
                {
                    break;
                }
                GameSupportor.transferEnemyData(enemyController, tempData);

                int routine = Random.Range(0, enemyRoutine.Length);

                if (SceneState.Instance.State != ESceneState.BLUETOOTH)
                {
                    checkVisibleEnemy(enemyController);
                }

                for (int i = 0; i < infoEnemy.Quantity; i++)
                {
                    GameObject enemy = Instantiate(model, enemyStartPos[routine].transform.position, Quaternion.identity) as GameObject;

                    enemy.transform.parent        = enemyStartPos[routine].transform;
                    enemy.transform.localScale    = Vector3.one;
                    enemy.transform.localPosition = Vector3.zero;
                    enemy.GetComponentInChildren <SpriteRenderer>().material.renderQueue = GameConfig.RenderQueueEnemy - countEnemy;

                    EnemyController ec = enemy.GetComponent <EnemyController>();

                    ec.stateMove.PathGroup = enemyRoutine[routine].transform;
                    ec.waveID = wave.WaveID;

                    //Set depth cho thanh hp, xu ly thanh mau xuat hien sau phai? ve~ sau
                    foreach (Transform health in enemy.transform)
                    {
                        if (health.name == PlayNameHashIDs.Health)
                        {
                            foreach (Transform child in health)
                            {
                                if (child.name == PlayNameHashIDs.Foreground)
                                {
                                    child.GetComponent <UISprite>().depth -= countEnemy;
                                }
                                else if (child.name == PlayNameHashIDs.Background)
                                {
                                    child.GetComponent <UISprite>().depth -= (countEnemy + 1);
                                }
                            }
                            break;
                        }
                    }

                    countEnemy++;
                    if (countEnemy >= 100)
                    {
                        countEnemy = 0;
                    }

                    yield return(new WaitForSeconds(infoEnemy.TimeSpawn));
                }
                yield return(new WaitForSeconds(wave.TimeEnemy));
            }
        }
    }
예제 #11
0
    public IEnumerator initEnemy()
    {
        int countEnemy = 0;

        System.Collections.Generic.List <EnemyData>[] listDictEnemy =
            new System.Collections.Generic.List <EnemyData> [GameConfig.MaxCurrentEnemyLevel];

        for (int i = 0; i < GameConfig.MaxCurrentEnemyLevel; i++)
        {
            listDictEnemy[i] = new System.Collections.Generic.List <EnemyData>();
        }

        foreach (System.Collections.Generic.KeyValuePair <string, EnemyData> iterator in ReadDatabase.Instance.EnemyInfo)
        {
            int level = iterator.Value.Level;
            listDictEnemy[level - 1].Add(iterator.Value);
        }

        GameObject      model           = Resources.Load <GameObject>("Prefab/Enemy/Enemy");
        EnemyController enemyController = model.GetComponent <EnemyController>();

        while (true)
        {
            int amount     = Random.Range(DailyQuestConfig.ThreeMinAmountEnemyMin, DailyQuestConfig.ThreeMinAmountEnemyMax);
            int enemyLevel = Random.Range(minEnemyLevel, maxEnemyLevel);

            float timeDistance = 1.0f;
            if (enemyLevel < 3)
            {
                timeDistance = Random.Range(DailyQuestConfig.ThreeMinTimeDistanceEnemyMin, DailyQuestConfig.ThreeMinTimeDistanceEnemyMax) * (1 + (float)enemyLevel / 6);
            }
            else if (enemyLevel < 5)
            {
                timeDistance = Random.Range(DailyQuestConfig.ThreeMinTimeDistanceEnemyMin, DailyQuestConfig.ThreeMinTimeDistanceEnemyMax) * (1 + (float)enemyLevel / 4);
            }
            else
            {
                timeDistance = Random.Range(DailyQuestConfig.ThreeMinTimeDistanceEnemyMin, DailyQuestConfig.ThreeMinTimeDistanceEnemyMax) * (1 + (float)enemyLevel / 3);
            }

            int levelLength = listDictEnemy[enemyLevel - 1].Count;
            int iRandom     = Random.Range(1, levelLength);
            int routine     = Random.Range(0, WaveController.Instance.enemyRoutine.Length);

            EnemyData data = listDictEnemy[enemyLevel - 1][iRandom];
            GameSupportor.transferEnemyData(enemyController, data);

            // show enemy
            for (int i = 0; i < amount; i++)
            {
                WaveController.Instance.checkVisibleEnemy(enemyController);

                GameObject enemy = Instantiate(model, WaveController.Instance.enemyStartPos[routine].transform.position, Quaternion.identity) as GameObject;
                enemy.transform.parent        = WaveController.Instance.enemyStartPos[routine].transform;
                enemy.transform.localScale    = Vector3.one;
                enemy.transform.localPosition = Vector3.zero;
                enemy.GetComponentInChildren <SpriteRenderer>().material.renderQueue = GameConfig.RenderQueueEnemy - countEnemy;
                enemy.GetComponent <EnemyController>().stateMove.PathGroup           = WaveController.Instance.enemyRoutine[routine].transform;

                //Set depth cho thanh hp, xu ly thanh mau xuat hien sau phai? ve~ sau
                foreach (Transform health in enemy.transform)
                {
                    if (health.name == PlayNameHashIDs.Health)
                    {
                        foreach (Transform child in health)
                        {
                            if (child.name == PlayNameHashIDs.Foreground)
                            {
                                child.GetComponent <UISprite>().depth -= countEnemy;
                            }
                            else if (child.name == PlayNameHashIDs.Background)
                            {
                                child.GetComponent <UISprite>().depth -= (countEnemy + 1);
                            }
                        }
                        break;
                    }
                }

                countEnemy++;
                if (countEnemy >= 100)
                {
                    countEnemy = 0;
                }

                yield return(new WaitForSeconds(timeDistance));
            }

            yield return(new WaitForSeconds(0.1f));
        }
    }