public override void MapEventTriggered(bool isSuccess, BattlePlayerController bp) { bp.isInEvent = false; bc2d.enabled = false; ExploreManager.Instance.newMapGenerator.mapWalkableInfoArray [Mathf.RoundToInt(transform.position.x), Mathf.RoundToInt(transform.position.y)] = 1; Vector3 droppedItemPos = transform.position; GameManager.Instance.gameDataCenter.currentMapEventsRecord.AddEventTriggeredRecord(mapIndex, transform.position); PlayAnimAndAudio(delegate { mapItemRenderer.enabled = false; if (isSuccess) { ExploreManager.Instance.newMapGenerator.SetUpRewardInMap(rewardItem, droppedItemPos); } else { Debug.Log("wrong answer"); } AddToPool(ExploreManager.Instance.newMapGenerator.mapEventsPool); }); }
/// <summary> /// 包围盒检测到trigger进入 /// </summary> /// <param name="col">Col.</param> public void OnTriggerEnter2D(Collider2D col) { BattleAgentController ba = col.GetComponent <BattleAgentController> (); if (!(ba is BattlePlayerController)) { return; } //Debug.Log("detect player"); BattlePlayerController bp = ba as BattlePlayerController; if (bp.isInEvent) { return; } //Debug.Log("player is not in event"); if (bp.isInFight) { return; } //Debug.Log("player is not in figth"); MapMonster mm = mapMonster as MapMonster; mm.isReadyToFight = true; mm.DetectPlayer(bp); }
public override void EnterMapEvent(BattlePlayerController bp) { bool bagFull = Player.mainPlayer.CheckBagFull(reward); if (bagFull) { ExploreManager.Instance.expUICtr.SetUpSingleTextTintHUD("背包已满"); bc2d.enabled = true; //StartCoroutine("RewardFloat"); //ExploreManager.Instance.newMapGenerator.mapWalkableInfoArray[Mathf.RoundToInt(transform.position.x), Mathf.RoundToInt(transform.position.y - 1)] = 10; } else { ExploreManager.Instance.ObtainReward(reward); ExploreManager.Instance.newMapGenerator.mapWalkableInfoArray[Mathf.RoundToInt(transform.position.x), Mathf.RoundToInt(transform.position.y)] = 1; bc2d.enabled = false; RewardFlyToPlayer(delegate { AddToPool(rewardPool); ExploreManager.Instance.expUICtr.UpdateBottomBar(); }, false); } bp.isInEvent = false; }
void Awake() { mapGenerator = GetComponent <MapGenerator>(); Transform battlePlayer = Player.mainPlayer.transform.Find("BattlePlayer"); battlePlayer.gameObject.SetActive(true); battlePlayerCtr = Player.mainPlayer.GetComponentInChildren <BattlePlayerController> (); battlePlayerCtr.ActiveBattlePlayer(false, false, false); battlePlayerCtr.enterMonster = new ExploreEventHandler(EnterMonster); battlePlayerCtr.enterNpc = new ExploreEventHandler(EnterNPC); battlePlayerCtr.enterCrystal = new ExploreEventHandler(EnterCrystal); battlePlayerCtr.enterTreasureBox = new ExploreEventHandler(EnterTreasureBox); battlePlayerCtr.enterObstacle = new ExploreEventHandler(EnterObstacle); battlePlayerCtr.enterTrapSwitch = new ExploreEventHandler(EnterSwitch); battlePlayerCtr.enterBillboard = new ExploreEventHandler(EnterBillboard); battlePlayerCtr.enterHole = new ExploreEventHandler(EnterHole); battlePlayerCtr.enterMovableBox = new ExploreEventHandler(EnterMovableBox); battlePlayerCtr.enterTransport = new ExploreEventHandler(EnterTransport); battlePlayerCtr.enterDoor = new ExploreEventHandler(EnterDoor); battlePlayerCtr.enterPlant = new ExploreEventHandler(EnterPlant); Transform exploreCanvas = TransformManager.FindTransform("ExploreCanvas"); expUICtr = exploreCanvas.GetComponent <ExploreUICotroller> (); // GameLevelData levelData = GameManager.Instance.gameDataCenter.gameLevelDatas [Player.mainPlayer.currentLevelIndex]; // // SetUpExploreView (levelData); }
public void MoveToNearestPosition(Transform other) { BattlePlayerController bp = other.GetComponent <BattlePlayerController> (); // bp.StopMoveAtEndOfCurrentStep (); if (bp == null) { return; } MapGenerator mapGenerator = exploreManager.GetComponent <MapGenerator> (); Vector3 pairedPos = GetPairedPos(); if (pairedPos == transform.position) { return; } bp.singleMoveEndPos = pairedPos; bp.TempStoreDestinationAndDontMove(); IEnumerator floorMoveAnim = SmoothMoveToPos(this.transform.position, pairedPos, bp); StartCoroutine(floorMoveAnim); }
/// <summary> /// 地图事件触发后的逻辑 /// </summary> /// <param name="isFromDetect">If set to <c>true</c> is from detect.</param> /// <param name="bp">Bp.</param> public override void MapEventTriggered(bool isFromDetect, BattlePlayerController bp) { bp.boxCollider.enabled = false; if (isTriggered) { return; } ExploreManager.Instance.DisableExploreInteractivity(); ExploreManager.Instance.MapWalkableEventsStopAction(); StopMoveImmidiately(); ExploreManager.Instance.currentEnteredMapEvent = this; if (canMove) { IEnumerator adjustAndFightCoroutine = AdjustPositionAndTowards(bp); StartCoroutine(adjustAndFightCoroutine); } else { IEnumerator adjustCoroutine = AdjustTowards(bp); StartCoroutine(adjustCoroutine); } isTriggered = true; }
/// <summary> /// 探测到用户 /// </summary> /// <param name="bp">Bp.</param> public void DetectPlayer(BattlePlayerController bp) { if (bp.fadeStepsLeft > 0) { return; } if (bp.escapeFromFight) { return; } bp.isInEvent = true; if (isInMoving) { RefreshWalkableInfoWhenTriggeredInMoving(); } ExploreManager.Instance.MapWalkableEventsStopAction(); StopMoveImmidiately(); bp.StopMoveAtEndOfCurrentStep(); ExploreManager.Instance.EnterFight(this.transform); MapEventTriggered(false, bp); }
/// <summary> /// 怪物进入战斗 /// </summary> /// <param name="bpCtr">Bp ctr.</param> public void StartFight(BattlePlayerController bpCtr) { // 如果已经在战斗中,则直接返回 if (isInFight) { return; } boxCollider.enabled = false; isInFight = true; // 清除所有的技能回调 ClearAllSkillCallBacks(); // 初始化所有被动技能回调 InitTriggeredPassiveSkillCallBacks(this, bpCtr); if (latelyEnterFightCouroutine != null) { StopCoroutine(latelyEnterFightCouroutine); } latelyEnterFightCouroutine = LatelyEnterFight(); StartCoroutine(latelyEnterFightCouroutine); }
/// <summary> /// 怪物进入战斗 /// </summary> /// <param name="bpCtr">Bp ctr.</param> /// <param name="playerWinCallBack">Player window call back.</param> public void StartFight(BattlePlayerController bpCtr) { this.bpCtr = bpCtr; // 怪物比玩家延迟0.5s进入战斗状态 Invoke("Fight", 0.5f); }
public override void EnterMapEvent(BattlePlayerController bp) { if (bp.fadeStepsLeft > 0) { bp.isInEvent = false; } }
public override void MapEventTriggered(bool isSuccess, BattlePlayerController bp) { bp.isInEvent = false; if (isSuccess) { Player.mainPlayer.skillNumLeft++; ExploreManager.Instance.expUICtr.SetUpSingleTextTintHUD("技能点+1"); GameManager.Instance.soundManager.PlayAudioClip(CommonData.crystalAudioName); ExploreManager.Instance.battlePlayerCtr.SetEffectAnim(CommonData.skillPointUpEffectName); } isExausted = true; blinkAnim.gameObject.SetActive(false); tmPro.enabled = false; mapItemRenderer.sprite = crystalExaustedSprite; GameManager.Instance.gameDataCenter.currentMapEventsRecord.AddEventTriggeredRecord(mapIndex, transform.position); }
/// <summary> /// 触发毒陷阱 /// </summary> /// <returns>The trap triggered.</returns> /// <param name="battlePlayer">Battle player.</param> private IEnumerator PoisonTrapTriggered(BattlePlayerController battlePlayer) { int count = 0; battlePlayer.SetEffectAnim(CommonData.poisonedEffectName, null, 0, 3f); while (count < 3) { yield return(new WaitForSeconds(1f)); yield return(new WaitUntil(() => !battlePlayer.isInEvent)); MyTowards towards = battlePlayer.GetReversedTowards(); battlePlayer.AddHurtAndShow(100, HurtType.Physical, towards); ExploreManager.Instance.expUICtr.UpdatePlayerStatusBar(); if (battlePlayer.agent.health <= 0) { //ExploreManager.Instance.DisableAllInteractivity(); battlePlayer.AgentDie(); yield break; } count++; } }
public override void MapEventTriggered(bool isSuccess, BattlePlayerController bp) { bp.isInEvent = false; if (hasTriggered) { return; } if (isSuccess) { mapItemRenderer.sprite = pressSwitchOff; GameManager.Instance.soundManager.PlayAudioClip(CommonData.switchAudioName); ExploreManager.Instance.newMapGenerator.ChangeMapEventStatusAtPosition(pairEventPos); SetSortingOrder(mapItemRenderer.sortingOrder - 1); hasTriggered = true; bc2d.enabled = true; tmPro.enabled = false; ExploreManager.Instance.newMapGenerator.mapWalkableInfoArray [Mathf.RoundToInt(transform.position.x), Mathf.RoundToInt(transform.position.y)] = 0; int posX = Mathf.RoundToInt(this.transform.position.x); int posY = Mathf.RoundToInt(this.transform.position.y); MapEventsRecord.AddEventTriggeredRecord(mapIndex, new Vector2(posX, posY)); } }
/// <summary> /// 角色死亡时重置数据 /// </summary> public void ResetDataWhenPlayerDie(BattlePlayerController baCtr) { // 加载本地存档 //PlayerData playerData = LoadPlayerData(); // // 初始化 //Player.mainPlayer.SetUpPlayerWithPlayerData(playerData); Player.mainPlayer.health = Mathf.RoundToInt(0.1f * Player.mainPlayer.maxHealth); Player.mainPlayer.mana = Mathf.RoundToInt(0.1f * Player.mainPlayer.maxMana); Player.mainPlayer.savePosition = baCtr.transform.position; Player.mainPlayer.saveTowards = baCtr.towards; // 掉落装备,损失经验和金钱作为死亡惩罚 Player.mainPlayer.LoseEquipmentsAndExperienceAndGoldWhenDie(); // 重算角色属性 Player.mainPlayer.ResetBattleAgentProperties(false); // 保存玩家数据 SaveCompletePlayerData(); GameManager.Instance.persistDataManager.SaveGameSettings(); GameManager.Instance.persistDataManager.SaveMapEventsRecord(); GameManager.Instance.persistDataManager.SaveCurrentMapMiniMapRecord(); GameManager.Instance.persistDataManager.SaveCurrentMapEventsRecords(); GameManager.Instance.persistDataManager.SaveChatRecords(); GameManager.Instance.persistDataManager.SaveCurrentMapWordsRecords(); //GameManager.Instance.gameDataCenter.currentMapEventsRecord = DataHandler.LoadDataToSingleModelWithPath<CurrentMapEventsRecord>(CommonData.currentMapEventsRecordFilePath); }
public override void MapEventTriggered(bool isSuccess, BattlePlayerController bp) { if (isGoldTreasureBox) { MapEventsRecord.AddEventTriggeredRecord(mapIndex, transform.position); } base.MapEventTriggered(isSuccess, bp); }
private void CharacterFragmentFlyToPlayer(BattlePlayerController battlePlayer) { IEnumerator fragmentFlyCoroutine = FlyToPlayer(battlePlayer, delegate { obtainCharacterFragmentCallBack(character); }); StartCoroutine(fragmentFlyCoroutine); }
public override void EnterMapEvent(BattlePlayerController bp) { bp.isInEvent = false; if (characterFlyCalBk != null) { characterFlyCalBk(); } }
public override void EnterMapEvent(BattlePlayerController bp) { if (isExausted) { ExploreManager.Instance.battlePlayerCtr.isInEvent = false; return; } MapEventTriggered(true, bp); }
public override void EnterMapEvent(BattlePlayerController bp) { if (isExausted) { bp.isInEvent = false; return; } ExploreManager.Instance.ShowWordsChoosePlane(wordsArray, "技能点+1"); }
public void OnTriggerEnter2D(Collider2D collision) { BattlePlayerController battlePlayerController = collision.GetComponent <BattlePlayerController>(); if (battlePlayerController == null) { return; } MapEventTriggered(true, battlePlayerController); }
/// <summary> /// 进入地图事件 /// </summary> /// <param name="bp">Bp.</param> public override void EnterMapEvent(BattlePlayerController bp) { if (isWordTriggered) { ExploreManager.Instance.ShowWordsChoosePlane(wordsArray); } else { MapEventTriggered(true, bp); } }
public override void MapEventTriggered(bool isSuccess, BattlePlayerController bp) { if (exitType == ExitType.ToLastLevel) { ExploreManager.Instance.expUICtr.SetUpSingleTextTintHUD("返回上一层的出口已经被封印了"); GameManager.Instance.soundManager.PlayAudioClip(CommonData.exitAudioName); ExploreManager.Instance.battlePlayerCtr.isInEvent = false; return; } ExploreManager.Instance.expUICtr.ShowEnterExitQueryHUD(exitType); }
protected override void ExcuteActiveSkillLogic(BattleAgentController self, BattleAgentController enemy) { self.QuitFight(); BattlePlayerController battlePlayer = self as BattlePlayerController; battlePlayer.isInEscaping = true; ExploreManager.Instance.expUICtr.ShowEscapeBar(escapeTime, delegate { EscapeCallBack(self, enemy); }); }
public override void OnTriggerEnter2D(Collider2D col) { if (!isTrapOn) { return; } SoundManager.Instance.PlayAudioClip("MapEffects/" + audioClipName); BattlePlayerController bp = col.GetComponent <BattlePlayerController> (); if (bp == null) { return; } // if(MyTool.ApproximatelySamePosition2D(bp.transform.position,this.transform.position)){ agentOriPos = new Vector3(Mathf.RoundToInt(col.transform.position.x), Mathf.RoundToInt(col.transform.position.y), 0); backgroundOriPos = Camera.main.transform.Find("Background").position; // }else{ // agentOriPos = new Vector3 (Mathf.RoundToInt(col.transform.position.x), Mathf.RoundToInt(col.transform.position.y), 0); // // backgroundOriPos = Camera.main.transform.Find ("Background").position; Debug.Log(backgroundOriPos); // } Debug.LogFormat("oriPos:{0}----currentAgentPos:{1}", agentOriPos, col.transform.position); bp.StopMove(); bp.singleMoveEndPos = agentOriPos; bp.InitFightTextDirectionTowards(transform.position); bp.propertyCalculator.InstantPropertyChange(bp, PropertyType.Health, -lifeLose, false); if (normalTrapTriggeredCoroutine != null) { StopCoroutine(normalTrapTriggeredCoroutine); } normalTrapTriggeredCoroutine = NormalTrapTriggerEffect(bp); StartCoroutine(normalTrapTriggeredCoroutine); }
public void OnAgentPushBox(BattlePlayerController bp, MapGenerator mapGenerator) { this.mapGenerator = mapGenerator; ExploreManager em = mapGenerator.GetComponent <ExploreManager> (); em.DisableInteractivity(); int[,] mapWalkableInfo = mapGenerator.mapWalkableInfoArray; int playerPosX = Mathf.RoundToInt(bp.transform.position.x); int playerPosY = Mathf.RoundToInt(bp.transform.position.y); int boxPosX = Mathf.RoundToInt(this.transform.position.x); int boxPosY = Mathf.RoundToInt(this.transform.position.y); if (playerPosX < boxPosX && CanMoveTo(boxPosX + 1, boxPosY)) { this.transform.DOMove(new Vector3(boxPosX + 1, boxPosY), 1.0f).OnComplete(delegate { mapWalkableInfo[boxPosX, boxPosY] = 1; mapWalkableInfo[boxPosX + 1, boxPosY] = 0; em.EnableInteractivity(); }); } else if (playerPosX > boxPosX && CanMoveTo(boxPosX - 1, boxPosY)) { this.transform.DOMove(new Vector3(boxPosX - 1, boxPosY), 1.0f).OnComplete(delegate { mapWalkableInfo[boxPosX, boxPosY] = 1; mapWalkableInfo[boxPosX - 1, boxPosY] = 0; em.EnableInteractivity(); }); } else if (playerPosY < boxPosY && CanMoveTo(boxPosX, boxPosY + 1)) { this.transform.DOMove(new Vector3(boxPosX, boxPosY + 1), 1.0f).OnComplete(delegate { mapWalkableInfo[boxPosX, boxPosY] = 1; mapWalkableInfo[boxPosX, boxPosY + 1] = 0; em.EnableInteractivity(); }); } else if (playerPosY > boxPosY && CanMoveTo(boxPosX, boxPosY - 1)) { this.transform.DOMove(new Vector3(boxPosX, boxPosY - 1), 1.0f).OnComplete(delegate { mapWalkableInfo[boxPosX, boxPosY] = 1; mapWalkableInfo[boxPosX, boxPosY - 1] = 0; em.EnableInteractivity(); }); } em.EnableInteractivity(); }
public override void MapEventTriggered(bool isSuccess, BattlePlayerController bp) { if (bp.isInEvent) { return; } ExploreManager.Instance.expUICtr.SetUpDiaryView(diary); MapEventsRecord.DiaryFinishAtMapIndex(mapIndex); Destroy(this.gameObject, 0.3f); }
/// <summary> /// 当有trigger进入到包围盒中 /// </summary> /// <param name="col">Col.</param> public void OnTriggerEnter2D(Collider2D col) { BattlePlayerController bp = col.GetComponent <BattlePlayerController>(); if (bp == null) { return; } ExploreManager.Instance.battlePlayerCtr.isInEvent = false; MapEventTriggered(true, bp); }
/// <summary> /// 触发尖刺陷阱 /// </summary> /// <param name="battlePlayer">Battle player.</param> private void ThornTrapTriggered(BattlePlayerController battlePlayer) { mapItemRenderer.sprite = thornTrapOnSprite; MyTowards towards = battlePlayer.GetReversedTowards(); battlePlayer.AddHurtAndShow(50, HurtType.Physical, towards); if (battlePlayer.agent.health <= 0) { //ExploreManager.Instance.DisableAllInteractivity(); battlePlayer.AgentDie(); } ExploreManager.Instance.expUICtr.UpdatePlayerStatusBar(); }
public override void EnterMapEvent(BattlePlayerController bp) { if (!isOpen) { ExploreManager.Instance.expUICtr.SetUpSingleTextTintHUD("这里被一股奇怪的魔力封印着"); GameManager.Instance.soundManager.PlayAudioClip(CommonData.exitAudioName); bp.isInEvent = false; } else { MapEventTriggered(true, bp); } }
private void EscapeCallBack(BattleAgentController self, BattleAgentController enemy) { int fadeStep = fixFadeStep + fadeStepGainBase * skillLevel; BattlePlayerController battlePlayer = self as BattlePlayerController; if (battlePlayer.agent.health <= 0) { return; } int oriFadeStepsLeft = battlePlayer.fadeStepsLeft; if (oriFadeStepsLeft == 0) { self.SetEffectAnim(selfEffectAnimName, null, 0, 0); } battlePlayer.fadeStepsLeft = Mathf.Max(oriFadeStepsLeft, fadeStep); enemy.QuitFight(); ExploreManager.Instance.EnableExploreInteractivity(); ExploreManager.Instance.currentEnteredMapEvent = null; BattlePlayerController bpCtr = self as BattlePlayerController; bpCtr.PlayRoleAnim(CommonData.roleIdleAnimName, 0, null); bpCtr.escapeFromFight = true; bpCtr.isInEscaping = false; bpCtr.enemy = null; bpCtr.FixPositionToStandard(); MapWalkableEvent mwe = enemy.GetComponent <MapWalkableEvent> (); ExploreManager.Instance.MapWalkableEventsStartAction(); mwe.RefreshWalkableInfoWhenQuit(enemy.isDead); if (!mwe.isInMoving) { mwe.QuitFightAndDelayMove(5); } ExploreManager.Instance.expUICtr.QuitFight(); }