/// <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]); }
/// <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 } }
/// <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]); }
/// <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; } }