示例#1
0
    // 获取升级消耗
    public int GetTrainCost(int soldierCfgID)
    {
        int level = CityManager.Instance.GetSoldierLevel(soldierCfgID);
        SoldierLevelConfig cfgLevup = SoldierLevelConfigLoader.GetConfig(soldierCfgID, level);

        return(cfgLevup.UpgradeCost);
    }
    // 立即升级
    public void OnClickLevupNow()
    {
        int level = CityManager.Instance.GetSoldierLevel(_currentSoldierCfgID);

        if (level <= 0)
        {
            return;
        }

        SoldierConfig      cfg      = SoldierConfigLoader.GetConfig(_currentSoldierCfgID);
        SoldierLevelConfig cfgLevel = SoldierLevelConfigLoader.GetConfig(_currentSoldierCfgID, level);

        // 检查金钱
        if (UserManager.Instance.Money < cfgLevel.UpgradeCost)
        {
            UIUtil.ShowMsgFormat("MSG_CITY_BUILDING_MONEY_LIMIT");
            return;
        }

        // 检查元宝
        if (UserManager.Instance.Gold < Formula.GetLevelUpQuickCost(Utils.GetSeconds(cfgLevel.UpgradeTime)))
        {
            UIUtil.ShowMsgFormat("MSG_CITY_BUILDING_GOLD_LIMIT");
            return;
        }

        CityManager.Instance.RequestQuickTrainSoldier(_currentSoldierCfgID, true);
        UIManager.Instance.CloseWindow <UICityTrainSelectView>();
        CloseWindow();
    }
示例#3
0
    // 获取补充士兵的消耗
    public int GetAddCost(int soldierID)
    {
        int level = CityManager.Instance.GetSoldierLevel(soldierID);
        SoldierLevelConfig cfgLevup = SoldierLevelConfigLoader.GetConfig(soldierID, level);
        int count = GetTotalProduceCount(soldierID);

        return(cfgLevup.ProduceCost * count);
    }
示例#4
0
    public void SetInfo(int soldierCfgID, BuildingInfo buildingInfo)
    {
        _currentSoldierCfgID = soldierCfgID;
        int level = CityManager.Instance.GetSoldierLevel(soldierCfgID);

        _levelupCfg = SoldierLevelConfigLoader.GetConfig(soldierCfgID, level);
        if (_levelupCfg == null)
        {
            return;
        }

        _soldierIcon.sprite = ResourceManager.Instance.GetSoldierIcon(_currentSoldierCfgID);

        // 兵营界面
        _currentBuildingInfo = buildingInfo as TroopBuildingInfo;
        if (_currentBuildingInfo == null)
        {
            return;
        }

        int           maxCount = _currentBuildingInfo.CfgLevel.MaxStorage;
        SoldierConfig cfg      = SoldierConfigLoader.GetConfig(_currentSoldierCfgID);

        if (cfg == null)
        {
            return;
        }

        _maxCount   = maxCount / cfg.States;
        _count.text = "x" + (maxCount / cfg.States);

        int count = _currentBuildingInfo.GetMaxSoldierCount(_currentSoldierCfgID);

        _costValue = _currentBuildingInfo.GetSwitchCost(_currentSoldierCfgID);
        int timeValue = Utils.GetSeconds(cfg.Producetime * count);

        _cost.text = Mathf.Max(0, _costValue).ToString();

        // 银两不足,显示红色
        if (UserManager.Instance.Money >= _costValue)
        {
            _cost.color = Color.white;
        }
        else
        {
            _cost.color = Color.red;
        }

        _time.text = Utils.GetCountDownString(timeValue);

        // 士兵生产数目
        _count.gameObject.SetActive(true);

        _soldierLevel.text = "Lv" + level;
    }
示例#5
0
    // 获取当前升级的最大时间
    public int GetMaxTrainTime()
    {
        if (TrainSoldierCfgID == 0)
        {
            return(0);
        }

        int level = CityManager.Instance.GetSoldierLevel(TrainSoldierCfgID);
        SoldierLevelConfig cfg = SoldierLevelConfigLoader.GetConfig(TrainSoldierCfgID, level);

        return(Utils.GetSeconds(cfg.UpgradeTime));
    }
示例#6
0
    private void UpdateList()
    {
        List <SoldierConfig> list = new List <SoldierConfig>();

        foreach (var item in SoldierConfigLoader.Data)
        {
            list.Add(item.Value);
        }

        TrainBuildingInfo tbinfo = CityManager.Instance.GetBuildingByType(CityBuildingType.TRAIN) as TrainBuildingInfo;

        if (tbinfo == null)
        {
            return;                 // 尚未解锁校场
        }
        // 设置数据源
        _listView.MaxCount          = SoldierConfigLoader.Data.Count;
        _listView.OnListItemAtIndex = (index) => {
            SoldierConfig cfg   = list[index];
            int           level = CityManager.Instance.GetSoldierLevel(cfg.SoldierId);
            if (level <= 0)
            {
                // 未解锁兵种
                SoldierTrainNotHaveWidget go = _listView.CreateListItemWidget <SoldierTrainNotHaveWidget>(1);
                go.SetInfo(cfg.SoldierId);
                return(go);
            }
            else
            {
                SoldierLevelConfig cfgLevel = SoldierLevelConfigLoader.GetConfig(cfg.SoldierId, level, false);
                if (cfgLevel == null || tbinfo.IsInBuilding() || // 校场正在升级
                    cfgLevel.UpgradeMilitaryLevelDemand > tbinfo.Level || // 不能升级,校场等级不足
                    (tbinfo.IsTrainingSoldier() && tbinfo.TrainSoldierCfgID == cfg.SoldierId))
                {
                    // 不能升级或者正在升级
                    SoldierTrainNotHaveWidget go = _listView.CreateListItemWidget <SoldierTrainNotHaveWidget>(1);
                    go.SetInfo(cfg.SoldierId);
                    return(go);
                }
                else
                {
                    // 已解锁
                    SoldierTrainHaveWidget go = _listView.CreateListItemWidget <SoldierTrainHaveWidget>(0);
                    go.SetInfo(cfg.SoldierId);
                    return(go);
                }
            }
        };

        // 进行刷新
        _listView.Refresh();
    }
    private void SetInfo(BuildingInfo info)
    {
        _currentInfo = info as TroopBuildingInfo;
        if (_currentInfo == null)
        {
            return;
        }

        int           cfgID = _currentInfo.SoldierConfigID;
        SoldierConfig cfg   = SoldierConfigLoader.GetConfig(cfgID);
        int           level = Mathf.Max(CityManager.Instance.GetSoldierLevel(cfgID), 1);

        SoldierLevelConfig cfgLevel = SoldierLevelConfigLoader.GetConfig(cfgID, level);

        _title.text          = cfg.SoldierName + " Lv" + level;
        _soldierImage.sprite = ResourceManager.Instance.GetSoldierImage(cfgID);
        _textDesc.text       = cfg.SoldierDescription;

        _soldierIcon1.sprite = ResourceManager.Instance.GetSoldierIcon(cfgID);
        _soldierIcon2.sprite = ResourceManager.Instance.GetSoldierIcon(cfgID);
        _soldierCount1.text  = _currentInfo.SoldierCount.ToString();

        int addCount = _currentInfo.GetMaxSoldierCount(cfgID) - _currentInfo.SoldierCount;

        if (addCount > 0)
        {
            _soldierCount2.text = addCount.ToString();
            _textCost.text      = (addCount * cfgLevel.ProduceCost).ToString();
            _textTime.text      = Utils.GetCountDownString(addCount * Utils.GetSeconds(_currentInfo.SoldierCfg.Producetime));

            _soldierIcon2.gameObject.SetActive(true);
            _textCost.gameObject.SetActive(true);
            _textTime.gameObject.SetActive(true);
            _text3.gameObject.SetActive(true);
            _imageCostFlag.gameObject.SetActive(true);
            _imageTimeFlag.gameObject.SetActive(true);
            _btnAddSoldier.gameObject.SetActive(true);
        }
        else
        {
            // 兵营满了,不需要补充
            _soldierIcon2.gameObject.SetActive(false);
            _textCost.gameObject.SetActive(false);
            _textTime.gameObject.SetActive(false);
            _text3.gameObject.SetActive(false);
            _imageCostFlag.gameObject.SetActive(false);
            _imageTimeFlag.gameObject.SetActive(false);
            _btnAddSoldier.gameObject.SetActive(false);
        }
    }
示例#8
0
    // 获取更换士兵的消耗
    public int GetSwitchCost(int soldierID)
    {
        int oldMoney = 0;

        if (SoldierConfigID != 0)
        {
            int levelOld = CityManager.Instance.GetSoldierLevel(SoldierConfigID);
            SoldierLevelConfig cfgLevupOld = SoldierLevelConfigLoader.GetConfig(SoldierConfigID, levelOld);
            oldMoney = cfgLevupOld.ProduceCost * SoldierCount;
        }
        int level = CityManager.Instance.GetSoldierLevel(soldierID);
        SoldierLevelConfig cfgLevup = SoldierLevelConfigLoader.GetConfig(soldierID, level);
        int count = GetMaxSoldierCount(soldierID);

        return(cfgLevup.ProduceCost * count - oldMoney);
    }
示例#9
0
    // 获取战斗力
    public int GetFightScore()
    {
        if (SoldierConfigID == 0)
        {
            return(0);
        }

        int maxCount           = GetMaxSoldierCount(SoldierConfigID);
        int level              = CityManager.Instance.GetSoldierLevel(SoldierConfigID);
        SoldierLevelConfig cfg = SoldierLevelConfigLoader.GetConfig(SoldierConfigID, level);

        if (cfg == null)
        {
            return(0);
        }

        return(maxCount * Mathf.FloorToInt(cfg.SoldierAttack + 0.2f * cfg.SoldierHp));
    }
    private void SetInfo(int soldierCfgID)
    {
        _currentSoldierCfgID = soldierCfgID;
        int level = CityManager.Instance.GetSoldierLevel(soldierCfgID);

        if (level <= 0)
        {
            return;
        }

        SoldierConfig cfg = SoldierConfigLoader.GetConfig(_currentSoldierCfgID);

        _title.text = string.Format(Str.Get("UI_CITY_BUILDING_LEVELUP"), cfg.SoldierName, level + 1);

        SoldierLevelConfig cfgLevel     = SoldierLevelConfigLoader.GetConfig(_currentSoldierCfgID, level);
        SoldierLevelConfig cfgNextLevel = SoldierLevelConfigLoader.GetConfig(_currentSoldierCfgID, level + 1);

        _hpValue.text      = cfgLevel.SoldierHp.ToString();
        _trainCost.text    = cfgLevel.ProduceCost.ToString();
        _attackValue.text  = cfgLevel.SoldierAttack.ToString();
        _imgSoldier.sprite = ResourceManager.Instance.GetSoldierImage(soldierCfgID);

        if (cfgNextLevel != null)
        {
            // 增加变化的数值
            _hpAddValue.gameObject.SetActive(true);
            _attackAddValue.gameObject.SetActive(true);
            _trainCostAdd.gameObject.SetActive(true);
            _hpAddValue.text     = string.Format("(+{0})", cfgNextLevel.SoldierHp - cfgLevel.SoldierHp);
            _attackAddValue.text = string.Format("(+{0})", cfgNextLevel.SoldierAttack - cfgLevel.SoldierAttack);
            _trainCostAdd.text   = string.Format("(+{0})", cfgNextLevel.ProduceCost - cfgLevel.ProduceCost);
        }
        else
        {
            _hpAddValue.gameObject.SetActive(false);
            _attackAddValue.gameObject.SetActive(false);
            _trainCostAdd.gameObject.SetActive(false);
        }

        _uplevTime.text    = Utils.GetCountDownString(Utils.GetSeconds(cfgLevel.UpgradeTime));
        _uplevNowCost.text = Formula.GetLevelUpQuickCost(Utils.GetSeconds(cfgLevel.UpgradeTime)).ToString();
        _uplevCost.text    = cfgLevel.UpgradeCost.ToString();
    }
    public void SetInfo(int soldierCfgID)
    {
        _currentSoldierCfgID = soldierCfgID;
        int level = CityManager.Instance.GetSoldierLevel(soldierCfgID);

        _soldierIcon.sprite = ResourceManager.Instance.GetSoldierIcon(soldierCfgID);

        _uplevelLimit.text = "";

        if (level == 0)
        {
            // 尚未获得该兵种
            SoldierConfig cfg = SoldierConfigLoader.GetConfig(soldierCfgID);
            if (cfg != null)
            {
                // 提示解锁 MSG_CITY_TRAIN_UNLOCK={0}级校场解锁
                _textLimit         = string.Format(Str.Get("MSG_CITY_TRAIN_UNLOCK"), cfg.UnlockMilitaryDemand);
                _uplevelLimit.text = _textLimit;
            }
        }
        else
        {
            TrainBuildingInfo  tpinfo = CityManager.Instance.GetBuildingByType(CityBuildingType.TRAIN) as TrainBuildingInfo;
            SoldierLevelConfig cfg    = SoldierLevelConfigLoader.GetConfig(soldierCfgID, level);
            if (cfg != null && tpinfo != null)
            {
                if (tpinfo.IsTrainingSoldier() && tpinfo.TrainSoldierCfgID == soldierCfgID)
                {
                    // 提示正在升级
                    _textLimit         = Str.Get("UI_CITY_BUILDING_TRAIN_NOW");
                    _uplevelLimit.text = _textLimit;
                }
                else
                {
                    // 提示升级 MSG_CITY_TRAIN_LIMIT=需要{0}级校场
                    _textLimit         = string.Format(Str.Get("MSG_CITY_TRAIN_LIMIT"), cfg.UpgradeMilitaryLevelDemand);
                    _uplevelLimit.text = _textLimit;
                }
            }
        }
    }
示例#12
0
    public override void OnBindData(params object[] param)
    {
        int soldierCfgID = (int)param[0];
        int level        = (int)param[1];

        if (level <= 0)
        {
            return;
        }

        SoldierConfig      cfg      = SoldierConfigLoader.GetConfig(soldierCfgID);
        SoldierLevelConfig cfgLevel = SoldierLevelConfigLoader.GetConfig(soldierCfgID, level);

        _title.text        = cfg.SoldierName;
        _txtLevel.text     = Str.Format("UI_LEVEL", level);
        _hp.text           = cfgLevel.SoldierHp.ToString();
        _space.text        = cfg.States.ToString();
        _trainCost.text    = cfgLevel.ProduceCost.ToString();
        _trainTime.text    = Utils.GetCountDownString(Utils.GetSeconds(cfg.Producetime));
        _imgSoldier.sprite = ResourceManager.Instance.GetSoldierImage(soldierCfgID);
        _txtAttack.text    = cfg.Attack.ToString();
    }
    // 升级
    public void OnClickLevup()
    {
        int level = CityManager.Instance.GetSoldierLevel(_currentSoldierCfgID);

        if (level <= 0)
        {
            return;
        }

        SoldierConfig      cfg      = SoldierConfigLoader.GetConfig(_currentSoldierCfgID);
        SoldierLevelConfig cfgLevel = SoldierLevelConfigLoader.GetConfig(_currentSoldierCfgID, level);

        // 检查金钱
        if (UserManager.Instance.Money < cfgLevel.UpgradeCost)
        {
            UIUtil.ShowMsgFormat("MSG_CITY_BUILDING_MONEY_LIMIT");
            return;
        }

        CityManager.Instance.RequestTrainSoldier(_currentSoldierCfgID, cfgLevel.UpgradeCost);

        UIManager.Instance.CloseWindow <UICityTrainSelectView>();
        CloseWindow();
    }
示例#14
0
    public void SetInfo(int soldierCfgID)
    {
        _currentSoldierCfgID = soldierCfgID;
        int level = CityManager.Instance.GetSoldierLevel(soldierCfgID);

        _levelupCfg = SoldierLevelConfigLoader.GetConfig(soldierCfgID, level);

        _soldierIcon.sprite = ResourceManager.Instance.GetSoldierIcon(_currentSoldierCfgID);

        _cost.text = _levelupCfg.UpgradeCost.ToString();

        // 银两不足,显示红色
        if (UserManager.Instance.Money >= _levelupCfg.UpgradeCost)
        {
            _cost.color = Color.white;
        }
        else
        {
            _cost.color = Color.red;
        }

        _time.text         = Utils.GetCountDownString(Utils.GetSeconds(_levelupCfg.UpgradeTime));
        _soldierLevel.text = "Lv" + level;
    }