Пример #1
0
        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);
            });
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        /// <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;
        }
Пример #7
0
        /// <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);
        }
Пример #8
0
        /// <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);
        }
Пример #9
0
        /// <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);
        }
Пример #10
0
 public override void EnterMapEvent(BattlePlayerController bp)
 {
     if (bp.fadeStepsLeft > 0)
     {
         bp.isInEvent = false;
     }
 }
Пример #11
0
        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);
        }
Пример #12
0
        /// <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++;
            }
        }
Пример #13
0
        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);
        }
Пример #15
0
        public override void MapEventTriggered(bool isSuccess, BattlePlayerController bp)
        {
            if (isGoldTreasureBox)
            {
                MapEventsRecord.AddEventTriggeredRecord(mapIndex, transform.position);
            }

            base.MapEventTriggered(isSuccess, bp);
        }
Пример #16
0
        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();
            }
        }
Пример #18
0
 public override void EnterMapEvent(BattlePlayerController bp)
 {
     if (isExausted)
     {
         ExploreManager.Instance.battlePlayerCtr.isInEvent = false;
         return;
     }
     MapEventTriggered(true, bp);
 }
Пример #19
0
        public override void EnterMapEvent(BattlePlayerController bp)
        {
            if (isExausted)
            {
                bp.isInEvent = false;
                return;
            }

            ExploreManager.Instance.ShowWordsChoosePlane(wordsArray, "技能点+1");
        }
Пример #20
0
        public void OnTriggerEnter2D(Collider2D collision)
        {
            BattlePlayerController battlePlayerController = collision.GetComponent <BattlePlayerController>();

            if (battlePlayerController == null)
            {
                return;
            }

            MapEventTriggered(true, battlePlayerController);
        }
Пример #21
0
 /// <summary>
 /// 进入地图事件
 /// </summary>
 /// <param name="bp">Bp.</param>
 public override void EnterMapEvent(BattlePlayerController bp)
 {
     if (isWordTriggered)
     {
         ExploreManager.Instance.ShowWordsChoosePlane(wordsArray);
     }
     else
     {
         MapEventTriggered(true, bp);
     }
 }
Пример #22
0
 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);
 }
Пример #23
0
        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);
            });
        }
Пример #24
0
        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);
        }
Пример #25
0
        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();
        }
Пример #26
0
        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);
        }
Пример #27
0
        /// <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);
        }
Пример #28
0
        /// <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();
        }
Пример #29
0
 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);
     }
 }
Пример #30
0
        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();
        }