Example #1
0
 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); // パーティ選択状態を変更
    }
Example #3
0
    /// <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);
        }
    }