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); }
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); } }
//----------------------- 初始化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); } } }
// 从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); }
//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); }
// 军官 ----------------------------------------- public void ExchangeHero(Model_UnitGroup unitGroup) { MathHelper.Swap(ref heroId, ref unitGroup.heroId); UpdateUnitNum(this); UpdateUnitNum(unitGroup); }
private void UpdateUnitNum(Model_UnitGroup unitGroup) { if (unitGroup.num > unitGroup.maxNum) { ChangeUserUnitNum(unitGroup.unitId, unitGroup.num - unitGroup.maxNum); unitGroup.num = unitGroup.maxNum; } }
public void Remove(Model_UnitGroup unitGroup) { num -= unitGroup.num; if (num <= 0) { Empty(); } }
// 下阵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); }
// 交换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); }
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); }
// 上阵替换 public int AddExchage(Model_UnitGroup unitGroup) { int realNum = Mathf.Min(maxNum, unitGroup.num); num = realNum; unitId = unitGroup.unitId; isEmpty = false; return(realNum); }
public void UpdateUI(Model_UnitGroup unitGroup, BattleFormationPanel battlePanel) { model_UnitGroup = unitGroup; battleFormationPanel = battlePanel; // 更新阵型数据 if (!unitGroup.isEmpty) { InitSlotItemUI(); } }
public void UpdateUI(Model_UnitGroup unitGroup, UIHeroPanel heroPanel) { model_UnitGroup = unitGroup; _heroPanel = heroPanel; // 更新阵型数据 if (unitGroup.HasHero()) { InitHeroSlotUI(); } }
// 上阵 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); }
// 交换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); }
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); } } }
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); }
// 下阵 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); }
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); }
// 更新上阵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); } }
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; }
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); }
// 下阵 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); }
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); } } }
// 交换 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); }
// 从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); }
// 交换 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); }
// 上阵替换 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); }
// 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); }