public void HideWebwayGates(bool hide, Vector3 pos) { if (null == WebwayGates) { return; } WebwayGates.gameObject.SetActiveRecursively(!hide); if (!hide) { LeaveCopyTrigger leaveTrigger = WebwayGates.gameObject.GetComponent <LeaveCopyTrigger>() as LeaveCopyTrigger; if (null == leaveTrigger) { leaveTrigger = WebwayGates.gameObject.AddComponent <LeaveCopyTrigger>() as LeaveCopyTrigger; } leaveTrigger.SetSize(Vector3.zero, new Vector3(0.5f * WebwayGates.width, 0.5f * WebwayGates.height, 0.0f)); // pos.x += 0.5f * WebwayGates.width; // WebwayGates.transform.position = new Vector3(pos.x, pos.y, pos.z); WebwayGates.transform.localScale = Vector3.one; } }
protected virtual void OnBattleEnd_impl(GameData.BattleGameData.BattleResult battleResult) { // Resume the camera Globals.Instance.MSceneManager.mMainCamera.transform.position = _mCurrentCamPos; Globals.Instance.MSceneManager.mMainCamera.transform.forward = _mCurrentCamForward; // resume trigger battle, and close Input SetEnabled(true); SetFingerEventActive(true); _mIsPermitRequestBattle = true; // Clear ReinforcementData Globals.Instance.MGameDataManager.MActorData.RemoveReinforcementData(); Vector3 monsterPos = Vector3.zero; switch (battleResult.BattleWinResult) { // Actor win case GameData.BattleGameData.EBattleWinResult.ACTOR_WIN: { // Destroy the guide DestroyGuideArrows(_mFightingMonsterFleet); // Destroy the failed Fleet according to BattleResult monsterPos = _mFightingMonsterFleet.Position; _mMonsterFleetList.Remove(_mFightingMonsterFleet); Globals.Instance.MPlayerManager.RemoveMonsterFleet(_mFightingMonsterFleet); _mFightingMonsterFleet = null; // Create a random chest if (battleResult.ChestID != -1) { GameObject go = CreateRandomChest(battleResult.ChestID); go.transform.position = monsterPos; } // Single Drap information OnceBattleFinish(); break; } // Dogfall case GameData.BattleGameData.EBattleWinResult.DOGFALL: { // Destroy the guide DestroyGuideArrows(_mFightingMonsterFleet); // Destroy the failed Fleet according to BattleResult monsterPos = _mFightingMonsterFleet.Position; _mMonsterFleetList.Remove(_mFightingMonsterFleet); Globals.Instance.MPlayerManager.RemoveMonsterFleet(_mFightingMonsterFleet); _mFightingMonsterFleet = null; // Create a random chest if (battleResult.ChestID != -1) { GameObject go = CreateRandomChest(battleResult.ChestID); go.transform.position = monsterPos; } break; } // Monster win case GameData.BattleGameData.EBattleWinResult.MONSTER_WIN: { // tzz added // move the warship by monster collider bounds to avoid the fight immedately again // Vector3 t_monsterSize = _mFightingMonsterFleet.m_battleTrigger.GetComponent <Collider>().bounds.size; // increase some distance t_monsterSize.x += 50; // get the own actor ship position Vector3 t_ownPos = Vector3.zero; foreach (WarshipL ws in _mActorFleet._mWarshipList) { t_ownPos = ws.U3DGameObject.transform.position; break; } // monster(Enemy) position Vector3 t_monsterPos = _mFightingMonsterFleet.m_copyStatusGameObject.transform.position; // actor direct back position Vector3 t_direclyBackPos = t_monsterPos + ((t_ownPos - t_monsterPos).normalized * t_monsterSize.x); Vector2[] t_restPos = { new Vector2(t_direclyBackPos.x, t_direclyBackPos.z), new Vector2(t_monsterPos.x + t_monsterSize.x, t_monsterPos.z), new Vector2(t_monsterPos.x - t_monsterSize.x, t_monsterPos.z), new Vector2(t_monsterPos.x, t_monsterPos.z + t_monsterSize.x), new Vector2(t_monsterPos.x, t_monsterPos.z - t_monsterSize.x), }; foreach (Vector2 pos in t_restPos) { if (crossArea.Contains(pos)) { // rest position is in the cross Area // foreach (WarshipL ws in _mActorFleet._mWarshipList) { ws.ForceMoveTo(new Vector3(pos.x, t_ownPos.y, pos.y)); } break; } } Statistics.INSTANCE.CustomEventCall(Statistics.CustomEventType.FailedCopyBattle, "CopyID", Globals.Instance.MGameDataManager.MCurrentCopyData.MCopyBasicData.CopyID); break; } } // Flush ship life Dictionary <long, GirlData> dictWarshipData = Globals.Instance.MGameDataManager.MActorData.GetWarshipDataList(); List <GameData.BattleGameData.WarshipBattleEndCurrLife> listWarshipLife = GameStatusManager.Instance.MBattleStatus.MBattleResult.ListWarshipBattleEndCurrLife; foreach (GameData.BattleGameData.WarshipBattleEndCurrLife warshipLife in listWarshipLife) { if (dictWarshipData.ContainsKey(warshipLife.ShipID)) { dictWarshipData[warshipLife.ShipID].PropertyData.Life = warshipLife.ShipCurrLife; } } // Globals.Instance.MGameDataManager.MActorData.NotifyWarshipUpdate(); Debug.Log("copystatas"); Globals.Instance.M3DItemManager.PlayBattleEffect(battleResult, delegate(){ Globals.Instance.MGUIManager.CreateWindow <GUISingleDrop>(delegate(GUISingleDrop gui) { gui.UpdateData(); }); }); if (battleResult.IsFinalBattle) { _mIsFinalBattle = true; GameObject go = GraphicsTools.ManualCreateObject("TempArtist/Prefab/Particle/S_LeaveCopy", "LeaveTrigger", false); float y = go.transform.position.y; LeaveCopyTrigger trigger = go.AddComponent <LeaveCopyTrigger>() as LeaveCopyTrigger; go.transform.position = new Vector3(monsterPos.x, y, monsterPos.z); go.transform.localScale = Vector3.one; mLeaveTrigger = go.transform.position; // DisplayCopyDrops(); } }