Exemple #1
0
    public void OpenPackageCreature(int index)
    {
        if (package == null)
        {
            package = Instantiate(packagePrefab);
            package.transform.parent     = gameObject.transform;
            package.transform.localScale = Vector3.one;
            package.GetComponent <RectTransform>().position = new Vector3(Screen.width * 3 / 2, 0, 0);
        }
        CreatureFightData roomData  = GameRoot.GetInstance().gameDataManager.GetInRoomConstructure(currRoomId);
        PackageUI         packageUI = package.GetComponentInChildren <PackageUI>();

        if (roomData == null)
        {
            return;
        }
        switch (roomData.con_type)
        {
        case 0:
            packageUI.Init(PackageType.IdleCreature, 1);
            package.transform.DOMoveX(Screen.width / 2, 0.3f);
            currIndex = index;
            packageUI.SelectAction += ChangeCreature;
            break;

        case 2:
            packageUI.Init(PackageType.IdlePartTool, 1);
            package.transform.DOMoveX(Screen.width / 2, 0.3f);
            currIndex = index;
            packageUI.SelectAction += ChangeCreature;
            break;
        }
    }
 public void GetNewPartTool(CreatureFightData partTool)
 {
     partTool.uid       = unitUid;
     partTool.init_room = 0;
     ++unitUid;
     partTools.Add(partTool);
 }
Exemple #3
0
    public void InjectData(CreatureFightData data)
    {
        _data  = data;
        isAnim = false;
        switch (data.type)
        {
        case 0:
            unitCard.SetActive(true);
            skillCard.SetActive(false);
            constructureCard.SetActive(false);
            unitName.text     = StrUtil.GetText(data.CreatureName);
            unitSprite.sprite = GameRoot.GetInstance().BattleField.assetManager.GetCards(data.icon);
            for (int i = 0; i < stars.Length; ++i)
            {
                stars[i].color = i < data.star ? new Color(1, 1, 1) : new Color(0.3f, 0.3f, 0.3f);
            }
            level.text           = "Lv." + data.level;
            exp.text             = data.exp + "/" + data.expMax;
            expSlider.value      = (float)data.exp / (float)data.expMax;
            hp.text              = Mathf.FloorToInt(data.hp).ToString();
            attack.text          = Mathf.FloorToInt(data.attack).ToString();
            baseAttackFrame.text = StrUtil.GetText(GetAttackRateString(data.base_attack_interval));
            attackRange.text     = Mathf.FloorToInt(data.attack_range).ToString();
            defence.text         = Mathf.FloorToInt(data.defence).ToString();
            reduce.text          = data.defence >= 0?(data.defence * 2f / (100f + data.defence * 2f) * 100f).ToString("F2") + "%":"-" + ((1 - Mathf.Pow((100f - 2f) / 100f, -data.defence)) * 100f).ToString("F2") + "%";
            speed.text           = StrUtil.GetText(GetSpeedString(data.speed));

            notify.SetActive(true);
            isNotify    = true;
            notifyState = -1;
            notify.GetComponent <Text>().text = StrUtil.GetText("点击翻转查看能力");
            //skill data
            int[] skills = data.skills;
            int   num    = skills.Length;
            for (int i = 0; i < skillIcons.Length; ++i)
            {
                skillIcons[i].gameObject.SetActive(false);
            }
            for (int i = 0; i < num; ++i)
            {
                skillIcons[i].gameObject.SetActive(true);
                skillIcons[i].InjectData(GameRoot.GetInstance().BattleField.assetManager.GetSkillData(skills[i]));
            }

            break;

        case 1:
            unitCard.SetActive(false);
            skillCard.SetActive(false);
            constructureCard.SetActive(true);
            constructureName.text   = StrUtil.GetText(data.CreatureName);
            constructureIcon.sprite = GameRoot.GetInstance().BattleField.assetManager.GetIcon(data.icon);
            notify.SetActive(false);
            isNotify = false;
            break;

        case 2:
            break;
        }
    }
 public int GetNewConstructure(CreatureFightData constructure)
 {
     constructure.uid       = unitUid;
     constructure.init_room = 0;
     ++unitUid;
     constructures.Add(constructure);
     return(constructure.uid);
 }
Exemple #5
0
        public static UnitData GetUnitData(int id)
        {
            AssetManager mng;

            mng = GameRoot.GetInstance().BattleField.assetManager;
            CreatureFightData data = new CreatureFightData();

            data.LoadData(mng.GetCreatureData(id));
            return(AssetManager.PackCreatureData(data));
        }
    //create new data
    public CreatureFightData CreateNewCreature(int id, int level)
    {
        AssetManager      assetManager = GameRoot.GetInstance().BattleField.assetManager;
        CreatureFightData temp         = new CreatureFightData();

        temp.LoadData(assetManager.GetCreatureData(id));
        temp.level  = level;
        temp.hp     = temp.hp + (level - 1) * temp.hp_up;
        temp.attack = temp.attack + (level - 1) * temp.attack_up;
        temp.expMax = level * 20;
        temp.exp    = level == 1 ? 0 : UnityEngine.Random.Range(0, temp.expMax);
        return(temp);
    }
    public void ChangeBoss(int id)
    {
        HeroData          data      = GameRoot.GetInstance().BattleField.assetManager.GetHeroData(id);
        CreatureFightData boss_data = HeroData.PackHeroData(data);

        boss_data.type      = -1;
        boss_data.uid       = 0;
        boss_data.init_room = 23;
        boss = boss_data;

        GameRoot.GetInstance().Bridge.RemoveEntity(0);
        GameRoot.GetInstance().Bridge.AddEntity(AssetManager.PackCreatureData(boss_data));
    }
    public BattleData GetBattleData()
    {
        BattleData battleData = new BattleData();

        List <UnitData> allStructures = GetBattleConstructures();
        List <UnitData> allCreatures  = GetBattleCreatures();

        int num = allStructures.Count + allCreatures.Count;

        battleData.units = new UnitData[num];

        battleData.roomCol = roomCol;
        battleData.roomRow = roomRow;

        for (int i = 0; i < allStructures.Count; ++i)
        {
            battleData.units[i] = allStructures[i];
        }

        for (int i = 0; i < allCreatures.Count; ++i)
        {
            battleData.units[allStructures.Count + i] = allCreatures[i];
        }

        battleData.enemys = new UnitData[25];

        for (int i = 0; i < 24; ++i)
        {
            CreatureFightData temp = new CreatureFightData();
            temp.LoadData(GameRoot.GetInstance().BattleField.assetManager.GetCreatureData(109));
            if (UnityEngine.Random.Range(0f, 1f) < 0.1f)
            {
                temp.enemy_level = 1;
            }
            battleData.enemys[i]           = AssetManager.PackCreatureData(temp, 2);
            battleData.enemys[i].init_room = -1;
        }
        CreatureFightData e_boss = new CreatureFightData();

        e_boss.LoadData(GameRoot.GetInstance().BattleField.assetManager.GetCreatureData(110));
        e_boss.enemy_level              = 2;
        battleData.enemys[24]           = AssetManager.PackCreatureData(e_boss, 2);
        battleData.enemys[24].init_room = -1;

        battleData.boss = GetHeroData();

        return(battleData);
    }
    private void CleanInRoomData(int roomId, bool rawData = false)
    {
        CreatureFightData        roomData = GetInRoomConstructure(roomId);
        List <CreatureFightData> subDatas = GetInRoomSubData(roomId);

        if (roomData != null)
        {
            int remainNum = roomData.contain_num;
            int conType   = roomData.con_type;
            for (int i = subDatas.Count - 1; i >= 0; --i)
            {
                if (subDatas[i].type != conType)
                {
                    subDatas[i].init_room = 0;
                    if (subDatas[i].type != 2 && rawData == false)
                    {
                        GameRoot.GetInstance().Bridge.RemoveEntity(subDatas[i].uid);
                    }
                    subDatas.RemoveAt(i);
                }
            }
            for (int i = subDatas.Count - 1; i >= 0; --i)
            {
                if (i > remainNum)
                {
                    subDatas[i].init_room = 0;
                    if (subDatas[i].type != 2 && rawData == false)
                    {
                        GameRoot.GetInstance().Bridge.RemoveEntity(subDatas[i].uid);
                    }
                    subDatas.RemoveAt(i);
                }
            }
        }
        else
        {
            for (int i = subDatas.Count - 1; i >= 0; --i)
            {
                subDatas[i].init_room = 0;
                if (subDatas[i].type != 2 && rawData == false)
                {
                    GameRoot.GetInstance().Bridge.RemoveEntity(subDatas[i].uid);
                }
                subDatas.RemoveAt(i);
            }
        }
    }
Exemple #10
0
    public int LoadData()
    {
        GameData data;

        if (File.Exists(Application.persistentDataPath + "/gamesave.save"))
        {
            BinaryFormatter formatter = new BinaryFormatter();
            FileStream      file      = File.Open(Application.persistentDataPath + "/gamesave.save", FileMode.Open);
            data = (GameData)formatter.Deserialize(file);
            file.Close();

            //load data
            unitUid       = data.unitUid;
            roomRow       = data.roomRow;
            roomCol       = data.roomCol;
            boss          = new CreatureFightData();
            creatures     = new List <CreatureFightData>();
            constructures = new List <CreatureFightData>();
            partTools     = new List <CreatureFightData>();
            rooms         = new Dictionary <int, List <CreatureFightData> >();

            boss = data.boss;

            int creatureNum = data.creatures.Count;
            for (int i = 0; i < creatureNum; ++i)
            {
                creatures.Add(data.creatures[i]);
                if (data.creatures[i].init_room != 0)
                {
                    if (!rooms.ContainsKey(data.creatures[i].init_room))
                    {
                        rooms.Add(data.creatures[i].init_room, new List <CreatureFightData>());
                    }
                    rooms[data.creatures[i].init_room].Add(data.creatures[i]);
                }
            }

            int constructureNum = data.constructures.Count;
            for (int i = 0; i < constructureNum; ++i)
            {
                constructures.Add(data.constructures[i]);
            }

            return(1);
        }
        return(-1);
    }
Exemple #11
0
    public void InjectData(CreatureFightData data)
    {
        //init star
        for (int i = 0; i < stars.Length; ++i)
        {
            if (i < data.star)
            {
                stars[i].SetActive(true);
            }
            else
            {
                stars[i].SetActive(false);
            }
        }
        //init lvl
        level.text = "Lv." + data.level;

        //init icon
        icon.sprite = GameRoot.GetInstance().BattleField.assetManager.GetIcon(data.icon);

        //reset color
        if (data.type == 1)
        {
            if (data.con_type == 0)
            {
                bound.color = new Color(0.347f, 0.67f, 0.8f);
                back.color  = new Color(0.3f, 0.38f, 0.4f);
            }
            else
            {
                bound.color = new Color(0.75f, 0.4f, 0.47f);
                back.color  = new Color(0.36f, 0.24f, 0.27f);
            }
        }
        else if (data.type == 0)
        {
            bound.color = new Color(0.69f, 0.53f, 0.73f);
            back.color  = new Color(0.41f, 0.33f, 0.44f);
        }
        else if (data.type == 2)
        {
            bound.color = new Color(0.82f, 0.74f, 0.46f);
            back.color  = new Color(0.62f, 0.54f, 0.26f);
        }
        creatureData = data;
    }
Exemple #12
0
    public static CreatureFightData PackHeroData(HeroData _data)
    {
        CreatureFightData data = new CreatureFightData
        {
            id                   = _data.id,
            uid                  = _data.uid,
            type                 = _data.type,
            con_type             = _data.con_type,
            contain_num          = _data.contain_num,
            genus                = _data.genus,
            CreatureName         = _data.CreatureName,
            star                 = _data.ini_star,
            hp                   = _data.hp,
            hp_up                = _data.hp_up,
            attack               = _data.attack,
            attack_up            = _data.attack_up,
            base_attack_interval = _data.base_attack_interval,
            attack_rate          = _data.attack_rate,
            defence              = _data.defence,
            magic_resist         = _data.magic_resist,
            crit                 = _data.crit,
            crit_value           = _data.crit_value,
            hit_rate             = _data.hit_rate,
            dodge                = _data.dodge,
            speed                = _data.speed,
            base_speed           = _data.base_speed,
            physic_suck          = _data.physic_suck,
            magic_suck           = _data.magic_suck,
            coold_reduce         = _data.coold_reduce,
            radius               = _data.radius,
            block_num            = _data.block_num,
            attack_range         = _data.attack_range,
            channal              = _data.channal,
            ready_time           = _data.ready_time,
            cost                 = _data.cost,
            init_room            = _data.init_room,
            live_time            = _data.live_time,
            prefab               = _data.prefab,
            icon                 = _data.icon,
        };

        data.skills = new int[0];

        return(data);
    }
Exemple #13
0
    public void InitGameData()
    {
        //inject boss data
        int      boss_id  = boss.id;
        HeroData heroData = GameRoot.GetInstance().BattleField.assetManager.GetHeroData(boss_id);

        boss           = HeroData.PackHeroData(heroData);
        boss.uid       = 0;
        boss.init_room = 23;
        boss.type      = -1;
        foreach (int key in heroData.talents)
        {
            SkillData skillData = GameRoot.GetInstance().BattleField.assetManager.GetSkillData(key);
            if (skillData.needExp <= bossExp[boss_id - 1001])
            {
                InjectBossSkill(key);
            }
        }
    }
Exemple #14
0
 public void OpenCreatureCard(CreatureFightData data, Vector3 location)
 {
     if (cardPrefab == null)
     {
         cardPrefab = Instantiate(creatureCardPrefab);
         cardPrefab.transform.parent   = GameRoot.GetInstance().InfoUI.transform;
         cardPrefab.transform.position = new Vector3(Screen.width / 2, Screen.height / 2);
     }
     cardPrefab.SetActive(true);
     GameRoot.GetInstance().InfoUI.SetActive(true);
     cardPrefab.transform.position   = location;
     cardPrefab.transform.localScale = Vector3.one * 0.2f;
     cardPrefab.GetComponent <CreatureCardUI>().InjectData(data);
     cardPrefab.transform.DOMove(new Vector3(Screen.width / 2, Screen.height / 2, 0), 0.3f);
     cardPrefab.transform.DOScale(Vector3.one * 1.05f, 0.3f).onComplete += () =>
     {
         cardPrefab.transform.DOScale(Vector3.one, 0.05f);
     };
 }
Exemple #15
0
    public void ChangeRoomSubData(int roomId, int index, int uid, bool rawData = false)
    {
        List <CreatureFightData> subDatas = GetInRoomSubData(roomId);
        CreatureFightData        newData  = GetCreatureFightDataByUid(uid);

        if (index < subDatas.Count)
        {
            CreatureFightData oldData = subDatas[index];
            if (oldData != null)
            {
                oldData.init_room = 0;
                if (oldData.type != 2 && rawData == false)
                {
                    GameRoot.GetInstance().Bridge.RemoveEntity(oldData.uid);
                }
                subDatas.RemoveAt(index);
            }

            if (newData != null)
            {
                newData.init_room = roomId;
                if (newData.type != 2 && rawData == false)
                {
                    GameRoot.GetInstance().Bridge.AddEntity(AssetManager.PackCreatureData(newData));
                }
                subDatas.Insert(index, newData);
            }
        }
        else
        {
            if (newData != null)
            {
                newData.init_room = roomId;
                if (newData.type != 2 && rawData == false && newData.init_room != 0)
                {
                    GameRoot.GetInstance().Bridge.AddEntity(AssetManager.PackCreatureData(newData));
                }
                subDatas.Add(newData);
            }
        }
        CleanInRoomData(roomId, rawData);
    }
Exemple #16
0
    public static UnitData PackCreatureData(CreatureFightData data, int _side = 1)
    {
        UnitData pack = new UnitData
        {
            id                   = data.id,
            level                = data.level,
            uid                  = data.uid,
            type                 = data.type,
            con_type             = data.con_type,
            enemy_level          = data.enemy_level,
            side                 = _side,
            genus                = data.genus,
            name                 = data.CreatureName,
            hp                   = data.hp,
            attack               = data.attack,
            base_attack_interval = data.base_attack_interval,
            attack_rate          = data.attack_rate,
            defence              = data.defence,
            magic_resist         = data.magic_resist,
            crit                 = data.crit,
            crit_value           = data.crit_value,
            hit_rate             = data.hit_rate,
            dodge                = data.dodge,
            speed                = data.speed,
            physic_suck          = data.physic_suck,
            magic_suck           = data.magic_suck,
            coold_reduce         = data.coold_reduce,
            radius               = data.radius,
            block_num            = data.block_num,
            attack_range         = data.attack_range,
            channal              = data.channal,
            ready_time           = data.ready_time,
            live_time            = data.live_time,
            skills               = data.skills,
            init_room            = data.init_room,
        };


        return(pack);
    }
Exemple #17
0
    public void ChangeRoomConstructure(int roomId, int uid, bool rawData = false)
    {
        CreatureFightData oldData = GetInRoomConstructure(roomId);

        if (oldData != null)
        {
            oldData.init_room = 0;
            if (rawData == false)
            {
                GameRoot.GetInstance().Bridge.RemoveEntity(oldData.uid);
            }
        }
        CreatureFightData newData = GetCreatureFightDataByUid(uid);

        if (newData != null)
        {
            newData.init_room = roomId;
            if (rawData == false)
            {
                GameRoot.GetInstance().Bridge.AddEntity(AssetManager.PackCreatureData(newData));
            }
        }
        CleanInRoomData(roomId, rawData);
    }
Exemple #18
0
    public void RefreshInfo()
    {
        CreatureFightData data = GameRoot.GetInstance().gameDataManager.GetInRoomConstructure(currRoomId);
        int num = 0;

        if (data == null)
        {
            constructureIcon.SetActive(false);
        }
        else
        {
            constructureIcon.GetComponent <CreatureIconUI>().InjectData(data);
            constructureIcon.SetActive(true);
        }

        List <CreatureFightData> datas = GameRoot.GetInstance().gameDataManager.GetInRoomSubData(currRoomId);

        if (data != null)
        {
            num = data.contain_num;
        }
        foreach (var obj in PartContainer)
        {
            obj.SetActive(false);
        }
        float start_x = 0;

        switch (num)
        {
        case 1:
            start_x = 0;
            break;

        case 2:
            start_x = -80;
            break;

        case 3:
            start_x = -150;
            break;

        case 4:
            start_x = -235;
            break;
        }
        for (int i = 0; i < num; ++i)
        {
            PartContainer[i].SetActive(true);
            PartContainer[i].transform.localPosition = new Vector3(start_x + i * 150, PartContainer[i].transform.localPosition.y, PartContainer[i].transform.localPosition.z);
            if (i < datas.Count)
            {
                partIcons[i].GetComponent <CreatureIconUI>().InjectData(datas[i]);
                partIcons[i].SetActive(true);
            }
            else
            {
                partIcons[i].SetActive(false);
            }
        }
        CloseDungeonBtn();
    }