Пример #1
0
    public static int CalcUnitPower(int unitId, int unitCount, int heroId)
    {
        Model_Unit modelUnit = InstancePlayer.instance.model_User.unlockUnits [unitId];
        DataUnit   dataUnit  = DataManager.instance.dataUnitsGroup.GetUnit(unitId);

        DataUnitPart[] dataUnitParts = modelUnit.GetDataParts();

        int pHero = 0;

        if (heroId > 0)
        {
            SlgPB.Hero modelHero = InstancePlayer.instance.model_User.model_heroGroup.GetHero(heroId);
            DataHero   dataHero  = DataManager.instance.dataHeroGroup.GetHero(heroId, modelHero.exp, modelHero.stage);
            pHero = dataHero.basicParam.CalcPower();
        }

        int pUnit  = dataUnit.battleParam.CalcPower();
        int pTotal = pHero + pUnit * unitCount;

        foreach (DataUnitPart dataUnitPart in dataUnitParts)
        {
            if (dataUnitPart != null)
            {
                int pPart = dataUnitPart.battleParam.CalcPower();
                pTotal += pPart;
            }
        }

        return(pTotal);
    }
Пример #2
0
    virtual public void Init()
    {
        complexBattleParam = new DataUnit.BasicBattleParam();
        complexBattleParam.Copy(_dataUnit.battleParam);

        if (isPlayerUnit)
        {
            if (InstancePlayer.instance.model_User.isLogin)
            {
                Model_Unit     modelUnit = InstancePlayer.instance.model_User.unlockUnits [unitId];
                DataUnitPart[] dataParts = modelUnit.GetDataParts();
                foreach (DataUnitPart part in dataParts)
                {
                    complexBattleParam.Add(part.battleParam);
                }
            }

            if (heroId > 0)
            {
                SlgPB.Hero hero     = InstancePlayer.instance.model_User.model_heroGroup.GetHero(heroId);
                DataHero   dataHero = DataManager.instance.dataHeroGroup.GetHero(heroId, hero.exp, hero.stage);
                complexBattleParam.Add(dataHero.basicParam);
            }
        }

        complexBattleParam.damage *= powerScale;
        complexBattleParam.ammo   *= powerScale;
        complexBattleParam.hp     *= unitCount;
        currentHp = complexBattleParam.hp;
    }
Пример #3
0
    //计算战斗损耗
    void BattleDamage()
    {
        int damageCount = 0;

        if (_tankRepairItemDic != null)
        {
            _repairUnits = InstancePlayer.instance.model_User.unlockUnits;
            foreach (KeyValuePair <int, Model_Unit> kv in _repairUnits)
            {
                Model_Unit model_Unit = kv.Value;
                int        damage     = model_Unit.onDamaged + model_Unit.onRepair;
                damageCount = damage + damageCount;
            }
            _TankDamage_ValueLabel.text = damageCount.ToString();
            if (damageCount <= 0)
            {
                _immediatelyRepair_btn.isEnabled = false;
                _Repair_btn.isEnabled            = false;
            }
            else
            {
                _immediatelyRepair_btn.isEnabled = true;
                _Repair_btn.isEnabled            = true;
            }
        }
    }
Пример #4
0
    void ImmediatelyRepairUnit()     // 立即完成维修
    {
        UIHelper.LoadingPanelIsOpen(true);
        RepairUnitRequest request = new RepairUnitRequest();

        request.api = new Model_ApiRequest().api;


        if (_tankRepairItemDic != null)
        {
            foreach (KeyValuePair <int, TankRepairItem> kv in _tankRepairItemDic)
            {
                TankRepairItem tankItem  = kv.Value;
                Model_Unit     modelUnit = tankItem.GetCurrentModelUnit();
                int            tankNum   = tankItem.GetCurrentRepairTankNum();
                if (tankNum != null && tankNum > 0)
                {
                    SlgPB.Unit unit = new SlgPB.Unit();
                    unit.unitId = modelUnit.unitId;
                    unit.num    = tankItem.GetCurrentRepairTankNum();
                    request.units.Add(unit);
                }
            }
        }
        request.buyCd = 1;
        (new PBConnect_repairUnit()).Send(request, OnImmediatelyRepairUnit);
    }
    private static void OnUpgradeUnitPart(bool success, System.Object content)
    {
        if (success)
        {
            if (--_upgradeTimesLeft > 0)
            {
                UpgradeUnitPart();
            }
        }
        else
        {
        }

        Model_Unit unit = InstancePlayer.instance.model_User.unlockUnits [_upgradeUnitId];

        _upgradedLevels = unit.partLevels[_upgradePartIndex] - _originalPartLevel;

        PBConnect_upgradeUnitPart.DelegateConnectCallback cb = _upgradeCallback;
        if (_upgradeTimesLeft <= 0)
        {
            _upgradeCallback = null;
        }

        cb(success, content);
    }
Пример #6
0
    public override void Init()
    {
        complexBattleParam = new DataUnit.BasicBattleParam();
        complexBattleParam.Copy(dataUnit.battleParam);

        Model_Unit modelUnit = new Model_Unit();

        modelUnit.Parse(pbUnit);
        DataUnitPart[] dataParts = modelUnit.GetDataParts();
        foreach (DataUnitPart part in dataParts)
        {
            complexBattleParam.Add(part.battleParam);
        }

        if (heroId > 0)
        {
            DataHero dataHero = DataManager.instance.dataHeroGroup.GetHero(heroId, pbHero.exp, pbHero.stage);
            complexBattleParam.Add(dataHero.basicParam);
        }

        complexBattleParam.damage *= powerScale;
        complexBattleParam.ammo   *= powerScale;
        complexBattleParam.hp     *= unitCount;
        currentHp = complexBattleParam.hp;
    }
    override protected void DisposeContent(CommonResponse content)
    {
        Model_Unit unit = InstancePlayer.instance.model_User.unlockUnits [_request.unitId];

        unit.partLevels [_request.partIndex]++;

        InstancePlayer.instance.model_User.UpdateUserBasic(content.response.user);
    }
Пример #8
0
 public void Init(Model_Unit model_Unit)
 {
     if (model_Unit != null)
     {
         _model_Unit = model_Unit;
         Trace.trace("model_Unit" + model_Unit.unitId, Trace.CHANNEL.UI);
     }
 }
Пример #9
0
 void OnProduceTimer(Model_Unit modelUnit)
 {
     UIHelper.LoadingPanelIsOpen(true);
     SlgPB.ProcessUnitRequest request = new SlgPB.ProcessUnitRequest();
     request.api    = new Model_ApiRequest().api;
     request.unitId = modelUnit.unitId;
     request.num    = modelUnit.onProduce;
     (new PBConnect_FinishUnit()).Send(request, OnFinishProduce);
 }
Пример #10
0
    public void ReqestTrainTank(Notification notification)
    {
        Model_Unit model_Unit = notification._data as Model_Unit;

        if (model_Unit != null && model_Unit.unitId == _dataUnit.id)
        {
            AddUnit();
        }
    }
Пример #11
0
    // 战斗力
    public int CalcPower()
    {
        int power = 0;

        if (!isEmpty)
        {
            power = Model_Unit.CalcUnitPower(unitId, num, heroId);
        }

        return(power);
    }
Пример #12
0
 public void RequestRepairTank(Notification notification)
 {
     if (notification._data == "RequestRepairTank")
     {
         RepairUnit();
     }
     else
     {
         Model_Unit unit = notification._data as Model_Unit;
         _tankRepairItemDic.Remove(unit.unitId);
         _repairGrid.Reposition();
     }
 }
Пример #13
0
    public void UpdateUI()
    {
        if (_dataUnit != null)
        {
            units = InstancePlayer.instance.model_User.unlockUnits;
            if (units != null && units.ContainsKey(_dataUnit.id))
            {
                _model_Unit = units[_dataUnit.id];
            }

            _TankNameLabel.color = _unitData.nameColor;
//			_iconBg.spriteName = _unitData.iconBgName;
            _TankIcon.SetUnitBigTexture(_dataUnit.id);
            _TankNameLabel.text = _dataUnit.name;

            _FightingValueLabel.text         = _dataUnit.battleParam.hp.ToString();
            _APValueLabel.text               = _dataUnit.battleParam.damage.ToString();
            _HPValueLabel.text               = _dataUnit.battleParam.hp.ToString();
            _DPValueLabel.text               = _dataUnit.battleParam.ammo.ToString();
            _HitRateValueLabel.text          = _dataUnit.battleParam.hitRate.ToString();
            _SpeedValueLabel.text            = _dataUnit.speed.ToString();
            _LengthValueLabel.text           = _dataUnit.length.ToString();
            _DoubleDamageRateValueLabel.text = _dataUnit.battleParam.doubleDamageRate.ToString();

            if (_model_Unit != null)
            {
                _CurrentTankValueLabel.text = _model_Unit.num.ToString();
            }
            else
            {
                _CurrentTankValueLabel.text = "0";
            }
            if (_unitData.isUnLock)
            {
                _strongBtn.gameObject.SetActive(true);
                _RecyclingBtn.gameObject.SetActive(true);
                _productBtn.gameObject.SetActive(true);
            }
            else
            {
                _strongBtn.gameObject.SetActive(false);
                _RecyclingBtn.gameObject.SetActive(false);
                _productBtn.gameObject.SetActive(false);
            }
        }
    }
Пример #14
0
    // 创建本地测试数据
    private Dictionary <int, Model_Unit> CreateLocalTestUnits()
    {
        Dictionary <int, Model_Unit> model_Units = InstancePlayer.instance.model_User.unlockUnits;

        DataUnit[] allDataUnits = DataManager.instance.dataUnitsGroup.GetAllUnits();
        for (int i = 0; i < allDataUnits.Length; ++i)
        {
            DataUnit   dataUnit   = allDataUnits[i];
            Model_Unit model_Unit = new Model_Unit();

            model_Unit.unitId = dataUnit.id;
            model_Unit.num    = (int)RandomHelper.Range(50, 200);

            model_Units.Add(model_Unit.unitId, model_Unit);
        }

        return(model_Units);
    }
Пример #15
0
    public override void Open(params object[] parameters)
    {
        base.Open(parameters);
        _resArr           = parameters[0] as int[];
        _resourcesBuyType = (ResourcesBuyType)parameters[1];
        switch (_resourcesBuyType)
        {
        case ResourcesBuyType.TrainTankType:
            _model_unit = parameters[2] as Model_Unit;
            break;

        case ResourcesBuyType.StrengThenPartType:
            _StrengthenTimes = (int)parameters[2];
            break;
        }
        InitUI();
        UpdateUI();
    }
Пример #16
0
    public void Init(CountdownData.Countdown data)
    {
        _countdown = data;
        _type      = _countdown.dataType;
//		Trace.trace(" data " + data.dataType,Trace.CHANNEL.UI);
        switch (_type)
        {
        case CountdownData.CountdownType.BUILDINGUP:
            _modelBuilding = _countdown.data as Model_Building;
            break;

        case CountdownData.CountdownType.PRODUCTION:
            _modelUnit = _countdown.data as Model_Unit;
            break;

        case CountdownData.CountdownType.REPAIR:
            _modelRepairUnit = _countdown.data as Model_RepairUnit;
            break;
        }
    }
Пример #17
0
    void UpdateItem()
    {
        _repairUnits = InstancePlayer.instance.model_User.unlockUnits;
        if (_needRepairUnitsList == null)
        {
            _needRepairUnitsList = new List <Model_Unit>();
        }
        else
        {
            _needRepairUnitsList.Clear();
        }
        foreach (KeyValuePair <int, Model_Unit> kv in _repairUnits)
        {
            Model_Unit model_Unit = kv.Value;
            if (model_Unit.onDamaged > 0 || model_Unit.onRepair > 0)
            {
                _needRepairUnitsList.Add(model_Unit);
                Trace.trace("_needRepairUnitsList  " + model_Unit.unitId, Trace.CHANNEL.UI);
            }
        }

//		SetWrapContent(_repairGrid,_repairScroll,_needRepairUnitsList,OnUpdateItemMain);
    }
Пример #18
0
    // unit
    // ============================================================

    public void UpdateUnit(SlgPB.Unit slgUnit)
    {
        Model_Unit model_Unit;
        int        unitId = slgUnit.unitId;

        unlockUnits.TryGetValue(unitId, out model_Unit);
        if (model_Unit == null)
        {
            model_Unit = new Model_Unit();
            unlockUnits.Add(unitId, model_Unit);
        }

        model_Unit.Parse(slgUnit);

        // 添加已解锁unitId
        if (!unlockUnitsId.Contains(unitId))
        {
            unlockUnitsId.Add(unitId);
        }

        //服务器下发Unit 数量
        //DataUnit dataUnit = DataManager.instance.dataUnitsGroup.GetUnit (slgUnit.unitId);
        //Trace.trace ("id," + slgUnit.unitId + ",name," + dataUnit.name + ",num," + slgUnit.num, Trace.CHANNEL.UI);
    }
    public static RESULT CheckUpgrade(int unitId, int partIndex)
    {
        if (!InstancePlayer.instance.model_User.unlockUnits.ContainsKey(unitId))
        {
            return(RESULT.UNIT_LOCK);
        }

        Model_Unit modelUnit = InstancePlayer.instance.model_User.unlockUnits [unitId];
        DataUnit   dataUnit  = DataManager.instance.dataUnitsGroup.GetUnit(unitId);

        int partId        = dataUnit.partsId [partIndex];
        int partLevel     = modelUnit.partLevels[partIndex];
        int mainPartLevel = modelUnit.partLevels[0];

        DataUnitPart dataUnitPart = DataManager.instance.dataUnitPartGroup.GetPart(partId, partLevel);


        int maxLevel = DataManager.instance.dataUnitPartGroup.GetPartMaxLevel(partId);

        if (partLevel >= maxLevel)
        {
            return(RESULT.MAX_LEVEL);
        }

        if (partIndex == 0)
        {
            int playerLevel = InstancePlayer.instance.model_User.honorLevel;
            if (playerLevel < dataUnitPart.mainLevel)
            {
                return(RESULT.LACK_PLAYER_LEVEL);
            }
        }
        else
        {
            if (mainPartLevel < dataUnitPart.mainLevel)
            {
                return(RESULT.LACK_MAIN_LEVEL);
            }
        }

        int itemCount1 = InstancePlayer.instance.model_User.model_itemGroup.GetItemCount(dataUnitPart.itemCost1.id);

        if (itemCount1 < dataUnitPart.itemCost1.count)
        {
            return(RESULT.LACK_ITEM1);
        }

        int itemCount2 = InstancePlayer.instance.model_User.model_itemGroup.GetItemCount(dataUnitPart.itemCost2.id);

        if (itemCount2 < dataUnitPart.itemCost2.count)
        {
            return(RESULT.LACK_ITEM2);
        }


        bool hasEnoughResource = Model_Helper.HasEnoughResource(dataUnitPart.cost);

        if (!hasEnoughResource)
        {
            return(RESULT.LACK_RESOURCE);
        }


        return(RESULT.OK);
    }
Пример #20
0
 public void Init(Model_Unit model_Unit)
 {
     _model_Unit = model_Unit;
 }