/// <summary> /// 敵が不死になっているか(BattleLogicがこれを見てBattleLogicを制御する) /// </summary> /// <returns></returns> public bool isNoDeadEnemy() { bool ret_val = BattleParam.IsTutorial() && m_IsNoDeadEnemy; return(ret_val); }
/// <summary> /// チュートリアルのフェイズを設定(BattleLogic側から設定される) /// </summary> /// <param name="phase"></param> public void setTutorialPhase(TutorialBattlePhase phase) { m_TutorialBattlePhaseReq = phase; // チュートリアルをスキップされた場合は、初めての戦闘でチュートリアルダイアログを表示する. if (phase == TutorialBattlePhase.INPUT && BattleParam.IsTutorial() == false ) { m_IsShowingTutorialDialog = true; new SerialProcess().Add((System.Action nextProcess) => { showFirstTutorialDialog(TutorialDialog.FLAG_TYPE.BATTLE1, nextProcess); }) .Add((System.Action nextProcess) => { showFirstTutorialDialog(TutorialDialog.FLAG_TYPE.AUTO_PLAY, nextProcess); }) .Add((System.Action nextProcess) => { m_IsNextCommand = true; m_IsShowingTutorialDialog = false; }) .Flush(); } if (BattleParam.IsTutorial()) { m_IsForbidButton = true; } }
//---------------------------------------------------------------------------- /*! * @brief 主人公スキル発動タッチ処理: */ //---------------------------------------------------------------------------- public void OnHeroToutch() { // メニューオープンタイミングのチェック bool isOpen = InGameUtil.ChkInGameOpenWindowTiming(); if (isOpen == false) { return; } // チュートリアル中の発動禁止処理. if (BattleParam.IsTutorial()) { if (BattleSceneManager.Instance.isTutorialForbidLimitBreak(GlobalDefine.PartyCharaIndex.HERO)) { return; } } LocalSaveOption cOption = LocalSaveManager.Instance.LoadFuncOption(); if (cOption.m_OptionConfirmAS == (int)LocalSaveDefine.OptionConfirmAS.ON) { // ヒーロースキル発動確認ウィンドウを開く if (InGameMenuManagerQuest2.Instance != null) { InGameMenuManagerQuest2.Instance.OpenSkillMenu(GlobalDefine.PartyCharaIndex.HERO, 0, m_HeroTotalSkillPrv); } } else { // ヒーロースキルを即時発動 BattleParam.RequestLBS(GlobalDefine.PartyCharaIndex.HERO); } }
//---------------------------------------------------------------------------- /*! * @brief スキル発動NOボタンタッチ処理 */ //---------------------------------------------------------------------------- public void OnSkillNo() { if (BattleParam.IsTutorial()) { return; // チュートリアル中は押せなくする } if (InGameUtil.isQuest2() == true) { changePartyUnitParent(false); } if (m_CharaIdx == GlobalDefine.PartyCharaIndex.HERO) { m_newSkill.setupHeroSkill(0); } else { m_newSkill.setupLimitBreakSkill(0, 0); } m_InGameMenuQuest2.Skill_menu_active = false; m_InGameMenuQuest2.Menu_bg_active = false; m_SkillMenuActive = false; SoundUtil.PlaySE(SEID.SE_MENU_RET); m_MenuButton.color = Color.white; UnityUtil.SetObjectEnabled(m_MenuButtonMask, false); }
//---------------------------------------------------------------------------- /*! * @brief 主人公情報長押しタッチ処理: */ //---------------------------------------------------------------------------- public void OnHeroLongToutch() { // メニューオープンタイミングのチェック bool isOpen = InGameUtil.ChkInGameOpenWindowTiming(); if (isOpen == false) { return; } if (InGameMenuManagerQuest2.Instance != null) { if (InGameMenuManagerQuest2.Instance.isSkillMenuActive == true) { return; } } // チュートリアル中の禁止処理 if (BattleParam.IsTutorial()) { if (BattleSceneManager.Instance.isTutorialEnableUnitInfoWindow() == false) { return; } } SceneModeContinuousBattle.Instance.HeroWindowOpen(); }
public override GlobalDefine.PartyCharaIndex getLimitBreakSkillCaster() { // リミブレスキル使用禁止でないかチェック if (m_IsUseLimitBreakSkill) { int battle_turn_id = getBattleTurnID(); for (int member_idx = 0; member_idx < MEMBER_ORDER.Length; member_idx++) { GlobalDefine.PartyCharaIndex member_type = MEMBER_ORDER[member_idx]; // このターンでまだリミブレスキルを使用していないかチェック(1ターン中に何度も発動できるリミブレスキル対策) if (m_LimitBreakSkillTurnID[(int)member_type] != battle_turn_id) { // リミブレスキルが使用可能かチェック if (BattleParam.IsEnableLBS(member_type)) { m_LimitBreakSkillTurnID[(int)member_type] = battle_turn_id; return(member_type); } } } } return(GlobalDefine.PartyCharaIndex.ERROR); }
//---------------------------------------------------------------------------- /*! * @brief スキル発動OKボタンタッチ処理 */ //---------------------------------------------------------------------------- public void OnSkillYes() { if (m_OkDisable == true) { SoundUtil.PlaySE(SEID.SE_MENU_NG); return; } if (InGameUtil.isQuest2() == true) { changePartyUnitParent(false); } if (m_CharaIdx == GlobalDefine.PartyCharaIndex.HERO) { m_newSkill.setupHeroSkill(0); } else { m_newSkill.setupLimitBreakSkill(0, 0); } m_InGameMenuQuest2.Skill_menu_active = false; m_InGameMenuQuest2.Menu_bg_active = false; m_SkillMenuActive = false; SoundUtil.PlaySE(SEID.SE_MENU_OK); m_MenuButton.color = Color.white; UnityUtil.SetObjectEnabled(m_MenuButtonMask, false); BattleParam.RequestLBS(m_CharaIdx); }
//------------------------------------------------------------------------ /*! * @brief 更新処理 */ //------------------------------------------------------------------------ void Update() { // メニューオープンタイミングのチェック bool isOpen = InGameUtil.ChkInGameOpenWindowTiming(); if (isOpen == false && m_CurrentMenu != InGameMenuID.GAMEMENU_NONE) { // メニューを閉じる CloseInGameMenu(); return; } // リタイアリクエストが来ていたら終了 if (InGameQuestData.Instance && InGameQuestData.Instance.m_InGameRetire) { m_CurrentMenu = InGameMenuID.GAMEMENU_NONE; return; } m_OpenFrame = false; if (BattleParam.IsTutorial()) { updateForTutorial(); } }
//------------------------------------------------------------------------ /*! * @brief 初期化処理 */ //------------------------------------------------------------------------ protected override void Start() { base.Start(); if (SceneModeContinuousBattle.Instance != null) { MasterDataQuest2 master = MasterDataUtil.GetQuest2ParamFromID(SceneModeContinuousBattle.Instance.m_QuestMissionID); if (master != null) { if (m_InGameMenuQuest2 != null) { m_QuestName = master.quest_name; } if (master.enable_autoplay != MasterDataDefineLabel.BoolType.ENABLE) { // オートプレイ禁止でなければ、オートプレイボタンの初期状態を設定(出撃画面での設定値を反映) LocalSaveOption cOption = LocalSaveManager.Instance.LoadFuncOption(); bool is_auto_play = (cOption.m_OptionAutoPlayEnable == (int)LocalSaveDefine.OptionAutoPlayEnable.ON); if (is_auto_play) { BattleParam.setAutoPlayState(BattleParam.AutoPlayState.ON); } else { BattleParam.setAutoPlayState(BattleParam.AutoPlayState.OFF); } } else { // オートプレイ禁止 BattleParam.setAutoPlayState(BattleParam.AutoPlayState.NONE); } } } }
public void OnPushButtonRetire() { if (m_ScenePhase == ScenePhase.BATTILING) { BattleParam.endBattleScene(); m_ScenePhase = ScenePhase.INIT; } }
protected override void OnDestroy() { base.OnDestroy(); SceneCommon.initalizeMenuFps(); BattleParam.clearValues(); }
//TODO no character stats should be calculated, should be updated on equip and unequip / buff application move public List <PacketResponse> CalculateBattleStats(NecClient client) { List <PacketResponse> responses = new List <PacketResponse>(); BattleParam battleParam = new BattleParam(); client.character.ConditionBonus(); client.character.weight.SetCurrent(0); client.character.gp.SetMax(0); bool shieldCheck = false; foreach (ItemInstance itemInstance in client.character.equippedItems.Values) { if (itemInstance.currentEquipSlot.HasFlag(ItemEquipSlots.RightHand) | (itemInstance.currentEquipSlot == ItemEquipSlots.Quiver)) { battleParam.plusPhysicalAttack += (short)(itemInstance.physical + itemInstance.plusPhysical); battleParam.plusMagicalAttack += (short)(itemInstance.magical + itemInstance.plusMagical); } else { battleParam.plusPhysicalDefence += (short)(itemInstance.physical + itemInstance.plusPhysical); battleParam.plusMagicalDefence += (short)(itemInstance.magical + itemInstance.plusMagical); } client.character.gp.SetMax(client.character.gp.max + itemInstance.gp + itemInstance.plusGp); client.character.weight.Modify(itemInstance.weight + itemInstance.plusWeight); if ((itemInstance.type == ItemType.SHIELD_LARGE) | (itemInstance.type == ItemType.SHIELD_MEDIUM) | (itemInstance.type == ItemType.SHIELD_SMALL)) { shieldCheck = true; } } //if you dont have a shield on, set your GP to 0. no blocking for you if (shieldCheck == false) { client.character.gp.SetMax(0); RecvCharaUpdateAc recvCharaUpdateAc = new RecvCharaUpdateAc(client.character.gp.max); responses.Add(recvCharaUpdateAc); } RecvCharaUpdateMaxWeight recvCharaUpdateMaxWeight = new RecvCharaUpdateMaxWeight(client.character.weight.max / 10, client.character.weight.current / 10 /*Weight.Diff*/); responses.Add(recvCharaUpdateMaxWeight); RecvCharaUpdateWeight recvCharaUpdateWeight = new RecvCharaUpdateWeight(client.character.weight.current / 10); responses.Add(recvCharaUpdateWeight); RecvCharaUpdateMaxAc recvCharaUpdateMaxAc = new RecvCharaUpdateMaxAc(client.character.gp.max); responses.Add(recvCharaUpdateMaxAc); RecvCharaUpdateBattleBaseParam recvCharaUpdateBattleBaseParam = new RecvCharaUpdateBattleBaseParam(client.character, battleParam); responses.Add(recvCharaUpdateBattleBaseParam); client.character.battleParam = battleParam; return(responses); }
public bool isEnableUnitInfoWindow() { if (BattleParam.IsTutorial()) { return(m_IsEnableUnitInfoWindow && (m_IsForbidButton == false)); } return(true); }
public bool isEnableOptionButton() { if (BattleParam.IsTutorial()) { return(m_IsEnableOptionButton && (m_IsForbidButton == false)); } return(true); }
public TutorialOptionMenuPhase getTutorialOptionMenuPhase() { if (BattleParam.IsTutorial()) { return(m_TutorialOptionMenuPhase); } return(TutorialOptionMenuPhase.ALL_ON); }
/// <summary> /// ダイアログ表示中待ちか(BattleLogicがこれを見てBattleLogicを制御する) /// </summary> /// <returns></returns> public bool isWaitTutorial() { bool ret_val = BattleParam.IsTutorial() && (m_CurrentCommandText != null || (m_TutorialBattlePhaseCurrent != m_TutorialBattlePhaseReq) ); ret_val |= m_IsShowingTutorialDialog; return(ret_val); }
/// <summary> /// 敵の全滅要求(BattleLogicがこれを見てBattleLogicを制御する) /// </summary> /// <param name="is_reset_flag"></param> /// <returns></returns> public bool isAllDeadEnemy(bool is_reset_flag) { bool ret_val = BattleParam.IsTutorial() && m_IsAllDeadEnemy; if (is_reset_flag) { m_IsAllDeadEnemy = false; } return(ret_val); }
//---------------------------------------------------------------------------- /*! * @brief 手札変換:パネル指定 */ //---------------------------------------------------------------------------- public void ChangeHandPanel(BattleSkillActivity activity) { //------------------------------ // エラーチェック //------------------------------ if (activity == null || BattleParam.isActiveBattle() == false) { return; } // バトルマネージャ取得 BattleSceneManager battleMgr = BattleSceneManager.Instance; // 汎用パラメータから設定 MasterDataDefineLabel.ElementType[] elemArray = activity.Get_BOOSTSKILL_HAND_CNG_PANEL(); for (int i = 0; i < elemArray.Length; ++i) { BattleScene.BattleCard battle_card = battleMgr.PRIVATE_FIELD.m_BattleCardManager.m_HandArea.getCard(i); if (battle_card == null || elemArray[i] == MasterDataDefineLabel.ElementType.MAX) { continue; } // 変換先が設定されている場合 if (elemArray[i] != MasterDataDefineLabel.ElementType.NONE) { // 属性変更 battle_card.setElementType(elemArray[i], BattleScene.BattleCard.ChangeCause.SKILL); // 手札変化エフェクト BattleSceneManager.Instance.PRIVATE_FIELD.m_BattleCardManager.addEffectInfo(BattleScene._BattleCardManager.EffectInfo.EffectPosition.HAND_CARD_AREA, i, BattleScene._BattleCardManager.EffectInfo.EffectType.CARD_CHANGE); // 設定されていない場合は、ランダム変換 } else { // ランダム属性を取得 MasterDataDefineLabel.ElementType randElement = (MasterDataDefineLabel.ElementType)RandManager.GetRand((int)MasterDataDefineLabel.ElementType.NAUGHT, (int)MasterDataDefineLabel.ElementType.MAX); // 属性変更 battle_card.setElementType(randElement, BattleScene.BattleCard.ChangeCause.SKILL); // 手札変化エフェクト BattleSceneManager.Instance.PRIVATE_FIELD.m_BattleCardManager.addEffectInfo(BattleScene._BattleCardManager.EffectInfo.EffectPosition.HAND_CARD_AREA, i, BattleScene._BattleCardManager.EffectInfo.EffectType.CARD_CHANGE); } } }
/// <summary> /// リミットブレイクスキル発動ボタンが押された /// </summary> /// <param name="my_owner_object"></param> public void OnPushLimitBreakSkillButton(GameObject my_owner_object) { for (int idx = 0; idx < (int)GlobalDefine.PartyCharaIndex.MAX; idx++) { GameObject wrk_button = m_MemberObject[idx]; if (wrk_button == my_owner_object) { BattleParam.RequestLBS((GlobalDefine.PartyCharaIndex)idx); break; } } }
/// <summary> /// 分析副本中的碎片 add by wxl /// </summary> /* public void Analysis(){ * foreach (FloorData fdata in FloorConfigList.Values) { * if (fdata != null) { * if (fdata.isBoss == 1) { * if (!floorAndRewardDic.ContainsKey (fdata.specialRewardID)) { * List<int> floorIdList = new List<int> (); * floorIdList.Add (fdata.ID); * int tId = fdata.specialRewardID; * if (DataCore.getDataType (fdata.specialRewardID) == ConfigDataType.Frag) { * SoulData soulConfig = Core.Data.soulManager.GetSoulConfigByNum (fdata.specialRewardID); * * if (soulConfig != null) { * if (soulConfig.type == (int)ItemType.Monster_Frage) { * tId = soulConfig.updateId; * } * } else { * RED.LogWarning (" soul config is null = " + tId); * continue; * } * * } else if (DataCore.getDataType (fdata.specialRewardID) == ConfigDataType.Monster) { * * tId = fdata.specialRewardID; * } else if (DataCore.getDataType (fdata.specialRewardID) == ConfigDataType.Equip) { * tId = fdata.specialRewardID; * * } else { * RED.Log (" other type id = " + tId); * } * * if (!floorAndRewardDic.ContainsKey (tId)) { * floorAndRewardDic.Add (tId, floorIdList); * } else { * List<int> tList = new List<int> (); * floorAndRewardDic.TryGetValue (tId, out tList); * floorAndRewardDic.Remove (tId); * tList.Add (fdata.ID); * floorAndRewardDic.Add (tId, tList); * * } * } else { * List<int> tList = new List<int> (); * floorAndRewardDic.TryGetValue (fdata.specialRewardID, out tList); * floorAndRewardDic.Remove (fdata.specialRewardID); * tList.Add (fdata.ID); * floorAndRewardDic.Add (fdata.specialRewardID, tList); * } * } * } * } * } */ /// <summary> /// 通过宠物或者装备id获得关卡id maybe equip ,frag and monster /// </summary> /// <returns>The floor id by giftid</returns> /// <param name="giftId">Gift identifier.</param> // public List<int> GetFloorIdByGiftId(int giftId){ // List<int> targetId =new List<int>(); // if(giftId != 0){ // // if(floorAndRewardDic.TryGetValue(giftId,out targetId)){ // return targetId; // } // } // return targetId; // } #region 更新地下城状态 public void OnFinishFloor(BaseHttpRequest request, BaseResponse response) { Utils.Assert(request == null, "Request is null."); if (response.status == BaseResponse.ERROR) { return; } if (request.baseType == BaseHttpRequestType.Common_Http_Request) { HttpRequest req = request as HttpRequest; if (req != null) { BaseRequestParam param = req.ParamMem; BattleResponse res = response as BattleResponse; if (param != null) { bool isWin = false; BattleParam bp = param as BattleParam; if (res != null) { if (res.status != BaseResponse.ERROR) { isWin = System.Convert.ToBoolean(res.data.battleData.retCode); isBossOfLastFloor = true; } } else { /*没有返回结果说明是小关(小关100%成功)*/ isWin = true; isBossOfLastFloor = false; } #region 测试代码 //isWin=false; #endregion this.isWinOfLastFloor = isWin; if (bp != null) { OnFinishFloor(bp.doorId, isWin); } } } } }
/// <summary> /// 战斗相关参数加载 回调函数 /// </summary> /// <param name="context"></param> public void BattleParamLoadCallBack(string context) { BattleParam bp = JsonUtility.FromJson <BattleParam>(context); if (bp == null) { Debug.LogError("BattleParam json transform failed"); } levelUpExp = bp.levelUpExp; levelMax = bp.levelMax; levelUpExpRate = bp.expUpRate; perEnemyExp = bp.perEnemyExp; perEnemyMp = bp.perEnemyMp; }
private void addCoinOrExp(BaseHttpRequest request, BattleSequence reward) { if (reward != null) { if (reward.sync != null) { if (!Core.Data.guideManger.isGuiding) { RTData.curCoin = reward.sync.coin; RTData.curExp = reward.sync.ep; RTData.curStone = reward.sync.stone; RTData.curVipLevel = reward.sync.vip; } else { //新手引导是假数据不要同步 RTData.curCoin += (reward.reward.bco + reward.reward.eco); RTData.curExp += (reward.reward.bep + reward.reward.eep); } } //可能会导致升等级 if (RTData.curLevel < reward.sync.lv) { HttpRequest req = request as HttpRequest; BattleParam sendData = req.ParamMem as BattleParam; //如果是小关卡,打完以后直接升级,如果是BOSS关卡,升级处理将留到战斗播放完毕 if (sendData != null) { if (Core.Data.dungeonsManager.getFloorData(sendData.doorId).isBoss == 0) { RTData.curLevel = reward.sync.lv; } else { Core.Data.temper.AfterBattleLv = reward.sync.lv; } upgrade = true; } } else if (RTData.curLevel == reward.sync.lv) { //.. seems to do nothing } } }
public override string generateLocalJson(HttpTask task) { string json = string.Empty; HttpRequest req = task.request as HttpRequest; if (req != null) { BattleParam param = req.ParamMem as BattleParam; if (param != null) { json = PreDefined[param.doorId]; } } return(json); }
public void OnAutoPlayButton() { if (BattleParam.IsTutorial()) { return; // チュートリアル中は押せなくする } switch (BattleParam.getAutoPlayState()) { case BattleParam.AutoPlayState.OFF: SoundUtil.PlaySE(SEID.SE_MENU_OK); BattleParam.setAutoPlayState(BattleParam.AutoPlayState.ON); break; case BattleParam.AutoPlayState.ON: SoundUtil.PlaySE(SEID.SE_MENU_OK); BattleParam.setAutoPlayState(BattleParam.AutoPlayState.OFF); break; } }
//---------------------------------------------------------------------------- /*! * @brief 情報開閉ボタンタッチ処理: */ //---------------------------------------------------------------------------- public void OnInfoTouch() { // メニューオープンタイミングのチェック bool isOpen = InGameUtil.ChkInGameOpenWindowTiming(); if (isOpen == false) { return; } if (BattleParam.isEnbaleOptionButton() == false) { return; } if (InGameMenuManagerQuest2.Instance != null) { InGameMenuManagerQuest2.Instance.OnOption(); } }
public bool isForbidLimitBreak(GlobalDefine.PartyCharaIndex caster_index) { if (BattleParam.IsTutorial()) { if (m_IsForbidButton) { return(true); } if (caster_index >= GlobalDefine.PartyCharaIndex.LEADER && caster_index < GlobalDefine.PartyCharaIndex.MAX) { return(m_IsForbidLimitBreak[(int)caster_index]); } if (caster_index == GlobalDefine.PartyCharaIndex.HERO) { return(true); } } return(false); }
public void OnFailToWar(BaseHttpRequest request) { Utils.Assert(request == null, "Request is null"); if (request.baseType == BaseHttpRequestType.Common_Http_Request) { HttpRequest req = request as HttpRequest; if (req != null) { BaseRequestParam param = req.ParamMem; if (param != null) { BattleParam bp = param as BattleParam; if (bp != null) { FailToWar(bp.doorId); } } } } }
//---------------------------------------------------------------------------- /*! * @brief メニューボタンタッチ処理 */ //---------------------------------------------------------------------------- public void OnMenuButton() { if (BattleParam.IsTutorial() == true) { return; } if (IsOpenGameMenu()) { SoundUtil.PlaySE(SEID.SE_MENU_RET); CloseInGameMenu(); } else { if (InGameUtil.ChkInGameOpenWindowTiming()) { SoundUtil.PlaySE(SEID.SE_BATLE_UI_OPEN); } OpenInGameMenu(); } }
/// <summary> /// /// </summary> /// <param name="is_active"></param> /// <param name="ai"></param> /// <param name="is_debug_stop_mode">ユーザーが画面タッチしたらオートモードを解除するかどうか</param> public void startAutoPlay(AI ai = null, bool is_debug_stop_mode = false) { m_IsPlaying = true; m_IsDebugStopMode = is_debug_stop_mode; if (m_IsDebugStopMode) { BattleParam.setAutoPlayState(BattleParam.AutoPlayState.ON); } if (ai != null) { m_AI = ai; } else { m_AI = new AI_Default(); } m_AI.startAutoPlay(); m_Timer = 0.0f; m_AutoPlayPhase = AutoPlayPhase.START_WAIT; }
public override bool isSkipCountDown() { int skip_on_hands = m_SkillWorksInfo.getSkipOnHands(); if (skip_on_hands > 0) { int hands_count = 0; for (GlobalDefine.PartyCharaIndex member_idx = GlobalDefine.PartyCharaIndex.LEADER; member_idx < GlobalDefine.PartyCharaIndex.MAX; member_idx++) { hands_count += BattleParam.getPartyMemberHands(member_idx); } if (hands_count >= skip_on_hands) { return(true); } } for (int skill_idx = 0; skill_idx < 2; skill_idx++) { for (GlobalDefine.PartyCharaIndex member_idx = GlobalDefine.PartyCharaIndex.LEADER; member_idx < GlobalDefine.PartyCharaIndex.MAX; member_idx++) { bool is_skip = m_SkillWorksInfo.isSkipOnSkillFormed(skill_idx, member_idx); if (is_skip) { int skill_count = BattleParam.getFormedSkillCounts(skill_idx, (GlobalDefine.PartyCharaIndex)member_idx); if (skill_count > 0) { return(true); } } } } return(false); }