public void AddData(PartySelectGroupUnitContext party) { if (PartyGroups.Count == 0) { PartySelectGroupListContext addGroup = new PartySelectGroupListContext(); addGroup.Parties.Add(party); PartyGroups.Add(addGroup); } else { PartySelectGroupListContext group = PartyGroups[PartyGroups.Count - 1]; if (group.Parties.Count < 5) { group.Parties.Add(party); } else { PartySelectGroupListContext addGroup = new PartySelectGroupListContext(); addGroup = new PartySelectGroupListContext(); addGroup.Parties.Add(party); PartyGroups.Add(addGroup); } } ++PartyCount; }
/// <summary> /// パーティリストを選択したとき /// </summary> /// <param name="party"></param> void OnSelectPartyGroup(PartySelectGroupUnitContext party) { m_UnitPartyCurrent = party.Index; // 変更されたパーティー番号のユニットのステータスを更新する. UpdatePartyUnitStatus(m_UnitPartyCurrent, party); if (m_PartyParamPanel != null) { m_PartyParamPanel.ChangeParam(m_UnitPartyCurrent); } m_PartySelectGroup.ChangePartyItemSelect(m_UnitPartyCurrent); // パーティ選択状態を変更 }
/// <summary> /// 指定したインデックスのパーティ情報を取得する /// </summary> /// <param name="index"></param> /// <returns></returns> public PartySelectGroupUnitContext GetParty(int index) { for (int i = 0; i < PartyGroups.Count; ++i) { for (int j = 0; j < PartyGroups[i].Parties.Count; ++j) { PartySelectGroupUnitContext partyUnit = PartyGroups[i].Parties[j]; if (partyUnit.Index == index) { return(partyUnit); } } } return(null); }
/// <summary> /// 変更されたパーティー番号のユニットのステータスを更新する. /// </summary> /// <param name="party">変更対象パーティー</param> void UpdatePartyUnitStatus(int unitPartyIndex, PartySelectGroupUnitContext party) { if (party == null) { return; } var list = m_PartyParamPanel.PartyParamList[unitPartyIndex].GetComponent <PartyParamListItem>(); for (int pt_count = 0; pt_count < party.PartyData.Length; ++pt_count) { var unitData = party.PartyData[pt_count]; var linkData = party.PartyLinkData[pt_count]; var unit = list.Context.UnitList[pt_count].GetComponent <PartyParamUnitListItem>().Context; MainMenuUtil.SetPartySelectUnitData(ref unit, unitData, linkData, party.PartyData); } }
/// <summary> /// API送信:ユニットパーティ編成設定 /// </summary> void SendUnitPartyAssign(Action finishedSendAction = null) { Action endAction = () => { m_UnitPartyCurrent = DefaultUnitPartyCurrent; }; if (UserDataAdmin.Instance.m_StructPlayer.unit_party_current != m_PartyParamPanel.m_CurrentIndex) { // 選択パーティが変わっている場合 PacketStructPartyAssign[] partyAssigns = new PacketStructPartyAssign[UserDataAdmin.Instance.m_StructPartyAssign.Length]; // パーティアサイン情報配列 // パーティアサイン情報設定 for (int i = 0; i < UserDataAdmin.Instance.m_StructPartyAssign.Length; ++i) { PartySelectGroupUnitContext party = m_PartySelectGroup.GetParty(i); partyAssigns[i] = new PacketStructPartyAssign(); if (party != null) { partyAssigns[i].unit0_unique_id = party.PartyData[0] != null ? party.PartyData[0].unique_id : 0; partyAssigns[i].unit1_unique_id = party.PartyData[1] != null ? party.PartyData[1].unique_id : 0; partyAssigns[i].unit2_unique_id = party.PartyData[2] != null ? party.PartyData[2].unique_id : 0; partyAssigns[i].unit3_unique_id = party.PartyData[3] != null ? party.PartyData[3].unique_id : 0; } else { var partyAssign = UserDataAdmin.Instance.m_StructPartyAssign; partyAssigns[i].unit0_unique_id = (partyAssign[i][0] != null) ? partyAssign[i][0].unique_id : 0; partyAssigns[i].unit1_unique_id = (partyAssign[i][1] != null) ? partyAssign[i][1].unique_id : 0; partyAssigns[i].unit2_unique_id = (partyAssign[i][2] != null) ? partyAssign[i][2].unique_id : 0; partyAssigns[i].unit3_unique_id = (partyAssign[i][3] != null) ? partyAssign[i][3].unique_id : 0; } } // 送信開始 ServerDataUtilSend.SendPacketAPI_UnitPartyAssign(partyAssigns, m_PartyParamPanel.m_CurrentIndex) .setSuccessAction(_data => { UserDataAdmin.Instance.m_StructPlayer = _data.UpdateStructPlayer <RecvUnitPartyAssign>((PacketStructPlayer)UserDataAdmin.Instance.m_StructPlayer); UserDataAdmin.Instance.ConvertPartyAssing(); m_IsSendApi = false; endAction(); if (finishedSendAction != null) { finishedSendAction(); } }) .setErrorAction(_data => { m_IsSendApi = false; endAction(); if (finishedSendAction != null) { finishedSendAction(); } }) .SendStart(); m_IsSendApi = true; } else { endAction(); if (finishedSendAction != null) { finishedSendAction(); } } }
/// <summary> /// パーティ詳細情報の変更 /// </summary> void CreatePartyParam() { PacketStructUnit[][] partys = UserDataAdmin.Instance.m_StructPartyAssign; m_PartyParamPanel.m_CurrentIndex = m_UnitPartyCurrent; m_PartyParamPanel.PartyParams.Clear(); m_PartyParamPanel.OnChangedPartyParamAction = OnChangedPartyParam; List <MasterDataParamChara> charaMasterList = MasterFinder <MasterDataParamChara> .Instance.FindAll(); m_partyPanels.Clear(); for (int i = 0; i < partys.Length; ++i) { int index = i; var partyPanelModel = new PartyParamListItemModel((uint)index); PartyParamListItemContext paertParam = new PartyParamListItemContext(partyPanelModel); PartySelectGroupUnitContext party = m_PartySelectGroup.GetParty(i); m_partyPanels.Add(partyPanelModel); //-------------------------------------------- // パーティ情報 //-------------------------------------------- if (m_PartyParamPanel != null) { CharaUtil.setupCharaParty(ref paertParam.PartyInfo, party.PartyData); // パーティ情報の設定 paertParam.NameText = string.Format(GameTextUtil.GetText("questlast_text7"), party.Index + 1); paertParam.CostText = string.Format(GameTextUtil.GetText("questlast_text5"), paertParam.PartyInfo.m_PartyTotalCost , UserDataAdmin.Instance.m_StructPlayer.total_party); // Cost paertParam.CharmText = string.Format(GameTextUtil.GetText("questlast_text6"), paertParam.PartyInfo.m_PartyTotalCharm); // CHARM } //------------------------- // ユニット設定 //------------------------- List <PartyMemberUnitContext> unitList = new List <PartyMemberUnitContext>(); int unitDataIndex = 0; for (int pt_count = 0; pt_count < party.PartyData.Length; ++pt_count) { PacketStructUnit unitData = party.PartyData[pt_count]; PacketStructUnit linkData = party.PartyLinkData[pt_count]; var unitDataModel = new PartyMemberUnitListItemModel((uint)unitDataIndex++); PartyMemberUnitContext unit = new PartyMemberUnitContext(unitDataModel); unit.IsActiveStatus = true; unit.IsActiveParamText = true; if (unitData != null) { unit.CharaMaster = charaMasterList.Find((v) => v.fix_id == unitData.id); UnitIconImageProvider.Instance.Get( unitData.id, sprite => { unit.UnitImage = sprite; }); unit.UnitData = unitData; unitDataModel.OnLongPressed += () => { OnLongPressParamUnit(unit); }; } else { unit.OutSideCircleImage = ResourceManager.Instance.Load("icon_circle_deco", ResourceType.Common); unit.UnitImage = ResourceManager.Instance.Load("icon_empty2", ResourceType.Menu); unit.IsEnalbeSelect = true; } if (linkData != null && linkData.id > 0) { unit.LinkCharaMaster = charaMasterList.Find((v) => v.fix_id == linkData.id); UnitIconImageProvider.Instance.Get( linkData.id, sprite => { unit.LinkUnitImage = sprite; }); unit.IsEmptyLinkUnit = false; } else { unit.LinkOutSideCircleImage = ResourceManager.Instance.Load("icon_circle_deco", ResourceType.Common); unit.LinkUnitImage = ResourceManager.Instance.Load("icon_empty2", ResourceType.Menu); unit.IsEmptyLinkUnit = true; } // indexがm_UnitPartyCurrentとその前後の時にアイコンとステータスを更新する. if ((index == m_UnitPartyCurrent) || (index == m_UnitPartyCurrent - 1) || (index == m_UnitPartyCurrent + 1)) { MainMenuUtil.SetPartySelectUnitData(ref unit, unitData, linkData, party.PartyData); } else if (unit.OutSideCircleImage == null) { unit.OutSideCircleImage = ResourceManager.Instance.Load("icon_circle_deco", ResourceType.Common); } unitDataModel.OnClicked += () => { OnSelectParamUnit(unit); }; unitList.Add(unit); partyPanelModel.AddUnit(unitDataModel); } unitList[0].PartyCharaIndex = GlobalDefine.PartyCharaIndex.LEADER; unitList[1].PartyCharaIndex = GlobalDefine.PartyCharaIndex.MOB_1; unitList[2].PartyCharaIndex = GlobalDefine.PartyCharaIndex.MOB_2; unitList[3].PartyCharaIndex = GlobalDefine.PartyCharaIndex.MOB_3; paertParam.Units = unitList; //------------------------- // スキル //------------------------- int skillDataIndex = 0; if (unitList[0].UnitData.id > 0) { List <UnitSkillAtPartyContext> skillList = new List <UnitSkillAtPartyContext>(); var skillDataModel = new ListItemModel((uint)skillDataIndex++); UnitSkillAtPartyContext leaderSkill = new UnitSkillAtPartyContext(skillDataModel); leaderSkill.setupLeaderSkill(unitList[0].CharaMaster.skill_leader); skillList.Add(leaderSkill); paertParam.Skills = skillList; partyPanelModel.AddSkill(skillDataModel); #if BUILD_TYPE_DEBUG Debug.Log("*************** UnitSkillAtPartyContext *********************"); #endif } paertParam.SelectLinkAction = OnSelectLink; m_PartyParamPanel.PartyParams.Add(paertParam); } //-------------------------------------- // 主人公 //-------------------------------------- // アセットバンドルの読み込み uint currentHeroID = MasterDataUtil.GetCurrentHeroID(); AssetBundler.Create(). Set(string.Format("hero_{0:D4}", currentHeroID), (o) => { Texture2D texture = o.GetTexture2D(string.Format("tex_hero_perform_l_{0:D4}", currentHeroID), TextureWrapMode.Clamp); Texture2D texture_mask = o.GetTexture2D(string.Format("tex_hero_perform_l_{0:D4}_mask", currentHeroID), TextureWrapMode.Clamp); foreach (var paertParam in m_PartyParamPanel.PartyParams) { paertParam.HeroImage = texture; paertParam.HeroImage_mask = texture_mask; } }).Load(); }
/// <summary> /// パーティリストの作成 /// </summary> void CreatePartyList() { PacketStructUnit[][] partys = UserDataAdmin.Instance.m_StructPartyAssign; m_PartySelectGroup.ClearPartyGroups(); var partyModels = new List <PartySelectGroupUnitListItemModel>(); const int AnimationFirstIndex = 0; const int AnimationLastIndex = 4; for (int i = 0; i < partys.Length; ++i) { PacketStructUnit[] party = partys[i]; int index = i; var model = new PartySelectGroupUnitListItemModel((uint)index); PartySelectGroupUnitContext partyGroup = new PartySelectGroupUnitContext(model); partyGroup.Index = index; // 番号の設定 partyGroup.NameText = string.Format(GameTextUtil.GetText("questlast_tub"), index + 1); // パーティ名 Array.Copy(party, partyGroup.PartyData, partyGroup.PartyData.Length); // ユニット情報をコピー for (int pt_cout = 0; pt_cout < partyGroup.PartyData.Length; ++pt_cout) { // リンクユニット情報を設定 if (partyGroup.PartyData[pt_cout] == null) { continue; } partyGroup.PartyLinkData[pt_cout] = CharaLinkUtil.GetLinkUnit(partyGroup.PartyData[pt_cout].link_unique_id); } PacketStructUnit leaderUnit = partyGroup.PartyData[(int)GlobalDefine.PartyCharaIndex.LEADER]; if (leaderUnit != null) { // リーダーユニット画像 UnitIconImageProvider.Instance.Get( leaderUnit.id, sprite => { partyGroup.UnitImage = sprite; }); //partyGroup.IsActiveLinkIcon = (leaderUnit.link_info != (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_NONE); // リンクアイコン MasterDataParamChara _master = MasterFinder <MasterDataParamChara> .Instance.Find((int)leaderUnit.id); partyGroup.IconSelect = MainMenuUtil.GetElementCircleSprite(_master.element); } partyGroup.IsSelect = (index == m_UnitPartyCurrent); m_PartySelectGroup.AddData(partyGroup); model.OnClicked += () => { OnSelectPartyGroup(partyGroup); }; model.OnShowedNextIcon += () => { if (index <= AnimationFirstIndex || index > AnimationLastIndex) { return; } partyModels[index - 1].ShowIcon(); }; model.OnShowedNextName += () => { if (index >= AnimationLastIndex) { return; } partyModels[index + 1].ShowName(); }; model.OnViewStarted += () => { bool showName = index == AnimationFirstIndex || index > AnimationLastIndex; bool showIcon = index == AnimationLastIndex || index > AnimationLastIndex; if (showName) { model.ShowName(); } if (showIcon) { model.ShowIcon(); } }; partyModels.Add(model); } }
public override void OnInitialized() { base.OnInitialized(); m_PartyMemberStatusPanel = GetComponentInChildren <PartyMemberStatusPanel>(); // マスターデータ List <MasterDataParamChara> charaMasterDatas = MasterFinder <MasterDataParamChara> .Instance.FindAll(); // パーティ for (int i = 0; i < m_PartyCount; ++i) { var model = new PartySelectGroupUnitListItemModel((uint)i); PartySelectGroupUnitContext party = new PartySelectGroupUnitContext(model); UnitIconImageProvider.Instance.Get( charaMasterDatas[Random.Range(0, 1800)].fix_id, sprite => { party.UnitImage = sprite; }); party.NameText = string.Format(GameTextUtil.GetText("questlast_tub"), i + 1); m_PartySelectGroup.AddData(party); model.OnClicked += () => { m_PartySelectGroup.ChangePartyItemSelect(party.Index); // パーティ選択状態を変更 }; } // パーティメンバー for (int i = 0; i < 4; ++i) { var unitDataModel = new PartyMemberUnitListItemModel((uint)i); PartyMemberUnitContext unit = new PartyMemberUnitContext(unitDataModel); UnitIconImageProvider.Instance.Get( charaMasterDatas[Random.Range(0, 1800)].fix_id, sprite => { unit.UnitImage = sprite; }); m_PartyMemberUnitGroup.Units.Add(unit); unitDataModel.OnClicked += () => { unit.DidSelectItem(unit); // TODO : DidSelectItem()の内容と差し替え }; unitDataModel.OnLongPressed += () => { unit.DidLongPressItem(unit); // TODO : DidLongPressItem()の内容と差し替え }; } // クエストパーティメンバー for (int i = 0; i < 5; ++i) { var unitDataModel = new PartyMemberUnitListItemModel((uint)i); PartyMemberUnitContext unit = new PartyMemberUnitContext(unitDataModel); UnitIconImageProvider.Instance.Get( charaMasterDatas[Random.Range(0, 1800)].fix_id, sprite => { unit.UnitImage = sprite; }); //m_PartyParamQuestPartyPanel.Units.Add(unit); unitDataModel.OnClicked += () => { unit.DidSelectItem(unit); // TODO : DidSelectItem()の内容と差し替え }; unitDataModel.OnLongPressed += () => { unit.DidLongPressItem(unit); // TODO : DidLongPressItem()の内容と差し替え }; } for (int i = 0; i < 4; ++i) { PartyMemberStatusListItemContext status = new PartyMemberStatusListItemContext(); m_PartyMemberStatusPanel.UnitStatusParams.Add(status); } }