/// <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 戦闘リクエスト操作:リクエスト発行 * @param[in] PacketStructQuestBuild (quest_param) クエスト構築情報 * @param[in] PacketStructQuestBuildBattle (battle_param) 戦闘構築情報 * @param[in] bool (boss) この戦闘はボス戦闘か? * @param[in] bool (chain) この戦闘は連鎖戦闘か? * @param[in] int (turn_offset) 有利不利ターン */ //---------------------------------------------------------------------------- public bool BattleRequestAdd(PacketStructQuest2Build quest_param, PacketStructQuest2BuildBattle battle_param, bool boss, bool chain, int turn_offset) { //-------------------------------- // バッファに空きがあるかチェック //-------------------------------- if ((m_BattleRequestInput - m_BattleRequestAccess - 1) > m_BattleRequest.Length) { Debug.LogError("BattleRequest Buffer Over!!"); return(false); } //-------------------------------- // バッファに空きがある // →リクエスト情報を受理 //-------------------------------- int nInputIndex = m_BattleRequestInput % m_BattleRequest.Length; m_BattleRequestInput = m_BattleRequestInput + 1; m_BattleRequestActive = true; //-------------------------------- // リクエストデータ設定 //-------------------------------- m_BattleRequest[nInputIndex].SetupBattleReq(m_BattleUniqueID++, false, turn_offset, boss, chain, quest_param, battle_param); return(true); }
public bool SetupBattleReq(int uniqueID, bool attach, int turn_offset, bool boss, bool chain, PacketStructQuest2Build quest_param, PacketStructQuest2BuildBattle battle_param) { //-------------------------------- // 管理用パラメータ設定 //-------------------------------- m_BattleUniqueID = uniqueID; m_BattleRequestAttached = attach; //-------------------------------- // 戦闘情報パラメータ設定 //-------------------------------- m_BattleTurnOffset = turn_offset; m_BattleEnemyBoss = boss; m_BattleEnemyChain = chain; //-------------------------------- // 戦闘情報を保存 //-------------------------------- m_QuestBuild = quest_param; m_QuestBuildBattle = battle_param; return(m_QuestBuildBattle != null); }
public bool m_BattleRequestAttached; //!< 戦闘リクエスト情報:リクエスト実行済み //---------------------------------------------------------------------------- // @brief コンストラクタ //---------------------------------------------------------------------------- public BattleReq() { m_QuestBuild = null; m_QuestBuildBattle = null; m_BattleUniqueID = 0; m_BattleTurnOffset = 0; m_BattleEnemyBoss = false; m_BattleEnemyChain = false; m_BattleRequestAttached = false; }
//---------------------------------------------------------------------------- // @brief データ設定 //---------------------------------------------------------------------------- public bool SetupBattleReq(int uniqueID, bool attach, int turn_offset, bool boss, bool chain, PacketStructQuestBuild quest_param, PacketStructQuestBuildBattle battle_param) { // Quest2 系へ変換 PacketStructQuest2Build dst_quest_param = new PacketStructQuest2Build(); convQuestToQuest2(quest_param, dst_quest_param); PacketStructQuest2BuildBattle dst_battle_param = new PacketStructQuest2BuildBattle(); convQuestToQuest2(battle_param, dst_battle_param); return(SetupBattleReq(uniqueID, attach, turn_offset, boss, chain, dst_quest_param, dst_battle_param)); }
// Update is called once per frame void Update() { if (DebugOptionInGame.Instance == null) { return; } if (m_TestGameManager == null) { return; } switch (m_Status) { case eStatus.API_QUEST_START: { if (DebugOptionInGame.Instance.inGameDebugDO.m_UseAPI == true) { m_HelperIndex = RandManager.GetRand(0, (uint)(UserDataAdmin.Instance.m_StructHelperList.Length - 1)); PacketStructFriend cHelper = null; if (UserDataAdmin.Instance.m_StructFriendList.Length > 0 && UserDataAdmin.Instance.m_StructFriendList[0] != null) { cHelper = UserDataAdmin.Instance.m_StructFriendList[0]; } else if (UserDataAdmin.Instance.m_StructHelperList.Length > 0) { cHelper = UserDataAdmin.Instance.m_StructHelperList[m_HelperIndex]; } { ServerDataUtilSend.SendPacketAPI_Quest2Start( DebugOptionInGame.Instance.inGameDebugDO.m_QuestId, 0, cHelper.user_id, cHelper.unit, false, UserDataAdmin.Instance.m_StructPlayer.unit_party_current, 0, 0, null, false ) .setSuccessAction(_data => { if (SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build == null) { SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build = new SceneGoesParamToQuest2Build(); } SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build.m_QuestBuild = _data.GetResult <RecvQuest2Start>().result.quest; m_Status = eStatus.DATA_CREATE; }) .setErrorAction(data => { Debug.LogErrorFormat("[TestGameMain] Quest2Start API Error [{0}] : QuestId = {1}", data.m_PacketCode.ToString(), DebugOptionInGame.Instance.inGameDebugDO.m_QuestId.ToString()); m_TestGameManager.Message_text = "API Error\r\n [" + data.m_PacketCode.ToString() + "]"; }) .SendStart(); m_Status = eStatus.NONE; } } else { if (SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build == null) { SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build = new SceneGoesParamToQuest2Build(); } { MasterDataQuest2 masterDataQuest2 = MasterDataUtil.GetQuest2ParamFromID(DebugOptionInGame.Instance.inGameDebugDO.m_QuestId); PacketStructQuest2Build cQuestBuild = new PacketStructQuest2Build(); int floor_size = 2; //---------------------------------------- // 最終的な構築情報を格納する領域を確保 //---------------------------------------- TemplateList <PacketStructQuest2BuildBattle> acQuestBuildBattle = new TemplateList <PacketStructQuest2BuildBattle>(); TemplateList <PacketStructQuest2BuildDrop> acQuestBuildDrop = new TemplateList <PacketStructQuest2BuildDrop>(); acQuestBuildBattle.Alloc(64); int nFloorDataAccess = 0; cQuestBuild.boss = new int[floor_size]; for (int i = 0; i < floor_size; i++) { nFloorDataAccess = (i - 1); if (nFloorDataAccess < 0) { continue; } //---------------------------------------- // 0番目要素ダミーデータの入力 //---------------------------------------- PacketStructQuest2BuildBattle build_param_battle = new PacketStructQuest2BuildBattle(); if (build_param_battle != null) { build_param_battle.unique_id = 0; build_param_battle.enemy_list = null; build_param_battle.drop_list = null; build_param_battle.chain = 0; build_param_battle.chain_turn_offset = 0; build_param_battle.bgm_id = 0; acQuestBuildBattle.Add(build_param_battle); } //---------------------------------------- // 戦闘情報を設定 //---------------------------------------- int battle_num = MasterDataUtil.GetQuest2BattleNum(masterDataQuest2.fix_id); for (int j = 0; j < battle_num; j++) { uint enemy_group_id = MasterDataUtil.GetQuest2EnemyGroup(masterDataQuest2.fix_id, j); if (enemy_group_id == 0) { continue; } MasterDataEnemyGroup acMasterGroupEnemy = ServerFogery_GetEnemyGroupFromID(enemy_group_id); if (acMasterGroupEnemy == null) { Debug.LogError("EnemyGroup not found id = " + enemy_group_id); continue; } CreateQuestBuildBattle( i , ref acQuestBuildBattle , ref acQuestBuildDrop , acMasterGroupEnemy ); } //---------------------------------------- // ボス戦闘情報を設定 //---------------------------------------- cQuestBuild.boss[i] = 0; if (masterDataQuest2.boss_group_id > 0) { MasterDataEnemyGroup cBossEnemyGroup = ServerFogery_GetEnemyGroupFromID(masterDataQuest2.boss_group_id); if (cBossEnemyGroup != null) { cQuestBuild.boss[i] = CreateQuestBuildBattle( i , ref acQuestBuildBattle , ref acQuestBuildDrop , cBossEnemyGroup ); } else { Debug.LogError("EnemyGroup not found Boss id = " + masterDataQuest2.boss_group_id); } } } TemplateList <MasterDataParamEnemy> e_param_list = new TemplateList <MasterDataParamEnemy>(); TemplateList <MasterDataEnemyActionParam> e_act_param_list = new TemplateList <MasterDataEnemyActionParam>(); TemplateList <MasterDataEnemyActionTable> e_act_table_list = new TemplateList <MasterDataEnemyActionTable>(); for (int i = 0; i < acQuestBuildBattle.m_BufferSize; i++) { if (acQuestBuildBattle[i] == null) { continue; } if (acQuestBuildBattle[i].enemy_list == null) { continue; } for (int j = 0; j < acQuestBuildBattle[i].enemy_list.Length; j++) { if (acQuestBuildBattle[i].enemy_list[j] == 0) { continue; } MasterDataParamEnemy enemy_param = ServerForgery_GetEnemyParamFromID(acQuestBuildBattle[i].enemy_list[j]); e_param_list.Add(enemy_param); int[] table_id = { enemy_param.act_table1, enemy_param.act_table2, enemy_param.act_table3, enemy_param.act_table4, enemy_param.act_table5, enemy_param.act_table6, enemy_param.act_table7, enemy_param.act_table8 }; for (int k = 0; k < table_id.Length; k++) { if (table_id[k] == 0) { continue; } MasterDataEnemyActionTable table = ServerFogery_GetEnemyActionTable(table_id[k]); e_act_table_list.Add(table); int[] action_id = { table.action_param_id1, table.action_param_id2, table.action_param_id3, table.action_param_id4, table.action_param_id5, table.action_param_id6, table.action_param_id7, table.action_param_id8 }; for (int l = 0; l < action_id.Length; l++) { e_act_param_list.Add(GetEnemyActionParam(action_id[l])); } } } } //---------------------------------------- // 構築した動的要素を配列化して受け渡し //---------------------------------------- cQuestBuild.list_drop = acQuestBuildDrop.ToArray(); cQuestBuild.list_battle = acQuestBuildBattle.ToArray(); cQuestBuild.list_e_param = e_param_list.ToArray(); cQuestBuild.list_e_actparam = e_act_param_list.ToArray(); cQuestBuild.list_e_acttable = e_act_table_list.ToArray(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build.m_QuestBuild = cQuestBuild; } m_Status = eStatus.DATA_CREATE; } } break; case eStatus.DATA_CREATE: { { MasterDataQuest2 masterDataQuest = MasterDataUtil.GetQuest2ParamFromID(DebugOptionInGame.Instance.inGameDebugDO.m_QuestId); //---------------------------------------- // ダミーパラメータを設定 //---------------------------------------- if (SceneGoesParam.Instance.m_SceneGoesParamToQuest2 == null) { SceneGoesParam.Instance.m_SceneGoesParamToQuest2 = new SceneGoesParamToQuest2(); } SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_QuestAreaID = masterDataQuest.area_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_QuestMissionID = masterDataQuest.fix_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_QuestRandSeed = RandManager.GetRand(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_IsUsedAutoPlay = false; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param = new UserDataUnitParam(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param = new UserDataUnitParam(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param = new UserDataUnitParam(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param = new UserDataUnitParam(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param = new UserDataUnitParam(); if (DebugOptionInGame.Instance.inGameDebugDO.m_DebugParty == false && UserDataAdmin.Instance != null && UserDataAdmin.Instance.m_StructHelperList.IsNullOrEmpty() != true && UserDataAdmin.Instance.m_StructPartyAssign.IsNullOrEmpty() != true) { PacketStructFriend cHelper = UserDataAdmin.Instance.m_StructHelperList[m_HelperIndex]; int nPartyCurrent = UserDataAdmin.Instance.m_StructPlayer.unit_party_current; PacketStructUnit[] acUnitStruct = { UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][0] , UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][1] , UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][2] , UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][3] , cHelper.unit }; UserDataUnitParam[] acUnitParam = { SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param, SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param, SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param, SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param, SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param, }; for (int i = 0; i < acUnitStruct.Length; i++) { if (acUnitStruct[i] != null) { acUnitParam[i].m_UnitDataID = acUnitStruct[i].id; acUnitParam[i].m_UnitParamLevel = (int)acUnitStruct[i].level; acUnitParam[i].m_UnitParamEXP = (int)acUnitStruct[i].exp; acUnitParam[i].m_UnitParamUniqueID = acUnitStruct[i].unique_id; acUnitParam[i].m_UnitParamLimitBreakLV = (int)acUnitStruct[i].limitbreak_lv; acUnitParam[i].m_UnitParamLimitOverLV = (int)acUnitStruct[i].limitover_lv; acUnitParam[i].m_UnitParamPlusPow = (int)acUnitStruct[i].add_pow; acUnitParam[i].m_UnitParamPlusHP = (int)acUnitStruct[i].add_hp; } } } else { SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param.m_UnitDataID = DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara0_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param.m_UnitDataID = DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara1_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param.m_UnitDataID = DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara2_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param.m_UnitDataID = DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara3_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param.m_UnitDataID = DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara4_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param.m_UnitParamLevel = (int)DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara0_level; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param.m_UnitParamLevel = (int)DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara1_level; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param.m_UnitParamLevel = (int)DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara2_level; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param.m_UnitParamLevel = (int)DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara3_level; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param.m_UnitParamLevel = (int)DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara4_level; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param.m_UnitParamEXP = 100; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param.m_UnitParamEXP = 100; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param.m_UnitParamEXP = 100; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param.m_UnitParamEXP = 100; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param.m_UnitParamEXP = 100; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param.m_UnitParamUniqueID = 1; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param.m_UnitParamUniqueID = 2; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param.m_UnitParamUniqueID = 3; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param.m_UnitParamUniqueID = 4; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param.m_UnitParamUniqueID = 5; } LocalSaveManager.Instance.SaveFuncGoesToQuest2Start(SceneGoesParam.Instance.m_SceneGoesParamToQuest2); LocalSaveManager.Instance.SaveFuncGoesToQuest2Restore(null); DebugOptionInGame.Instance.m_Quest2Build = SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build.m_QuestBuild; SceneCommon.Instance.ChangeScene(SceneType.SceneQuest2); } m_Status = eStatus.NONE; } break; case eStatus.DATA_RESTORE: { { SceneGoesParam.Instance.m_SceneGoesParamToQuest2 = LocalSaveManager.Instance.LoadFuncGoesToQuest2Start(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2Restore = LocalSaveManager.Instance.LoadFuncGoesToQuest2Restore(); if (SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build == null) { SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build = new SceneGoesParamToQuest2Build(); } SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build.m_QuestBuild = DebugOptionInGame.Instance.m_Quest2Build; SceneCommon.Instance.ChangeScene(SceneType.SceneQuest2); } m_Status = eStatus.NONE; } break; default: break; } }