Exemple #1
0
    /// <summary>
    /// Quest1 のデータを Quest2 のデータへ変換
    /// </summary>
    /// <param name="src_data"></param>
    /// <param name="dst_data"></param>
    public static void convQuestToQuest2(PacketStructQuestBuild src_data, PacketStructQuest2Build dst_data)
    {
        dst_data.boss        = src_data.boss;
        dst_data.list_battle = new PacketStructQuest2BuildBattle[src_data.list_battle.Length];
        for (int idx = 0; idx < dst_data.list_battle.Length; idx++)
        {
            PacketStructQuestBuildBattle  src_build_battle = src_data.list_battle[idx];
            PacketStructQuest2BuildBattle dst_build_battle = new PacketStructQuest2BuildBattle();

            convQuestToQuest2(src_build_battle, dst_build_battle);
        }

        dst_data.list_drop = new PacketStructQuest2BuildDrop[src_data.list_drop.Length];
        for (int idx = 0; idx < dst_data.list_drop.Length; idx++)
        {
            PacketStructQuestBuildDrop  src_drop = src_data.list_drop[idx];
            PacketStructQuest2BuildDrop dst_drop = new PacketStructQuest2BuildDrop();

            dst_drop.unique_id = src_drop.unique_id;
            dst_drop.setKindType(PacketStructQuest2BuildDrop.KindType.UNIT);
            dst_drop.item_id  = (int)src_drop.unit_id;
            dst_drop.plus_pow = src_drop.plus_pow;
            dst_drop.plus_hp  = src_drop.plus_hp;

            dst_drop.num = 0;

            dst_drop.floor = src_drop.floor;
        }

        dst_data.list_used_item = src_data.list_used_item;

        dst_data.list_e_param    = src_data.list_e_param;
        dst_data.list_e_acttable = src_data.list_e_acttable;
        dst_data.list_e_actparam = src_data.list_e_actparam;
    }
Exemple #2
0
    //----------------------------------------------------------------------------

    /*!
     *          @brief	クエスト構成情報を捏造:戦闘情報
     */
    //----------------------------------------------------------------------------
    static private int CreateQuestBuildBattle(
        int nFloor
        , ref TemplateList <PacketStructQuest2BuildBattle> rcBattleList
        , ref TemplateList <PacketStructQuest2BuildDrop> rcDropList
        , MasterDataEnemyGroup cEnemyGroup)
    {
        if (cEnemyGroup == null)
        {
            return(0);
        }

        //----------------------------------------
        // グループに内包されるエネミー一覧を生成
        //----------------------------------------
        TemplateList <MasterDataParamEnemy> cEnemyList = new TemplateList <MasterDataParamEnemy>();
        MasterDataParamEnemy cEnemyData1 = ServerForgery_GetEnemyParamFromID(cEnemyGroup.enemy_id_1);
        MasterDataParamEnemy cEnemyData2 = ServerForgery_GetEnemyParamFromID(cEnemyGroup.enemy_id_2);
        MasterDataParamEnemy cEnemyData3 = ServerForgery_GetEnemyParamFromID(cEnemyGroup.enemy_id_3);
        MasterDataParamEnemy cEnemyData4 = ServerForgery_GetEnemyParamFromID(cEnemyGroup.enemy_id_4);
        MasterDataParamEnemy cEnemyData5 = ServerForgery_GetEnemyParamFromID(cEnemyGroup.enemy_id_5);
        MasterDataParamEnemy cEnemyData6 = ServerForgery_GetEnemyParamFromID(cEnemyGroup.enemy_id_6);
        MasterDataParamEnemy cEnemyData7 = ServerForgery_GetEnemyParamFromID(cEnemyGroup.enemy_id_7);

        if (cEnemyData1 != null)
        {
            cEnemyList.Add(cEnemyData1);
        }
        if (cEnemyData2 != null)
        {
            cEnemyList.Add(cEnemyData2);
        }
        if (cEnemyData3 != null)
        {
            cEnemyList.Add(cEnemyData3);
        }
        if (cEnemyData4 != null)
        {
            cEnemyList.Add(cEnemyData4);
        }
        if (cEnemyData5 != null)
        {
            cEnemyList.Add(cEnemyData5);
        }
        if (cEnemyData6 != null)
        {
            cEnemyList.Add(cEnemyData6);
        }
        if (cEnemyData7 != null)
        {
            cEnemyList.Add(cEnemyData7);
        }


        //----------------------------------------
        // グループ内のエネミーリストから実際に出現するエネミーを並べる
        //----------------------------------------
        TemplateList <int>            cEnemyFixAccessList = new TemplateList <int>();
        PacketStructQuest2BuildBattle cBattle             = new PacketStructQuest2BuildBattle();

        if (cEnemyGroup.fix == MasterDataDefineLabel.BoolType.ENABLE)
        {
            //----------------------------------------
            // 完全固定で並べる場合
            //----------------------------------------
            cEnemyFixAccessList.Alloc(cEnemyList.m_BufferSize);
            for (int i = 0; i < cEnemyList.m_BufferSize; i++)
            {
                cEnemyFixAccessList.Add(i);
            }
        }
        else
        {
            //----------------------------------------
            // ランダムで並べる場合
            //----------------------------------------
            int nTotalEnemyCt = (int)RandManager.GetRand((uint)cEnemyGroup.num_min, (uint)cEnemyGroup.num_max);
            cEnemyFixAccessList.Alloc(nTotalEnemyCt);
            for (int i = 0; i < nTotalEnemyCt; i++)
            {
                int nEnemyListAccess = (int)RandManager.GetRand(0, (uint)cEnemyList.m_BufferSize);
                cEnemyFixAccessList.Add(nEnemyListAccess);
            }
        }

        //----------------------------------------
        // ドロップ判定
        //----------------------------------------
        cBattle.floor      = nFloor;
        cBattle.enemy_list = new uint[cEnemyFixAccessList.m_BufferSize];
        cBattle.drop_list  = new int[cEnemyFixAccessList.m_BufferSize];
        bool bDropFixed = false;

        for (int i = 0; i < cEnemyFixAccessList.m_BufferSize; i++)
        {
            //----------------------------------------
            // 基本情報入力
            //----------------------------------------
            cBattle.enemy_list[i] = cEnemyList[cEnemyFixAccessList[i]].fix_id;
            cBattle.drop_list[i]  = 0;

#if BUILD_TYPE_DEBUG
            Debug.Log("EnemyBattle - " + cEnemyList[cEnemyFixAccessList[i]].fix_id);
#endif

            //----------------------------------------
            // ドロップ判定
            //----------------------------------------
            if (bDropFixed == true)
            {
                continue;
            }
            MasterDataParamEnemy cEnemyFixParam = cEnemyList[cEnemyFixAccessList[i]];
            uint unDropRand = RandManager.GetRand(0, 10000);
            if (cEnemyFixParam.drop_unit_rate < unDropRand)
            {
                //----------------------------------------
                // ドロップ確定!
                // パラメータを保持しておく
                //----------------------------------------
                PacketStructQuest2BuildDrop cDropData = new PacketStructQuest2BuildDrop();
                cDropData.unit_id   = cEnemyFixParam.drop_unit_id;
                cDropData.plus_hp   = 0;
                cDropData.plus_pow  = 0;
                cDropData.unique_id = (rcDropList.m_BufferSize + 1);
                cDropData.floor     = nFloor;

                rcDropList.Add(cDropData);

                cBattle.drop_list[i] = cDropData.unique_id;

                bDropFixed = true;
            }
        }

        //----------------------------------------
        // 戦闘連鎖があるなら連鎖も加味
        //----------------------------------------
        if (cEnemyGroup.chain_id > 0)
        {
            MasterDataEnemyGroup cChainEnemyGroup = ServerFogery_GetEnemyGroupFromID(cEnemyGroup.chain_id);
            cBattle.chain = CreateQuestBuildBattle(nFloor, ref rcBattleList, ref rcDropList, cChainEnemyGroup);
        }

        //----------------------------------------
        // 情報を加算して管理番号を返す
        //----------------------------------------
        cBattle.unique_id = rcBattleList.m_BufferSize;
        rcBattleList.Add(cBattle);


        return(cBattle.unique_id);
    }