/// <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; }
//---------------------------------------------------------------------------- /*! * @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); }