Exemplo n.º 1
0
    /// <summary>
    /// 获取敌军的基础数据(默认为0级武器)
    /// </summary>
    public BaseEnemyInfo LoadBaseEnemyData(EnemyType type, int weaponLevel = 0)
    {
        BaseEnemyInfo data = null;

        string key = ((int)type).ToString();

        if (!LoadedData.ContainsKey(type))
        {
            string resName = EnemyJsonData[key]["res"].ToString();
            int    speed   = (int)EnemyJsonData[key]["speed"];
            int    maxHP   = (int)EnemyJsonData[key]["maxHP"];
            string weapons = EnemyJsonData[key]["weapons"].ToString();
            int    hit     = (int)EnemyJsonData[key]["hit"];
            int    score   = (int)EnemyJsonData[key]["score"];

            string[]         weaponstrs   = weapons.Split(',');
            int              count        = weaponstrs.Length;
            BaseWeaponInfo[] weaponModule = new BaseWeaponInfo[count];
            //空武器
            if (null == weaponstrs || weaponstrs.Length == 0)
            {
                weaponModule = null;
            }
            else if (weaponstrs.Length == 1 && string.IsNullOrEmpty(weaponstrs[0]))
            {
                weaponModule = null;
            }
            //更新武器数据
            else
            {
                for (int i = 0; i < count; i++)
                {
                    weaponModule[i] = WeaponInfo.Instance.LoadBaseWeaponData((WeaponType)(int.Parse(weaponstrs[i])), weaponLevel);
                }
            }
            //默认满血量
            data = new BaseEnemyInfo(type, resName, speed, maxHP, maxHP, weaponModule, score, hit);

            //缓存
            LoadedData.Add(type, data);
        }

        return(LoadedData[type]);
    }
Exemplo n.º 2
0
    /// <summary>
    /// 升级 模块
    /// </summary>
    private void DoUpgradeModule(WeaponType type)
    {
        int            weaponLevel = DataManager.Instance.LoadWeaponLevel(type);
        BaseWeaponInfo data        = WeaponInfo.Instance.LoadBaseWeaponData(type, weaponLevel);
        int            cost        = data.weaponUpgradeCost + weaponLevel * data.weaponUpgradeCostUp;

        if (RobotInfo.Instance.Coin >= cost)
        {
            RobotInfo.Instance.Coin -= cost;

            //更新数据库
            DataManager.Instance.SaveWeaponLevel(type, weaponLevel + 1);

            UpdateEquipList(false);
        }
        else
        {
            //TODO
        }
    }
Exemplo n.º 3
0
    /// <summary>
    /// 获取武器的基础数据(默认为0级武器)
    /// </summary>
    public BaseWeaponInfo LoadBaseWeaponData(WeaponType type, int weaponLevel = 0)
    {
        BaseWeaponInfo data = null;

        string key = ((int)type).ToString();

        if (!LoadedData.ContainsKey(type))
        {
            string         weaponName = WeaponJsonData[key]["name"].ToString();
            string         weaponInfo = WeaponJsonData[key]["info"].ToString();
            string         resName    = WeaponJsonData[key]["res"].ToString();
            BulletType     bulletType = (BulletType)((int)WeaponJsonData[key]["bullet"]);
            List <Vector3> pos        = new List <Vector3>();
            int            count      = WeaponJsonData[key]["pos"].Count;
            for (int i = 0; i < count / 3; i++)
            {
                int x   = (int)WeaponJsonData[key]["pos"][i * 3];
                int y   = (int)WeaponJsonData[key]["pos"][i * 3 + 1];
                int rot = (int)WeaponJsonData[key]["pos"][i * 3 + 2];

                pos.Add(new Vector3(x, y, rot));
            }
            int cost          = (int)WeaponJsonData[key]["cost"];
            int speed         = (int)WeaponJsonData[key]["shootSpeed"];
            int speedUp       = (int)WeaponJsonData[key]["shootSpeedUp"];
            int power         = (int)WeaponJsonData[key]["power"];
            int powerUp       = (int)WeaponJsonData[key]["powerUp"];
            int upgradeCost   = (int)WeaponJsonData[key]["upgradeCost"];
            int upgradeCostUp = (int)WeaponJsonData[key]["upgradeCostUp"];

            data = new BaseWeaponInfo(type, weaponName, resName, weaponInfo, bulletType, weaponLevel, pos.ToArray(), cost, speed, speedUp, power, powerUp, upgradeCost, upgradeCostUp);

            //缓存
            LoadedData.Add(type, data);
        }

        return(LoadedData[type]);
    }
Exemplo n.º 4
0
    /// <summary>
    /// 刷新当前Equip信息
    /// </summary>
    private void UpdateEquipList(bool resetPos)
    {
        //获取原型并隐藏
        equipItem.gameObject.SetActive(false);
        //更新列表
        for (int i = 0; i < equipScrollP.childCount; i++)
        {
            Destroy(equipScrollP.GetChild(i).gameObject);
        }

        switch (equipUIType)
        {
        case EquipUIType.Weapon:

            WeaponType[] types = WeaponInfo.GetAllWeapons();
            int          count = types.Length;

            equipScrollP.GetComponent <RectTransform>().sizeDelta = new Vector2(0, Mathf.Max(900, 200 * count));
            if (resetPos)
            {
                equipScrollP.GetComponent <RectTransform>().anchoredPosition = Vector2.zero;
            }

            for (int i = 0; i < count; i++)
            {
                GameObject go    = Instantiate <GameObject>(equipItem.gameObject);
                Transform  trans = go.transform;
                go.SetActive(true);
                go.name = i.ToString();
                trans.SetParent(equipScrollP);
                trans.GetComponent <RectTransform>().anchoredPosition = new Vector2(0, -200 * i);
                trans.GetComponent <RectTransform>().sizeDelta        = new Vector2(0, 200);
                trans.GetComponent <RectTransform>().localScale       = Vector3.one;

                WeaponType tempType  = types[i];
                int        tempLevel = DataManager.Instance.LoadWeaponLevel(tempType);

                BaseWeaponInfo baseWeaponInfo = WeaponInfo.Instance.LoadBaseWeaponData(tempType, tempLevel);
                bool           isMaxLevel     = tempLevel >= WeaponInfo.MAX_WEAPON_LEVEL;
                bool           isEquip        = DataManager.Instance.LoadEquipWeapon().Contains(tempType);

                trans.Find("I").GetComponent <Image>().sprite          = ResourcesLoadManager.LoadWeaponResources <GameObject>(baseWeaponInfo.weaponResName).GetComponent <SpriteRenderer>().sprite;
                trans.Find("Cost_T").GetComponent <Text>().text        = string.Format("节点消耗:{0}", baseWeaponInfo.weaponPointsCost);
                trans.Find("Attribute_0_T").GetComponent <Text>().text = string.Format("武器威力:{0}", baseWeaponInfo.shootPower + tempLevel * baseWeaponInfo.shootPowerUpPerLevel);
                trans.Find("Attribute_1_T").GetComponent <Text>().text = string.Format("武器射速:{0}", baseWeaponInfo.shootSpeed + tempLevel * baseWeaponInfo.shootSpeedUpPerLevel);

                Button upgradeB = trans.Find("Upgrade_B").GetComponent <Button>();
                Button equipB   = trans.Find("Equip_B").GetComponent <Button>();

                upgradeB.interactable = !isMaxLevel;
                upgradeB.transform.Find("Value_T").GetComponent <Text>().text = isMaxLevel ? "Max" : string.Format("升级:{0}", baseWeaponInfo.weaponUpgradeCost + tempLevel * baseWeaponInfo.weaponUpgradeCostUp);
                equipB.transform.Find("Value_T").GetComponent <Text>().text   = isEquip ? "卸载" : "装备";

                //注册按钮方法
                upgradeB.onClick.AddListener(() => { DoUpgradeModule(tempType); });
                equipB.onClick.AddListener(() => { DoEquipOrUnequipModule(tempType); });
            }

            break;


        case EquipUIType.Other:

            //TODO
            break;
        }
    }