Ejemplo n.º 1
0
    void SetUnitGroup()     //设置阵型
    {
        InstancePlayer.instance.model_User.model_Formation.SetSelectTeamId(1);

        //
        SetUnitGroupRequest request = new SetUnitGroupRequest();

        Model_Formation model_Formation = InstancePlayer.instance.model_User.model_Formation;

        Model_Unit model_Unit;

        InstancePlayer.instance.model_User.unlockUnits.TryGetValue(1, out model_Unit);
        Model_UnitGroup model_UnitGroup = new Model_UnitGroup();

        if (model_Unit != null)
        {
            model_UnitGroup.unitId = model_Unit.unitId;
            model_UnitGroup.num    = model_Unit.num;
            model_UnitGroup.teamId = 1;
            model_UnitGroup.posId  = 1;
        }
        model_Formation.Add(model_UnitGroup);

        model_Formation.CreateUnitGroupsResquest(request.unitGroup);

        request.api = new Model_ApiRequest().api;
        (new PBConnect_setUnitGroup()).Send(request, OnSetUnitGroup);
    }
Ejemplo n.º 2
0
    public void Exchange(Model_UnitGroup unitGroup)
    {
        if (this.isEmpty)
        {
            num     = unitGroup.num;
            unitId  = unitGroup.unitId;
            isEmpty = false;

            UpdateUnitNum(this);

            unitGroup.Empty();
        }
        else if (unitGroup.isEmpty)
        {
            unitGroup.num     = num;
            unitGroup.unitId  = unitId;
            unitGroup.isEmpty = false;

            UpdateUnitNum(unitGroup);

            Empty();
        }
        else
        {
            MathHelper.Swap(ref unitId, ref unitGroup.unitId);
            MathHelper.Swap(ref num, ref unitGroup.num);

            UpdateUnitNum(this);
            UpdateUnitNum(unitGroup);
        }
    }
Ejemplo n.º 3
0
    //----------------------- 初始化Slot

    public void InitSlotUI()
    {
        for (int i = 0; i < TEAM_COUNT; ++i)
        {
            Transform slots = UIHelper.FindChildInObject(gameObject, "Formation_Team_" + i).transform;
            for (int j = 0; j < SLOT_COUNT; ++j)
            {
                Model_UnitGroup model_UnitGroup = model_Formation.GetUnitGroup(i + 1, j + 1);

                Transform       slotTransUnit = slots.Find("tank_slot_" + j);
                FormationSlotUI slotUIUnit    = slotTransUnit.GetComponent <FormationSlotUI>();
                slotUIUnit.i = i;
                slotUIUnit.j = j;
                slotUIManager.SetUnitSlotUI(i, j, slotUIUnit);
                slotUIUnit.UpdateUI(model_UnitGroup, this);

                Transform  slotTransHero = slots.Find("hero_slot_" + j);
                UIHeroSlot slotUIHero    = slotTransHero.GetComponent <UIHeroSlot>();
                slotUIHero.i = i;
                slotUIHero.j = j;
                slotUIManager.SetHeroSlotUI(i, j, slotUIHero);
                slotUIHero.UpdateUI(model_UnitGroup, this._heroPanel);
            }
        }
    }
Ejemplo n.º 4
0
    // 从scrollView中 上阵 slot中包含item
    public Model_Formation.RESULT EnterExchangeBattleFormation(Model_UnitGroup model_UnitGroup)
    {
        Model_Formation.RESULT reslut = Model_Formation.RESULT.SUCCESS;

        FormationScrollViewItemUI scViewItem = this.GetComponent <FormationScrollViewItemUI>();
        int unitId      = scViewItem.unitId;
        int battleCount = 0;

        Model_Unit model_Unit;

        InstancePlayer.instance.model_User.unlockUnits.TryGetValue(unitId,out model_Unit);
        if (model_Unit != null)
        {
            battleCount = Mathf.Min(model_Unit.num,model_UnitGroup.maxNum);
        }

        Model_UnitGroup new_UnitGroup = new Model_UnitGroup();

        new_UnitGroup.unitId = unitId;
        new_UnitGroup.num    = battleCount;
        new_UnitGroup.teamId = model_UnitGroup.teamId;
        new_UnitGroup.posId  = model_UnitGroup.posId;

        reslut = battlePanel.model_Formation.AddExchange(new_UnitGroup,model_UnitGroup);

        return(reslut);
    }
Ejemplo n.º 5
0
    //Unit-------------------------------------------------------------------

    // 上阵
    public RESULT Add(Model_UnitGroup model_UnitGroup)
    {
        RESULT result = RESULT.SUCCESS;

        int teamId = model_UnitGroup.teamId;
        int posId  = model_UnitGroup.posId;
        int unitId = model_UnitGroup.unitId;

        if (!IsEnoughUnitNum(model_UnitGroup))
        {
            result = RESULT.LACK;                       // 可战斗unit不足
        }
        else if (IsTeamContaninUnit(teamId, unitId))
        {
            result = RESULT.SAME;                       // 队伍中已经包含该类型Unit
        }
        else if (IsReachMaxBattleNum(model_UnitGroup))
        {
            result = RESULT.MAX;                 // 达到最大战斗数
        }
        else
        {
            int addNum = _formations[teamId - 1][posId - 1].Add(model_UnitGroup);
            ChangeUserUnitNum(unitId, -addNum);
        }

        return(result);
    }
Ejemplo n.º 6
0
// 军官 -----------------------------------------

    public void ExchangeHero(Model_UnitGroup unitGroup)
    {
        MathHelper.Swap(ref heroId, ref unitGroup.heroId);


        UpdateUnitNum(this);
        UpdateUnitNum(unitGroup);
    }
Ejemplo n.º 7
0
 private void UpdateUnitNum(Model_UnitGroup unitGroup)
 {
     if (unitGroup.num > unitGroup.maxNum)
     {
         ChangeUserUnitNum(unitGroup.unitId, unitGroup.num - unitGroup.maxNum);
         unitGroup.num = unitGroup.maxNum;
     }
 }
Ejemplo n.º 8
0
    public void Remove(Model_UnitGroup unitGroup)
    {
        num -= unitGroup.num;

        if (num <= 0)
        {
            Empty();
        }
    }
Ejemplo n.º 9
0
    // 下阵Hero
    public Model_Formation.RESULT ExitBattleHero()
    {
        Model_Formation.RESULT result = Model_Formation.RESULT.SUCCESS;

        Model_UnitGroup model_UnitGroup = attachSlotUI.model_UnitGroup;

        _heroPanel._battleFormationPanel.model_Formation.RemoveHero(model_UnitGroup);

        return(result);
    }
Ejemplo n.º 10
0
    // 交换Hero
    public Model_Formation.RESULT ExchangeBattleHero(Model_UnitGroup target)
    {
        Model_Formation.RESULT result = Model_Formation.RESULT.SUCCESS;

        Model_UnitGroup source = attachSlotUI.model_UnitGroup;

        result = _heroPanel._battleFormationPanel.model_Formation.ExchangeHero(source,target);

        return(result);
    }
Ejemplo n.º 11
0
    private bool IsReachMaxBattleNum(Model_UnitGroup model_UnitGroup)
    {
        Model_UnitGroup unit = _formations [model_UnitGroup.teamId - 1][model_UnitGroup.posId - 1];

        if (unit.num >= unit.maxNum)
        {
            return(true);
        }
        return(false);
    }
Ejemplo n.º 12
0
    // 上阵替换
    public int AddExchage(Model_UnitGroup unitGroup)
    {
        int realNum = Mathf.Min(maxNum, unitGroup.num);

        num     = realNum;
        unitId  = unitGroup.unitId;
        isEmpty = false;

        return(realNum);
    }
Ejemplo n.º 13
0
    public void UpdateUI(Model_UnitGroup unitGroup, BattleFormationPanel battlePanel)
    {
        model_UnitGroup      = unitGroup;
        battleFormationPanel = battlePanel;

        // 更新阵型数据
        if (!unitGroup.isEmpty)
        {
            InitSlotItemUI();
        }
    }
Ejemplo n.º 14
0
    public void UpdateUI(Model_UnitGroup unitGroup, UIHeroPanel heroPanel)
    {
        model_UnitGroup = unitGroup;
        _heroPanel      = heroPanel;

        // 更新阵型数据
        if (unitGroup.HasHero())
        {
            InitHeroSlotUI();
        }
    }
Ejemplo n.º 15
0
    // 上阵
    public int Add(Model_UnitGroup unitGroup)
    {
        int needMax = maxNum - num;
        int realNum = Mathf.Min(needMax, unitGroup.num);

        num    += realNum;
        unitId  = unitGroup.unitId;
        isEmpty = false;

        return(realNum);
    }
Ejemplo n.º 16
0
    // 交换Unit
    public Model_Formation.RESULT ExchageFormation(Model_UnitGroup target)
    {
        Model_Formation.RESULT result = Model_Formation.RESULT.SUCCESS;

        Model_UnitGroup source = attachSlotUI.model_UnitGroup;

        result = battlePanel.model_Formation.Exchange(source,target);


        return(result);
    }
Ejemplo n.º 17
0
    private Model_UnitGroup[][] _lastFormations; // 记录上一次阵型状态


    public Model_Formation()
    {
        _formations = new Model_UnitGroup[TEAM_COUNT][];
        for (int i = 0; i < TEAM_COUNT; ++i)
        {
            _formations[i] = new Model_UnitGroup[POSITION_COUNT];
            for (int j = 0; j < POSITION_COUNT; ++j)
            {
                _formations[i][j] = new Model_UnitGroup(i, j);
            }
        }
    }
Ejemplo n.º 18
0
 public Model_UnitGroup GetUnitGroupByUnitId(int teamId, int unitId)
 {
     Model_UnitGroup[] teamUnits = _formations [teamId - 1];
     for (int i = 0; i < teamUnits.Length; ++i)
     {
         Model_UnitGroup unit = teamUnits[i];
         if (!unit.isEmpty && unit.unitId == unitId)
         {
             return(unit);
         }
     }
     return(null);
 }
Ejemplo n.º 19
0
    // 下阵
    public RESULT Remove(Model_UnitGroup model_UnitGroup)
    {
        RESULT result = RESULT.SUCCESS;

        int teamId = model_UnitGroup.teamId;
        int posId  = model_UnitGroup.posId;
        int unitId = model_UnitGroup.unitId;
        int num    = model_UnitGroup.num;

        _formations [teamId - 1] [posId - 1].Remove(model_UnitGroup);
        ChangeUserUnitNum(unitId, num);

        return(result);
    }
Ejemplo n.º 20
0
    public object Clone()
    {
        Model_UnitGroup clone = new Model_UnitGroup();

        clone.unitId  = unitId;
        clone.num     = num;
        clone.posId   = posId;
        clone.teamId  = teamId;
        clone.isEmpty = isEmpty;

        clone.heroId = heroId;

        return(clone);
    }
Ejemplo n.º 21
0
    // 更新上阵Unit数量
    public void UpdateBattleUnitNum(Model_UnitGroup unit_Group)
    {
        int i = unit_Group.teamId - 1;
        int j = unit_Group.posId - 1;


        FormationSlotUI     formation = GetFormationSlotUI(i, j);
        FormationDragItemUI dragItem  = formation.dragItemUI;

        if (dragItem != null)
        {
            FormationSlotItemUI slotItem = dragItem.GetComponent <FormationSlotItemUI> ();
            slotItem.UpdateUI(unit_Group);
        }
    }
Ejemplo n.º 22
0
    public void UpdateUI(Model_UnitGroup unitGroup)
    {
        unitId = unitGroup.unitId;
        DataUnit dataUnit = DataManager.instance.dataUnitsGroup.GetUnit(unitId);

        up_Label.text     = unitGroup.num + "";     // 上阵数量
        amount_Label.text = unitGroup.maxNum + "";  // 最大上阵数量

        if (dataUnit != null)
        {
            name_Label.text = dataUnit.name;
        }

        this.GetComponent <FormationDragItemUI> ().unitId = unitId;
    }
Ejemplo n.º 23
0
    private bool IsEnoughUnitNum(Model_UnitGroup model_UnitGroup)
    {
        int        unitId = model_UnitGroup.unitId;
        Model_User user   = InstancePlayer.instance.model_User;

        Model_Unit model_Unit;

        user.unlockUnits.TryGetValue(unitId, out model_Unit);

        if (model_Unit != null && model_Unit.num > 0)
        {
            return(true);
        }
        return(false);
    }
Ejemplo n.º 24
0
    // 下阵
    public RESULT RemoveHero(Model_UnitGroup model_UnitGroup)
    {
        RESULT result = RESULT.SUCCESS;

        int teamId = model_UnitGroup.teamId;
        int posId  = model_UnitGroup.posId;

        Model_UnitGroup formation_Unit = GetUnitGroup(teamId, posId);

        if (formation_Unit != null)
        {
            formation_Unit.RemoveHero();
        }

        return(result);
    }
Ejemplo n.º 25
0
    public void CreateUnitGroupsResquest(List <SlgPB.UnitGroup> requestUnitGroups)
    {
        for (int i = 0; i < TEAM_COUNT; ++i)
        {
            for (int j = 0; j < POSITION_COUNT; ++j)
            {
                Model_UnitGroup model_UnitGroup = _formations[i][j];

                SlgPB.UnitGroup SlgPB_UnitGroup = model_UnitGroup.ConvertSlgPBUnitGroup();
                requestUnitGroups.Add(SlgPB_UnitGroup);

//				Trace.trace ("client formation " + " teamId " +model_UnitGroup.teamId + " posId " + model_UnitGroup.posId + " unitId " +
//									model_UnitGroup.unitId + " heroId " + model_UnitGroup.heroId, Trace.CHANNEL.IO);
            }
        }
    }
Ejemplo n.º 26
0
    // 交换
    public RESULT ExchangeHero(Model_UnitGroup model_UnitGroup1, Model_UnitGroup model_UnitGroup2)
    {
        RESULT result = RESULT.SUCCESS;

        int teamId1 = model_UnitGroup1.teamId;
        int posId1  = model_UnitGroup1.posId;

        int teamId2 = model_UnitGroup2.teamId;
        int posId2  = model_UnitGroup2.posId;

        Model_UnitGroup formation_Unit1 = GetUnitGroup(teamId1, posId1);
        Model_UnitGroup formation_Unit2 = GetUnitGroup(teamId2, posId2);

        formation_Unit1.ExchangeHero(formation_Unit2);

        return(result);
    }
Ejemplo n.º 27
0
    // 从scrollView中 上阵Hero
    public Model_Formation.RESULT EnterBattleHero(Model_UnitGroup model_UnitGroup)
    {
        Model_Formation.RESULT result = Model_Formation.RESULT.SUCCESS;

        UIHeroBodyItem bodyItem = this.GetComponent <UIHeroBodyItem>();
        int            heroId   = bodyItem.heroId;

        Model_UnitGroup new_UnitGroup = new Model_UnitGroup();

        new_UnitGroup.teamId = model_UnitGroup.teamId;
        new_UnitGroup.posId  = model_UnitGroup.posId;
        new_UnitGroup.heroId = heroId;

        result = _heroPanel._battleFormationPanel.model_Formation.AddHero(new_UnitGroup);

        return(result);
    }
Ejemplo n.º 28
0
    // 交换
    public RESULT Exchange(Model_UnitGroup model_UnitGroup1, Model_UnitGroup model_UnitGroup2)
    {
        RESULT result = RESULT.SUCCESS;

        int teamId1 = model_UnitGroup1.teamId;
        int posId1  = model_UnitGroup1.posId;

        int teamId2 = model_UnitGroup2.teamId;
        int posId2  = model_UnitGroup2.posId;

        Model_UnitGroup unitGroup1 = _formations [teamId1 - 1] [posId1 - 1];
        Model_UnitGroup unitGroup2 = _formations [teamId2 - 1] [posId2 - 1];

        unitGroup1.Exchange(unitGroup2);

        return(result);
    }
Ejemplo n.º 29
0
    // 上阵替换
    public RESULT AddExchange(Model_UnitGroup source, Model_UnitGroup target)
    {
        RESULT result = RESULT.SUCCESS;

        int teamId       = target.teamId;
        int posId        = target.posId;
        int sourceUnitId = source.unitId;
        int targetUnitId = target.unitId;

        if (targetUnitId == sourceUnitId)
        {
            if (!IsEnoughUnitNum(source))
            {
                result = RESULT.LACK;
            }
            else if (IsReachMaxBattleNum(target))
            {
                result = RESULT.MAX;
            }
            else
            {
                int addNum = _formations[teamId - 1][posId - 1].Add(source);
                ChangeUserUnitNum(sourceUnitId, -addNum);
            }
        }
        else
        {
            if (!IsEnoughUnitNum(source))
            {
                result = RESULT.LACK;                           // 可战斗unit不足
            }
            else if (IsTeamContaninUnit(teamId, sourceUnitId))
            {
                result = RESULT.SAME;                           // 队伍中已经包含该类型Unit
            }
            else
            {
                int addNum = _formations[teamId - 1][posId - 1].AddExchage(source);
                ChangeUserUnitNum(sourceUnitId, -addNum);
                ChangeUserUnitNum(targetUnitId, target.num);
            }
        }

        return(result);
    }
Ejemplo n.º 30
0
    // team 是否包含Unit
    public bool IsTeamContaninUnit(int teamId, int unitId)
    {
        if (teamId < 1 || teamId > 3)
        {
            return(false);
        }

        Model_UnitGroup[] teamUnits = _formations [teamId - 1];
        for (int i = 0; i < teamUnits.Length; ++i)
        {
            Model_UnitGroup unit = teamUnits[i];
            if (!unit.isEmpty && unit.unitId == unitId)
            {
                return(true);
            }
        }
        return(false);
    }