Exemplo n.º 1
0
    private void OnAddSoldier()
    {
        if (bShow == false)
        {
            return;
        }
        UnitStar    curStar = MogoWorld.m_dataMapManager.GetUnitStarById(MogoWorld.m_dataMapManager.CurStarID);
        UnitSoldier soldier;
        MogoUIBtn   btn;
        UILabel     numTxt;

        foreach (SoldierData data in SoldierData.dataMap.Values)
        {
            soldier = curStar.GetSoldierById(MogoWorld.thePlayer.ID, data.id);
            if (soldier != null)
            {
                int num = soldier.GetSoldierNum();
                if (num > 0)
                {
                    btn         = GetSoldierBtn(data.id);
                    numTxt      = btn.transform.FindChild("NumText").gameObject.GetComponent <UILabel>();
                    numTxt.text = ((int)(num * (1 - StarInfoController.getInstance().soldierNumPercent))).ToString();
                }
            }
        }
    }
Exemplo n.º 2
0
    public void SetStatus()
    {
        UnitStar    star = MogoWorld.m_dataMapManager.GetUnitStarById(MogoWorld.m_dataMapManager.CurStarID);
        UnitSoldier soldier;
        UILabel     numTxt;
        MogoUIBtn   soldierBtn;

        foreach (SoldierData data in SoldierData.dataMap.Values)
        {
            soldier    = star.GetSoldierById(MogoWorld.thePlayer.ID, data.id);
            soldierBtn = GetSoldierBtn(data.id);
            numTxt     = soldierBtn.transform.FindChild("NumText").gameObject.GetComponent <UILabel>();
            if (soldier != null)//当前有这种士兵
            {
                soldierBtn.IsEnabled = true;
                SetSelectSign(soldierBtn, true);
                StarInfoController.getInstance().FightSoldierIdList.Add(data.id);
                numTxt.text = ((int)(soldier.GetSoldierNum() * (1 - StarInfoController.getInstance().soldierNumPercent))).ToString();
            }
            else
            {
                soldierBtn.IsEnabled = false;
                SetSelectSign(soldierBtn, false);
                numTxt.text = "";
            }
        }
    }
Exemplo n.º 3
0
    /// <summary>
    /// 对星球增加士兵
    /// </summary>
    /// <param name="_starID"></param>
    /// <param name="_buildingTime"></param>
    public void addSoldierToStar(uint _playerId, int _starID, int _soldierType, int _Energy, int _isSelfProduce, bool _isMoveAnimation = true)
    {
        UnitStar    _star    = GetUnitStarById(_starID);
        UnitSoldier _Soldier = _star.GetSoldierById(_playerId, _soldierType);

        if (_star.BelongTo != null && _star.BelongTo.ID == MogoWorld.thePlayer.ID && _starID == CurStarID)
        {
            EventDispatcher.TriggerEvent(Events.StarUIEvent.AddSoldierEvent);//发送我方当前星球添加兵力的消息
        }
        if (_Soldier != null)
        {
            _Soldier.AddSoldier(_Energy, _isSelfProduce);
            _star.CulAllSoldierAttack();

            if (_isMoveAnimation && (_Soldier.GetGatherSoldierNum() > 0))
            {
                m_starDataManager.StarTogether(_star);
            }

            m_starDataManager.StarOrEndStartFighting(_star);
            return;
        }
        _Soldier = GetUnitSoldierFromPool();
        SoldierIndex++;
        _Soldier.UnitId          = SoldierIndex;
        _Soldier.BelongTo        = MogoWorld.GetEntityById(_playerId);
        _Soldier.BaseSoldierData = SoldierData.dataMap.Get(_soldierType);
        Vector2 _pos = _star.GetSoliderPositionById(_soldierType);

        //LoggerHelper.Error("_pos.x:" + _pos.x + "_pos.y:" + _pos.y);
        _Soldier.PositionX  = _pos.x;
        _Soldier.PositionY  = _pos.y;
        _Soldier.UnitParent = SoldierLyaer;
        _Soldier.AddSoldier(_Energy, _isSelfProduce);
        _Soldier.BelongToStar    = _star;
        _Soldier.IsMoveAnimation = _isMoveAnimation;
        _Soldier.InitUnit();
        _Soldier.SetGroup(GetGroupByPalyerId(_playerId));//设置阵营信息

        _star.AddSoldier(_playerId, _soldierType, _Soldier);
        _star.CulAllSoldierAttack();

        m_starDataManager.StarOrEndStartFighting(_star);
        if (_isMoveAnimation && (_Soldier.GetGatherSoldierNum() > 0))
        {
            m_starDataManager.StarTogether(_star);
            //_Soldier.CallBack = SoldierCallback;
        }
        IsAttackStar(_star);
    }
Exemplo n.º 4
0
    public void SetAggregateSoldier()
    {
        UnitStar    star = MogoWorld.m_dataMapManager.GetUnitStarById(MogoWorld.m_dataMapManager.CurStarID);
        UnitSoldier soldier;

        StarInfoController.getInstance().FightSoldierIdList.Clear();
        foreach (SoldierData data in SoldierData.dataMap.Values)
        {
            soldier = star.GetSoldierById(MogoWorld.thePlayer.ID, data.id);
            if (soldier != null)//当前有这种士兵
            {
                StarInfoController.getInstance().FightSoldierIdList.Add(data.id);
            }
        }
    }
Exemplo n.º 5
0
    /// <summary>
    /// 获取星球可出战士兵id
    /// </summary>
    /// <param name="star"></param>
    /// <returns></returns>
    public List <int> GetStarFightSoliderIdList(UnitStar star)
    {
        List <int>  fightSoldierIdList = new List <int>();
        UnitSoldier soldier;

        foreach (SoldierData data in SoldierData.dataMap.Values)
        {
            soldier = star.GetSoldierById(MogoWorld.thePlayer.ID, data.id);
            if (soldier != null)//当前有这种士兵
            {
                fightSoldierIdList.Add(data.id);
            }
        }
        return(fightSoldierIdList);
    }
Exemplo n.º 6
0
    /// <param name="playerId">玩家id</param>
    /// <param name="startStarId">出发星球</param>
    /// <param name="endStarId">目标星球</param>
    /// <param name="isSelfProduce">1表示只出战自产兵,0表示全部出战</param>
    /// <param name="soldierTypeList">出战兵种id列表</param>
    /// <param name="percent">出战兵种数量百分比,0表示只出战一个</param>
    public void SendSoldier(LuaTable lt)
    {
        uint        _playerId           = Convert.ToUInt32(lt["0"]);
        UnitStar    _StartStar          = GetUnitStarById(Convert.ToInt32(lt["1"]));
        UnitStar    _endStar            = GetUnitStarById(Convert.ToInt32(lt["2"]));
        int         isSelfProduce       = Convert.ToInt32(lt["3"]);
        LuaTable    soldierTypeluatable = lt["4"] as LuaTable;
        float       percent             = (float)Convert.ToDouble(lt["5"]);
        int         _soldierType        = 0;
        UnitSoldier _soldier;

        MapUtil.RoutePlanResult _result = MapUtil.Plan(_StartStar, _endStar);
        for (int i = 0; i < soldierTypeluatable.Count; i++)
        {
            _soldierType = Convert.ToInt32(soldierTypeluatable[i.ToString()]);

            _soldier = _StartStar.GetSoldierById(_playerId, _soldierType);

            if (_soldier == null)
            {
                continue;
            }

            if (isSelfProduce == 1 && _soldier.SelfProduceEnergy <= 0)
            {
                continue;
            }

            _soldier = _StartStar.RemoveSoldier(_playerId, _soldierType);

            int _moveOrdinaryEnergy;
            int _OrdinaryEnergy = _soldier.CurEnergy - _soldier.SelfProduceEnergy;
            if (isSelfProduce == 0)//移动全部士兵
            {
                _moveOrdinaryEnergy = (int)(_OrdinaryEnergy * percent);
            }
            else
            {//移动自产士兵
                _moveOrdinaryEnergy = 0;
            }
            int _moveSelfProduceEnergy = (int)(_soldier.SelfProduceEnergy * percent);

            /*if (_soldier.BaseSoldierData.id == 1)
             * {
             *  LoggerHelper.Error("_moveSelfProduceEnergy:" + _moveSelfProduceEnergy + " percent:" + percent + " _soldier.SelfProduceEnergy:" + _soldier.SelfProduceEnergy);
             * }*/
            int _leftOrinaryEnergy     = _OrdinaryEnergy - _moveOrdinaryEnergy;
            int _leftSelfProduceEnergy = _soldier.SelfProduceEnergy - _moveSelfProduceEnergy;
            _soldier.RemoveSoldier(_leftOrinaryEnergy, false);
            _soldier.RemoveSoldier(_leftSelfProduceEnergy);
            if (_leftOrinaryEnergy > 0)
            {
                addSoldierToStar(_playerId, _StartStar.UnitId, _soldierType, _leftOrinaryEnergy, 0, false);
            }
            if (_leftSelfProduceEnergy > 0)
            {
                addSoldierToStar(_playerId, _StartStar.UnitId, _soldierType, _leftSelfProduceEnergy, 1, false);
            }

            if (_soldier != null)
            {
                _soldier.MovePath = _result;
                MoveSoldierList.Add(_soldier);
            }
        }
    }
Exemplo n.º 7
0
    /// <summary>
    /// 攻击士兵
    /// </summary>
    /// <param name="_starID"></param>
    /// <param name="_buildingTime"></param>
    public void AttackSoldier(uint _playerId, int _starID, int _soldierType, int _Energy, int _type)
    {
        /*LoggerHelper.Error("_playerId:" + _playerId + "_starID:" + _starID +
         *  "_soldierType:" + _soldierType + "_Energy:" + _Energy );*/
        if (_Energy < 0)
        {
            _Energy = 0;
        }
        UnitStar    _star    = GetUnitStarById(_starID);
        UnitSoldier _Soldier = _star.GetSoldierById(_playerId, _soldierType);

        if (_Soldier != null)
        {
            _Soldier.RemoveSoldier(_Energy);
            //LoggerHelper.Error(_Soldier.BaseSoldierData.energy + " CurEnergy:" + _Soldier.CurEnergy);
            if (_star.IsExplore && (_Energy >= _Soldier.BaseSoldierData.energy))
            {
                ShowFloatText(string.Concat(-(_Energy / _Soldier.BaseSoldierData.energy)), _Soldier.PositionX, _Soldier.PositionY, _Soldier.BaseSoldierData.float_color);
            }
            //LoggerHelper.Error("_playerId:" + _playerId + " _Energy" + (_Energy / _Soldier.BaseSoldierData.energy));
        }
        else
        {
            //LoggerHelper.Debug("没有该类士兵");
            return;
        }

        switch (_type)
        { //0建筑 1hit 2侵入
        case 0:
            _Soldier.OnIntrusion(_Energy);
            break;

        case 1:
            if (_Soldier.CurEnergy <= 0)
            {
                _Soldier.OnDead();
                _star.showAttackSoldierEffect(_playerId, _Soldier.UnitGO.transform.localPosition);
            }
            else
            {
                _Soldier.OnHit();
                _star.showAttackSoldierEffect(_playerId, _Soldier.UnitGO.transform.localPosition);
            }

            break;

        case 2:
            _Soldier.OnIntrusion(_Energy);
            break;
        }
        //type 类型士兵全军覆没
        if (_Soldier.CurEnergy <= 0)
        {
            _star.RemoveSoldier(_playerId, _soldierType);
            _Soldier.ClearUnit();

            IsAttackStar(_star);
        }
        _star.CulAllSoldierAttack();

        m_starDataManager.StarOrEndStartFighting(_star);
    }